<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/151711.htm

          (5) int connect(int sockfd, struct sockaddr * serv_addr,int addrlen)
          這個(gè)函數(shù)是客戶端的函數(shù),完成向服務(wù)器端申請(qǐng)建立鏈接,與上面的綁定端口類似,參數(shù)my_addr代表的我們用的是一個(gè)結(jié)構(gòu)體,表示要申請(qǐng)鏈接的服務(wù)器地址信息,它的 rc_family我們?nèi)锳F_BLUETOOTH,它的rc_bdaddr我們?nèi)】梢院腿我庵鳈C(jī)通信的 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è)函數(shù)完成文件讀寫的功能,也完成服務(wù)器端和客戶端通信功能。在完成服務(wù)器端與客戶端通信功能時(shí),把前面建立的通道看成是文件描述符,只要往文件描述符里面讀寫信息就可以了,與向文件讀寫過程一樣。
          以上是中用到的的主要庫函數(shù),它的客戶端核心代碼如下:
          if((from_fd=open(argv[2],O_RDONLY))==-1)

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

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

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

          上一頁 1 2 3 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();