微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于无线通信技术的智能公交系统设计

基于无线通信技术的智能公交系统设计

时间:10-14 来源:本站整理 点击:

输。

      服务器与电子站牌终端通信可通过套接字socket 来实现。首先在服务器上建立一个监听Socket对象, 并绑定在一个固定端口上, 然后,每当电子站牌客户端发送一个SOCKET连接请求,服务器端就会新开启一个线程, 并在其中创建一个socket与电子站牌客户端的socket通讯, 直到电子站牌客户端程序关闭, 该线程结束, 然后服务器主线程的socket在应用程序退出时关闭。通过多线程的Socket程序设计, 可以实现一个服务器与多个电子站牌客户端的通信。

      以下是服务器基于socket多线程的具体实现程序代码:

      DWORD WINAPI AnswerThread ( LPVOIDlparam) //收发线程入口

      {//创建线程时把服务器建立的新套接字传给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] ='\0';}

      while (bytesRecv==SOCKET_ERROR)

      { bytesRecv =recv ( ClientSocket,recvbuf,32,0) ;} //⑤接收电子站牌客户端的数据

      …

      send ( ClientSocket,recvbuf,strlen ( recvbuf) ,0) ; //⑥向电子站牌客户端发送数据

      }

      }

      …

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

      socket ( AF_INET,SOCK_STREAM,IPPROTO_TCP) ;//①创建一个监听socket

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

      listen (m_socket,20) //③监听套接字

      SOCKET AcceptSocket;

      while (1) //一直等待客户端的请求, 请求到来后,建立新的连接套接字

      { AcceptSocket=SOCKET_ERROR;

      while (AcceptSocket==SOCKET_ERROR)

      { AcceptSocket =accept ( m_socket,NULL,NULL) ;} /*④等待客户请求到来,请求到来后,接受连接请求, 返回一个新的对应此次连接的socket*/

      hThread =CreateThread ( NULL,NULL,AnswerThread, ( LPVOID) AcceptSocket,0,&dwThreadId) ;} /*创建新线程, 将新的连接套接字传给AnswerThread入口函数*/

      }

      4 结束语

      本系统中, 公交车与电子站牌通过ZigBee网络实现信息交互, 电子站牌与监控中心通过GPRS网络实现信息交互。公交车上用价格低廉的ZigBee模块取代现有智能公交系统中的车载GPRS模块, 可节约硬件成本, 而公交车与电子站牌之间的ZigBee网络通信则可实现公交车的定位, 以作为GPS定位的补充, 从而增加了系统的可靠性。

      今后, 随着3G、WiMAX、Wi-Fi等无线通信技术的成熟以及更加优化的卫星定位技术的出现, 定会出现越来越多的智能公交系统方案, 从而在更大程度上推动智能公交系统的发展。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top