1

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

错误:

   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

4 回答 4

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

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

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

于 2013-09-16T11:00:52.800 回答
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*
于 2013-09-16T09:48:10.047 回答
0

对于 Windows 用户

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

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

    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'
于 2013-10-17T21:30:56.313 回答
0

您的字符串未编码,当您尝试运行代码时,这将是一个错误

于 2020-03-23T16:27:32.300 回答