微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于ARM9的物流终端定位功能的设计和实现

基于ARM9的物流终端定位功能的设计和实现

时间:01-04 来源:互联网 点击:

目前常用的GPS-OEM模块均支持NMEA-0183的数据格式。NMEA-0183是以语句来发送数据的,每条语句都相对独立并有完整意义。语句包含若干由ASCII文本字符组成的字段, 每条语句都以“$”开头,以回车换行结束,数据包含在字段中,字段之间由逗号分 隔。每条语句的第一个字段表明语句的意义,在标准语句中,“$”后的两位字符为“talkerID”,表示发送数据的设备,如GP表示GPS;接着的三位字符为“sentenceID”,表示了该语句的类型,如GGA,RMC等。语句中每个字段的含义随语句类型而定,语句的最后一个字段是检验和(checksum),由“*”和两位十六进制数字及回车换行符组成,检验和是“$”和“*”之间所有字符的逻辑异或运算结果,用于检验和确认数据的传输是否正确。

  对于终端导航而言,“$GPRMC”帧格式可以满足大部分需求,其帧长相对较短,便于信息处理。因此,在本系统中,选取“$GPRMC”帧进行定位信息提取。系统通过RS232串口从GPS-OEM模块中接收定位数据,从接收数据中的“$GPRMC”帧提取时间、经纬度、速度、方位角等定位导航信息。其程序模块主体结构如下:

  ……

  //判断是否为$GPRMC帧头,并进行标记

  if(Data[i]=='$' Data[i+3]=='R')……

  //判断是否为帧尾,帧尾以换行字符表示,数值为10 ''

  if(Data[i]==10 SectionID==13)

  { ……id_check=m*16+n; //得到检验数据的INT型

  if(chk_result!=id_check) //比较异或运算结果与检验数据是否一致

  …… i f( Data[i]=='*' SectionID==12 ) //异或运算结果

  ……

  //对$至*之间的字符进行异或运算,得到结果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模块的定位精度,实验显示本系统能初步满足物流信息终端对定位功能的需求。

  结束语

  实验证明:系统定位数据精确、界面友好、系统可扩展性强,较好地完成了物流信息化终端定位功能。本系统可用于物流终端定位导航,也可适用于其它需要定位导航服务的场合,具有较普遍的适用价值和参考价值。

参考文献:

[1].ARM920Tdatasheethttp://www.dzsc.com/datasheet/ARM920T_139814.html.
[2].RS232datasheethttp://www.dzsc.com/datasheet/RS232_585128.html.
[3].CS8datasheethttp://www.dzsc.com/datasheet/CS8_2332280.html.

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

网站地图

Top