如何通过AT命令用Zoom 7.2m三频USB调制解调器发送短信?
我正在尝试在OSX 10.6.6上制作一个简单的Python 2.6应用程序,目的是通过我的Zoom 7.2m(3G)USB调制解调器发送和接收短信。
当我第一次插入USB调制解调器时,似乎没有创建任何TTY或CU会话。我必须运行调制解调器的软件来启动以下会话:
cu.LJADeviceInterface2621
cu.LJADiagConnector2620
cu.LJAMobileConnector2622
tty.LJADeviceInterface2621
tty.LJADiagConnector2620
tty.LJAMobileConnector2622
经过一番“折腾”,我发现我唯一可以读写的会话是“cu.LJADeviceInterface2621”。但是当我尝试连接到这个tty实例时,出现了一个错误:
serial.serialutil.SerialException: 无法打开端口 /dev/tty.LJADeviceInterface2621: [Errno 16] 资源忙: '/dev/tty.LJADeviceInterface2621'
不过没关系——至少我有一个可以使用的会话,就是cu的那个。
我的脚本如下:
ser = serial.Serial("/dev/cu.LJADeviceInterface2621", 9600, timeout=1)
print "Setting DTR..."
ser.setDTR(True)
sleep(3)
print "Turning off DTR..."
ser.setDTR(False)
searching = True
ser.setDTR(True)
while searching:
print "Write instruction..."
txt=raw_input()
if txt.find("ZZ")>-1:
txt=txt.replace("ZZ",chr(13))
ser.write(txt)
ser.close()
现在,我还有另一个脚本在监控“cu.LJADeviceInterface2621”上的消息。这个脚本如下:
ser = serial.Serial("/dev/cu.LJADeviceInterface2621", 9600, timeout=1)
print "Attempting search."
while True:
line = ser.readline()
print ">", line
当这两个脚本都在运行时,在写入代码的部分,我输入以下几行:
(注意:ZZ输入是通过上面的写入脚本替换为Ctrl-Z - chr(13))
AT+CMGF=1ZZ [按回车确认写入]
OK
AT+CMGW="+447725123123"\r\n [按回车确认写入]
ERROR
我应该写入消息的文本,然后跟上Ctrl-Z(chr(13)),但我却立即收到一个错误。
这个USB调制解调器有有效的SIM卡,并且有余额,信号也很好,我可以通过Zoom调制解调器软件发送短信(不过这只能在PDU模式下工作——但调制解调器确实支持文本模式,正如AT+CMGF=?命令所示),也能接收消息。
有什么想法吗?
如果需要更多信息,我很乐意提供,谢谢!
Stu
2 个回答
我从来没用过那个调制解调器,但我想它应该是用标准的GSM AT命令。AT+CMGW这个命令是错的。
你应该发送:AT+CMGS="+111111111"\r\n 短信内容 Ctrl-Z
这样应该就能正常工作了。
另外,记得有很多现成的项目可以帮你完成这个任务(比如pysms就是其中之一)