1.2.2 站台子系统 站台子系统由主控微处理器、高频收发芯片、显示控制芯片、存储器和触摸屏等模块构成,如图2所示。 1.3 智能公交系统的软件系统 基于物联网的智能公交系统的软件是通过网络层对底层(Zigbee、RFID等)功能进行封装,给GUI上层界面提供统一的调用接口。功能框图如3所示。
1)嵌入式Linux开发流程 ①建立开发环境,在虚拟机中安装Fedora8系统作为宿主机环境,安装GCC交叉编译器。 ②配置开发主机。配置串口终端软件参数,配置NFS网络文件系统,配置SMB服务,建立引导装载程序BOOTLOADER。 ③下载已经移植好的LINUX操作系统。下载后再添加RFID、Zigbee、LCD等硬件的驱动程序,进行调试修改。 ④建立根文件系统,从www.busybox.net下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。 ⑤建立应用程序的flash磁盘分区,使用JFFS2或YAFFS文件系统,并在内核中提供这些文件系统的驱动,需要根据应用规划flash的分区方案。 ⑥开发应用程序,可以下载到根文件系统中,也可以放入YAFFS、JFFS2文件系统中。 ⑦烧写内核、根文件系统、应用程序。 2)网络服务层实现(Socket通信) 套接口(Socket)为目前Linux上最为广泛使用的一种的进程间通信机制,与其他的Linux通信机制不同之处在于除了它可用于单机内的进程间通信以外,还可用于不同机器之间的进程间通信。但是由于Socket本身不支持同时等待和超时处理,所以它不能直接用来多进程之间的相互实时通信。本文采用事件驱动库libev的方式构建“一问一答”的服务器模型。Socket服务器端Libev是一种高性能事件循环/事件驱动库,libev拥有更快的速度,更小的体积,更多功能等优势。libev用ev_loop结构循环体来探测事件是否产生,并用void ev_loop(ev_loop* loop,int flags)来启动。由于没有考虑服务器端主动终止连接机制,所以各个连接可以维持任意时间,客户端可以自由选择退出时机。上述模型可以接受任意多个连接,且为各个连接提供完全独立的问答服务。借助libev提供的事件循环/事件驱动接口,上述模型有机会具备其他模型不能提供的高效率、低资源占用、稳定性好和编写简单等特点。 服务器主要实现流程是:首先开启一个Zigbee后台线程(底层)监听服务器调用信息,接着利用ev_io_start(loop,&ev_io_watcher)启动一个接收线程,专门用来接收客户端发送过来的命令信息,然后按照相应的协议进行解析,跳转到相应的接口,进一步调用底层Zigbee等信息并返回正确的信息给客户端。客户端程序用于同服务器端进行交互,实现为上层GUI提供封装好的接口。 3)QT/E GUI界面设计 QT是一个跨平台的C++图形用户界面(GUI)工具包,本设计上位机界面软件采用QT/E4.6作为界面的开发软件包,大体流程是首先调用网络客户端的Api_GetConneet(port)接口函数,连接到服务器的port端口,然后开启了一个线程(zigbeetopo.cpp),用来调用网络客户端的Api_Cliect_GetRfidId()接口函数,获得RFID读取的卡号。
2 结论 提出了基于物联网的智能公交系统设计方案,从车辆监控调度、车载终端、电子站牌和通信网络等方面论述了智能公交系统的主要功能模块,给出了系统的硬件设计和软件设计框架和流程。
|