我想使用加密狗发送短信。我从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()
大多数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*
您必须已复制所有代码从行可以看到
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目录下的所有文件,然后插入加密狗并检查是否添加了任何新文件。
只需将该文件放入代码中。
希望它能正常工作,并且您会收到新的错误:)
对于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'
您的字符串未编码,在您尝试运行代码时会出错