如何同时从python发送和接收数据到arduino
How to send and receive data from python to arduino at the same time
我目前有一个arduino代码,它连接了三个传感器:温度、压力和湿度。我想在 python 中创建一个订单代码(通过 int 或 strg),这会发送我想要读取的传感器类型,例如:如果我通过键盘 1 输入,它会不断向我发送温度数据;如果收入2,给我压力数据;从而能够随时输入任何数字。
Pd:抱歉我的英语不好,我不知道我是否可以解释我的问题
我在带有 switch case 的 arduino 中有一个类似的代码,它工作得很好。但我不能让它在 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
这对于从默认分配的一种传感器类型读取数据来说效果很好
如果您有需要并行 运行 的任务,您可以使用 线程。一个线程获取传感器数据,另一个等待输入。
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()
我目前有一个arduino代码,它连接了三个传感器:温度、压力和湿度。我想在 python 中创建一个订单代码(通过 int 或 strg),这会发送我想要读取的传感器类型,例如:如果我通过键盘 1 输入,它会不断向我发送温度数据;如果收入2,给我压力数据;从而能够随时输入任何数字。 Pd:抱歉我的英语不好,我不知道我是否可以解释我的问题
我在带有 switch case 的 arduino 中有一个类似的代码,它工作得很好。但我不能让它在 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
这对于从默认分配的一种传感器类型读取数据来说效果很好
如果您有需要并行 运行 的任务,您可以使用 线程。一个线程获取传感器数据,另一个等待输入。
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()