STM32
直播中

李勇俊

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

Python怎么读取STM32串口数据?

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

回帖(1)

卢表镜

2024-4-28 17:45:59
首先,我们需要确保Python串口通信的设置与STM32串口设置相匹配。以下是一些可能的解决方案:

1. 确保串口设备名称正确:在Windows系统中,串口设备名称通常是`COMx`(x为数字),而在Linux系统中,通常是`/dev/ttyUSBx`(x为数字)。请检查您的STM32开发板连接到的串口设备名称是否为`com5`。

2. 检查波特率设置:确保STM32的波特率设置与Python代码中的波特率设置相匹配。在您的代码中,波特率设置为9600。请检查STM32的波特率设置是否为9600。

3. 修改Python代码:`serial.Serial`对象没有`readlines()`方法。您应该使用`read()`或`readline()`方法来读取串口数据。以下是修改后的代码示例:

```python
import serial
import time

# 请确保这里的串口设备名称与您的系统相匹配
ser = serial.Serial('com5', 9600, timeout=2)

# 等待一段时间,以便STM32发送数据
time.sleep(1)

# 读取一行数据
data = ser.readline()

# 将读取到的数据转换为字符串并打印
print(data.decode())

# 关闭串口
ser.close()
```

4. 如果仍然无法读取数据,请检查STM32的串口发送程序是否正确。确保STM32程序能够通过串口发送数据。

5. 如果您使用的是STM32开发板附带的串口助手软件,可以尝试查看该软件的串口设置,以确保与Python代码中的设置相匹配。

6. 如果问题仍然存在,请尝试使用其他串口通信库,如`pySerial`,或者在STM32和Python之间使用USB转串口模块进行通信。

希望这些建议能帮助您解决问题。如果还有问题,请随时提问。
举报

更多回帖

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