Python读取串口发来的数据并进行转---Python读取STM32通过串口传输过来的数据

设备通过串口发送给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进行通信

测试结果

要在Python窗口与STM32数据端之间实现数据传输,通常需要使用串口通信(UART),因为这是STM32常用的硬件接口之一,而且Python可以通过串口库来访问硬件接口。以下是实现数据传输的基本步骤: 1. 硬件连接:确保STM32开发板上的TX(发送)和RX(接收)引脚正确连接到PC的串口上。在连接时,需要使用USB串口适配器或者直接连接到带有RS-232接口的PC上。 2. 硬件配置:在STM32端,需要配置其内部的串口硬件,包括波特率、数据位、停止位和校验位等参数,这些参数需要与Python端使用的串口库设置相匹配。 3. 软件开发: - 在STM32端,编写代码以通过串口发送数据。这通常涉及到初始化串口,然后在主循环中或通过中断服务程序发送数据。 - 在Python端,使用如`pyserial`这样的库来创建串口连接。首先安装`pyserial`库,然后使用相应的API打开串口连接,并设置相同的串口参数。通过读写操作与STM32进行数据交换。 4. 数据传输:一旦两端的串口通信设置完成并且连接建立,就可以通过Python端的串口对象读取STM32发送数据,或者向STM32发送数据。 5. 错误处理:在实际应用中,需要考虑通信错误处理机制,比如超时处理、数据校验和重传机制等,以确保数据传输的可靠性和稳定性。 这里是一个简单的示例代码,展示如何在Python中使用`pyserial`库打开串口发送接收数据: ```python import serial import time # 打开串口 ser = serial.Serial('COM3', 9600, timeout=1) # 'COM3'是Windows下的串口标识,如果是Linux则是如'/dev/ttyUSB0' # 发送数据STM32 ser.write(b'Hello STM32\n') # 等待接收数据 time.sleep(0.1) # 读取数据 data = ser.read(1000) print(data) # 关闭串口 ser.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值