ec800mcnle 如何使用atcmd.sendSync 通过AT命令发短信。

同题,采用quecpthon库中的atcmd.sendSync(atcmd,resp,expect,timeout)函数发送短信,函数的atcmd变量应该如何组织?atcmd=‘AT+CMGS=“13800000000”\r\nsendSync test\r\n\x1a\r\n’,还是其他方式?

该场景建议按短信 AT 命令的交互流程分两步发送,不建议把 AT+CMGS、短信正文、\x1A 一次性拼成一个 atcmd 发送。

示例写法如下:

import atcmd

resp = []

# 1. 设置短信文本模式
atcmd.sendSync('AT+CMGF=1\r\n', resp, 'OK', 1000)

# 2. 发送 CMGS,等待模块返回 > 提示符
resp = []
atcmd.sendSync('AT+CMGS="13800000000"\r\n', resp, '>', 5000)

# 3. 发送短信内容,并以 Ctrl+Z 结束,即 \x1A
resp = []
atcmd.sendSync('sendSync test\x1A', resp, 'OK', 60000)

注意点:

  1. AT+CMGS="号码"\r\n 发送后,需要等待返回 >
  2. 短信正文后面追加 \x1A 表示结束并发送。
  3. 正文后一般不需要再追加 \r\n,除非短信内容本身需要换行。
  4. 若发送中文短信,还需要根据 AT 手册配置字符集或使用 UCS2 编码,不能直接按普通字符串发送。

所以您示例中的:

AT+CMGS="13800000000"\r\nsendSync test\r\n\x1a\r\n

不推荐作为一次 sendSyncatcmd 参数发送,应拆成等待 > 后再发送正文。

本回答仅供参考。若问题已解决,可标记为 :white_check_mark:解决方案 ;若仍有疑问,请等待官方技术人员回复,最终请以专业解答为准。