日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux下的Ubuntu16.04系统配置并使用USB转串口(串口转USB),最终使用python的serial和pyserial包实现串口的打开并读取数据

發布時間:2025/3/19 linux 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux下的Ubuntu16.04系统配置并使用USB转串口(串口转USB),最终使用python的serial和pyserial包实现串口的打开并读取数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. USB轉串口的配置

1.1 首先使用 lsmod | grep usbserial 指令查看系統是否包含USB轉串口驅動,如果沒有信息輸出不代表沒有驅動,我這邊就是沒有信息輸出,且看后面分析;

如果有的話,如下圖所示。

1.2 此時再輸入 dmesg | tail 指令查看系統最近時刻的消息,沒什么用處,只是為了和后面對比

1.3 此時再輸入 lsusb 指令查看USB相關的接口,也是為了和后面進行對比。

1.4 現在,我們將USB轉串口的USB端插入電腦,使用 lsusb 指令可以看到多了一行,記住該ID,后面有用,如下圖

1.5 接著,我們還是使用 dmesg | tail 查看系統最近時刻的信息,發現新的USB設備,如下圖

1.6 同時,我們可以使用 ls /dev/ttyUSB* 指令查看系統當前是否有USB轉串口設備,我現在沒有,如下圖

1.7?最后,我們使用 sudo modprobe usbserial vendor=0x067b product=0x23c3 指令載入該USB轉串口設備,載入后再使用 ls /dev/ttyUSB* 和 lsmod | grep usbserial 和 dmesg | tail 三個指令可發現我們有了usbserial驅動,并且USB轉串口名是 /dev/ttyUSB0,而且usb串口的轉換器也有了。

1.8 如果經過上面的步驟,沒有識別到串口轉USB設備,那可能得自己手動安裝串口轉USB的驅動了,一般來說Ubuntu系統都是集成好的。

?

2. 串口的使用并讀取數據

2.1 串口沒有操作權限,提示:could not open port, Permission denied,如下圖。

這個是因為串口設備的屬于dialout用戶組,所以要操作tty相關設備,需要成為dialout用戶。首先使用 groups 你自己電腦的用戶名 指令查看用戶是不是位于dialout組別,如下;如果不是,那么執行 sudo gpasswd --add 你電腦的用戶名?dialout 指令,將用戶添加至dialout組中,如下圖;執行結束后,需要注銷重新登錄

?

3.? 使用python的serial和pyserial包讀取串口數據

3.1 在成功打開串口,讀取串口數據之前,還遇到了一個問題,報錯:fcntl.ioctl(self.fd, TIOCMBIS, TIOCM_DTR_str) IOError: [Errno 22] Invalid argument;如下圖。

3.2 原本打開串口的參數是串口號,波特率以及超時時間,現在加上rtscts和dsrdtr兩個參數即可,如下圖。

# 原先串口類的參數 ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=3)# 修改后的串口類參數 ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=3, rtscts=True, dsrdtr=True)

3.3 現在可以運行自己的python程序,打開串口,讀取串口數據了。

# 需要導入serial和pyserial包,一般自帶,沒有的話,可以使用pip安裝 import serial import serial.tools.list_ports# 列出可用的串口 port_list = list(serial.tools.list_ports.comports()) if len(port_list) == 0 :print('no port can use !') else:port = port_list[0][0]bps = 115200 timeout = 3ser = serial.Serial(port, bps, timeout=timeout) # 打開串口bytes_data = ser.readline() # readline函數讀到換行符才結束,不然一直等待print(bytes_data)============================= 備用 =============================== 備用1. 檢測所使用的字符集 import chardet print(chardet.detect(bytes_data))備用2. 對字符串進行編碼,python2默認是ascii,python3默認是utf-8 str(bytes_data, encoding='ascii')

?

總結

以上是生活随笔為你收集整理的Linux下的Ubuntu16.04系统配置并使用USB转串口(串口转USB),最终使用python的serial和pyserial包实现串口的打开并读取数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。