通过USB加密狗/ Python发送短信

问题描述 投票:1回答:4

我想使用加密狗发送短信。我从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()
python sms
4个回答
1
投票

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

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

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

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

ls -l /sys/class/tty/tty*

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目录下的所有文件,然后插入加密狗并检查是否添加了任何新文件。

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

希望它能正常工作,并且您会收到新的错误:)


0
投票

对于Windows用户

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

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

    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'

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.