基于Windows CE的物流车载终端设计

发布者:zukeq2009最新更新时间:2007-04-27 来源: 中国电子联盟关键字:GPS  接口  通道  串口 手机看文章 扫描二维码
随时随地手机看文章
物流在现代社会中正扮演着越来越重要的角色。但是,与国外技术密集型的物流行业相比,国内物流行业在信息化、智能化程度上还存在着较大差距。鉴于这样一种状况,本文提出了一个基于Windows CE平台的物流车载终端设计方案。该物流车载终端以Liod评估板(简称为“Liod板”)为硬件平台,在嵌人式操作系统Windows CE上实现的功能有:电子地图,实现地图4级缩放、平移、归中功能;无线通信,实现终端与控制中心的GPRS无线通信;GPS定位,定位车载终端当前的位置;称重与打印,读取电子秤数据,实现票据的打印;语音提示,提供更好的人机交互功能。

  1 软硬件平台简介

本车载终端以Liod板为硬件平台。Liod板的核心PXA270是一款属于Intel XScale微架构的高性能、低功耗嵌入式处理器。在本设计中要用到的主要有LCD、触摸屏、以太网接口、全功能串口、音频接口等。本设计方案采用Windows CE作为软件平台。Windows CE是一种针对小容量、移动式、智能化设备的多任务、抢占式、模块化实时嵌入式操作系统。Windows CE具有与桌面Windows几乎完全兼容的API接口,为了配合Windows CE上的应用程序开发,微软公司推出了eMbedded Visual C++(简称“eVC”)集成开发环境。本系统采用的是eVC 4.0。

  2 硬件设计

  2.1 系统硬件设计

在Liod板的基础上扩充了部分外围电路。根据Liod板提供的硬件资源和系统需要使用的硬件情况,硬件设计主要包括两个部分:以太网口转串口电路设计和电子秤硬件电路设计。

无线通信设备采用GPRS Modem。该GPRS Modem通过Liod板的串行口COM1发送和接收数据;GPS定位采用12通道定位模块GARMIN-15L;打印机采用TD58热敏打印机;电子秤采用应变片压力传感器结合C8051F020单片机自行开发;语音提示模块直接使用Liod板提供的音频接口。由于GPS接收模块、热敏打印机、电子秤都要通过串行口与Liod板通信,Liod板原有的串口数量已经无法满足要求,因此采用ZNE-100T以太网转串口模块,把Liod板的以太网口扩充成3个串行口。系统的硬件连接如图1所示。

  2.2 以太网口转串口电路

该电路的核心转换部分采用ZNE-100T网络模块。经过该电路的转换,对串口的操作映射为通过以太网进行的数据发送和接收。ZNE-100T模块引脚定义如表1所列。

上述引脚中,GPIO0~GPIO4是可控制通用I/O口。在功能板的设计中,使用了3个RS232串口分别发送和接收电子秤数据、打印机数据和GPS数据。本系统采用带有使能控制信号的MAX3221电平转换芯片选择要使用的串口,具体做法是将GPIO0~GPIO2分别连接到3个MAX3221的使能端(EN),这样就可以通过软件来选择需要的串口。使能端均为低电平有效,当有一个串口的使能端为0时,其他两个串口使能端必须为1。

  2.3 电子秤硬件设计

电子秤使用应变片压力传感器、AD8221运算放大器和C8051F020芯片进行设计。电子秤硬件电路框图如图2所示。

物品重量通过应变片压力传感器转换成比较微弱的电压信号。此电压信号经过AD822l运算放大器放大,送到C8051F020的ADC1转换器;转换后的数据通过串口发送出去,同时在扩展板的液晶显示屏上显示重量。电子秤的UART0和PC串口都使用9 600 bps的波特率。

C8051F020的ADC1转换器是8位的,因此转换数据是0~255。电子秤的分辨率为20 g,最大称量量程是5.1 kg。

  3 软件设计

  3.1 电子地图

电子地图模块采用栅格图像实现。栅格图像又称“位图”,由像素点组成。与矢量图像不同,栅格图像在用作电子地图时需要在地图元素和数据之间建立对应关系。

首先对坐标系统进行简单的说明。假设有一个形状为严格矩形的地图,其像素坐标原点为(0,0),地图X轴方向上的宽度假设为W个像素点,Y轴方向的高度假设为H个像素点,某个点的像素坐标为(x,y),则定义该像素点的归一化坐标为(x/W,y/H)。这样,地图左上角的归一化坐标为(0.0,0.0),右下角归一化坐标为(1.0,1.0)。把这样的坐标系统称为“归一化坐标系”。

采用归一化坐标系可以简化栅格地图的多级缩放。由于本终端要将车辆当前的位置显示在地图上,而对于不同的地图级别,地图的分辨率是不一样的。那么,当地图放大或缩小时,车辆对应的像素坐标就会发生改变;但是,在GPS连续的两次更新间隔之间,车辆在地图上的归一化坐标是不会变化的。地图放大或缩小后,只需要用新地图的像素宽度乘以归一化x坐标,即可得到车辆在新地图上的x轴像素坐标;同理,可得车辆在新地图上的y轴像素坐标。这样,坐标计算过程就可以统一起来。本设计中的电子地图模块统一采用归一化坐标系。

根据设计要求,本终端的电子地图支持4级缩放。设计中采用一幅大小为2 251×1 557、格式为BMP的成都地图作为原始地图,即所能支持的最大分辨率的地图。把缩小8倍以后的地图作为所能支持的最小分辨率地图,因此地图级别与放大倍数之间具有如表2所列的对应关系。

程序启动时将所有位图文件载入内存,以加快响应速度。此后,当执行放大或缩小地图的操作时,则将相应的位图显示在屏幕上;同时,根据新的位图大小和车辆的归一化坐标计算出车辆在地图的像素位置,并将车辆位置在地图上显示出来。

就车载终端而言,所覆盖的地理范围相对地球半径来说几乎无穷小,故可以认为该电子地图所对应的经纬度坐标是线性变化的,即地图坐标和GPS坐标之间近似为线性映射关系。此线性映射关系的原理如图3所示。

由于GPS得到的是当前车辆的经纬度坐标,而电子地图模块使用的是归一化坐标系,因此需要在两种坐标之间进行转换。此转换过程是依靠地图左上角点和右下角点这两个基准点来实现的,因此首先需要求得地图左上角和右下角的经纬度坐标。有了这两个数据以后,当从GPS硬件模块读取到经纬度坐标时,根据近似的线性映射关系,就可计算出该坐标在地图上二的归一化坐标,由此可得相应的像素点坐标,即可将车辆位置显示出来。

对于地图左上角点和右下角点的经纬度坐标的求取,通过实际测量的方法是很难做到准确无误的。因此本设计采用一种间接的方法来求得地图左上角和右下角的经纬度坐标。

假设在地图边界内部有两个任意点,把这两个点称为“参考点”,并且已知这两个参考点的经度、纬度、归一化x坐标、归一化y坐标;设参考点1的这4个参数为point1=(lon1,lat1,x1,y1),参考点2的这4个参数为point2=(lon2,lat2,x2,y2),即pointl和point2已知。根据前面的说明可知,左上角点的归一化坐标为(0.0,0.0),而右下角点的归一化坐标为(1.0,1.0)。另外假设左上角点用pointTL表示,其经纬度为lonTL和latTL;右下角点用pointBR表示,其经纬度为lonBR和latBR(TL意即Topleft,BR意即BottomRight),则有pointTL=(lonTL,latTL,0.0,0.0)。同理,对于右下角的点有pointBR=(lonBR,latBR,1.0,1.0)。

由于将经纬度与地图坐标之间近似为线性映射关系,因此根据欧氏几何原理可知,由已知的point1和point2,可以计算出pointTL和pointBR的未知参数:

可见,要得到地图左上角和右下角的经纬度坐标,只需要知道2个参考点的4个参数就可以了。在本系统中,实地采集了3个参考点,得到的数据如表3所列。

根据式(1)和式(2),上面的3个参考点之间两两结合可以求出一组左上角和右下角的经纬度,总共可以有3种组合方案,也就是可以求得3组经纬度值。然后,对这三组经纬度取平均,以减小误差,提高精度。

上述过程是在GPS数据处理模块初始化过程中完成的。为了提高系统的灵活性和可靠性,参考点数据都是存放在外部数据文件中的,因此,需要在程序启动时将相应的数据读入到内存中。为此,专门为参考点定义了一个数据结构(gpx2xy.h):

本设计定义了用于存储参考点信息的数据文件的格式,如表4所列。

上述工作完成之后,参考点数据的存储和读取就比较简单了。基准点和车辆位置的计算都只是简单的代数计算过程,容易实现。至于地图的显示和控制则需要通过Windows CE的API接口来完成。

  3.2 GPRS模块

本车载终端采用GPRS Modem与控制中心进行无线数据通信,对GPRS Modem的控制和读写通过串口进行。由于与控制中心交互的数据种类较多,因此定义了相应的应用层数据包格式。数据包的所有字段均采用单字节ASCII编码且为固定长度。在发送端,数值型字段需要在发送前格式化为定长字符串再封装到数据包中;在接收端,需要将数据包中的格式化字符串还原为数值型常量。数值型字段不足部分以字符“0”为前导字符进行填充;字符型字段不足部分以空格(SPACE,0x20)为前导字符填充。字符串型字段的长度不包括字符串结尾的NULL字符(在C语言中为0x00)。所有采用UNICODE编码的字符数据在封装到数据包中之前必须进行转换。

定义的数据包主要有以下几类:客户端位置更新数据包;客户端接件信息数据包;客户端送达签收数据包;服务器新任务数据包;客户端确认数据包;服务器确认数据包;客户端车辆故障数据包;客户端道路堵塞数据包。

为了能够正确解析数据包中的数据,所有数据包都具有相同的包头(head),即数据包类型(packet type)、时间戳标记(time stamp)、数据包顺序号(packet sequencenumber)3个字段。当接收到一个数据包之后,根据包头中的类型字段就能判断该数据包主体部分的长度,由此即可正确解析出包中的内容。包头之后是数据包主体(body)部分,不同数据包类型有着不同的字段和长度。上述8种定义类型之外的数据包均为未定义类型,应当被丢弃。类型为NTSK、TMLF、RCNG的数据包需要接收端的确认;而RECV、SEND、UPDT、CACK、SACK这5种类型的数据包不需要确认。

GPRS Modem的数据传输与接收是通过串口编程来实现的。Windows CE平台上的串口编程依赖于与文件相关的API接口:CreateFile( )打开串口,ReadFile( )从串口读取数据,WriteFile ( )向串口写入数据。由于网络数据包的到来是一个异步过程,因此还需要处理串口的异步事件:GetCommMask( )取得串口已经设置的事件,SetCom-mMask( )设置串口事件集,WaitCommEvent( )等待预先设置的串口事件集中的某一事件发生。

  3.3 称重与打印模块

该模块实现了电子称重和凭单打印功能。

由于采用ZNE-100T以太网口转串口模块把Liod板的以太网口扩充为3个串口,因此对外扩的3个串口的访问是通过以太网口进行的,这涉及Windows CE下的网络编程。对外扩串口的控制是通过向ZNE-100T模块的3003端口写入控制命令字来实现的;数据的收发是通过ZNE-100T模块的4001端口实现的。

网络编程接口采用的是Winsock1.1,采用面向连接的TCP协议。对数据的读写采用了非阻塞的方式:写操作直接将数据写到套接口的输出缓冲区中;而数据的读取因为是一个异步过程,因此放在一个单独的线程中完成。在此线程中定义了OnRead( )、OnError( )、OnDisconnect( )回调函数,用于把线程中读取到的数据递交给上层或者处理读取过程中发生的异常事件。

由于打印机、电子秤、GPS都是通过ZNE-100T模块进行控制的,而Liod板提供的以太网口只有一个,因此在任何时刻都只能与打印机、电子秤、GPS三者中的一个通信,而其他两个设备的串口则处于关闭状态。这是通过向ZNE-100T模块的3003端口发送不同的控制命令字完成的。

对于称重,只存在由C8051F020单片机向Liod板的单向数据传输,称量的范围为40 g~5 100g,因此重量数据采用2个字节表示,单位为g。为了确保数据传输的准确,除了2个字节的重量数据之外,还加入了几个字节的冗余数据。电子秤的数据帧格式如下:

其中,0xAA 0x55作为起始标记;结尾处的0x05既表明重量数据帧的长度,也作为结束标记。

就打印机而言,控制命令字和要打印的数据都在同一个数据流中发送给打印机,由打印机去区分命令和数据。由于Windows CE默认支持的字符集是UNICODE字符集,因此输出给打印机的字符需要转换成多字节字符发送给打印机才能正确打印,这是通过标准C提供的wcs-tombs( )库函数实现的。

  3.4 语音提示模块

考虑到配送人员在驾驶车辆的过程中不便于时刻留意系统中任务的变化情况,因此在车载终端上加入了语音提示模块。

Windows CE提供了音频API接口:

BOOL WINAPl PlaySound(LPCSTR pszSound,HMOD-ULE hmod,DWORD fdwSound);

该函数的第1个参数表示要播放的音频文件,第2个参数设置为NULL,第3个参数指定影响声音播放的一些标志。因此,语音模块的实现就是在不同的情况下播放不同的提示声音。

  4 结 论

基于Liod评估板的车载物流终端集成了电子地图、GPS定位、GPRS无线通信、打印与称重、语音提示等功能。由于采用栅格图像栗实现电子地图,因此通过将小范围内的地理经纬度坐标简化为线性坐标模型,可成功地在栅格图像上实现车辆定位的功能。

关键字:GPS  接口  通道  串口 引用地址:基于Windows CE的物流车载终端设计

上一篇:如何延长基于微控制器设计的电池寿命
下一篇:现实标准和32位MCU

推荐阅读最新更新时间:2024-05-13 18:35

中国首个数字音视频接口测试实验室成立
信息产业部数字电视标准符合性检测中心(Advanced Digital TV Test Center)于近日成立了国内首个官方权威的数字音视频接口技术实验室——ADTC-EasyHD数字音视频接口测试实验室。实验室隶属于信息产业部数字电视标准符合性检测中心,该中心是中国最具权威的音视频产品检测机构。实验室的技术指导汇集了国内外数字音视频领域的专家, ADTC接口技术标准的专家和硅谷数模半导体(Analogix)的技术工程师。硅谷数模半导体作为全球领先的高性能接口解决方案供应商,在下一代数字音视频接口领域拥有多年的经验,并且在DisplayPort 技术上处于国际领先地位。 随着近年来家庭数字化程度的不断提高,高
[测试测量]
磁悬浮轴承控制器MAX115与DSP的接口设计
引言 在五自由度主动磁悬浮轴承控制系统中,采用由工控PC+DSP控制器的架构是一种较好的方法,而DSP核心控制器则是磁悬浮轴承控制系统中非常重要的一部分,对主轴位置信号的精确采集是DSP控制器的首要任务。在本控制器中采用MAX115对主轴位置的模拟信号进行采集。 磁悬浮控制器中的ADC选择 在磁悬浮主轴控制器的设计中,对主轴位置的测量是至关重要的。位置传感器的信号经过适当的信号调理电路处理后被传送到A/D采样通道,ADC把得到的模拟信号转换成相应的数字信号,芯片采样的精度和分辨率以及采样转换时间是非常重要的技术参数,它们直接决定着控制速度和控制精度。本控制器中采用的传感器是一种电涡流位移传感器。它是一种高精度无接触式传感器。
[嵌入式]
stm32串口通信程序之UART2(TTL)
一、硬件连接 二、串口助手设置: 三、keil下编程 1.要添加的工程文件 二要编写的user文件 1.main.c #include printf.h int main() { printf_init(); printf( \luoyiran is a nice boy\n ); printf( xixi\n ); printf( serial communications is so mystical and interesting!\n ); printf( keep striving!\n ); } 2.printf
[单片机]
stm32<font color='red'>串口</font>通信程序之UART2(TTL)
单片机简单的串口通信
1 /*------------------------------------------- 2 简单的串口通信 3 -------------------------------------------*/ 4 #include reg51.h 5 6 #define uint unsigned int 7 #define uchar unsigned char 8 9 10 uchar flag,a,i; //标志接收串口中断标志,接收SBUF内容 11 uchar code table = I get ; 12 /*------------------------------------
[单片机]
关于单片机串口通信波特率问题
今天学习单片机串口通信,编写了单片机与PC机的通信程序,即PC机向单片机发送信息,单片机再把信息返回给PC机,并显示出来。在调试的时候总是没有结果,检查了半天,发现错误,而且很容易被忽略的错误。用串口通信计算器在确定波特率的时候,一定要注意误差,如果过大的话(我第一次设定波特率9600,误差是6%多),通信也是有问题的,一定要把误差尽量缩小,1%以内。第二次设定波特率2400,误差1%以内。 下面是代码: /************************* * 串口通信 *************************/ #include reg52.h typedef unsigned int u16; typed
[单片机]
信号系统与屏蔽门系统接口控制的设计分析
摘要:基于广州地铁1、2号线屏蔽门系统工程,分析、介绍了由车载和轨旁设备支持实施的LZB连续自动列车控制系统的控制和监督功能,从安全、合理的角度综述了信号系统与屏蔽门系统之间的接口控制关系。   屏蔽门(Platformscreendoors,简称PSD)系统是现代化轨道交通工程的必备设施,它沿轨道交通站台边缘设置,将轨道区与站台候车区隔离,具有节能、环保和安全等功能。安装屏蔽门系统后,不仅可以防止乘客跌落轨道而发生危险,确保乘客安全,减少人为引起的停车延误,提高列车准点率,而且可以减少站台区与轨道区之间冷热气流的交换,从而降低环控系统的运营能耗,节约运营成本。   信号系统与屏蔽门系统相结合是屏蔽门系统工程的重要环节。此外,要
[工业控制]
信号系统与屏蔽门系统<font color='red'>接口</font>控制的设计分析
2线75Mbaud全双工接口电路
一种简单的全双向、差分2线接口电路如图1所示,此电路波特率为75Mbaud。图中所用LT1714是Linear公司的低功率比较器。     图2和图3分别示出单向和双向通信状态下的眠图。从图可见,工作在单向状态的眼图是宽展开的;工作在双向状态下,串扰做为噪声出现,眼图稍微有点变化,但性能仍然良好。 用电路所标的近几年来阻器数值,该电路工作良好,但可用另外设置值。超始点是双纹缆线的特性阻抗Z0。电阻网络的输入阻抗应该匹配特性阻抗,它由下式给出: RIN=2·R0· /R0+2· 图中所示Z0为120Ω。Thevenin等效源电压
[应用]
嵌入式学习⑧——基于SPI/IIC接口的OLED数据显示
一、了解SPI 本部分转载自霁风AI博客: SPI专题(一)——基础知识 1.什么是SPI SPI(Serial Peripheral Interface)是串行外围设备接口。是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。常用于单片机和 EEPROM、FLASH、实时时钟、数字信号处理器等器件的通信。 2.特点 ① 连接方式 SPI 是一个环形总线结构,由设备选择线(CS)、时钟线(SCK)、串行输出数据线(MOSI)、串行输入数据线(MISO) 构成,其时序其实很简单,主
[单片机]
嵌入式学习⑧——基于SPI/IIC<font color='red'>接口</font>的OLED数据显示
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved