STM32
直播中

算一挂

8年用户 890经验值
私信 关注
[问答]

python读取stm32串口读不了是哪里的问题?

我用Python写的一个串口读取代码 :import serial       import time   ser=serial.Serial('com5',9600,timeout=2)      s=ser.readlines()   print(s)
可是  什么都读取不了。如果用买的STM32开发板送的串口助手,能接收到数据。板子上烧录的printf输出程序。    请问各位大神,Python程序要怎么写才能读取串口数据呢?跪求大神解答。现在是51的串口能读,但是32的还是不能读。

回帖(2)

王涛

2024-4-24 16:08:31
确定STM32的是串口COM5,波特率什么的都是一致的吗?
举报

张英

2024-4-25 17:40:46
首先,我们需要确保Python串口读取代码的参数和STM32串口设置相匹配。以下是一些可能的问题和解决方案:

1. 串口波特率不匹配:确保Python代码中的波特率(9600)与STM32串口设置的波特率相同。

2. 串口号错误:确保Python代码中使用的串口号('com5')与实际连接到STM32的串口号相同。可以在设备管理器中查看串口号。

3. 串口助手能接收到数据,说明STM32串口硬件和固件没有问题。问题可能出在Python串口读取代码上。

4. Python串口读取代码中,使用`readlines()`方法可能不是最佳选择,因为这个方法会读取到换行符为止。你可以尝试使用`read()`方法,它会读取一定数量的字节。

5. 确保STM32串口发送的数据格式与Python代码中的读取方式相匹配。

根据以上分析,你可以尝试修改Python串口读取代码如下:

```python
import serial
import time

# 确保串口号和波特率与STM32设置相匹配
ser = serial.Serial('com5', 9600, timeout=2)

# 循环读取串口数据
while True:
    data = ser.read(100)  # 读取100个字节,可以根据需要调整
    if data:
        print(data.decode())  # 将读取到的字节解码为字符串
    time.sleep(0.1)  # 稍作延时,避免过快读取
```

这个代码会持续读取串口数据,并在接收到数据时将其打印出来。如果仍然无法读取数据,请检查STM32串口设置和硬件连接。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分