新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于BlueZ協議棧的嵌入式系統無線通信實現

        基于BlueZ協議棧的嵌入式系統無線通信實現

        作者: 時間:2010-07-29 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/151711.htm

        (5) int connect(int sockfd, struct sockaddr * serv_addr,int addrlen)
        這個函數是客戶端的函數,完成向服務器端申請建立鏈接,與上面的綁定端口類似,參數my_addr代表的我們用的是一個結構體,表示要申請鏈接的服務器地址信息,它的 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)
        這兩個函數完成文件讀寫的功能,也完成服務器端和客戶端通信功能。在完成服務器端與客戶端通信功能時,把前面建立的通道看成是文件描述符,只要往文件描述符里面讀寫信息就可以了,與向文件讀寫過程一樣。
        以上是中用到的的主要庫函數,它的客戶端核心代碼如下:
        if((from_fd=open(argv[2],O_RDONLY))==-1)

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

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

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

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阿拉尔市| 崇礼县| 黄陵县| 长春市| 丹东市| 萨嘎县| 乐陵市| 高邑县| 老河口市| 阳原县| 通河县| 雷波县| 广平县| 定远县| 嘉黎县| 安塞县| 北碚区| 大足县| 宁明县| 延川县| 连州市| 卢湾区| 中阳县| 游戏| 邵阳市| 南城县| 肃南| 株洲市| 磴口县| 佛山市| 锡林浩特市| 登封市| 定襄县| 南丰县| 博客| 肥城市| 石棉县| 曲阳县| 吴江市| 衡东县| 麻江县|