APP下载

嵌入式气象预警信息接收系统的设计与实现

2012-08-20陈苏婷徐冬卫

网络安全与数据管理 2012年3期
关键词:字符串口嵌入式

陈苏婷,徐冬卫

(南京信息工程大学 电子与信息工程学院,江苏 南京 210044)

我国是世界上自然灾害发生十分频繁、灾害种类甚多、造成损失十分严重的少数国家之一。每年干旱、洪涝、台风、暴雨、冰雹等灾害危及人民生命和财产的安全,国民经济也受到了极大的损失。而且,随着经济的高速发展,自然灾害造成的损失亦呈上升趋势,直接影响着社会和经济的发展。

因此,在电力、交通、工业控制、零售、公共事业管理、医疗、水利、石油、农业等各个行业实时接收和发布气象预警信息,避免电视媒体、报纸等发布信息的延时,能大大减少气象灾害带来的损失。

随着移动通信技术的日益成熟,短消息业务发展越来越迅速,不仅应用在人们日常的信息交流中,在现场监测、远程控制等领域也得到了越来越广泛的应用。短消息业务是承载在GPRS网络上的。GPRS即通用分组无线业务,是在现有GSM网络上开通的一种新型的分组数据传输技术。语音合成技术实现了文字到语音的转换。本设计结合嵌入式技术、GPRS技术和语音合成技术,提出了基于ARM与SMS的气象预警信息终端。

1 总体设计

气象预警信息终端系统结构如图1所示。在中心服务器上通过信息发布软件发布预警信息到GPRS模块,该短消息通过GPRS网络传送。由嵌入式Linux终端上的GPRS模块接收来自中心服务器的气象预警信息,该模块将接收到的数据通过串口传输给终端处理器ARM9。终端处理器对接收的短消息进行解析,还原出服务器发送的预警信息。最后通过LCD显示屏、语音等方式将预警信息播出。

2 系统硬件设计

本系统接收端的硬件部分是基于三星S3C2440 32 bit微处理器的嵌入式系统,主要负责气象预警信息的读取以及GPRS网络传输、语音芯片和LCD液晶屏的控制。

气象预警信息接收终端的基本组成部分如图2所示。整个外围电路包括:嵌入式语音合成模块、GPRS无线通信模块、NAND Flash存储扩展和LCD触摸液晶显示模块。

图2 终端组成框图

ARM9微处理器具有高性能和低功耗特性,典型处理速度为1.1 MIPS/MHz,系统主时钟频率为100 MHz~233 MHz。片外扩展多功能外围接口,如 USB、UART、I2S、LCD控制器、键盘接口、RTC、JTAG等。还有足够大的存储空间,如2 MB的 NOR Flash、128 MB的 NAND Flash(用于存储 bootloader、嵌入式Linux内核和带有QT图形界面库的文件系统)、64 MB的SDRAM。

TC35i模块与 GSM 2/2+兼容,并支持双频(GSM 900/1 800 MHz)、RS232数据口, 符合 ETSI标准 GSM0707和GSM0705。该模块集射频电路和基带于一体,向用户提供标准的AT命令接口,为数据、语音、短消息和传真提供快速、可靠、安全的传输,方便用户的应用开发及设计。

OSYNO 6188嵌入式语音合成模块[1]通过异步串口接收待合成文本,直接通过PWM输出方式驱动扬声器实现文本到语音的转换。该芯片支持国家标准GB_2312所有汉字,支持标点符号、电话号码、邮政编码、英文字母等特殊字符处理。

3 系统软件设计

气象预警信息终端是典型的嵌入式系统,目标代码运行在S3C2440上面,在构架的嵌入式平台上,选用安装了arm-linux-gcc的交叉编译环境的fedora14为开发调试环境,以Linux为嵌入式操作系统开发应用程序。

气象预警信息终端软件主要是基于Linux和QT/E的用户程序开发以及相关驱动移植。应用程序按功能划分,由SMS数据传输、PDU短信息解码[2]、文本到语音转换和人机交互界面4部分组成。

系统上电启动Linux后,即开始启动终端图形用户界面应用程序,该应用程序创建了一个主线程,以响应用户的界面操作,初始化 GPRS模块[3],发送命令,设置其为新短信息提示,该主线程还分别在后台创建一个子线程。GPRS模块的读线程不断侦听串口以获取GPRS模块返回的短信息,若从串口读到新短信息提示回送命令字,则弹出一个对话框显示“有新短信息”,提示用户操作,系统内部启动后台子线程,自动完成短信息的解析和存储,并通过信息内容判断信息的预警类别。若为红色预警,立即驱动6188语音芯片播报该条信息;若为其他预警类别,则由用户自由选择显示或者语音播报。实现将以PDU方式编码的短信息解码,并转换成GB2312码,因为OSYNO 6188只能识别以GB编码的汉字。软件流程如图3所示。

图3 软件流程图

3.1 SMS数据传输模块设计

TC35i支持语音和短信服务。在本系统中,通过串口3发送AT指令集与TC35i模块通信,实现与远端设备的收发短信息功能。

在本系统中,GPRS模块就相当于一个调制解调器,ARM处理器通过串口发送AT命令控制GPRS模块工作情况和得到GPRS模块的反馈信息。AT指令集是调制解调器通信接口的工业标准,它的基本格式为:AT+命令字符。通信过程中,ARM每发送一条指令,都需要加上“回车符”作为指令的结束符,否则TC35i不能识别。该功能实现过程为:首先初始化GPRS模块,即发送AT命令测试网络情况并设置短信模式AT+CNMI=2,1,0,0,0(新短信提醒, 并把收到的短信存入 SIM卡);然后设置短信接收模式AT+CMGF=0(设为 PDU模式,可以接收汉字);接着发送接收短信息命令AT+CMGR=last(last中存有收到短信在SIM卡中的存储记录号)。读取短信功能由gprs_read_msg()函数实现。代码如下:

其 中 ,tty_write()为 底 层 串 口 写 函 数 ,receive()函 数 向GPRS模块发送AT命令和从GPRS模块读取返回信息;fd为已经打开的串口描述符;strAT为要向GPRS模块发送的命令信息;“OK”为需要匹配的字符串;strATResult为从GPRS模块返回的信息;ATREADTIMES为当读取返回信息字符个数为0时,函数继续读取的次数;last为从模块返回信息的最后一个字符。

3.2 PDU模式的短信息解码

基于GPRS的短信息收发常用的编码格式有Text模式和PDU(Protocol Description Unit)模式两种。其中,Text模式是纯文本方式[4],收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用7-bit、8-bit和UCS2 3种编码。这里使用UCS2编码将单个字符(1~2 B)按 ISO/IEC10646的规定转变为16 bit的Unicode宽字符,PDU串不仅包含可显示的消息本身,还包括很多其他信息,如SMS服务中心号码、目标号码、回复号码、编码方式和服务时间等。

PDU模式的短消息解码[5]主要包含字符串顺序转换、可打印字符到字节的转换、Unicode编码字符到GB2312编码字符的转换几个模块。针对PDU串的格式,定义一个结构体SM_PARAM描述该串信息。

其中,可打印字符到字节的转换由 gsm_s_2_b()函数完成,如将字符串“C8329BFD0E01”转换为{0xC8,0x32,0x9B,0xFD,0x0E,0x01}; 字 符 串 顺 序 转 换 由 gsm_serialize_numbers()函数实现,将两两颠倒的字符串转换为正常顺序的字符串 (因为PDU串中的号码和时间都是两两颠倒的字符串)。Gsm_Decode_Ucs2()函数实现Unicode字符到GB2312字符的转换,在QT中定义QString变量QString str; 将TP_UD字符串转换为QString类型:str= QString(pDst->TP_UD);设定本地字符编码方式为 GB2312编码:QTextCodec*codec=QTextCodec::codecForName(“GB2312”);将 Unicode 字 符串转换为 GB2312字符串:QString out=codec->toUnicode(str)。

在主函数中调用该解码函数时,传给形参pSrc的参数为2.1中strATResult字符指针,其指向收到的短信起始地址。

3.3 文本到语音的转换

使用OSYNO6188芯片实现任意文本到语音的输出转换。由ARM进行控制,将接收到的短信息数据打包成6188能识别的帧,通过UART传输给OSYNO6188中文语音合成芯片,该芯片通过文本转语音技术,实现文字信息到语音的输出。OSYNO6188芯片的发音数据命令格式如表1所示。

表1 数据命令格式

3.4 人机交互界面设计

QT/E[6]是用于嵌入式Linux系统的QT版本,其去掉X Lib的依赖而直接工作在Framebuffer上,是一个可配置、可裁剪、专门为嵌入式系统设计图形用户界面的工具包。

系统基于QT/E设计人机交互界面,通过TFT LCD显示气象预警信息。界面提供了气象预警信息的实时显示、GPRS模块的工作状态显示以及串口属性设置等。界面使用触摸屏作为用户命令输入接口,用户通过输入短信位置,然后点击图中的按钮“语音播报”即可实现历史短信的LCD显示和语音播报。

本文提出了一种基于S3C2440和嵌入式Linux操作系统的气象预警信息语音播报终端解决方案,并基于QT/E设计了终端界面。系统功能达到预期要求,实现了气象预警信息的实时接收与显示并可通过语音将其播报出来,有效地增加了气象预警信息的接收手段和覆盖范围。在终端中添加基于GPRS网络接收气象图片功能将成为下一步要研究的内容。

[1]北京语音天下科技有限公司.OSYNO6188嵌入式语音合成 芯 片 用 户 手 册 .(2010-05-22)[2011-05-01].http://www.osyno.com/bao/osyno6188manual.pdf.

[2]王聪,赵鹏飞,张拯民,等.PDU模式的短信息编解码技术及在Visual C++中的实现[J].计算技术与信息发展,2009,7(1):52-53.

[3]黄涛,白创,徐靖.嵌入式无线互连系统开发从实践到提高[M].北京:中国电力出版社,2007.

[4]孙勇,刘杰.基于 ARM的 GPRS通信终端设计[J].工业控制计算机,2010,23(5):49-51.

[5]徐志刚,张绍阳,宋清艳,等.基于GSM短消息平台的信息发布系统[J].微计算机信息,2010(18):9-12.

[6]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2009.

猜你喜欢

字符串口嵌入式
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
浅谈AB PLC串口跟RFID传感器的通讯应用
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
TS系列红外传感器在嵌入式控制系统中的应用
HBM电子称与西门子S7-200系列PLC自由口通讯
搭建基于Qt的嵌入式开发平台
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索