ARM9的物流终端定位功能的设计和实现
来源:中国一卡通网 作者:不详 发布时间:2012-10-16 08:35:27 字体:[大 中 小]
关键字:通信 定位 GPS
摘 要: 基于现有网络建设的总体情况及物流管理过程中对定位数据的需求分析,并综合考虑各种定位技术的发展现状及技术成熟度、实现成本等因素,拟在物流配送网络中采用GPS辅助定位系统(GPS+Cell-ID+RFID+图形道路匹配相结合)的定位技术。
//对$至*之间的字符进行异或运算,得到结果chk_result
for( ; Data[n]!='*"; n++) chk_result^=Data[n];//判断逗号,区分识别数据,并判别*号,区分校验数据
if(Data[i]==','||(Data[i]=='*' && SectionID==12) )SectionID++;
else
{ switch(SectionID){ case 1: //提取时间m_sTime[a++]=Data[i];break;case 2: //接收判别有效性数据A为有效,V为无效……case 3: //提取纬度……//提取经度、速度、方位角、校验数据等其它信息。
2)Linux串口通信编程
嵌入式Linux操作系统使用接口标准POSIX的termios接口来控制串口的行为。在Linux系统中,串口等设备被当作文件进行处理,其程序模块主体实现如下:
int fd="open"("/dev/ttyS1",O_RDWRIO_NOCTTY);//打开串口
……new_options.c_cflag &=~PARENB;//无奇偶校验
new_options.c_cflag &=~CSIZE;//不隐藏数据位
new_options.c_cflag &=~CSTOP8;//无停止位
new_options.c_cflag |=CS8;//8位数据位
cfsetispeed(&new_options,B4800);//设置波特率
4800bit/scfsetospeed(&new_options,B4800);
tcflush(fd,TCIOFLUSH);
tcsetattr(fd,TCSANOW,&new_options);//设置新的设备方式完成串口设置后,就可以使用read( )、write( )函数对串口进行操作。需注意的是,串口默认是阻塞型的,当没有数据到达时,将会阻塞挂起,这时可以通过多线程编程、串口超时设定或使用select轮询等方式进行调整控制。本系统主要采用多线程编程实现对串口阻塞的调控,使用的是QT的Qthread类,也可以直接使用Linux自身的多线程函数进行操作。
3)QT/Embedded编程
Qt/Embedded是著名的Qt库开发商TrollTech正在进行的基于framebuffer的面向嵌入式系统的Qt版本。因其面向对象、跨平台和界面设计方便美观而得到广泛应用。
本设计采用QT/Embedded 3.3.4版本,它支持SQLITE数据库驱动,便于数据库操作与编程。设计主要使用了QTE的画布模块、SQL模块和网络模块。画布模块中,QCanvas库是一个高度优化的二维绘图库,与其它画布模块结合使用,能很方便地实现导航地图的显示、缩放、漫游以及鹰眼等功能。而SQL模块和网络模块能很方便地实现数据库编程和网络通信功能,极大地缩短了程序的开发周期,提高了开发效率。
初步实现定位误差主要取决于GPS-OEM模块的定位精度,实验显示本系统能初步满足物流信息终端对定位功能的需求。
结束语
实验证明:系统定位数据精确、界面友好、系统可扩展性强,较好地完成了物流信息化终端定位功能。本系统可用于物流终端定位导航,也可适用于其它需要定位导航服务的场合,具有较普遍的适用价值和参考价值。
新闻投稿合作邮箱:yktchina-admin@163.com 字体[大 中 小] [收藏] [进入论坛]