帮我在PYQT5用QSerialPort获取串口接收缓冲区中的字节数
时间: 2024-05-05 14:19:30 浏览: 82
好的,您可以参考以下代码实现:
```python
import sys
from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfo
from PyQt5.QtCore import QByteArray, QIODevice
# 查找可用于串口通信的串口设备
def find_serial_ports():
port_info = QSerialPortInfo()
port_list = port_info.availablePorts()
serial_port_list = []
for port in port_list:
serial_port_list.append(port.portName())
return serial_port_list
# 读取串口数据
def read_serial_data(serial_port):
if(serial_port.isOpen()):
print('正在读取串口数据...')
while(serial_port.waitForReadyRead(100)):
# 读取缓冲区数据
data = serial_port.readAll()
# 获取数据长度
data_len = data.count()
print('接收到的数据长度为:', data_len)
# 将数据转换为字符串并打印
print('接收到的数据为:', bytes(data).decode())
else:
print('请先打开串口')
# 打开串口
def open_serial_port(port_name):
serial_port = QSerialPort(port_name)
# 打开串口
if(serial_port.open(QIODevice.ReadWrite)):
print(port_name, '串口打开成功!')
# 配置串口参数
serial_port.setBaudRate(QSerialPort.Baud9600)
serial_port.setDataBits(QSerialPort.Data8)
serial_port.setFlowControl(QSerialPort.NoFlowControl)
serial_port.setParity(QSerialPort.NoParity)
serial_port.setStopBits(QSerialPort.OneStop)
return serial_port
else:
print(port_name, '串口打开失败!')
return None
if __name__ == '__main__':
# 查找可用于串口通信的串口设备
serial_port_list = find_serial_ports()
if(len(serial_port_list) > 0):
# 打开第一个可用串口
serial_port = open_serial_port(serial_port_list[0])
if(serial_port):
# 读取串口数据
read_serial_data(serial_port)
else:
print('无可用于串口通信的串口设备')
else:
print('无可用于串口通信的串口设备')
```
以上代码实现了在 PYQT5 下通过 QSerialPort 获取串口接收缓冲区中的字节数,其中 find_serial_ports() 函数用于查找可用串口设备, open_serial_port(port_name) 函数用于打开指定的串口, read_serial_data(serial_port) 函数用于读取串口数据。您可以参考上述代码实现您的需求。
阅读全文