手机资讯网

浅谈嵌入式GSM短信息接口的软硬件设计

  摘要:SMS短信息服务作为GSM网络的一种基本业务已得到越来越多的系统运营商和系统开发商的重视,以GSM网络作为数据无线传输网络,可以开发出多种前景极其乐观的各类应用。本文给出一个小型的嵌入式SMS中/英文短信息的设计,并详细讨论PDU模式的短信息格式和中文短信息软件解码的设计。 关键词:GSM SMS UTF-8 GB-2312无线数传 遥控 中文编码 引 言 SMS(Short Message Service)短信息服务是GSM(Global Syson)系统中提供的一种GSM终端(手机)之间,通过服务中心(Service Center)进行文本信息收发的应用服务,其中服务中心完成信息的和转发功能。短信息服务作为GSM网络的一种基本业务,已得到越来越多的系统运营商和系统开发商的重视,基于这种业务的各种应用也蓬勃发展起来。以GSM网络作为数据无线传输网络,可以开发出多种前景极其乐观的各类应用,如无线数据的双向传送、无线远程检测和控制等。典型的应用有:变电站、电表、水塔、水库或环保监测点等监测数据的无线传输和无线自动警报;远程无线控制高压线路断电器、加热系统、防洪拦阻系统或机电系统的启动和关闭;车队交通管理和控制指挥系统;控制和监测香烟、食品和饮料自动售货机的运行状态和存货水平等等。

  由于GSM网络在全国范围内实现了联网和漫游,具有网络能力强的特点,用户无需另外组网,在极大提高网络覆盖范围的同时为客户节省了昂贵建网费用和维护费用。同时,它对用户的数量也没有限制,克服了传统的专网通信系统投资成本大,维护费用高,且网络监控的覆盖范围和用户数量有限的缺陷。比起传统的集群系统在无线网络覆盖上具有无法比拟的优势,加上GSM的SMS本身具备的数据传送功能,都使得这些应用得到迅速的普及。利用GSM短信息系统进行无线通信还具有双向数据传输功能,性能稳定,为远程数据传送和监控设备的通信提供了一个强大的支持平台。 1 SMS短信息的无线数传监视和控制 通常情况,基于SMS短信息服务的无线数传监视和控制系统为一个点到多点的远程无线双向数据通信和控制系统,如图1所示。系统的中心点为数据或监控指挥中心,由计算机网络、数据库、电子地图和GSM通信接口组成。监控中心主要完成各种信息和数据的收发和整理:一方面,接收各个监控点上传的信息和数据,并把它们放入相应的数据库和分发给相应的监控计算机,以实现对各个监控点的监控和管理;另一个方面,监控中心响应监控计算机发出的对各个监控点的控制信息,并且把这些信息下发到相应的监控点上,从而达到对监控点设备进行控制的目的。

  2 GSM无线通信控制终端 GSM无线通信控制终端为一个MC3的嵌入式系统,具有如图2所示的测量数据采集、控制、无线通信功能。GSM无线通信控制终端通过GSM网络和监控中心进行双向的信息传输。它将测量和采集到的数据信息传送到监控中心,同时接收监控中心的控制数据,对设备实施相应的控制。 3 GSM通信接口的硬件实现 GSM无线通信控制终端的通信接口一般采用目前在市场上提供的可供二次开发的标准的GSM模块,如TC35、FALCOM、WISMO3等。这些通信模块都具备GSM无线通信的全部功能,并提供标准的UART串行接口,支持GSM 07.05所定义的AT命令集的指令。因此,MCU能非常方便地通过UART接口与GSM模块连接,并直接使用AT命令就可以方便简洁地实现短信息的收发、查寻和管理。 在我们设计的GSM无线通信控制终端中,采用的GSM通信模块为FALCOM A2D,MCU使用的是Atmel公司的高速8位微ATmage128。ATmega128芯片为64个引脚,内部集成了4K字节的RAM、4K字节的EEPROM、128K字节的Flash以及2个UART串行接口等。由于采用了高性能的MCU,省掉了大量的外围器件,如外扩RAM、ROM存储器等,使硬件结构大大简化,提高了系统的可靠性。系统的硬件框图如图3所示。 4 基于GSM通信的软件接口 市场上提供的可供二次开发的标准的GSM模块都支持GSM 07.05所定义的AT命令集的指令。因此,MCU通过UART串行接口直接向GSM模块下发AT命令,就可以方便简洁地实现基于GSM的短信息SMS的收发、查寻和管理。表1列出了与SMS相关的一些常用的GSM AT指令。 表1 与SMS相关的常用GSM AT命令 AT指令 功 能 AT+CMGD 删除一条保存在SIM卡内的短信息 AT+CMGF 选择短信息格式:0为PDU方式:1为文本方式 AT+CMGL 列出SIM卡中的保存短信息 AT+CMGR 读取SIM卡中指定一条短信息的内容 AT+CMGS 发送一条短信息 AT+CSCA 设置短信息服务中心地址根据GSM 07.05的定义,SMS短信息的发送和接收模式共有三种:Block模式、基于AT命令的Text模式和基于AT命令的PDU模式。使用Block模式需要模块生产厂家提供驱动支持;而用于中英文短信息传送应使用PDU模式,只传送英文短信息(纯文本格式)使用Text模式。Text模式的短信息发送和接收比较简单,如不需要传送中文则最好采用Text模式发送和接收短信息。 采用Text模式发送接收短信息的步骤分为初始化GSM模块、发送文本短信息和接收短信息。下面一段简单的程序给出一个示例: PRINT AT+CSCA=;Chr(34);+00;Chr(34) ‘设置短信息中心号码 PRINT AT+CMGF=1 ‘设置为Text模式 PRINT AT+CMGS=;Chr(34);;Chr(34) ‘发送一条短信息 PRINT This is a test SMS;Chr(26) PRINT AT+CMGR=1 ‘读取收到的一条 ‘短信息 . . .

  该程序使用BASCOM-AVR高级语言编写,其中PRINT语句的功能是通过URAT串行口发送字符串,Chr(34)代表ASCII字符(“),Chr(26) 代表ASCII字符(Ctrl-Z)。第一行语句设置短信息服务中心号码,即通过串口发送以下字符串: AT+CSCA= +00,其中+00为上海地区中国移动的短信息服务中心号码。第二行语句设置短信息发送格式:AT+CMGF=1,其中1表示采用Text模式。第三和第四行语句发送一条短信息到控制中心,AT命令的格式为:AT+CMGS= This is a test SMS,其中控制中心的号码为,短信息内容为“This is a test SMS”,确认控制字符为Ctrl-Z。第五行语句为读取一条收到的短信息内容:AT+CMGR=1,其中1表示收到的(在SIM卡中)第一条短信息。该指令发出后,如果GSM模块中有接收到的短信息,则从UART接口返回如下信息(具体AT命令格式请参考GSM 07.05): +CMGR: REC UNREAD,+60,,02/10/16,15:37:28+32 xxxxxxxxxxxxxxxxxx (收到短信息的文本内容) 5 基于PDU模式的中文短信息接收 发送和接收中文或中/英文混合的短信息必须采用PDU模式。根据GSM 07.05的定义,只要通过UART接口向GSM模块下发AT命令,就可以直接读取收到的PDU模式的短信息: PRINT AT+CMGF=0 ‘设置为PDU模式 PRINT AT+CMGR=1‘读取接收的一条短信 ‘息 在PDU模式下,GSM通信模块的回答格式为: +CMGR: ,, 其中: stat表示该条短信息的状态,通常为0(未读过,新的短信息)或1(已读过); Length为十进制数,表示pdu数据长度减去短信息服务中心地址长度,单位为字节; 为回车换行;

  pdu为PDU模式的数据包。 然后,要分析PDU数据包,根据PDU的数据格式将收到的中文信息和相关信息解析出来。 5.1 PDU数据包格式 PDU数据包由两部分构成,短信息服务中心地址(SMSC address)和TPDU,表2为PDU数据包的格式,其中一个数据单元为一个字节。 其中短信息服务中心号码、发送源号码、日期以及时间采用压缩BCD码表示,低位在前,高位在后。在本文的网络补充版()中给出了通过读取短信息的AT命令(AT+CMGR=1)从GSM模块读到的一条PDU模式的短信息,并给出常见的数值与解释。 5.2 PDU模式的纯英文短信息解码 PDU模式的纯英文短信息编码使用GSM字符集的7位编码,此时TP-DCS的值为00。如短信息内容为英文字符“Hi”,首先将各个字符转换为7位的标准二进制ASCII码,然后要将后面字符的低位逐位调整到前面,补齐前面的差别。例如:“H”的二进制ASCII码为1001000,“i” 二进制ASCII码为1101001;显然H的二进制编码不足八位,那么就将后面字符i的最后一位补足到H的前面,就成了11001000(C8),i剩下六位110100,前面再补两个0,变成00110100(34),于是“Hi”就变成了两个八进制数 C834。由于PDU模式的纯英文短信息采用7位编码,解码不方便,因此对于只需发送和接收纯英文字符和数字符号的应用,最好采用Text模式发送和接收短信息。 表2 PDU数据包格式(接收MSM) 备注名称长度数据单元bit位 7 6 5 4 3 2 1 0 SMSC地址长度 1 N+1(十六进制数) SMSC地址类型 1 1 号码类型号码表 SMSC号码 N 号码第2位号码第1位 号码第4位号码第3位 …… …… 号码第n位号码第n-1位 TPDU第一字节 1 最长12字节发送源号码长度 1 实际号码位数k(十六进制数) 发送源号码类型 1 1 号码类型号码表 发送源号码 M 号码第2位号码第1位 号码第4位号码第3位 号码第k位号码第k-1位 TP-PID 1 TP-DCS 1 TP-SCTS 7 年低位年高位 月低位月高位 日低位日高位 时低位时高位 分低位分高位 秒低位秒高位 时 区 TP-UDL 1 最长140字节 TP-UD短信息内容 1 1 1 1 5.3 中文短信息的解码 由于中文字的编码是采用2个字节的编码,因此发送和接收中文或中英文混合的短信息只能采用PDU模式。但在GSM标准中,中文编码采用UTF-8的编码,不是目前国内常用的GB-2312编码,故还需要进行中文编码的转换,才能与采用GB-2313汉字库相配合显示汉字字型。 由于UTF-8和GB-2312编码之间不存在一一对应的线性关系,因此只能采用查表的方式进行转换。下面给出一个由UTF-8到GB-2312编码转换的算法。

  ① 建立UTF-8和GB-2312两个中文编码表,表中数据项为2个字节长度的十六进制的数,代表一个中文编码。两个表的长度分别为14 890字节(2%26;#215;7445)。UTF-8编码表按数据项值从小到大排序,而在GB-2312编码表中,与UTF-8相同位置处为相同汉字的GB-2312码字,如图4所示。 ② 软件解码过程为:每次从PDU模式SMS数据包的TP-UD中取出两个字节,采用二分法快速数据查找算法,在UTF-8编码表中找到其所在位置,然后在 GB-2312表的相同位置处读取相对应的GB-2312编码。解码流程如图5所示。 ③ 二分法的最坏查找次数为lg2(n+1),UTF-8表的长度n为7445,固最坏查找次数为13次,就是说一个中文编码由UTF-8到GB-2312的转换最多经过13次比较查找就可完成。 这比采用简单的顺序查表要快的多,大大减少了查表所花费的时间,非常适合在一般的嵌入式系统中使用。 ④ 尽管两个汉字编码表要占用近30 KB(如还需要GB-2312到UTF-8的转换,则还要增加两个表,共占60 KB),但由于采用了ATmega128单片机,其片内有128KB的程序存储器,因此可将程序与表格放在一起。去掉60 KB的表格,仍有近70 KB的容量用于系统程序,因此完全不用外部扩充存储器(汉字字库除外),大大简化了硬件的结构和设计。 结 语 本文的设计方案已应用在我们研发的产品“车船载GPS-GSM卫星定位无线通信移动终端”上,经过多年的运行和使用,证明系统工作稳定可靠。2001年10月,在美国著名计算机应用杂志《CIRCUIT CELLAR》举办的世界性电子设计竞赛“Design Logic 2001 Contest”中,该产品获得三等奖。

  我们将《嵌入式工程师-系列课程》分成两大阶段:第一阶段:《计算机体系结构》课程 分成4篇:分别是

  DSP有限的片内存储器容量往往使得设计人员感到捉襟见肘,特别是在数字图像处理、语音处理等应用场合,需....

  目前,越来越多的FPGA设计开始采用嵌入式处理器,如PowerPC和赛灵思(Xilinx)的Micr....

  随着科技与经济的发展,汽车数量也逐渐增多,交通管理问题日渐严峻。如何建立一个科学有效的交通管理系统是....

  摘要:以MapInfo系统和VB5.0为例系统地介绍了使用嵌入式技术开发地理信息系统(GIS)应用软....

  FPGA 嵌入式设计 中,常通过软件编程的方式来访问或者控制某些外围设备.电路设计软件Altium ....

  谷歌于 1 月下旬曾向 USPTO(美国专利及商标局)递交了名为 “Pigweed” 的新商标申请。....

  GlobalFoundries、Everspin联合宣布,双方已经达成新的合作,将利用GF 12LP....

  EMC(ElectromagneticCompatibility)——电磁兼容(性)是一门多学科交叉的边缘性学科。电磁兼容技术已在很多领域中...

  在嵌入式处理器环境中,为何C语言(函数调用)需要堆栈,而汇编语言却不需要堆栈? 据我所知,c语言最终也是被编译成...

  嵌入式工业平板电脑是工业行业运用的一种工控机。开发了嵌入式人机界面,实现了界面的显示和操作,可编程数....

  雷达嵌入式故障检测仪系统硬件可以采用自定义总线也可以采用标准总线。自定义总线是某个单位根据自身的特点....

  锐龙芯片的主板也能做到树莓派那样的大小?没错,DFI(友通)新近推出了搭载锐龙嵌入式R1000系列A....

  USB作为一种串行通信总线,采用主从式通信方式,从设备只能被动响应来自主设备的请求,不能主动发起请求。随着嵌入...

  信号源是现代电子系统的重要组成部分,在通信、测控、导航、雷达、医疗等领域有着广泛的应用,而且信号源作为现代电子...

  传统外置无线路由应用 缺点:分离式、体积大、高成本 AD7028H嵌入式应用 随着物联网的高速发展需....

  Python的异步编程功能(简称async)让你可以编写不必等待独立任务完成就可以完成更多工作的程序....

  视频门铃模块方案嵌入智能锁:超低功耗 (平均待机电流175微安),远程开锁(开锁记录:实时记录事件)....

  无论你是面向过程、面向对象,或者是函数式编程的爱好者,都可以在Python找到适合自己的语言范式。

  长久以来,串行RS 232和RS 485通信技术一直是自动化仪器、仪表中常用的通信标准。但近年来,随....

  在复杂的应用系统中通常都需要嵌入式操作系统的支持,这样嵌入式操作系统镜像文件的尺寸往往就会变得比较大。可以选择...

  当谈到32 位微时,基于ARM 的产品已经占据重要地位。那么,这会是故事的全部吗?不见得,行业内最重要的公司之...

  随着传统的显示-存储-回放模式的监控系统的普及,在已有监控系统上提供增值服务的智能监控技术成为行业发展的热点。...

  伴随着嵌入式系统的复杂性越来越高,系统的开发周期不断延长。但开发周期与系统的安全性、可靠性又有一定的冲突。目前...

  我想开发一个小车监控系统 通过局域网与小车通信 要求视频传输质量1920的 利用H.264编码 同时能发送指令控制小车启停...

  在嵌入式Linux开发过程中需要为指定设备编写和编译驱动程序,这与以往在PC机上的Linux驱动开发明显不同,本文设计...

  嵌入式RFID 终端读取器, 在农业产品包装生产线中进行了实用, 基本满足了生产线RFID 系统对前....

  随着嵌入式逐渐走入我们的生活,越来越多的人加入了学习嵌入式的大军。但是,在学习嵌入式之前难免会有新手....

  嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方....

  嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方....

  近年来物联网概念逐渐普及,在多数产业导入后,过去制定的物联网架构开始因应企业实务运作转型,就目前发展....

  由于物联网(IoT)市场的分散性,增加了项目的复杂性和成本,今天的开发人员在设计决策上面临着前所未有....

  尽管在 SoC 中嵌入 FPGA 总能为设计者带来不错的设计想法,但对于 FPGA 供应商而言,要实....

  目前,市场上占有率比较高的商业RTOS有VxWorks/PSOS、QNX、 LynxOS、VRTX,....

  Toradex,Amazon Web Services(AWS)和NXP Semiconductor....

  μC/OS-II是美国人Jean Labrosse编写的一个免费的、源码公开的嵌入式实时内核。对于开....

  FTP协议与一般的Intemet协议不同。Intemet协议通常采用一个TCP连接来传送信息(如HT....

  摘要:介绍嵌入式微内核实时操作系统的体系结构;针对Wolf嵌入式操作系统,设计一套微内核嵌入式操作系....

  在FPGA 设计中使用嵌入式处理器软核( 如MicroBlaze、PicoBlaze 等) 构成可编....

  电源是嵌入式系统中不可缺少的重要组成部分,电源设计的好坏直接决定了系统设计的成败。出现电源设计问题的....

  随着嵌入式技术的发展,实时操作系统RTOS(Real Time Operating System)被....

  以标准的计算机技术为核心的嵌入式系统,由于可以与各种各样的复杂的设备有机地结合在一起,非常灵活地实现....

  工程利用Visual Studio 2005平台进行开发,选择基于对话框结构模式设计,并且要求Win....

  随着VoIP的迅猛发展,越来越多的个人用户正在使用软件电话、IP电话通过VoIP系统拨打国内和国际长....

  铁路平交道口是铁路与公路的平面交叉,是铁路安全运营的重要设施,随着铁路的发展,道口密度加大,而随着铁....

  这里,我们假设仅在绝对必要的情况下才使用调试器进行调试,因此我们从运行基于模式的静态代码分析开始。它....

  对于ARM-Linux开发,通常是没有硬件的调试器的,尤其是在应用开发的过程中,很少使用硬件的调试器....

  嵌入式微处理器有各种不同的体系,即使在同一体系中也可能具有不同的时钟频率和数据总线宽度,或集成了不同....

  嵌入式无线模块的单价总是比现成的网关低得多。然而,在嵌入无线模块时,必须考虑设计、开发、认证和生命周....

  如上图,系统上位机中使用的微处理芯片是三星公司的 arm920T S3C2410A;Flash存储器....

  对于嵌入式软件来说,尽量节省内存资源、降低程序代码量是十分重要的。因此,将程序中所有错误、异常情况都....

  EdgeBoard是百度基于FPGA芯片研发的嵌入式AI解决方案,高性能的加速引擎可提供3.6Top....

  在需要丰富人机交互信息的嵌入式系统应用中,高精度的动态图像显示非常重要。因此,嵌入式系统对GUI的实....

  随着网络技术和嵌入式技术的迅猛发展,通过网络来实现视频监控已经得到了广泛的应用,3G网络以其高带宽使....

  但凡是学过C语言的人,都知道要先写main函数,然而很多时候我们看到的main函数却各有差异,这究竟....

  一、嵌入式硬件开发:熟悉电路等知识,非常熟悉各种常用元器件,掌握模拟电路和数字电路设计的开发能力。熟....

  移动通信技术发展,大概保持着10年一代的速度,全球范围来看,从1G到5G花了40年时间。移动通信技术....

  交叉编译技术,就是一种在一个异构平台上编译出目标平台程序的技术。比如在PC平台(X86 CPU)上编....

  随着信息化,智能化,网络化的发展,嵌入式系统技术也将获得广阔的发展空间。嵌入式技术全面展开,目前已成....

  无线通信中,信号在非理想信道传输时总是存在失真,具体表现为码间干扰。为降低干扰,通常在接收端采用自适....

  SPCE061A是凌阳科技新推出的u课SP内核的十六位单片机,内嵌32K字 Flash的SPCE06....

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读