微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于S3C2440处理器Linux平台的物流配送系统设计

基于S3C2440处理器Linux平台的物流配送系统设计

时间:02-05 来源:3721RD 点击:

对当前物流载体的数据采集,以获得RFID定位信息,并将采集到的RFID信息通过蓝牙模块传输给S3C2440。GPS 模块根据卫星定位获得当前位置信息,同样通过蓝牙模块进行传输(如距离比较近,也可以有线传输)。CellID模块主要通过无线数据传输获得定位信息,然 后通过GPRS模块传输给中心控制器。LCD模块主要提供人机交互的功能,除了显示屏外还需配备键盘等输入设备,或者直接采用液晶屏。存储器模块除了扩展 的片外RAM外,还需给嵌入式数据库提供一定的存储空间。

2.4 软件设计

2.4.1 软件总体设计

如图4所示,按照功能可以将软件分为以下4部分。

软件总体设计图

图4 软件总体设计图

① 用户界面。要实现一个友好的用户界面,以便用户在S3C2440 LCD屏上直观地获得图文并茂的信息,以及选择服务功能和输入信息。

② 地图数据处理。主要实现电子地图的数据组织、地图显示、地图标图功能、定位导航功能,便于用户使用地理信息的服务功能。终端处理的数据包括GPS数据、GIS数据、文本数据、多媒体数据。

③ GPS通信模块。S3C2440模块通过蓝牙与GPS模块相连接,对接收到的GPS数据进行处理,才能得到所需要的定位信息(比如经纬度数据等)。利用篮牙进行串口通信的编程,包括打开串口、配置串口、发送接收数据、关闭串口4个步骤。

④ GPRS通信模块。利用GPRS无线物流在S3C2440和控制中心之间进行双向通信。本文采用Web Service的方式来进行。

2.4.2 GPS与RFID数据提取

GPS接收机只要处于工作状态,就会源源不断地把接收并计算出的GPS导航定位信息通过串口传送到计算机中。从串口接收数据后将其放置于缓存 内,在没有进一步处理之前缓存中是一长串字节流,这些信息在没有经过分类提取之前是无法加以利用的。因此,必须通过程序将各个字段的信息从缓存字节流中提 取出来,将其转化成有实际意义的、可供使用的定位信息数据。例如,"$GPRMC"帧结构的1、2、3、5、9段是我们需要得到的数据,分别是时间、数据 的可信度、纬度、经度、日期。从"$GPRMC"帧中获取定位数据的代码如下:

  for(int i=0;i<DATALENGTH;i++){

  if(Data[i]="$")//帧头,SectionID为逗号计数器

  SeetionID=0;

  if(Data[i]==10)//帧尾

  if(Data[i]=",")//逗号计数

  SectionIiD++;

  else{

  switch(SeotionID){

  case1: //提取出时间

  m_sTime+=Data[i];

  break;

  case2: //判断数据是否可信(GPS天线至少接收到3颗GPS卫星时为A,可信)

  if(Data[i]=="A")

  GPSParam[m_nNumberl].m_bVaIid=true;

  break;

  case3: //提取出纬度

  m_sPositionY+=Data[i];

  break;

  case5: //提取出经度

  m_PositionX+=Data[i];

  break;

  case9://提取出日期

  m_Date+二Data[i];

  break;

  default:

  break;

  }

  }

  }

RFID模块通过串口将信息传输至移动终端,信息传输流程如图5所示。当接收缓冲区内字节个数达到或者超过该值后就取出数据并对相应事件进行处 理。程序设计的主要任务是:读出标签ID信息(读ID命令);向标签写入存放在数据库中的数据信息(写信息);读取标签中写入的数据信息,查询数据库以得 到具体的产品信息(读信息);实时显示读标签信息的结果。

 RFID模块至移动终端的信息传输流程

图5 RFID模块至移动终端的信息传输流程

  读ID代码:

  void CMyDlg::OnBtn_ReadID() {

  SendData("Read");

  if(0==m_ctrlComm.GetOutBufferCount())

  m_ctrlComm.SetRTHreshold(18): //读取标签ID所设的阈值

  }

  读信息代码:

  void CMyDlg::OnBtn_ReadMessage(){

  SendData ("ReadString(18,67)int(8*),int(90,4)");

  if(0==m_ctrlComm.GetOutBufferCount())

  m_ctrlComm.SetRTHreshold(40): //读取标签ID所设的阈值

  }

2.4.3 移动终端S3C2440模块软件设计

采用模块化结构设计,根据不同功能分别进行编写和调试,等到各个模块都调试成功后,将各个模块连成整体,组成软件系统。

移动终端S3C2440模块完成的主要内容包括两部分:

① 完成从移动终端到远程控制中心的定位信息的上行传输。当远程控制中心要从移动终端获取定位信息时,可以发送命令给S3C2440。这时S3C2440便产 生一个中断,并发送命令给各定位模块来获取定位信息,将定位信息进行处理后再通过GPRS模块传给远程控制中心;或者是移动终端由人员键盘控制产生中断, 然后采集定位信息传送给远程控制中心。

② 接收控制中心到移动终端的下行传输的信息。控制中心可以将各种数据传送给终端设备。比如,控制中心通过GIS发现当前移动终端所选道路拥塞,则可以给移动终端发一条改变路线的建议信息,这样非常方便地实现了远程控制中心与移动终端的交互。

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

网站地图

Top