【问题标题】:How to run two real time processes simultaneously in python?如何在python中同时运行两个实时进程?
【发布时间】:2018-01-29 15:10:12
【问题描述】:

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

【问题讨论】:

  • 我看到你写了一些打印语句。如果您没有注释掉两个打印语句,但注释掉了ser.write(l),那么它是否会在每次智能手机发送消息时在 PC 上打印两行?

标签: python multithreading multiprocessing real-time


【解决方案1】:

在您关闭脚本之前它不会写入的原因似乎是您从不刷新输出。当您关闭脚本时,您的输出会自动刷新,这就是为什么这是您目前唯一看到它工作的原因。

ser.write(l)
ser.flush()

【讨论】:

  • 感谢您的回答 evan,但即使在使用 flush() 后,我的输出也没有任何变化。我仍然无法写信给arduino。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-16
  • 2022-11-26
  • 2018-06-02
  • 2021-07-20
相关资源
最近更新 更多