[英]Send SMS via a USB Dongle/Python
我想使用加密狗發送短信。 我從這個站點找到了以下代碼並采用了它。 但它給出了流動錯誤。 有人可以幫助我使這個腳本工作。
錯誤:
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)
你可以用'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'
您的字符串未編碼,當您嘗試運行代碼時會出現錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.