日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python 串口_Python串口操作库pyserial(1)

發布時間:2025/3/21 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 串口_Python串口操作库pyserial(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

測試過程中需要用到串口,目前采用pyserial庫。

1 采用命令行安裝pyserial庫: pip install pyserial

2 獲取可用的串口號,見Listing available com ports with Python。

import sys import glob import serialdef serial_ports():""" Lists serial port names:raises EnvironmentError:On unsupported or unknown platforms:returns:A list of the serial ports available on the system"""if sys.platform.startswith('win'):ports = ['COM%s' % (i + 1) for i in range(256)]elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):# this excludes your current terminal "/dev/tty"ports = glob.glob('/dev/tty[A-Za-z]*')elif sys.platform.startswith('darwin'):ports = glob.glob('/dev/tty.*')else:raise EnvironmentError('Unsupported platform')result = []for port in ports:try:s = serial.Serial(port)s.close()result.append(port)except (OSError, serial.SerialException):passreturn resultif __name__ == '__main__':print(serial_ports())

3 進行串口通訊:

def send_str(port, baudrate, parity, value):port_set = serial.Serial(port=port, baudrate=baudrate, parity=parity)port_set.write(value)# delay 100ms if receive is blank, just waiting 5s.n = 0while port_set.inWaiting() == 0:time.sleep(0.1)n = n + 1if n > 50:# send frame againport_set.write(value)break# every 100ms check the data receive is readybyte_number_1 = 0byte_number_2 = 1while byte_number_1 != byte_number_2:byte_number_1 = port_set.inWaiting()time.sleep(0.1)byte_number_2 = port_set.inWaiting()receive_frame = port_set.read_all()return receive_frame

port: 串口號,str格式,例如‘COM3’;

baudrate: 波特率,str格式,例如‘9600’;

parity:校驗位,str格式。只需要第一個字母,‘N’無校驗,‘O’奇校驗,‘E’偶校驗;

value: 設置的數據,數據需要為int格式,多字節傳輸采用list。

# delay 100ms if receive is blank, just waiting 5s.n = 0while port_set.inWaiting() == 0:time.sleep(0.1)n = n + 1if n > 50:# send frame againport_set.write(value)break

inWaiting()返回接收到的字符。

此段代碼判斷是否有數據返回。最多等待5s,之后重發。

# every 100ms check the data receive is readybyte_number_1 = 0byte_number_2 = 1while byte_number_1 != byte_number_2:byte_number_1 = port_set.inWaiting()time.sleep(0.1)byte_number_2 = port_set.inWaiting()

此段代碼判斷是否接收完成。每100ms判斷一次,判斷時間可以根據波特率進行修改。

receive_frame = port_set.read_all()

接收全部返回數據。返回數據類型為byte,可以采用與list相同方法進行操作。

4 判斷端口是否可用

def serial_alive(port=None):port_status = Truetry:s = serial.Serial(port)s.close()except OSError:port_status = Falsereturn port_statusif __name__ == '__main__':print(serial_alive('COM5'))

總結

以上是生活随笔為你收集整理的python 串口_Python串口操作库pyserial(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

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