簡體   English   中英

使用 Python 從 USB 端口讀取串行信號

[英]Reading a serial signal from a USB port with Python

我是新手,所以如果我的問題沒有受過教育,我深表歉意:我有一個 USB 設備,我知道該設備的 ProductID 和 VendorID。 據我了解,它應該是一個向我的計算機發送串行 stream 的 HID 設備。 我打算在 python 中編寫一個腳本,以便讀取該串行 stream,但我無處可去。 Python 的串行庫有沒有辦法從 PID 和 VID 中找到設備?

您可以在 OSX 上找到:

tty
/dev/ttys000

或者:

$ who
trane    console  Sep  1 05:18 
trane    ttys000  Sep  1 05:19 
trane    ttys001  Sep  1 05:19

$ w
13:04  up 1 day,  7:46, 3 users, load averages: 1.85 2.02 3.87
USER     TTY      FROM              LOGIN@  IDLE WHAT
trane    console  -                Sun05   31:45 -
trane    s000     -                Sun05       - w
trane    s001     -                Sun05       9 -bash

你可以嘗試這樣的事情:

import serial;
import io;
import time;
import os;

if __name__ == '__main__' :
    try :
        # configure the serial connections (the parameters differs on the device you are connecting to)
        with serial.Serial(port='/dev/ttyUSB0', baudrate=9600, timeout=1,
                       xonxoff=False, rtscts=False, dsrdtr=True) as s:
            for line in s:
                print(line)

    except :
        print('Program exit !')
        pass
    finally :
        ser.close()
    pass

或者:

import serial, sys
port = your_port_name
baudrate = 9600
ser = serial.Serial(port,baudrate,timeout=0.001)
while True:
    data = ser.read(1)
    data+= ser.read(ser.inWaiting())
    sys.stdout.write(data)
    sys.stdout.flush()

根據您的設備,您可以調整一些參數為:

parity=serial.PARITY_ODD,
stopbits=serial.STOPBITS_TWO,
bytesize=serial.SEVENBITS

您也可以只執行 'ls /dev/tty*.*' 並找到 USB 設備而不是 go 到由 'ioreg' 傾倒的大量垃圾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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