简介:AT命令是一系列用于控制调制解调器的标准命令集,特别在GSM短信猫设备中用于执行短信发送与接收等操作。本文详细介绍了AT命令的基础知识,如何通过AT命令实现短信模式切换、短信发送、读取、删除等短信服务功能,处理长短信的方法,以及WavecomAt.exe这类交互工具的使用。此外,文章还探讨了AT命令在实际应用中的重要性,注意事项、调试技巧和安全性考量,为利用GSM短信猫进行通信提供了全面的技术指南。
1. AT命令基础与应用
1.1 AT命令简介
AT命令(Attention command)是用于控制调制解调器和其他设备的一系列命令,最初由Hayes Microcomputer Products公司开发,用于他们生产的Smartmodem。随着技术的发展,AT命令被广泛应用于包括无线通信模块在内的多种通信设备。它们通常用于串行通信端口,通过文本字符串发送指令来配置设备,查询状态或执行特定操作。
1.2 AT命令基础语法
AT命令的基础语法非常简单,一般格式为: AT+<命令代码> [参数] 。其中,“AT”是Attention的缩写,表示接下来发送的是一个命令,而不是数据。命令代码通常由大写字母组成,指明要执行的操作类型。方括号内的“参数”是可选的,它们用来指定命令执行时的额外信息。若命令执行成功,模块通常会返回“OK”;若执行失败,则返回“ERROR”。
1.3 AT命令的应用场景
AT命令被广泛应用于各种需要远程控制和数据交换的场景。特别是在物联网(IoT)领域,AT命令是与无线模块交互,实现远程监控、数据采集和设备控制的基础。此外,在个人电脑的早期互联网接入、GSM模块的短信发送与接收等方面,AT命令都扮演着至关重要的角色。通过学习和掌握AT命令,开发者和工程师可以更好地控制和利用这些通信设备,拓展它们的应用范围和功能。
本文将深入探讨AT命令的基本用法,并结合短信操作相关的命令,如AT+CMGF、AT+CMGS等,为读者提供从基础到应用的全方位指导。我们将通过实例和场景分析,帮助读者更高效地利用AT命令进行开发和故障排除。
2. 短信模式切换命令(AT+CMGF)
2.1 短信模式简介
2.1.1 文本模式与PDU模式的区别
在了解短信模式切换命令之前,我们需要先区分文本模式和PDU模式。文本模式(Text Mode)允许用户以普通的ASCII字符来发送和接收短信,其优势在于简单易懂,适合大多数人使用。然而,它有字符数量的限制,因为每条短信最多只能包含160个字符。
与之相反,PDU模式(Protocol Description Unit)使用一种特殊的编码格式来发送和接收短信,可以支持多种字符编码,包括Unicode。PDU模式支持更长的短信,因为它将多条短信自动编码成一个较长的数据字符串。这种模式更为复杂,通常用于需要发送和接收长短信的情况,或者当设备需要与不支持文本模式的系统交互时。
2.1.2 如何根据需求选择短信模式
选择短信模式主要基于需要发送短信的内容长度和目标设备的支持能力。如果短信长度不超过160个字符,且目标用户设备普遍支持文本模式,则文本模式更为便捷。反之,如果涉及到多语言、特殊字符或需要发送长短信(例如160个字符以上),则应该选择PDU模式。开发者应仔细考虑应用场景,并选择对应用最有利的模式。
2.2 AT+CMGF命令详解
2.2.1 命令格式和参数解析
AT+CMGF命令用于设置或查询当前的短信模式。命令的基本格式如下:
AT+CMGF=mode
其中,“mode”是参数,可以是0或1。当设置为0时,设备将以PDU模式发送和接收短信;当设置为1时,设备将以文本模式进行短信处理。举例来说:
AT+CMGF=1
这条命令将设备设置为文本模式。需要注意的是,如果需要发送一条短信,只有在设置了正确的模式后,才能使用相应的命令(例如发送文本短信的AT+CMGS命令)。
2.2.2 常见错误及应对策略
在实际操作中,可能会遇到一些常见错误。例如,如果输入的模式参数不是0或1,则命令会返回错误提示,如“ERROR”。为了避免此类错误,确保输入的模式参数正确,并且在切换模式后检查设备是否已正确响应命令。
此外,在发送短信时,必须确保输入的命令格式正确,特别是对于PDU模式,需要正确编码短信内容和地址信息。错误的格式或编码可能导致短信无法成功发送,并返回错误代码。
开发者可以通过AT命令手册来查找特定的错误代码及其含义,以便能够快速定位问题并采取相应的解决措施。例如,常见的错误响应有:
-
+CMS ERROR: 3- 指示无效的PD地址。 -
+CMS ERROR: 515- 指示短信长度超过设定值。
了解这些错误代码可以帮助开发者更好地调试程序,并提高发送短信的成功率。
3. 发送短信命令(AT+CMGS)与长短信处理
3.1 AT+CMGS命令使用方法
3.1.1 命令格式和步骤说明
AT+CMGS 是用于发送短信的AT指令,它能够让设备向指定的手机号码发送文本信息。该命令的基本格式如下:
AT+CMGS=<length>
这里 <length> 是指定接下来要发送的短信内容的长度。用户必须确保 <length> 的值与实际发送的短信内容的字节数相符。
接着,设备会进入输入模式,等待用户输入短信内容。输入完成后,用户需要在命令行输入一个控制字符 ^Z (在ASCII码中为26)作为结束标志,这表示短信内容已准备好发送。
以下是一个典型的 AT+CMGS 命令使用示例:
AT+CMGS=11
> This is a test.
^Z
上面的命令中, 11 是短信内容 "This is a test." 的字节数(包括空格和结束符),这里假设使用的是ASCII编码。输入短信内容后,按 ^Z 结束输入,系统将开始发送短信。
3.1.2 长短信分段发送的实现
在某些情况下,发送的短信内容可能会超过单条短信的字节限制(例如70字节的限制),这时候就需要使用 AT+CMGS 命令实现长短信的分段发送。当超过最大长度时,发送器会自动将消息拆分成多条短信发送出去。
具体操作时,我们可以将长短信先拆分为符合单条长度限制的多个片段,然后使用 AT+CMGS 命令连续发送这些片段。在每条短信后面加上一个特殊字符序列(如 ^Z ),作为发送指令的一部分,来确保短信正确地被识别和发送。
实现长短信分段发送的代码示例:
import serial
import time
# 打开串行端口
ser = serial.Serial('COM3', 9600, timeout=1)
def send_long_sms(phone_number, message):
for i in range(0, len(message), 160):
fragment = message[i:i+160]
cmd = f"AT+CMGS=\"{phone_number}\""
send_cmd = f"{cmd}\r\n{fragment}\x1a"
ser.write(send_cmd.encode('ascii'))
time.sleep(1) # 等待发送完成
# 示例长短信消息
long_message = "This is a very long SMS that will need to be split into multiple segments because it is too long to be sent as a single message."
phone_number = "+***"
send_long_sms(phone_number, long_message)
这个代码示例中,我们假设每条短信的最大长度是160字节,这是大多数手机网络的典型限制。代码逐段发送了长短信内容,并使用了 ^Z 作为控制字符来发送每条短信。
3.2 长短信处理技巧
3.2.1 分段标志和拼接方法
在长短信处理中,为了确保接收端能够正确地将多个短信片段重新组合成原始的完整信息,发送端会在每个短信片段的结尾加入特殊的分段标志。在GSM标准中,一个长短信可能被分成多个160字节的分段,每段结束时加入一个特殊字符 ^Z 。
当接收端收到这些短信片段时,它需要识别并存储这些片段,然后按照正确的顺序将它们拼接起来。通常,这个过程由手机或短信中心自动处理,但是开发者也需要理解其原理,以便在必要时能手动干预。
3.2.2 长短信发送的常见问题及解决方案
在长短信发送过程中,可能会遇到的一些问题包括消息被截断、顺序混乱或组装错误。为了解决这些问题,开发者可以采取以下措施:
- 确保分段正确 :发送端需要正确计算出每个短信片段的长度,并在每个片段的末尾正确添加
^Z字符。 - 使用标识符 :在每个短信片段中使用递增的标识符,可以是片段编号或时间戳,来确保接收端可以正确地识别和排序片段。
- 错误检测和重试机制 :实现一种机制,在短信发送失败时进行重试,并确认短信最终成功送达。
例如,在发送长短信时,可以使用如下的标识符:
AT+CMGS=57^Z
> This is the first segment of the long message.
^Z
AT+CMGS=57^Z
> This is the second segment of the long message.
^Z
在这个例子中,每条消息都有明确的标识符,即“first segment”和“second segment”,表明它们是长消息的一部分,并帮助接收端正确拼接信息。
4. 读取短信命令(AT+CMGR)
4.1 AT+CMGR命令工作原理
4.1.1 命令格式和参数说明
AT+CMGR命令用于从SIM卡或手机存储中读取短信。命令格式如下:
AT+CMGR=<index>[,<stat>[,<oa>[,<alpha>[,<sca>[,<to>[,<length>]]]]]]
-
<index>:指定要读取的短信索引号,它是一个从1开始的正整数。 -
<stat>:可选参数,用于指定读取状态信息,如是否读取所有信息或仅读取新信息。 -
<oa>:可选参数,用于指定发送者的电话号码。 -
<alpha>:可选参数,用于指定发送者的姓名。 -
<sca>:可选参数,用于指定服务中心地址。 -
<to>:可选参数,用于指定接收者电话号码。 -
<length>:可选参数,用于指定返回消息的最大长度。
4.1.2 读取短信的条件和限制
- 条件:设备必须处于可以接收短信的状态,并且SIM卡有可用空间存储短信。
- 限制:
- 不同的模块或设备可能对参数支持有所不同,具体参考设备文档。
- 某些设备可能限制读取的短信数量或不支持某些高级功能。
4.2 短信内容解析
4.2.1 提取短信的发件人、时间及内容
短信内容包含发件人地址、接收时间戳、短信类型以及实际的短信内容。通过发送 AT+CMGR=<index> ,返回的信息包含这些详细信息。例如:
+CMGR: "REC UNREAD","+***","12/01/06,12:34:56+16"
This is a text message from AT commands.
信息被分割为多行,首行包含读取状态(如"REC UNREAD"表示未读)、发件人电话号码和时间戳。接下来的行则是短信内容本身。
4.2.2 短信内容的编码转换和文本处理
短信内容可能以不同的编码格式存在,常见的有ASCII和UTF-16。如果短信内容以特定的编码格式(如PDU模式)存在,可能需要进行编码转换以得到可读的文本。
import binascii
# Example PDU mode response
pdu_response = '***D***A'
# Decode the PDU response to get the message
# This is a hexadecimal encoded string representing the message
decoded_pdu = binascii.unhexlify(pdu_response)
# Convert the raw data to a string, specifying the encoding (in this case, GSM 03.38)
message = decoded_pdu.decode('gsm0338')
print(message)
在此代码块中,首先使用 binascii.unhexlify 将PDU格式的字符串转换为原始二进制数据,然后使用 decode('gsm0338') 将二进制数据转换为可读的字符串。GSM 03.38是短信通信中广泛使用的编码格式之一。
需要注意的是,不同地区的运营商可能使用不同的编码格式发送短信,因此在解析短信内容时需要特别注意编码格式的正确性。
在实际使用中,根据具体需求选择是否进行编码转换和文本处理,以便于后续的程序化处理或用户展示。
5. 删除短信命令(AT+CMGD)
5.1 AT+CMGD命令概述
5.1.1 命令格式和参数解析
AT+CMGD命令被广泛应用于删除SIM卡或手机中的短信。它的格式通常遵循如下形式:
AT+CMGD=<index>[,<mode>]
-
<index>:用于指定要删除的短信的索引值。索引通常是一个从1开始的正整数,可以根据实际情况选择特定的短信进行删除。 -
<mode>:可选参数,指定删除模式。当<mode>设为0时,它将删除指定的单条短信;设为1时,删除从指定索引开始的所有短信;而设为2时,删除所有已读短信。
例如,执行 AT+CMGD=3,0 将删除SIM卡上的第3条短信。
5.1.2 删除短信的范围和条件
使用AT+CMGD命令时,需要注意以下几点:
- 删除操作是不可逆的,一旦执行,短信将被永久移除,所以需要谨慎操作。
- 删除时如果SIM卡被移除或不可用,命令将返回错误。
- 确保在执行删除命令前,设备处于正确的模式和权限下,比如一些设备可能需要特定的PIN码解锁。
- 该命令在执行过程中,会根据SIM卡和设备的性能响应,可能需要几秒时间才能完成。
5.2 高效删除短信的策略
5.2.1 单条与批量删除的对比
在使用AT+CMGD命令删除短信时,单条删除和批量删除各有优劣:
单条删除 : - 优点 :可以精确控制删除哪些短信,操作灵活。 - 缺点 :操作繁琐,尤其是对于大量短信,效率低下。
批量删除 : - 优点 :效率高,特别适合清理大量已读或特定范围内的短信。 - 缺点 :操作不够灵活,一旦执行,所有符合条件的短信都会被删除。
5.2.2 短信删除操作的常见问题及解决
在使用AT+CMGD命令进行短信删除时,可能会遇到一些问题,以下为常见的问题及其解决方法:
问题一:未授权删除操作
解决方法 :确保设备处于解锁状态,或者使用正确的PIN码解锁设备。
问题二:删除后短信依旧存在
解决方法 :确认命令格式无误,并且SIM卡处于可读写状态。同时检查是否存在系统或设备固件bug,并尝试重启设备。
问题三:删除命令执行失败
解决方法 :检查SIM卡空间是否充足以及是否有特定的系统权限限制。也可以尝试使用默认参数重新执行删除命令。
AT+CMGD=3
在执行上述命令后,如果返回OK,则表示第3条短信已被删除。如果返回ERROR,则可能需要检查操作的权限或SIM卡状态。
表格展示不同类型短信删除操作的比较
| 操作类型 | 优点 | 缺点 | 使用场景 | | --- | --- | --- | --- | | 单条删除 | 精确操作,避免误删 | 效率低,操作繁琐 | 仅需删除少量短信 | | 批量删除 | 快速清除大量短信 | 不够灵活,可能误删 | 需要清理大量已读短信或特定范围内的短信 |
代码块展示删除特定范围内的短信实例
// 删除第5条至第10条短信
AT+CMGD=5,1
AT+CMGD=6,1
AT+CMGD=7,1
AT+CMGD=8,1
AT+CMGD=9,1
AT+CMGD=10,1
该代码块展示了如何一次性删除多条短信,提高效率。请注意,这种操作在实际应用中需要谨慎执行,防止误删重要信息。
6. WavecomAt.exe交互工具介绍
6.1 WavecomAt.exe概述
6.1.1 工具的功能特点
WavecomAt.exe 是一款专为使用 Wavecom GSM 调制解调器的用户设计的交互式工具,它简化了通过 AT 命令控制 GSM 设备的过程。这个工具的主要特点包括:
- 友好的用户界面 :提供图形界面,用户无需记住复杂的 AT 命令即可进行操作。
- 命令模板和脚本功能 :允许用户保存常用的命令组合或编写脚本自动执行特定任务。
- 实时日志记录 :所有执行的命令和响应都会被记录下来,便于问题追踪和调试。
- 支持多种 GSM 设备 :兼容多种 Wavecom 和其他品牌 GSM 调制解调器。
这些功能特点使得 WavecomAt.exe 成为进行短信通信和设备管理的理想选择,尤其适合于需要频繁测试和监控的场景。
6.1.2 与GSM短信猫的交互原理
WavecomAt.exe 通过串口与 GSM 调制解调器进行通信,模拟计算机与移动设备之间的 AT 命令交换过程。这一交互原理基于以下步骤:
- 串口连接 :首先确保计算机与 GSM 调制解调器之间有物理或虚拟的串口连接。
- 初始化通信 :软件发送初始化命令(如 AT)以确认设备状态和建立通信协议。
- 执行 AT 命令 :软件根据用户的选择或脚本的指令,发送相应的 AT 命令至 GSM 调制解调器。
- 接收响应 :GSM 调制解调器响应命令,返回结果至 WavecomAt.exe。
- 数据处理 :软件对响应结果进行解析,并以图形或文本形式展现给用户。
此过程不断循环,实现了用户与 GSM 设备之间的实时交互。
6.2 WavecomAt.exe的高级应用
6.2.1 参数配置和脚本编写
高级用户可以通过配置参数和编写脚本来实现更复杂的自动化任务。参数配置通常包括设置串口参数、网络设置以及自定义的 AT 命令集。
graph LR
A[启动WavecomAt.exe] --> B[打开参数配置]
B --> C[设置串口参数]
B --> D[配置网络设置]
B --> E[添加自定义AT命令]
C --> F[保存配置]
D --> F
E --> F
F --> G[测试配置]
脚本编写则允许用户通过一系列预定义的命令和逻辑构建自动化流程。例如,定时检查网络连接状态、自动回复收到的短信等。
6.2.2 批量操作和自动化控制
通过 WavecomAt.exe 的批量操作功能,用户可以实现如下自动化控制:
- 短信批量发送 :预先编写短信内容和接收者列表,软件将按照预定时间或触发条件自动发送短信。
- 短信批量查询和删除 :自动化地查询新收到的短信,根据内容或时间进行过滤,并执行删除操作。
自动化控制极大提高了工作效率,特别是在需要进行大规模短信处理的场景中。
graph LR
A[启动WavecomAt.exe] --> B[打开批量操作菜单]
B --> C[设置发送/查询/删除参数]
C --> D[选择执行时间或触发条件]
D --> E[执行批量任务]
E --> F[监控任务执行状态]
F --> G[生成执行报告]
通过以上的高级应用,WavecomAt.exe 不仅能处理日常的短信收发任务,还可以在业务流程中发挥关键作用,比如自动化营销、客户服务和远程监控系统。
7. 物联网与远程监控系统中的应用
随着物联网技术的快速发展,短信服务因其可靠性和覆盖范围广泛,成为了物联网和远程监控系统中不可或缺的通信手段。本章节将探讨短信在物联网中的应用,以及在远程监控系统中部署短信猫的实践案例分析。
7.1 物联网系统中的短信应用
7.1.1 短信在物联网中的角色和功能
短信服务在物联网系统中扮演着至关重要的角色。由于物联网设备可能部署在没有稳定互联网连接的偏远地区,短信提供了稳定可靠的信息传递方式。它能够实现设备状态的远程监控和控制,如远程开启或关闭设备、发送警告和警报通知等。
短信在物联网中的功能主要包括:
- 设备控制 :通过发送特定格式的短信命令来控制设备。
- 状态报告 :设备通过短信将自身的运行状态或环境参数发送回监控中心。
- 告警通知 :当设备检测到异常时,如安全传感器触发,能够及时发送报警短信给运维人员。
7.1.2 短信猫在远程监控系统中的部署
短信猫(GSM Modem)作为连接物联网设备与移动网络的桥梁,在远程监控系统中的部署是非常关键的。部署短信猫时,需要考虑以下因素:
- 网络覆盖 :确保短信猫所在位置的移动信号强度良好。
- 电源稳定性 :为短信猫提供稳定的电源,确保长期稳定运行。
- 硬件接口 :根据需求选择支持串口、USB或以太网等不同接口的短信猫。
7.2 实际案例分析
7.2.1 成功案例分享
在一个城市的环境监测系统中,短信猫被用于定期发送环境数据给环境监管部门。通过短信猫,该系统能够将各监测点的空气质量指数(AQI)、温度、湿度等数据及时传输。在数据超出正常范围时,系统还能自动发送警报短信给相关责任人,使得监管机构能够及时采取措施。
7.2.2 短信通信在系统中遇到的挑战及应对
在实际部署过程中,短信通信也面临着一些挑战,比如短信延迟、数据流量限制、以及安全性问题。为应对这些挑战,采取了以下措施:
- 采用多通道备份 :使用多个短信猫确保通信的可靠性。
- 流量监控与控制 :建立流量监控系统,防止超出预设的短信使用量。
- 加密通信 :对敏感数据进行加密,确保数据在传输过程中的安全性。
通过上述措施,环境监测系统中的短信通信更加稳定、安全,且具有更高的可用性和灵活性。
在本章中,我们探索了短信在物联网系统中的重要角色,并通过一个环境监测系统的案例,分析了短信通信的应用及在部署和运行中遇到的挑战及其解决方案。这些经验可以为其他类似项目的实施提供参考和借鉴。接下来,我们将继续探讨在实际操作中需要注意的事项和调试技巧。
简介:AT命令是一系列用于控制调制解调器的标准命令集,特别在GSM短信猫设备中用于执行短信发送与接收等操作。本文详细介绍了AT命令的基础知识,如何通过AT命令实现短信模式切换、短信发送、读取、删除等短信服务功能,处理长短信的方法,以及WavecomAt.exe这类交互工具的使用。此外,文章还探讨了AT命令在实际应用中的重要性,注意事项、调试技巧和安全性考量,为利用GSM短信猫进行通信提供了全面的技术指南。
AT命令在短信服务及物联网中的应用指南

4316