我的程序是通过python的串口模块向stm32的串口发送数据,并且stm32将数据原封不动发送给Python,结果python的数据没有发到串口(因为我设置的是如果接受到数据,stm32上的led灯会变亮,但是run了main函数以后stm32一点反应都没有),我使用串口调试助手,stm32程序确实是可以接受并发送数据的,但是python就是发送)
可以使用虚拟串口工具(比如Configure Virtual Serial Port Driver),虚拟连接一组串口,用串口助手观察Python到底有没有发出数据。然后再详细定位,目前看不到你的详细情况,不好分析。
http://t.csdn.cn/jRx4c
根据你的描述,串口调试助手可以通信成功,说明你的代码哪里不合适,检查一下代码,具体可参考上边链接文章中的办法
import serial#导入串口通信库
from time import sleep
ser = serial.Serial()
def port_open_recv():#对串口的参数进行配置
ser.port='com3'
ser.baudrate=9600
ser.bytesize=8
ser.stopbits=1
ser.parity="N"#奇偶校验位
ser.open()
if(ser.isOpen()):
print("串口打开成功!")
else:
print("串口打开失败!")
#isOpen()函数来查看串口的开闭状态
def port_close():
ser.close()
if(ser.isOpen()):
print("串口关闭失败!")
else:
print("串口关闭成功!")
def send(send_data):
if(ser.isOpen()):
ser.write(send_data.encode('utf-8'))#编码
print("发送成功",send_data)
else:
print("发送失败!")
if name == 'main':
port_open_recv()
while True:
a=input("输入要发送的数据:")
send(a)
sleep(0.5)#起到一个延时的效果,这里如果不加上一个while True,程序执行一次就自动跳出了
串口模块没问题那就是python程序的问题了,您可以参考我的博客:https://blog.csdn.net/cyjbj/article/details/126918976?spm=1001.2014.3001.5502%EF%BC%8C%E9%87%8C%E9%9D%A2%E6%9C%89python%E5%A4%84%E7%90%86%E4%B8%B2%E5%8F%A3%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%B3%95%EF%BC%8C
有个叫AccessPort的工具,可以监控电脑本地串口的动作,包括串口打开,参数设置,收发数据,可以通过这个测试一下python是否对串口正确执行了操作。
应该是你的程序的问题,可以吧程序贴一下帮你分析原因