通过USB Dongle / Python发送短信

时间:2013-09-16 08:31:59

标签: python sms

我想使用加密狗发送短信。我从this网站找到了以下代码并采用了它。但它给出了流动的错误。有人可以帮助我使这个脚本工作。

错误:

   raise SerialException("could not open port %s: %s" % (self._port, msg))
serial.serialutil.SerialException: could not open port /dev/ttyACM0: [Errno 2] No such file or directory: '/dev/ttyACM0'

代码:

import serial
import time

class TextMessage:
    def __init__(self, recipient="0123456789", message="TextMessage.content not set."):
        self.recipient = recipient
        self.content = message

    def setRecipient(self, number):
        self.recipient = number

    def setContent(self, message):
        self.content = message

    def connectPhone(self):
        self.ser = serial.Serial('/dev/ttyACM0', 460800, timeout=5)
        time.sleep(1)

    def sendMessage(self):
        self.ser.write('ATZ\r')
        time.sleep(1)
        self.ser.write('AT+CMGF=1\r')
        time.sleep(1)
        self.ser.write('''AT+CMGS="''' + self.recipient + '''"\r''')
        time.sleep(1)
        self.ser.write(self.content + "\r")
        time.sleep(1)
        self.ser.write(chr(26))
        time.sleep(1)

    def disconnectPhone(self):
        self.ser.close()

sms = TextMessage("0123456789","This is the message to send.")
sms.connectPhone()
sms.sendMessage()
sms.disconnectPhone()

4 个答案:

答案 0 :(得分:1)

大多数USB GSM调制解调器使用内部的RS-232到USB芯片来模拟USB端口上的RS-232接口。

根据我的知识,这些芯片的驱动程序使用/dev/ttyACM/dev/ttyUSB作为其接口。

因此,如果您确定您的设备可以被Linux内核识别,您可以在文件系统中检查/dev/ttyUSB是否存在(当然,当设备连接时),然后替换{{1}在/dev/ttyACM的源代码中。

此外,要列出所有可用的串行端口和连接的设备,您可以使用以下命令:

/dev/ttyUSB

答案 1 :(得分:1)

您必须复制了所有代码 从行

可以看出
self.ser = serial.Serial('/dev/ttyACM0', 460800, timeout=5)

和错误:

serial.serialutil.SerialException: could not open port /dev/ttyACM0: [Errno 2] No such file or directory: '/dev/ttyACM0'

只需检查USB加密狗使用的设备文件即可。 一种简单的方法是删除加密狗,列出/ dev目录下的所有文件,然后插入加密狗并检查是否添加了任何新文件。

只需将该文件放入代码中即可。

希望它会起作用,你会得到新的错误:)

答案 2 :(得分:0)

用于Windows用户

     self.ser = serial.Serial('/dev/ttyACM0', 460800, timeout=5) 

你可以用'COM25'替换'/ dev / ttyACM0'。端口'COM25'是我自己的端口 要检查调制解调器的端口,请转到屏幕右上角的控制面板--->将“查看方式”更改为大图标。然后单击电话和调制解调器------>当它出现时选择名为modem的选项卡,你将看到计算机中安装的调制解调器列表。识别您当前的调制解调器并访问其端口

    self.ser = serial.Serial('yourport', 460800, timeout=5)

它将为Windows用户解决此错误

    serial.serialutil.SerialException: could not open port /dev/ttyACM0: [Errno 2] No such file or directory: '/dev/ttyACM0'

答案 3 :(得分:0)

您的字符串未进行编码,当您尝试运行代码时会出错