我最近尝试将一些传感器数据(这是时间变化的)从我的智能手机发送到PC,然后从我的PC发送到arduino,因为我的arduino没有蓝牙或wifi模块。我使用一个应用程序将传感器数据传输到PC,并使用下面的python代码将其传输到arduino。但是每次执行脚本时,只执行读取数据流但是从不将数据写入arduino。如果我停止运行脚本(ctrl + Z),那么最后的值将更新为arduino。我需要帮助同时完成这两件事。
import socket, traceback
import serial
import time
host='192.168.100.8'
port=4000
ser=serial.Serial(port='COM3',baudrate=115200)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.bind((host, port))
k=[]
while 1:
try:
message, address = s.recvfrom(8192)
k=map(str,message.strip().split(','))
yaw,pitch,roll=k[-3:]
#print yaw,pitch,roll
l=yaw+','+pitch+','+roll+'\0'
print l
ser.write(l)
except (KeyboardInterrupt, SystemExit):
exit()
except:
traceback.print_exc()
答案 0 :(得分:0)
在关闭脚本之前它似乎没有写入的原因是你永远不会刷新输出。当您关闭脚本时,您的输出会自动刷新,这就是为什么这是您目前唯一正常工作的原因。
ser.write(l)
ser.flush()