python - 如何同时从 python 发送和接收数据到 arduino
问题描述
我目前有一个 arduino 代码,它连接到三个传感器:温度、压力和湿度。我想在python中编写一个订单代码(通过int或strg),这会发送我想要读取的传感器类型,例如:如果我通过键盘1输入,它会不断向我发送温度数据;如果收入2,给我发送压力数据;因此可以随时输入任何数字。Pd:对不起我的英语不好,我不知道我是否能解释我的问题
我在带有开关盒的 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()
推荐阅读
- powershell - PowerShell foreach 循环,所有迭代的日期相同
- java - 检查样式:JavaDoc
分隔符违规
- javascript - 根据行内容显示特定行表
- python - 使用字符串匹配填充新的数据框列
- excel - 使用 Loop 和 If, ElseIf 导致消息:“找不到”(我在寻找什么)”
- c# - 如果我快速连续运行多个 Azure 搜索索引器,有没有办法访问 Azure SDK 中等待的索引器队列?
- jpa - JPA 如何确保 2 个字段(字符串和布尔值)的唯一性
- angularjs - 出现错误:[$injector:unpr] 未知提供者:dataServiceProvider <- dataService <- firstctrl
- asp.net-mvc - html helper @enumdropdownlistfor 没有将值发送到模型
- usb - 无法声明 USB 接口(设备或资源繁忙)卡住