《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Socket的Linux與Windows下WiFi模塊間通信的實(shí)現(xiàn)
基于Socket的Linux與Windows下WiFi模塊間通信的實(shí)現(xiàn)
來(lái)源:微型機(jī)與應(yīng)用2014年第2期
王云亮1,王光林2
(1.天津理工大學(xué) 天津市復(fù)雜系統(tǒng)控制理論及應(yīng)用重點(diǎn)實(shí)驗(yàn)室,天津300384; 2.天津理工大學(xué) 自
摘要: 為了實(shí)現(xiàn)Linux開(kāi)發(fā)環(huán)境下的總控制器與Windows開(kāi)發(fā)環(huán)境下分節(jié)點(diǎn)之間的數(shù)據(jù)進(jìn)行無(wú)線傳輸,提出用Socket的方法解決它們所帶WiFi模塊之間的無(wú)線通信。該方法能夠?qū)崿F(xiàn)數(shù)據(jù)的正常傳輸,并能把數(shù)值準(zhǔn)確地顯示出來(lái)。Socket的使用比較簡(jiǎn)單,不會(huì)對(duì)整體系統(tǒng)增加太多代碼量。這樣開(kāi)發(fā)出來(lái)的總控制器與分節(jié)點(diǎn)之間的通信,傳輸速率快、誤碼率低、容易實(shí)現(xiàn),具有很強(qiáng)的實(shí)用價(jià)值。
Abstract:
Key words :

摘  要: 為了實(shí)現(xiàn)Linux開(kāi)發(fā)環(huán)境下的總控制器與Windows開(kāi)發(fā)環(huán)境下分節(jié)點(diǎn)之間的數(shù)據(jù)進(jìn)行無(wú)線傳輸,提出用Socket的方法解決它們所帶WiFi模塊之間的無(wú)線通信。該方法能夠?qū)崿F(xiàn)數(shù)據(jù)的正常傳輸,并能把數(shù)值準(zhǔn)確地顯示出來(lái)。Socket的使用比較簡(jiǎn)單,不會(huì)對(duì)整體系統(tǒng)增加太多代碼量。這樣開(kāi)發(fā)出來(lái)的總控制器與分節(jié)點(diǎn)之間的通信,傳輸速率快、誤碼率低、容易實(shí)現(xiàn),具有很強(qiáng)的實(shí)用價(jià)值。
關(guān)鍵詞: 嵌入式Linux;WiFi;Socket;總控制器;分節(jié)點(diǎn)

    現(xiàn)如今無(wú)線通信的方式越來(lái)越多,組網(wǎng)模式也千姿百態(tài)。一般研究同種操作系統(tǒng)下的Socket或WiFi通信的比較多,但在兩種系統(tǒng)開(kāi)發(fā)環(huán)境下WiFi之間的通信研究卻并不多。眾所周知,Linux操作系統(tǒng)由于其系統(tǒng)源碼的自由和開(kāi)放性,以及系統(tǒng)性能的穩(wěn)定性,被廣泛用作服務(wù)器的操作系統(tǒng)。而Windows由于其友好的圖形界面和強(qiáng)大的編程環(huán)境,常被廣泛用作客服端的開(kāi)發(fā)環(huán)境和操作系統(tǒng)[1]。因此,研究?jī)纱蟛僮飨到y(tǒng)的實(shí)時(shí)通信問(wèn)題具有一定的現(xiàn)實(shí)意義。
    本文主要研究嵌入式Linux下的ARM與Windows環(huán)境開(kāi)發(fā)下的STC80C51單片機(jī)之間的無(wú)線通信問(wèn)題,通過(guò)套接字編程由WiFi進(jìn)行傳輸,成功實(shí)現(xiàn)了兩大開(kāi)發(fā)環(huán)境下數(shù)據(jù)的無(wú)線傳輸,基本解決了兩者之間的通信問(wèn)題。
1 Socket原理
    Socket通常稱作“套接字”,用于描述IP地址和端口,是一個(gè)通信鏈的句柄。在客戶端/服務(wù)器通信模型中,Socket是網(wǎng)絡(luò)通信的基本操作單元,一個(gè)Socket描述就是通信連接的一端,在一個(gè)網(wǎng)絡(luò)通信連接中,兩端通信程序應(yīng)各有一個(gè)Socket對(duì)其進(jìn)行描述,不同的進(jìn)程通過(guò)各自的Socket發(fā)送和接收消息,從而實(shí)現(xiàn)了網(wǎng)絡(luò)通信[2-3]。
    Linux Socket支持以下3種常見(jiàn)的套接字類型:(1)流式Socket(SOCK_STREAM),一種最常用的套接字類型,可以保證數(shù)據(jù)傳輸?shù)目煽啃裕粫?huì)出現(xiàn)數(shù)據(jù)丟失、破損或重復(fù)出現(xiàn)等差錯(cuò);(2)數(shù)據(jù)報(bào)Socket(SOCK_DGRAM)是一種無(wú)連接和不可靠的雙工數(shù)據(jù)傳輸服務(wù),數(shù)據(jù)通過(guò)獨(dú)立的報(bào)文進(jìn)行傳輸,是無(wú)序的,并且不保證數(shù)據(jù)的可靠性和無(wú)重復(fù)性,適用于可靠性要求不高的一些場(chǎng)合;(3)原始Socket(SOCK_RAW),這種類型的Socket允許對(duì)底層協(xié)議(如IP或ICMP)直接訪問(wèn),它功能強(qiáng)大但使用不太方便,一般用于新協(xié)議的開(kāi)發(fā)。
    Socket的編程方法很多,但主要有兩種方式——面向連接的TCP協(xié)議方式和無(wú)連接的UDP協(xié)議方式。本文采用的是TCP協(xié)議方式。
2 通信平臺(tái)的搭建
    本文研究的是兩個(gè)平臺(tái)的通信,服務(wù)器是內(nèi)有嵌入式Linux操作系統(tǒng)的ARM開(kāi)發(fā)板,客戶端是運(yùn)行于Windows操作系統(tǒng)開(kāi)發(fā)環(huán)境下的單片機(jī)。本文在實(shí)際研究中,服務(wù)器端選用ARM11系列的S3C6410為開(kāi)發(fā)平臺(tái),內(nèi)部嵌入Linux2.6.28內(nèi)核版本,目標(biāo)代碼的編譯平臺(tái)選用裝有Ubuntu12.04操作系統(tǒng)的普通PC,它們通過(guò)交叉編譯和NFS掛載的方式實(shí)現(xiàn)了服務(wù)器端編譯平臺(tái)和運(yùn)行平臺(tái)的正常運(yùn)行;客戶端是在Windows XP系統(tǒng)開(kāi)發(fā)環(huán)境下的帶有各種傳感器的51單片機(jī)。
    為了實(shí)現(xiàn)二者之間的通信,WiFi模塊在此過(guò)程中起到樞紐的作用,因此通信兩端都有一個(gè)WiFi模塊。在服務(wù)器端的WiFi模塊選用的是Marvell 88w8686[4],它是一款低成本、低功耗、自帶數(shù)據(jù)鏈路層的WiFi協(xié)議棧,內(nèi)部集成了兩個(gè)工作頻率為128 MHz的ARM7 Core,一個(gè)Core負(fù)責(zé)網(wǎng)絡(luò)數(shù)據(jù)的處理,另一個(gè)Core負(fù)責(zé)處理RF方面的工作。該模塊通過(guò)SDIO接口與ARM開(kāi)發(fā)板相連。
    客戶端的WiFi 模塊選用海凌科電子有限公司新推出的HLK-RM04模塊[5],是基于通用串行接口的符合網(wǎng)絡(luò)標(biāo)準(zhǔn)的低成本嵌入式模塊。通過(guò)該模塊,傳統(tǒng)的串口設(shè)備在不需要更改任何配置的情況下,即可通過(guò)Internet 網(wǎng)絡(luò)傳輸自己的數(shù)據(jù)。模塊通過(guò)雙9針工頭串口線與單片機(jī)相連,功能結(jié)構(gòu)圖如圖1所示,由于該模塊內(nèi)置了TCP/IP協(xié)議棧,能夠?qū)崿F(xiàn)用戶串口、以太網(wǎng)、無(wú)線網(wǎng)(WiFi)3個(gè)接口之間的轉(zhuǎn)換。

    至此,整個(gè)系統(tǒng)的通信平臺(tái)的搭建已經(jīng)完成,系統(tǒng)的整體結(jié)構(gòu)功能框圖如圖2所示,從圖中可以看出WiFi模塊的組網(wǎng)模式。

3 通信過(guò)程的實(shí)現(xiàn)
    本文以采集到的溫度值的傳輸來(lái)說(shuō)明實(shí)現(xiàn)的過(guò)程。下面分別從服務(wù)器端和客戶端進(jìn)行介紹。
3.1 服務(wù)器端的實(shí)現(xiàn)
    雖然在舉例中采用的是單一客戶端與服務(wù)器進(jìn)行通信,但考慮到實(shí)際中往往會(huì)遇到多個(gè)客戶端連接服務(wù)器的情況,像常用的recv、send都是阻塞性函數(shù),若資源沒(méi)有準(zhǔn)備好,則調(diào)用該函數(shù)的進(jìn)程將進(jìn)入睡眠狀態(tài),這樣就無(wú)法處理I/O多路復(fù)用的情況。鑒于此,使用select函數(shù)既可以實(shí)現(xiàn)非阻塞I/O或信號(hào)驅(qū)動(dòng)I/O,還可以設(shè)置等待時(shí)間。服務(wù)器端實(shí)現(xiàn)的程序流程圖如圖3所示。

    接下來(lái)對(duì)其中一些關(guān)鍵性的步驟進(jìn)行闡述。
    (1)建立Socket
    socketfd=socket(AF_INET,SOCK_STREAM,0);
    AF_INET表示的是針對(duì)Internet的通信協(xié)議,允許在遠(yuǎn)程主機(jī)之間通信;SOCK_STREAM表明使用的是TCP協(xié)議,這樣會(huì)提供按順序的、可靠的、雙向的、面向連接的比特流;0表示成功時(shí)返回文件描述符,失敗時(shí)返回-1,這樣通過(guò)errno即可知道出錯(cuò)的詳細(xì)情況。
    (2)綁定和監(jiān)聽(tīng)
    bind(socketfd,(structsocketaddr*)&server_sockaddr,
sizeof(structsockaddr));//綁定端口號(hào)和地址
    listen(socketfs,n);//監(jiān)聽(tīng),n表示允許與服務(wù)器的
最大連接數(shù)
    它們都是成功時(shí)返回0,出錯(cuò)時(shí)返回-1。
    (3)調(diào)用select函數(shù)與客戶端連接
    fd_set  readfd,writefd;//文件描述集的聲明
    FD_ZERO(&readfd);//清空readfd與所有文件句柄的聯(lián)系
    FD_SET(sockfd,&readfd);//建立文件句柄與readfd的聯(lián)系
    select(MAX_CONNECTED_NO,&readfd,NULL,NULL,
(struct timeval*)0);//select函數(shù)的調(diào)用
    FD_ISSET(sockfd,&readfd);//檢查readfd聯(lián)系的文件
句柄sockfd是否可讀寫(xiě),當(dāng)大于0時(shí)表示可讀寫(xiě)
3.2 客戶端的實(shí)現(xiàn)
    客戶端的實(shí)現(xiàn)實(shí)際上分兩部分進(jìn)行:一是單片機(jī)通過(guò)DALLAS公司的DS18B20溫度傳感器將采集的數(shù)據(jù)傳送給串口;二是與之用串口線相連的RM04模塊,通過(guò)WiFi與服務(wù)器建立連接,具體實(shí)現(xiàn)的程序流程如圖4所示。

 

 

    第一部分采集數(shù)據(jù)傳給串口的過(guò)程需要注意數(shù)據(jù)在發(fā)送的過(guò)程中應(yīng)該把數(shù)據(jù)以ASCII形式發(fā)送,這樣服務(wù)器端才能以想要的十進(jìn)制的形式顯示出來(lái),其他的比較簡(jiǎn)單,不再贅述。主要介紹第二部分中RM04模塊的配置。
    (1)調(diào)到相應(yīng)的端口,搜索到該模塊。
    (2)以無(wú)線網(wǎng)卡的模式配置該模塊,選擇TCP客戶端模式,遠(yuǎn)程端口的IP和端口號(hào),無(wú)線局域網(wǎng)的名稱與密碼,本模塊的IP等,具體配置圖如圖5所示。

    (3)在命令窗口下ping 192.168.1.120,如果ping通,說(shuō)明該模塊成功。
    在Linux系統(tǒng)中進(jìn)入開(kāi)發(fā)板,先啟動(dòng)服務(wù)器端,再運(yùn)行客戶端程序,服務(wù)器端出現(xiàn)如圖6所示的結(jié)果。

    通過(guò)圖6可以看出,客戶端與服務(wù)器端之間能夠正常通信,并能正確顯示出當(dāng)前測(cè)量的溫度是27.35 ℃。該項(xiàng)研究主要針對(duì)總控制器與分節(jié)點(diǎn)之間的無(wú)線通信,對(duì)于需要這種模式通信的系統(tǒng)有很大的實(shí)際使用價(jià)值。
參考文獻(xiàn)
[1] Li Fei,Yuan Lin,Wang Zhihuo,et al.Realization of communication between Linux and Windows based on Socket[C].Proceedings of the 2010 International Conference on Information Technology and Scientific Management,2010.
[2] 王遠(yuǎn)洋,周淵平,郭煥麗.Linux下基于Socket多線程并發(fā)通信的實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2009,25(5-3):70-72.
[3] 郭東升,田秀華.Linux環(huán)境下基于Socket的網(wǎng)絡(luò)通信[J].軟件導(dǎo)刊,2009,8(1):116-118.
[4] 王云亮,李瑩.嵌入式安防遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)[J].化工自動(dòng)化及儀表,2013,40(2):237-240.
[5] 深圳市海凌科電子有限公司.HLK-RM04應(yīng)用手冊(cè)1串口轉(zhuǎn)以太網(wǎng)應(yīng)用[K].2012.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
午夜视频久久久久久| 欧美日韩成人在线视频| 一本色道久久综合亚洲精品高清 | 99国产精品视频免费观看一公开| 激情一区二区三区| 国内精品伊人久久久久av影院| 国产精品一区在线观看| 国产精品影院在线观看| 国产精品久99| 国产精品美女久久福利网站| 欧美色另类天堂2015| 欧美日韩一区二区三区免费看 | 欧美日韩国产精品一卡| 欧美高清日韩| 欧美激情第8页| 欧美人与禽猛交乱配| 欧美激情久久久久| 欧美精品少妇一区二区三区| 欧美激情精品久久久久久久变态| 欧美激情在线狂野欧美精品| 欧美日韩高清在线播放| 欧美视频日韩视频在线观看| 国产精品都在这里| 国产精品亚洲精品| 国产午夜精品在线| 伊人精品成人久久综合软件| 18成人免费观看视频| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲毛片一区二区| 亚洲在线免费| 久久成人免费电影| 久久精品国产第一区二区三区| 亚洲国产日韩一级| 夜夜爽夜夜爽精品视频| 亚洲在线1234| 久久久噜噜噜久久中文字免| 欧美大尺度在线观看| 欧美日韩系列| 国产拍揄自揄精品视频麻豆| 含羞草久久爱69一区| 亚洲国产精品成人精品| 一区二区久久久久| 亚洲欧美中文日韩在线| 91久久精品国产91性色| 亚洲视频在线视频| 久久狠狠婷婷| 欧美激情一区二区三区 | 99精品99| 欧美一级理论性理论a| 亚洲国产中文字幕在线观看| 亚洲作爱视频| 久久精品国产一区二区三| 欧美高清hd18日本| 国产精品亚洲а∨天堂免在线| 极品少妇一区二区三区| 99热精品在线| 久久精品一区蜜桃臀影院| 一级成人国产| 久久精品二区| 欧美日韩精品不卡| 国产日韩综合| 亚洲区在线播放| 性色一区二区| 在线亚洲欧美专区二区| 久久久www| 欧美日韩一区国产| 一区三区视频| 亚洲自拍偷拍福利| 野花国产精品入口| 久久婷婷影院| 国产精品久久午夜夜伦鲁鲁| 亚洲高清色综合| 午夜在线观看欧美| 亚洲视频视频在线| 美女视频黄免费的久久| 国产精品免费网站| 亚洲日产国产精品| 久久精品视频在线播放| 亚洲欧美卡通另类91av| 欧美裸体一区二区三区| 国产综合婷婷| 亚洲婷婷综合色高清在线| 亚洲精品影院在线观看| 久久精品国产视频| 国产精品久久久久久久久搜平片| 在线观看国产成人av片| 亚洲在线国产日韩欧美| 一区二区动漫| 欧美成ee人免费视频| 国产丝袜一区二区| 亚洲一区二区三区久久| 99精品视频免费全部在线| 久久女同精品一区二区| 国产模特精品视频久久久久 | 国产精品成人aaaaa网站| 亚洲国产成人av在线| 欧美综合国产| 欧美中文字幕| 国产精品久久久久久亚洲毛片| 亚洲国产影院| 亚洲高清在线观看| 久久久久久欧美| 国产欧美精品一区aⅴ影院| 99国产精品久久久久久久成人热| 亚洲青涩在线| 欧美大片在线观看一区| 韩国一区二区三区美女美女秀| 亚洲欧美国产精品桃花| 亚洲影视九九影院在线观看| 欧美日韩喷水| 艳女tv在线观看国产一区| 99这里只有精品| 欧美精品免费播放| 亚洲黄色在线观看| 日韩小视频在线观看| 欧美激情精品久久久六区热门 | 久久精品卡一| 国产日韩欧美精品一区| 亚洲一区三区视频在线观看 | 国产亚洲一区二区三区在线观看| 亚洲一区二区三区视频播放| 亚洲一区二区成人在线观看| 欧美三日本三级三级在线播放| av不卡在线看| 亚洲午夜在线视频| 欧美午夜精品久久久久久久 | 欧美亚洲一区二区在线观看| 国产精品日韩| 午夜免费电影一区在线观看| 久久国产精品99精品国产| 国模精品一区二区三区色天香| 久久不射网站| 欧美成人综合网站| 亚洲精一区二区三区| 亚洲永久免费精品| 国产乱码精品1区2区3区| 欧美一区二区三区免费观看 | 国产精品草莓在线免费观看| 国产精品99久久不卡二区| 亚洲欧美日韩在线播放| 国产毛片精品国产一区二区三区| 欧美亚洲在线播放| 巨胸喷奶水www久久久免费动漫| 亚洲福利免费| 中国成人在线视频| 国产精品美女| 欧美一区二区三区在线观看| 久热爱精品视频线路一| 91久久一区二区| 亚洲欧美一区二区在线观看| 国产亚洲欧美日韩美女| 亚洲欧洲综合另类在线| 欧美日韩系列| 午夜一区不卡| 欧美成人高清| 正在播放亚洲一区| 久久久久久夜| 亚洲国产婷婷香蕉久久久久久99| 亚洲视频网站在线观看| 国产日韩视频| 亚洲国产二区| 欧美视频在线观看 亚洲欧| 欧美一区二区三区日韩| 欧美xx视频| 亚洲一区二区三区在线看| 久久影院亚洲| 99精品99| 久久婷婷国产综合尤物精品| 99re视频这里只有精品| 久久福利视频导航| 亚洲毛片在线观看.| 久久久www成人免费无遮挡大片| 亚洲国产日韩在线一区模特| 午夜亚洲视频| 亚洲国产日韩在线| 欧美在线一级视频| 亚洲精品欧美一区二区三区| 久久国产精品72免费观看| 亚洲欧洲三级| 久久国产福利| 一区二区三区视频免费在线观看| 久久久综合免费视频| 一本一道久久综合狠狠老精东影业| 久久免费视频观看| 一区二区av在线| 免费观看在线综合| 亚洲欧美久久| 欧美精品在线一区二区| 欧美一区永久视频免费观看| 欧美日韩一区在线观看视频| 亚洲国产高清一区| 国产精品综合| 亚洲视频在线观看一区| 亚洲大片在线观看| 欧美一区日韩一区| 亚洲精品中文字幕在线| 美国成人直播| 欧美亚洲午夜视频在线观看| 欧美午夜精彩| 亚洲最新合集|