使用PyGSM从华为e220发短信

时间:2012-11-26 23:48:49

标签: python-2.7 sms gsm modem

我正在尝试以编程方式在python中发送和接收txt消息,在vodafone上使用huawei e220调制解调器。

editedit: 我得到了它的工作,需要将smsc设置为*****。 我需要知道的是,将它设置为什么的命令是什么? EG AT + ????

如何使用serial.Serial模块执行此操作? 我度过了一段艰难的时光。

PyGSM是最好的模块吗? 我该如何使用它? 我无法在任何地方找到任何文档,但我也找不到更好的模块。

Daisy13_on_D1="/dev/ttyUSB0"

gsm = GsmModem(port=Daisy13_on_D1,baudrate=115200,logger=GsmModem.debug_logger).boot()

s = gsm.wait_for_network()

gsm.send_sms(642723243,"Hey, what's up")

给我这个输出

debug Booting
   debug Connecting
   write 'ATE0\r'
    read '\r\n'
    read 'OK\r\n'
   write 'AT+CMEE=1\r'
    read '\r\n'
    read 'OK\r\n'
   write 'AT+WIND=0\r'
    read '\r\n'
    read 'COMMAND NOT SUPPORT\r\n'
   write 'AT+CMGF=1\r'
    read '\r\n'
    read 'OK\r\n'
   write 'AT+CSQ\r'
    read '\r\n'
    read '+CSQ: 19,99\r\n'
    read '\r\n'
    read 'OK\r\n'
   write 'AT+CMGS="642723243"\r'
    read '\r\n'
    read '+CMS ERROR: 330\r\n'
   write '\x1b

我现在也试图使用sms0.4模块而没有运气。

import sms

m = sms.Modem("/dev/ttyUSB0")

m.send('64272923243','This works YO')
print m.conn.sent()

结果:

Traceback (most recent call last):   File "testSMSMODULE.py", line 5, in <module>
    m.send('0272923243','This works YO')   File "/usr/local/lib/python2.7/dist-packages/sms-0.4-py2.7.egg/sms/__init__.py", line 61, in send
    self._command('AT+CMGS="%s"' % number)   File "/usr/local/lib/python2.7/dist-packages/sms-0.4-py2.7.egg/sms/__init__.py", line 109, in _command
    raise ModemError(results) sms.ModemError: ['\r\n', '+CMS ERROR: 330\r\n']

2 个答案:

答案 0 :(得分:1)

AFAIK是做你想要的最好的免费库,叫做SMSLib,它是用Java编写的。准备好修复特定于您的硬件的许多问题,但一般情况下它可以正常工作。

有一个名为“ActiveXperts Mobile Messaging Toolkit”的商业解决方案,您可以通过COM绑定从Python中使用它。没有尝试过我自己(当我需要的时候,我已经实现了自己的解决方案),但是Internets上的人说它工作正常。

AFAIK剩下的就是垃圾。

答案 1 :(得分:1)

sms模块似乎更容易使用: http://pypi.python.org/pypi/sms

简而言之,要通过Python调制解调器的串行接口发送文本:

#!env python
import serial
m = serial.Serial('/dev/ttyUSB0', 115200, timeout=1)
m.write('ATZ\r')
m.write('AT+CMGF=1\r\n')
m.write('AT+CMGS="%s"\r\n' % '+phone_number_here')
m.write('this is the text message here')
m.write(chr(26))
m.close()

设置SMSC的AT命令是:AT+CSCA="+smsc_number_here",145。见http://www.developershome.com/sms/cscaCommand.asp