如何在python中同时运行两个实时进程?

时间:2018-01-29 15:10:12

标签: python multithreading multiprocessing real-time

我最近尝试将一些传感器数据(这是时间变化的)从我的智能手机发送到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()

1 个答案:

答案 0 :(得分:0)

在关闭脚本之前它似乎没有写入的原因是你永远不会刷新输出。当您关闭脚本时,您的输出会自动刷新,这就是为什么这是您目前唯一正常工作的原因。

ser.write(l)
ser.flush()