<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于BlueZ協(xié)議棧的嵌入式系統無(wú)線(xiàn)通信實(shí)現

基于BlueZ協(xié)議棧的嵌入式系統無(wú)線(xiàn)通信實(shí)現

作者: 時(shí)間:2010-07-29 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/151711.htm

(5) int connect(int sockfd, struct sockaddr * serv_addr,int addrlen)
這個(gè)函數是客戶(hù)端的函數,完成向服務(wù)器端申請建立鏈接,與上面的綁定端口類(lèi)似,參數my_addr代表的我們用的是一個(gè)結構體,表示要申請鏈接的服務(wù)器地址信息,它的 rc_family我們取為AF_BLUETOOTH,它的rc_bdaddr我們取可以和任意主機通信的 INADDR_ANY。
(6) ssize_t write(int fd,const void *buf,size_t nbytes) ssize_t read(int fd,void *buf,size_t nbyte)
這兩個(gè)函數完成文件讀寫(xiě)的功能,也完成服務(wù)器端和客戶(hù)端通信功能。在完成服務(wù)器端與客戶(hù)端通信功能時(shí),把前面建立的通道看成是文件描述符,只要往文件描述符里面讀寫(xiě)信息就可以了,與向文件讀寫(xiě)過(guò)程一樣。
以上是中用到的的主要庫函數,它的客戶(hù)端核心代碼如下:
if((from_fd=open(argv[2],O_RDONLY))==-1)

while(bytes_read=read(from_fd,buffer,BUFFER_SIZE))
{ /* 一個(gè)致命的錯誤發(fā)生了 */ if((bytes_read==-1)(errno!=EINTR)) break; else if(bytes_read>0) { ptr=buffer;
status=write(s,ptr,strlen(ptr)); memset(buffer,0,BUFFER_SIZE); }
}
它的服務(wù)器端核心代碼如下: /*創(chuàng )建目標文件 */ memset(buf,0,BUFFER_SIZE); while(1) { bytes_read = read(client,buf,sizeof(buf));
if(bytes_read>0)
{ ptr=buf; while(bytes_write=write(to_fd,ptr,bytes_read)) { /*一個(gè)致命錯誤發(fā)生了 */
if((bytes_write==-1)(errno!=EINTR))break;/* 寫(xiě)完了所有讀的字節 */ else if(bytes_write==bytes_read) break; /*只寫(xiě)了一部分 ,繼續寫(xiě) */ else if(bytes_write>0) { ptr+=bytes_write;
bytes_read-=bytes_write;
} } /*寫(xiě)的時(shí)候發(fā)生的致命錯誤 */ if(bytes_write==-1)break; /*這里讀完后必須把 buffer清空*/ memset(buf,0,sizeof(buf));
} else{ exit(1); }
}
5、結束語(yǔ)
在目前,對于藍牙棧的移植已經(jīng)有非常深入的研究,但對藍牙的源代碼級的研究還不多。本文在 ARM9+Linux環(huán)境下構建了的藍牙工作環(huán)境, 通過(guò)官方的藍牙協(xié)議棧 提供的庫函數編程了藍牙的文件傳輸功能。利用和無(wú)線(xiàn)傳輸文件傳輸,符合數字化、網(wǎng)絡(luò )化的發(fā)展趨勢。本文作者創(chuàng )新點(diǎn) :在源代碼級別上借助藍牙協(xié)議棧 BlueZ實(shí)現了文件的傳輸功能。

參考文獻:
[1]卜奎昊, SAMSUNG S3C2410的研究,安徽大學(xué)碩士畢業(yè)論文 2008
[2]歐陽(yáng)鑫,于紅巖,呂楊,藍牙協(xié)議棧 BlueZ的移植與開(kāi)發(fā). 微計算機信息,200 7
[3]梁軍學(xué),郁濱 . Linux 藍牙協(xié)議棧的 USB 設備驅動(dòng). 計算機工程, 2008
[4]金純,許光辰,孫睿 .藍牙技術(shù).〔M〕北京:電子工業(yè)出版社,2001
[5] www.bluez.org

好了,下面利用該平臺提供的藍牙函數庫,來(lái)進(jìn)行文件傳輸功能的開(kāi)發(fā)。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>