提問者:ts3060195662013-01-18 00:00
獲得U盤的插入或者拔取得信息的傳統(tǒng)方法是在內(nèi)核級運行hotplug程序,相關參數(shù)通過環(huán)境變量傳遞過來,再由hotplug通知其他關注hotplug的應用程序。這樣的做法效率有些低,現(xiàn)在通過一種特殊類型的socketnetlink實現(xiàn)獲取U盤拔插的信息。netlink專門用于內(nèi)核空間和用戶空間的異步通信。下面的例子可以監(jiān)聽內(nèi)核的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;
}
回答者:maxCRJ2016-01-18 00:00
你可以詢問一下幫你裝導航的4S人員 如果不是兩個之間的沖突 就是他們在安裝過程中有人為的損壞了USB接口或線路
提問者:cdapi2016-01-14
是用的轉換器么?如果是車上接口的話,U盤接入轉換器,按CD/MP3鍵。切換到MP3狀態(tài)。就能播放了。DVD導航是不顯示的。如果是DVD上的多媒體插口,直接插入多媒體記憶卡,DVD導航有顯示。謝謝采納
提問者:青海雪原2014-09-24
a圍城 2015/04/10 18:43:43 發(fā)表在 5樓 低配連蓋子都省了??是的,太坑爹了,有幾個錢啊……簡配啊
提問者:wf6k2vdnnz2015-11-10
你好,在質保期么?在質保期可以直接換的,希望我的回答讓你滿意,祝你用車愉快
提問者:n8q3b2016-07-29
支持AVI、WMV、MP4、3GP、MPG、MOV、MPEG、ASF 、FLV 、RMVB 、DAT、 RM等你的導航儀有說明書支持的格式,一般都支持后綴為AVI視頻的格式,用這個格式的試一下吧。如果不行下載一個格式轉換
提問者:61870014s2013-05-18
首先將歌曲MP拷貝到你的USB里,然后將USB插到插孔上,系統(tǒng)會自動播放的
提問者:2015-12-14