新聞中心

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

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

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

        (1) 生成交叉編譯器,創建交叉編譯環境
        (2) 編譯、配置實驗開發平臺上的 Linux內核
        (3) 安裝 軟件包
        (4) 編譯實驗開發平臺上的Linux內核
        (5) 向s3c2410a實驗平臺移植 通過上述步驟完成了藍牙的移植后,一個藍牙應用開發平臺就搭建

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

        4、文件傳輸功能的
        如上步驟成功移植藍牙后,一個完整的藍牙應用開發平臺就已經搭建好了,本文將利用BlueZ提供的API函數在RFCOMM層上藍牙文件傳輸的功能,所采用的路徑為:射頻(RF)―基帶與鏈路控制(BBLC)―主機控制接口(HCI)―邏輯鏈路與適配協議(L2CAP)―串口仿真(RFCOMM)―對象交換協議(OBEX)。它的分為客戶端程序和服務器端程序,流程圖如圖2所示。

        2反映了通過藍牙實現文件從客戶端傳輸一個文件到服務器的過程,其中用到的協議棧中的API函數以及針對藍牙通信的設置如下 : (1)int socket(int domain, int type,int protocol) 通過這個函數建立一個套接字,其中參數 domain說明網絡程序所用的通訊協議族,本實驗中我們用的是藍牙官方協議棧BlueZ,所以我們的 domain取值AF_BLUETOOTH,type
        我們采用可靠的面向連接的 SOCK_STREAM,protocol我們采用的代表串口仿真的 BTPROTO_RFCOMM。
        (2) int bind(int sockfd, struct sockaddr *my_addr, int addrlen)
        這個函數是服務器端的函數,實現的是綁定端口功能。在我們的實驗中,參數 my_addr代表的我們用的是一個結構體,表示本地地址信息,它的 rc_family我們取為 AF_BLUETOOTH,它的rc_bdaddr我們取可以和任意主機通信的 INADDR_ANY。

        (3) int listen(int sockfd,int backlog)
        這個函數是服務器端的函數,實現監聽端口功能,它和我們普通Linux下的使用方法完全一樣。

        (4) int accept(int sockfd, struct sockaddr *addr,int *addrlen)
        這個函數是服務器端的函數,完成接受客戶端的鏈接請求,并建立與客戶端的鏈接的功能。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 昭苏县| 西贡区| 宁化县| 平陆县| 关岭| 凭祥市| 右玉县| 平邑县| 阿合奇县| 洞头县| 沈丘县| 光泽县| 威远县| 正定县| 永泰县| 齐河县| 宜川县| 昌乐县| 定远县| 卓资县| 历史| 酒泉市| 韶山市| 五常市| 延川县| 子洲县| 萍乡市| 固原市| 海阳市| 临夏市| 海城市| 南溪县| 南平市| 江孜县| 房山区| 高邮市| 章丘市| 金川县| 银川市| 阿克陶县| 平山县|