Python读取串口发来的数据并进行转---Python读取STM32通过串口传输过来的数据
设备通过串口发送给PC或者树莓派等主控时,发过来的数据往往是HEX码,此时需要进行合适的转码才能够将所得到的数据正确的显示出来self.data = self.data.decode('GB2312','ignore')通过上述的‘GB2312’方式就可以获取设备传过来的数据。以下为python读取串口数据并打印出来的程序#!/usr/bin/python# -*-coding: utf-8 -*
·
设备通过串口发送给PC或者树莓派等主控时,发过来的数据往往是HEX码,此时需要进行合适的转码才能够将所得到的数据正确的显示出来
self.data = self.data.decode('GB2312','ignore')
通过上述的‘GB2312’方式就可以获取设备传过来的数据。
以下为python读取串口数据并打印出来的程序
#!/usr/bin/python
# -*-coding: utf-8 -*-
import serial
import threading
import binascii
from datetime import datetime
import struct
class SerialPort:
def __init__(self, port, buand):
self.port = serial.Serial(port, buand)
self.port.close()
if not self.port.isOpen():
self.port.open()
self.read_data()
def port_open(self):
if not self.port.isOpen():
self.port.open()
def port_close(self):
self.port.close()
def send_data(self):
self.port.write('')
def read_data(self):
global is_exit
global data_bytes
# self.data = self.data.decode('utf-8')
while not is_exit:
count = self.port.inWaiting()
self.data = self.port.readline()
print(self.data)
self.data.strip()
self.data = self.data.decode('GB2312','ignore')
print(self.data)
if count > 0:
rec_str = self.port.read(count)
data_bytes = data_bytes + rec_str
print('当前数据接收总字节数:'+str(len(data_bytes))+' 本次接收字节数:'+str(len(rec_str)))
# print(str(datetime.now()),':',binascii.b2a_hex(rec_str))
if __name__ == '__main__':
serialPort = 'COM4' # 串口
baudRate = 9600 # 波特率
is_exit = False
data_bytes = bytearray()
# 打开串口
mSerial = SerialPort(serialPort, baudRate)
其中import有一部分没用,可以适当的删除。
测试结果
STM32通过串口和PC进行通信
更多推荐
已为社区贡献2条内容
所有评论(0)