如何同时从 python 发送和接收数据到 arduino

Posted

技术标签:

【中文标题】如何同时从 python 发送和接收数据到 arduino【英文标题】:How to send and receive data from python to arduino at the same time 【发布时间】:2019-05-06 18:07:47 【问题描述】:

我目前有一个 arduino 代码,它连接到三个传感器:温度、压力和湿度。我想在python中编写一个订单代码(通过int或strg),这会发送我想要读取的传感器类型,例如:如果我通过键盘1输入,它会不断向我发送温度数据;如果收入2,给我发送压力数据;因此可以随时输入任何数字。 Pd:对不起,我的英语不好,我不知道我是否能解释我的问题

我在 arduino 中有一个类似的带有 switch case 的代码,它运行良好。但我不能让它在 python 中工作,因为当我输入 raw_input() 时,程序停止等待输入并停止读取传感器数据。

Python

import serial
import time

ser=serial.Serial('/dev/ttyUSB0',baudrate=115200)
while 1:
 ser.setDRT(False)
 #c=raw_input()
 #ser.write(c)
 med=a.readline()
 print med

这可以很好地从默认分配的一种传感器类型读取数据

【问题讨论】:

【参考方案1】:

如果您有需要并行运行的任务,您可以使用线程。一个线程获取传感器数据,另一个线程等待输入。

Python 有一个非常易于使用的内置线程模块。

官方python文档:https://docs.python.org/3.7/library/threading.html 教程点:https://www.tutorialspoint.com/python/python_multithreading.htm

一个非常简单的实现示例可能如下所示:

import threading 


def wait_input():
    while True:
        user_input = input()
        # do something with user_input 

def get_sonsordata()
    while True:
        med=a.readline()
        print(med)

input_thread = threading.Thread(target=wait_input)
input_thread.start()
sensor_thread = threading.Thread(target=get_sonsordata)
sensor_thread.start()

【讨论】:

以上是关于如何同时从 python 发送和接收数据到 arduino的主要内容,如果未能解决你的问题,请参考以下文章

将 UDP 数据从 Python 发送到 Javascript?

Python Socket - 同时发送/接收消息

labview如何实现串口同时接收和发送?

如何从外部附件异步发送和接收数据

如何从选择输入字段接收和显示和发送值到数据库

如何使用python从熊猫数据框中将电子邮件发送到具有不同主题的不同收件人地址