Python与单片机通信——serial库
生活随笔
收集整理的這篇文章主要介紹了
Python与单片机通信——serial库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模塊
import serial.tools.list_ports as seials方法
獲取所有串口設備
- serials.comports()
- 功能:獲取所有串口設備
- 參數:無
- 返回值:所有可使用的串口設備,以列表的形式返回
配置串口
- serial.Serial(“COMx”, Baudrate)
- 功能:配置串口參數
- 參數
- COMx:串口號
- Baudrate:波特率
- 返回值:串口對象
獲得串口號
- ser.name
- 功能:獲得串口號
- 返回值:串口號
活動串口狀態
- ser.isOpen()
- 功能:活動串口狀態
- 參數:無
- 返回值:若是打開狀態則返回True,反之為False
讀串口數據
- ser.read(time)
- 功能:讀取串口數據
- 參數
- time:延時時間,多長時間讀一次,單位秒 目前不確定
- 返回值:讀到的數據,bytes的格式
寫入串口數據
- ser.write(str.encode(‘utf-8’))
- 功能:向串口發送數據
- 參數
- str:要發送的字符串
- 返回值:發出的字節數
關閉串口
- ser.close()
- 功能:關閉串口
- 參數:無
- 返回值:無
示例
獲得數字數據并打印出來
import serial import serial.tools.list_ports as serialsports_list = list(serials.comports()) if len(ports_list) <= 0:print("無串口設備。") else:print("可用的串口設備如下:")# 打印出所有可用的設備信息for comport in ports_list:print(list(comport)[0], list(comport)[1])# 打開檢測到的com口,將波特率配置為115200,其余參數使用默認值ser = serial.Serial(list(comport)[0], 115200)if ser.isOpen():print("打開串口成功。")print(ser.name)# 讀取串口輸入信息并輸出。while True:com_input = ser.read(1)# 如果讀取結果非空,則輸出if com_input:val = int.from_bytes(com_input, byteorder = 'big')if val!=13 and val!=10:print(chr(val), end = '')else:print('\n', end = '')else:print("打開串口失敗。")-
在print(list(comport)[0], list(comport)[1])中list(comport)[0]僅表示COM口,而list(comport)[1]則會顯示設備來源
-
val = int.from_bytes(com_input, byteorder = 'big')是將獲得的bytes轉換為int類型,但該int型是ASCII碼,要想獲得原始數據還得繼續轉換
-
if val!=13 and val!=10:單片機發送一個數據以后會發送一個結束標志位,在Windows下編碼為\r\n,ASCII碼表示即為13 10
-
在不同操作系統下結束位編碼不同
\n: UNIX 系統行末結束符
\r: MAC OS 系統行末結束符
-
-
print(chr(val), end = '')目的是讓多位數顯示在同一行,end=''是取消自動換行的
-
chr(val)是將ASCII碼轉為原始數據
其他
配置串口有很多參數可選,但一般值需要配置串口號和波特率
總結
以上是生活随笔為你收集整理的Python与单片机通信——serial库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android挂机 屏幕,游戏蜂窝新版支
- 下一篇: Weisfeiler-Lehman(WL