簡體   English   中英

通過 USB Dongle/Python 發送短信

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM