Python 发送数据串行到微控制器STM32F4
Python send data Serial to Microcontroller STM32F4
所以这是我用来每 2 秒发送四次时间(以微秒为单位)到微控制器 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'))
发布您获得的输出也会有所帮助。
编辑:以避免微控制器跳过某些字符。您可以使用这样的小功能。 (我用它向有相同问题的传感器发送命令。当我发送这样的命令时 `ser.write("start logging") 它会收到类似 "sart lgging".
def write_safe(cmd):
for x in cmd:
ser.write(x)
sleep(0.05)
ser.write('\r\n')
所以这是我用来每 2 秒发送四次时间(以微秒为单位)到微控制器 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'))
发布您获得的输出也会有所帮助。
编辑:以避免微控制器跳过某些字符。您可以使用这样的小功能。 (我用它向有相同问题的传感器发送命令。当我发送这样的命令时 `ser.write("start logging") 它会收到类似 "sart lgging".
def write_safe(cmd):
for x in cmd:
ser.write(x)
sleep(0.05)
ser.write('\r\n')