Python发送数据串口到微 Controller STM32F4

标签 python pyserial uart stm32f4

所以这是我用来每 2 秒发送四次以微秒为单位的时间到微 Controller stm32f4 的脚本,但不幸的是它只发送一些数字(从 1-->4),这些数字与我时不同进行打印,就像随机数一样。

import time 
import serial from datetime 
import datetime from time 
import gmtime, strftime

ser = serial.Serial(
    port='/dev/ttyACM0',
    baudrate=115200,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS

)
ser.writeTimeout = 0 
ser.isOpen() 

TM1 = int(round(time.time()*1000000))   
ser.write(str(TM1).encode())
#ser.write( str(TM1)+"            \r\n")
time.sleep(2) 
TM2 = int(round(time.time()*1000000))
ser.write(str(TM2)+"            \r\n") 
time.sleep(2)
TM3 = int(round(time.time()*1000000))
ser.write(str(TM3)+"            \r\n") 
time.sleep(2) 
TM4 = int(round(time.time()*1000000)) 
ser.write(str(TM4)+"            \r\n")

最佳答案

乍一看我看不出有什么明显的错误。我在这里运行了一段几乎相同的代码,可以正常工作。我的猜测是串口的设置不匹配。仔细检查波特率、奇偶校验和停止位设置是否匹配。

第二个猜测是编码困惑。你把python的默认编码设置为utf-8了吗?如果是这样你可以尝试

ser.write(str(TM1).encode('ascii'))

发布您得到的输出也会有所帮助。

编辑:以避免微 Controller 跳过某些字符。您可以使用这样的小功能。 (我用它来向具有相同问题的传感器发送命令。当我发送像这样的命令“ser.write(“开始记录”)时,它会收到类似“sart lgging”的内容。

def write_safe(cmd):
    for x in cmd:
        ser.write(x)
        sleep(0.05)
    ser.write('\r\n')

关于Python发送数据串口到微 Controller STM32F4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37521336/

相关文章:

python - 机器学习 - 使用 sklearn

python 和串行。如何发送消息并接收回复

python - 如何在Python中从串行数据包中提取字节序列并将其更改为正确的整数表示形式?

python - pySerial:如何检查当前波特率

python - 如何根据 GUID 更改 sparx 中的对象颜色

python - 类型错误 : only integer scalar arrays can be converted to a scalar index while calculating the RMSE

c - UART 缓冲区未在 PIC24F 上引发标志

C# 在文本框中显示变量

linux - UART 绑定(bind)@运行时

python - 我想在通过变量播放视频时检测扬声器的音量