我想使用加密狗发送短信。我从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()
答案 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)
您的字符串未进行编码,当您尝试运行代码时会出错