提問者:TAR772013-05-30 00:00
獲得U盤的插入或者拔取得信息的傳統方法是在內核級運行hotplug程序,相關參數通過環境變量傳遞過來,再由hotplug通知其他關注hotplug的應用程序。這樣的做法效率有些低,現在通過一種特殊類型的socketnetlink實現獲取U盤拔插的信息。netlink專門用于內核空間和用戶空間的異步通信。下面的例子可以監聽內核的hotplug事件,源代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<sys/un.h>
#include<sys/ioctl.h>
#include<sys/socket.h>
#include<linux/types.h>
#include<linux/netlink.h>
#include<errno.h>#defineUEVENT_BUFFER_SIZE2048staticintinit_hotplug_sock(void);intmain(intargc,char*argv[])
{
inthotplug_sock=init_hotplug_sock();
while(1){
charbuf[UEVENT_BUFFER_SIZE*2]={0};
recv(hotplug_sock,&buf,sizeof(buf),0);
printf("%s
",buf);}
return0;
}staticintinit_hotplug_sock(void)
{
structsockaddr_nlsnl;
constintbuffersize=16*1024*1024;
intretval;memset(&snl,0x00,sizeof(structsockaddr_nl));
snl.nl_family=AF_NETLINK;
snl.nl_pid=getpid();
snl.nl_groups=1;
inthotplug_sock=socket(PF_NETLINK,SOCK_DGRAM,NETLINK_KOBJECT_UEVENT);if(hotplug_sock==-1){
printf("errorgettingsocket:%s",strerror(errno));
return-1;
}/*setreceivebuffersize*/
setsockopt(hotplug_sock,SOL_SOCKET,SO_RCVBUFFORCE,&buffersize,sizeof(buffersize));
retval=bind(hotplug_sock,(structsockaddr*)&snl,sizeof(structsockaddr_nl));if(retval<0){
printf("bindfailed:%s",strerror(errno));
close(hotplug_sock);
hotplug_sock=-1;
return-1;
}returnhotplug_sock;
}
回答者:lukiii2016-05-30 00:00
當然能了!我也是剛提的K5 要是中控換成屏幕的話 建議用手機藍牙或者是用小卡 畢竟多一個U口可以充電~
提問者:abc52818182015-03-16
不可能播放U盤音樂的。 點煙器上連接的USB接口,只是個USB供電接口,或者叫變壓器,把點煙器的12V轉為手機充電用的5V。 里面并沒有MP3播放的芯片,也沒有連到音箱,所以不可能插U盤播放音樂的。 必須是獨立
提問者:rb41582015-04-27
有兩種選擇: 第一:汽車有導航的話,直接連接手機藍牙 第二:用Iphone專線連接進USB口,自動識別手機歌曲 第三:用轉換線,連接手機耳機,用手機播放音樂,利用車的音響作為揚聲器
提問者:pwxls2013-06-16
有USB接口的,直接插上
提問者:ls7517284012013-10-10
1.前置USB線接錯。當主板上的USB線和機箱上的前置USB接口對應相接時把正負接反就會發生這類故障,這也是相當危險的,因為正負接反很可能會使得USB設備燒毀。 所以盡量采用機箱后置的USB接口,也少用延長線.也可能是斷
提問者:lankai30002016-01-27
可以的。不過電腦以外的設置對U盤的兼容性不是很好,就是可能只識別幾種U盤,這個需要多嘗試哪個可用在CD上了。U盤的格式最好格成通用的FAT32格式,另外,一些U盤本身就是不支持電腦以外設備的。
提問者:ysbrt2013-07-03