新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Xbee Pro模塊和ZigBee/GPS/GPRS的智能公交系統(tǒng)設(shè)計(jì)

基于Xbee Pro模塊和ZigBee/GPS/GPRS的智能公交系統(tǒng)設(shè)計(jì)

作者: 時(shí)間:2012-06-05 來源:網(wǎng)絡(luò) 收藏

  DTU的透?jìng)髂J娇墒闺娮诱九瓶蛻舳嗽诎l(fā)起通信請(qǐng)求時(shí), 使DTU必須與服務(wù)器建立網(wǎng)絡(luò)連接。也就是說, 電子站牌下位機(jī)與服務(wù)器進(jìn)行數(shù)據(jù)傳輸時(shí), 首先是電子站牌下位機(jī)要與DTU設(shè)備的串口相連, 在DTU進(jìn)入透?jìng)髂J胶笞詣?dòng)被調(diào)用, 并與服務(wù)器建立網(wǎng)絡(luò)連接, 當(dāng)網(wǎng)絡(luò)連接建立后, DTU將自動(dòng)完成串口到網(wǎng)絡(luò)通信的轉(zhuǎn)換, 以便所有數(shù)據(jù)可透明地在服務(wù)器軟件與電子站牌下位機(jī)之間雙向傳輸。

  服務(wù)器與電子站牌終端通信可通過套接字socket 來實(shí)現(xiàn)。首先在服務(wù)器上建立一個(gè)監(jiān)聽Socket對(duì)象, 并綁定在一個(gè)固定端口上, 然后,每當(dāng)電子站牌客戶端發(fā)送一個(gè)SOCKET連接請(qǐng)求,服務(wù)器端就會(huì)新開啟一個(gè)線程, 并在其中創(chuàng)建一個(gè)socket與電子站牌客戶端的socket通訊, 直到電子站牌客戶端程序關(guān)閉, 該線程結(jié)束, 然后服務(wù)器主線程的socket在應(yīng)用程序退出時(shí)關(guān)閉。通過多線程的Socket程序設(shè)計(jì), 可以實(shí)現(xiàn)一個(gè)服務(wù)器與多個(gè)電子站牌客戶端的通信。

  以下是服務(wù)器基于socket多線程的具體實(shí)現(xiàn)程序代碼:

  DWORD WINAPI AnswerThread ( LPVOIDlparam) //收發(fā)線程入口

  {//創(chuàng)建線程時(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] =‘’;}

  while (bytesRecv==SOCKET_ERROR)

  { bytesRecv =recv ( ClientSocket,recvbuf,32,0) ;} //⑤接收電子站牌客戶端的數(shù)據(jù)

  …

  send ( ClientSocket,recvbuf,strlen ( recvbuf) ,0) ; //⑥向電子站牌客戶端發(fā)送數(shù)據(jù)

  }

  }

  …

  WSAStartup (MAKEWORD (2,2) ,wsaData) ;//初始化Winsock

  socket ( AF_INET,SOCK_STREAM,IPPROTO_TCP) ;//①創(chuàng)建一個(gè)監(jiān)聽socket

  bind ( m_socket, ( SOCKADDR*) service,sizeof(service)) //②綁定套接字

  listen (m_socket,20) //③監(jiān)聽套接字

  SOCKET AcceptSocket;

  while (1) //一直等待客戶端的請(qǐng)求, 請(qǐng)求到來后,建立新的連接套接字

  { AcceptSocket=SOCKET_ERROR;

  while (AcceptSocket==SOCKET_ERROR)

  { AcceptSocket =accept ( m_socket,NULL,NULL) ;} /*④等待客戶請(qǐng)求到來,請(qǐng)求到來后,接受連接請(qǐng)求, 返回一個(gè)新的對(duì)應(yīng)此次連接的socket*/

  hThread =CreateThread ( NULL,NULL,AnswerThread, ( LPVOID) AcceptSocket,0,dwThreadId) ;} /*創(chuàng)建新線程, 將新的連接套接字傳給AnswerThread入口函數(shù)*/

  }

  4 結(jié)束語

  本系統(tǒng)中, 公交車與電子站牌通過網(wǎng)絡(luò)實(shí)現(xiàn)信息交互, 電子站牌與監(jiān)控中心通過網(wǎng)絡(luò)實(shí)現(xiàn)信息交互。公交車上用價(jià)格低廉的模塊取代現(xiàn)有智能公交系統(tǒng)中的車載模塊, 可節(jié)約硬件成本, 而公交車與電子站牌之間的網(wǎng)絡(luò)通信則可實(shí)現(xiàn)公交車的定位, 以作為定位的補(bǔ)充, 從而增加了系統(tǒng)的可靠性。

  今后, 隨著3G、WiMAX、Wi-Fi等無線通信技術(shù)的成熟以及更加優(yōu)化的衛(wèi)星定位技術(shù)的出現(xiàn), 定會(huì)出現(xiàn)越來越多的智能公交系統(tǒng)方案, 從而在更大程度上推動(dòng)智能公交系統(tǒng)的發(fā)展。

tcp/ip相關(guān)文章:tcp/ip是什么



上一頁 1 2 3 下一頁

關(guān)鍵詞: ZigBee GPS GPRS Xbee Pro模塊

評(píng)論


相關(guān)推薦

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

關(guān)閉