基于Xbee Pro和網(wǎng)絡(luò )技術(shù)的智能公交系統設計
而一旦協(xié)調器啟動(dòng)PAN, 便允許路由器和終端設備結點(diǎn)加入PAN.作為ZigBee終端設備的車(chē)載終端加入PAN時(shí), 系統將收到一個(gè)16位的網(wǎng)絡(luò )地址, 同時(shí)發(fā)送和接收來(lái)自作為ZigBee協(xié)調器的電子站牌終端的數據。PAN協(xié)調器的網(wǎng)絡(luò )地址總是0.由于站牌上ZigBee模塊的網(wǎng)絡(luò )物理地址是唯一的, 故可通過(guò)物理地址向站牌發(fā)送信息。
圖5 公交車(chē)與站牌組網(wǎng)方式
3.2 ZigBee模塊的API操作
XBee Pro具有空模式、接收模式、發(fā)送模式、睡眠模式和命令模式等5種操作模式。對于每一種操作模式, 還有透明方式和應用程序接口(API) 方式兩種操作方式。當工作在透明方式時(shí),模塊可替代串口線(xiàn)的作用, 并以字節為單位操作各種信息; 而當工作在A(yíng)PI 方式時(shí), 所有進(jìn)出模塊的數據均被包含在定義模塊的操作和事件的幀結構中。本文采用API操作方式。
API操作要求模塊之間通過(guò)一種結構化的接口進(jìn)行通信(數據通過(guò)一種定義好序列的幀來(lái)交互通信)。API對通過(guò)串口數據幀進(jìn)行命令發(fā)送、命令響應, 以及模塊狀態(tài)信息的傳送與接收作了規定。
(1) ZigBee發(fā)送請求
公交車(chē)到達站牌后, 應根據站牌的MAC地址將日期、時(shí)間、車(chē)號、公交線(xiàn)路、車(chē)內人數、行駛方向等信息發(fā)送到電子站牌。公交車(chē)ZigBee模塊發(fā)送模式的API幀結構定義如圖6所示。其中的Bytes6-13為站牌的MAC地址?! ?img onload="if(this.width>620)this.width=620;" onclick="window.open(this.src)" style="cursor:pointer" class="scaleImage" height="181" alt="圖6 公交車(chē)TX請求API幀結構圖" src="http://editerupload.eepw.com.cn/fetch/20130807/155467_2_1.jpg" width="550" border="0" />
圖6 公交車(chē)TX請求API幀結構圖
?。?) ZigBee發(fā)送狀態(tài)。
為實(shí)現可靠傳輸, 當公交車(chē)傳送信息給電子站牌的請求完成后, 必須得到電子站牌的確認信息, 因此還必須得到電子站牌回饋給公交車(chē)的發(fā)送狀態(tài)信息。這個(gè)信息將指出數據包是否被成功發(fā)送, 或者發(fā)送失敗。如果發(fā)送失敗必須重新發(fā)送公交車(chē)的信息, 直至發(fā)送成功。
電子站牌根據公交車(chē)的MAC地址, 不斷的向PAN內發(fā)送信息, 并通過(guò)回讀發(fā)送狀態(tài)來(lái)確定是否有公交車(chē)加入網(wǎng)絡(luò ), 如果有, 則根據網(wǎng)絡(luò )地址識別公交車(chē), 并將公交車(chē)的定位信息發(fā)送到監控中心, 從而實(shí)現對GPS定位方式的補充?! ?img onload="if(this.width>620)this.width=620;" onclick="window.open(this.src)" style="cursor:pointer" class="scaleImage" height="201" alt="圖7為公交車(chē)ZigBee模塊的TX狀態(tài)幀結構" src="http://editerupload.eepw.com.cn/fetch/20130807/155467_2_2.jpg" width="550" border="0" />
圖7為公交車(chē)ZigBee模塊的TX狀態(tài)幀結構
其中的Bytes 9為傳送狀態(tài)信息, Bytes6、7為接收模塊的16位網(wǎng)絡(luò )地址。
?。?) ZigBee接收包。
電子站牌收到公交車(chē)發(fā)來(lái)的狀態(tài)信息數據包后便進(jìn)行解析, 并通過(guò)站牌的GPRS模塊發(fā)送到監控中心。電子站牌ZigBee模塊接收模式的API幀結構定義如圖8所示。圖中的Bytes5-12為公交車(chē)的MAC地址。
圖8 電子站牌RX的API幀結構圖
3.3 GPRS網(wǎng)絡(luò )通信設計
電子站牌收到公交車(chē)發(fā)來(lái)的信息后, 將通過(guò)GPRS-DTU發(fā)送到監控中心, 然后由監控中心將所有公交車(chē)發(fā)來(lái)的信息通過(guò)Internet發(fā)送給站牌。
GPRS DTU有透傳模式、AT+i命令模式、自動(dòng)IP注冊模式、遠程維護和流控五種模式。在系統的電子站牌終端中, DTU將使用透傳模式與服務(wù)器進(jìn)行信息的交互。通過(guò)透傳模式可將電子站牌異步串口通信轉換成基于TCP/UDP協(xié)議的網(wǎng)絡(luò )通信。其主要目的是通過(guò)串行通信的簡(jiǎn)單設備實(shí)現在IP網(wǎng)絡(luò )上的通信, 而數據格式不發(fā)生任何改變。這一點(diǎn)非常重要, 由于數據格式在經(jīng)過(guò)DTU前后均不發(fā)生任何變化, 由此, 電子站牌原有的設備及軟件不用作任何升級, 就可直接應用。
DTU的透傳模式可使電子站牌客戶(hù)端在發(fā)起通信請求時(shí), 使DTU必須與服務(wù)器建立網(wǎng)絡(luò )連接。也就是說(shuō), 電子站牌下位機與服務(wù)器進(jìn)行數據傳輸時(shí), 首先是電子站牌下位機要與DTU設備的串口相連, 在DTU進(jìn)入透傳模式后自動(dòng)被調用, 并與服務(wù)器建立網(wǎng)絡(luò )連接, 當網(wǎng)絡(luò )連接建立后, DTU將自動(dòng)完成串口到網(wǎng)絡(luò )通信的轉換, 以便所有數據可透明地在服務(wù)器軟件與電子站牌下位機之間雙向傳輸。
服務(wù)器與電子站牌終端通信可通過(guò)套接字socket 來(lái)實(shí)現。首先在服務(wù)器上建立一個(gè)監聽(tīng)Socket對象, 并綁定在一個(gè)固定端口上, 然后,每當電子站牌客戶(hù)端發(fā)送一個(gè)SOCKET連接請求,服務(wù)器端就會(huì )新開(kāi)啟一個(gè)線(xiàn)程, 并在其中創(chuàng )建一個(gè)socket與電子站牌客戶(hù)端的socket通訊, 直到電子站牌客戶(hù)端程序關(guān)閉, 該線(xiàn)程結束, 然后服務(wù)器主線(xiàn)程的socket在應用程序退出時(shí)關(guān)閉。通過(guò)多線(xiàn)程的Socket程序設計, 可以實(shí)現一個(gè)服務(wù)器與多個(gè)電子站牌客戶(hù)端的通信。
以下是服務(wù)器基于socket多線(xiàn)程的具體實(shí)現程序代碼:
DWORD WINAPI AnswerThread ( LPVOIDlparam) //收發(fā)線(xiàn)程入口
{//創(chuàng )建線(xiàn)程時(shí)把服務(wù)器建立的新套接字傳給lparam
SOCKET ClientSocket = ( SOCKET) ( LPVOID)lparam;
int bytesRecv;char sendbuf [ 32] = “ ” ;char
recvbuf [32] =“” ;
while (1)
{bytesRecv=SOCKET_ERROR;
for ( int i =0;i 《 ( int) strlen ( recvbuf) ;i ++ )
{recvbuf [i] =‘国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放