vs2012怎么设置多线程

2023-04-13 21:09 20次浏览 攻略

摘 要: 针对快递业中特殊物品的运输安全问题,提出了一类多功能的包裹智能监测系统。给出了系统的整体框架结构,详细介绍了终端控制器和客户端两个核心单元的设计与实现。终端控制器的硬件包括ARM9微处理器、SIM908数据采集和传输等模块;软件部分由主控程序、数据采集和传输组成。客户端是监控系统的核心部分,主要分为设置模块、显示模块、报警模块。本系统的硬件采用模块化设计,软件采用低功耗的设计,具有体积小、携带方便等特点。

0 引言

近年来,我国的互联网电子商务行业迅速发展,快递行业如雨后春笋般迅猛发展。巨大的市场充满了激烈的竞争,许多快递公司盲目地追求经济利益,在快速发展的背后带来了一系列问题。快递延迟、损坏、丢失等现象层出不穷[1-2]。针对此现象,本文设计了一种多功能包裹监测系统。将终端控制设备放置在包裹内,可以监测包裹内的剧烈碰撞、破坏、延迟等信息,有效地避免现有问题,同时使得包裹运送更加可靠安全,提高了物流行业的服务水平。

1 系统框架设计及主要功能

包裹智能监测系统主要由终端控制器和客户端两个结构单元组成,其框架结构如图1所示。

终端控制器主要由ARM9微处理器、GPS定位模块、GPRS数据传输、MMA8453振动传感器等模块组成。包裹内安装终端控制器,该终端整合GPS定位传感器、GPRS数据传输传感器及若干个传感器。GPS定位传感器接收来自卫星的定位信息,通过UART串口将数据传送给中央处理器。同时中央处理器采集温度、湿度、震动等传感器数据,并将这些数据按照一定的协议格式进行封装,然后通过GPRS网络将数据传送到固定IP地址的服务器上[3]。

客户端单元主要实现数据通信、数据存储、数据显示等功能模块。一方面,客户端接收终端控制器发送过来的数据,接着对数据进行分析,将结果存储在数据库中。另一方面,客户端单元将解析完成的数据实时显示在电子地图上。用户就可以查看快递的实时位置及状态信息。当快递内温湿度超过设定阈值的时候,或者遭受碰撞、摇晃的时候,终端控制器内的传感器检测这些数据,就会打开蜂鸣器发出警报。此时用户可以在客户端上面查看到详细的报警信息。同时用户可以利用客户端与智能包裹终端控制器进行通信,终端控制器能接收操作指令并将其发送给下面的传感器,传感器将接收到的指令转化为物理动作,实现远程配置工作参数。

2 终端控制器硬件设计

本系统硬件电路主要由ARM9微处理器、SIM908数据传输和定位模块、MMA8453震动传感器模块、温湿度模块、电源模块、时钟模块以及LCD显示模块组成。硬件电路如图2所示。

2.1 中央控制器

终端控制器的硬件核心是中央处理器,所有的设备驱动控制、通信协议转换、数据传输、数据存储等任务都需要通过中央处理器。从稳定性、可扩展性、性能、安全及操作系统支持等方面考虑,选择性能强大的32位ARM9微处理器S3C2440作为主处理器。S3C2440工作频率最高可达533 MHz,拥有64 MB的Flash和64 MB的SDRAM、UART、I2C、SPI等多类串行接口,便于构建外围电路的拓展功能接口,具有高性价比、低功耗等特点[4],完全满足小型移动设备的低功耗和高性能需求,所以特别适合于本系统应用。

2.2 SIM908数据传输和定位模块

在本设计中,GPS、GPRS模块传感器的选型是关键,GPS模块负责地理位置的准确定位,GPRS模块负责数据的接收和发送,其性能的优劣将会影响数据传输的可靠性、完整性。通过比较各个公司的GPS/GPRS模块,本文最后选用了SIMCOM公司的SIM908模块。该模块同时集成了GPS定位和GPRS数据传输功能,体积小,集成度高,稳定性强[5]。SIM908电路如图3所示。

其标准的工业接口,在信号覆盖的地方,都可以实现数据的无缝连接,确保数据传输的安全可靠。GPRS模块主要实现数据交换业务,虽然它的数据传输速度不是很高,但是能够满足正常的数据传输要求,非常适合于智能包裹的集成应用,可以节省开发时间和费用[6]。

2.3 MMA8453振动传感器模块

选用加速度传感器MMA8453检测包裹的振动数据。该款加速度计拥有三档量程、2个可编程的中断引脚,内部集成了10位的ADC,可检测自由落体、碰撞、方向变化等多种状态。外围连接电路简单,带有I2C通信接口,具有低功耗及低噪声特点。振动传感器电路如图4所示。

3 终端控制器软件设计

3.1 终端控制器的系统移植

终端控制器系统软件使用Linux嵌入式操作系统。其稳定性和开放性能够很好地符合终端系统对系统安全、稳定、可靠性的要求。

系统开发的宿主机选用Ubun,首先安装内核源码,在编译前进入根目录,更改其目录下的Makefile文件,设置目标平台和交叉编译器,然后运行makexconfig进入配置菜单,合理地设置内核编译配置选项,保存退出,执行内核编译命令make,编译成功后会在/usr/src/kernel/arch/arm/boot/目录下生成zImage,即为Linux内核映像文件。最后通过bootloaer引导进行操作系统移植,装载完毕文件系统之后,编写应用服务程序[7]。

3.2 终端控制器程序设计

终端控制器的程序流程图如图5所示。系统上电开机后,首先进行系统初始化,设置时钟频率,初始化GPIO口、I2C和UART总线。接着开始硬件自检,对内存等进行检查,同时开始对GSM/GPRS、GPS模块初始化,上传第一次GPS定位数据。然后系统进入休眠模式,每隔10 min唤醒一次CPU以及相关模块,同时在休眠的过程中,如果收到查询短信的指令,直接通过中断唤醒CPU以及相关模块。当外围模块正常工作时,读取GPS定位数据,并判断帧头数据,如果正确就通过GSM/GPRS模块传输GPS及温湿度传感器和振动传感器的数据,传输结束进入休眠模式。

本系统采用低功耗的设计,CPU不能一直处于工作状态,本文设置系统每10 min或者当接收到短信时唤醒CPU,每次工作大约2 min,以此降低电量的消耗。由于此系统可以方便地放置在重要物品上,必须具有体积小、重量轻的特点,所以使用锂电池供电。

3.3 数据采集和传输

实现ARM Linux平台下SIM908数据的采集和传输,涉及到Linux下UART编程技术。首先给出Linux下UART串口的原理,然后使用多线程多进程技术来完成SIM908模块的GPS数据采集和GPRS模块的数据传输。

UART串口是一种终端设备,它不是简单地初始化硬件设备并传输数据,而是在它们上面封装了许多功能函数。UART串口驱动程序从上到下可以概括为:用户应用层->线路规划层->TTY层->底层驱动层。

线路规程和TTY驱动层是与硬件平台无关的,在Linux源码中已经实现,所以本文只需关心底层驱动和应用程代码的实现,s3c2440驱动层主要由dirivers/serial/下的和实现。移植几个必要的函数,就可以运行串口驱动了[8]。

具体的SIM908模块数据采集和传输都在应用层实现。S3C2440提供3路UART接口。UART0用于RS232电路,主要负责软件调试,UART1和UART2用于SIM908模块,负责GPRS和GPS数据传输。

为减少系统资源的开销,提高执行效率,提高程序的响应,数据的采集和处理函数都采用多线程技术,从而可以提高系统的性能。同时在Linux下,所有的硬件设备都被看成是普通文件,可以通过与普通文件相同的标准系统调用完成打开、关闭、读取和写入设备等操作。表1列出了数据采集和传输程序的主要函数和功能描述[9]。

4 客户端软件设计

客户端是监控系统的核心部分,主要功能分为三部分:设置模块、显示模块和报警模块。客户端软件使用vs2012开发环境,客户端界面如图6所示。

(1)设置模块:可以设置终端控制器的温湿度阈值和振动范围,一旦温湿度或者振动量超过设置的值,客户端界面将会显示红色的报警信息。并且该模块可以设置终端控制器的GPRS模块的传输速率、发送间隔等功能。

(2)显示模块:主要功能是对智能包裹终端控制器进行实时定位和轨迹回放。点击定位按钮,程序将会主动下发命令查询智能包裹终端的地理位置,将接受到的返回数据进行处理后直接在地图上显示更新。点击轨迹回放按钮时,会弹出对话框,接着输入需要查询的时间段。如果该时间段有智能包裹终端的信息,则显示运行的轨迹路线。如果没有智能包裹终端的信息,则弹出对话框显示没有数据。同时模块也会显示车辆的运行速度、运行路程距离、运行的方向及包裹的温湿度等信息。智能包裹终端实时定位模块和轨迹回放模块的流程如图7、8所示。

(3)报警模块:一旦包裹受到剧烈震动、摇晃、温湿度超过阈值等情况,界面就会显示红色报警,并弹出警告框。

5 系统测试方案设计

5.1 GPS调试

GPS定位模块能否快速准备定位是实时定位的关键部分。使用GPS模块进行定位,受密集的高楼和树木影响较大,因此本文将控制器放在空旷场地,去除环境的干扰因素[10]。选取四个时间段5 s,15 s,30 s,60 s,每个时间点采样10个样本,然后将采集到的数据通过GPRS网络传输到客户端,并绘制出图9所示的定位精度与时间的关系图。

从图9可以得出,增加GPS定位时间,可以提高定位的精度和可靠度。当定位时间为60 s时,定位精度基本维持在4 m,当定位时间为30 s时,定位精度保持在5 m;当定位时间为15 s时,定位精度保持在7~8 m,当定位时间为5 s时,定位精度保持在9~10 m。这样的定位误差可以满足包裹定位的要求。同时观察得出,随着定位时间的增加,定位误差变化不是很大,因此本系统可以选择一个合适的定位时间。

5.2 GPRS数据模块调试

运行智能包裹终端控制器,采集GPS数据,然后通过GPRS模块传输到客户端。同时将终端控制器通过USB转串口连接电脑,电脑上打开串口调试工具。最后比较客户端数据库的数据(图10)和串口助手采集的GPS数据(图11),数据完全一致。该GPS模块运行安全稳定,符合设计要求。

5.3 整体系统调试

将整个终端设备烧录程序,安装锂电池,放在空旷的场地上,进行整体系统测试。打开终端设备电源开关,等待几分钟,让系统完全启动,然后运行客户端登录主界面后。点击定位按钮,程序将会主动下发命令查询智能包裹终端的地理位置,此时终端的GPRS模块数据灯闪烁,表示正在传输数据。客户端将接受到的返回数据进行处理后直接在地图上显示,界面会显示包裹的温湿度、车辆运行速度等信息。运行结果如图12。

6 结束语

本文实现了一种基于物联网技术的智能包裹系统,它够能实时监测包裹的状态。系统的硬件采用模块化设计,GPS模块和GPRS模块高度集成,整个硬件具有体积小、携带方便等特点。系统的软件采用低功耗设计,大部分状态下CPU处于休眠,将系统设置为每隔10 min唤醒一次CPU或者接受到短信时唤醒CPU,每次工作大约2 min,以此降低电量的消耗。本文的下一步是优化客户端软件,将客户端分成服务器与客户端两部分,服务器负责数据的传输和数据的存储,而客户端负责数据的显示。

参考文献

[1] 唐晴.论快递行业消费者权益的法律保护[D].长沙:湖南师范大学,2014.

[2] 曾碧琪.完善我国快递行业监管制度的立法思考[D].长沙:湖南师范大学,2014.

[3] 夏涛,何志标.危化品运输监控系统的设计与实现[J].电子测量技术,2011,34(5):85-89.

[4] 高鹏,郑超.ARM和ZigBee的智能家居监控网络设计[J].计算机测量与控制技术,2014,22(10):3206-3209.

[5] 蔡晓波,吕海泉,李敏基.基于SIM908的GPS放射源定位仪设计[J].舰船防化,2012,4(4):6-11.

[6] DEREKENARIS G, GAROFALAKIS J, MAKRIS C. GPS and GSM technologies for the effective management of Ambulances[J]. Computers,Environment and Urban System,2001,5(3):267-278.

[7] 杨文涛,郑立新,李书谦.基于ARM系统的胶体金快速检测仪的实现[J].仪器仪表装置,2013(3):13-17.

[8] 邓小蕾,李民赞,武佳,等.集成GPRS GPS ZigBee的土壤水分移动监测系统[J].农业工程学报,2012(9):130-134.

[9] 张凯,孙跃,周侃,等.基于ARM11的机动车柔性限行管理系统设计[J].电子器件,2014,37(5):953-957.

[10] UMBER M. A comparison of pilot-aided channel estimation methods for OFDM system[J]. IEEE Trans on Signal Processing,2001(49):3065-3073.

相关推荐