我正在尝试将python中的数据写入到这个草图中
import serial
import smtplib
import time
s=serial.Serial('/dev/tty.usbserial-AH01LLHS',9600)
precx=500
ist=30
i=0
while True:
s.write('1')
stringa=s.readline()
array=stringa.split(',')
x=int(array[0])
y=int(array[1])
z=int(array[2])
print(x,y,z)
if(precx!=500):
diffx=abs(x-precx)
diffy=abs(y-precy)
diffz=abs(z-precz)
if((diffx>ist)|(diffy>ist)|(diffz>ist)):
print('Ohu god',i)
i+=1
#time.sleep(2)
precx=x
precy=y
precz=z
但是当我执行这个程序时,我在控制台上什么也看不到,而且Arduino Rx led也熄灭了。在
这是我的Arduino素描(nano atmega 328):
^{pr2}$提前谢谢。在
你一定要检查一下评论中的建议:
首先,您应该检查在您的
s.write('1')
帮助之前和之后是否添加了s.flush()
。然后您可能还想在arduino代码中添加flush()
。在对我来说,在初始化“流控制”算法时,这看起来真的是一个饥饿的问题。从纸面上看它很好,但在现实生活中,它可能不是。通常,当Arduino开始填满主机串行端口的缓冲区时,会发送大量垃圾。反之亦然。因此,在arduino一侧没有}完全没有用的
1
,你可能会得到一个{!@#$@#%@#%!@#$
。在因此,在进入循环之前,您应该添加一个init协议。arduino发送}。看起来像:
READY
,主机发送READY
,你把所有的东西都冲洗出来,直到两边都有{在python方面:
^{pr2}$当然,那只是你可能做什么的想法。你可以让它更复杂,或者更简单。但是在进行这种流控制之前,您确实需要创建一个集合点。在
相关问题 更多 >
编程相关推荐