GSM串口短信收发技术详解

需积分: 3 2 下载量 91 浏览量 更新于2024-07-30 收藏 162KB DOC 举报
本文主要介绍了如何通过串口连接GSM手机来实现发送和接收短消息。在编程实现这一功能时,需要对相关的GSM规范有深入的理解,主要包括GSM03.38、GSM03.40和GSM07.05。文章提到了三种方式来处理SMS信息,即BlockMode、TextMode和PDUMode,其中BlockMode已过时,TextMode不适用于中文消息且不适合自定义数据传输,因此主要讨论PDUMode。 在PDUMode下,短消息以PDU(Protocol Data Unit)的形式表示,由一系列ASCII码组成,包括消息内容、SMS服务中心号码、目标号码等信息。PDU串的结构复杂,包含多个字段,例如: 1. SMSC地址信息长度:指示SMSC地址的八位字节数量。 2. SMSC地址格式:定义了号码的类型,如国际格式。 3. SMSC地址:实际的短消息服务中心号码,可能需要填充字符以达到偶数长度。 4. 基本参数:如TP-MTI(消息类型指示符)和TP-VFP(可视电话部分),表明消息是发送还是接收,以及VP(可见部分)的格式。 5. 消息基准值:TP-MR,通常用于确认或回复消息。 6. 目标地址数字个数:指出接收方号码的位数。 举例说明,一个实际的PDU串会包含以上字段的具体数值,每个字段都有特定的编码规则。例如,一个发送“Hello!”的示例PDU串,包含了SMSC号码和接收方号码的信息,以及消息内容的编码。 在实际编程实现中,需要解析和构建这样的PDU串,这通常涉及AT命令的使用,AT命令是GSM07.05规范的一部分,定义了DTE(数据终端设备,如电脑)和DCE(数据通信设备,如GSM模块)之间的接口。通过发送特定的AT命令,如AT+CMGF切换消息模式,AT+CMGS发送短信,AT+CMGL读取短信等,可以控制GSM模块执行相应的操作。 为了处理PDU串,程序需要能够解码和编码16进制或BCD码,并理解每个字段的含义和格式。例如,解码PDU串中的目标号码和消息内容,然后将内容转换回可读的文本。对于中文消息,由于国内手机大多不支持TextMode下的中文编码,因此需要在PDUMode下使用UCS2或其他合适的字符集编码。 开发基于GSM短消息的GPS系统,可以利用这种串口通信方式发送和接收定位数据或者其他监控信息。通过短信服务,设备可以向中心服务器报告其位置,或者接收控制指令。这样的系统需要考虑网络覆盖、短信延迟、数据压缩和错误处理等问题,确保数据的可靠传输。 通过串口收发短消息涉及GSM通信规范、PDU编码、AT命令以及串口编程等多个方面,开发者需要对这些知识有深入理解才能成功实现。