从Arduino到Python的串行

问题描述

我正在尝试从UART传感器传递传感器值,该传感器每0.5秒将值发送到arduino,然后通过USB串行发送到python。当python发送'ab'时,arduino然后开始侦听连接到传感器的Serial1端口,然后将其读取的内容写入python。同时,python代码读取此数据并将其与开始后经过的秒数一起放入列表中。

我遇到的问题是,只要查看Arduino的串行监视器,只要有延迟或将Serial1.read放入某种for循环中,它都会导致传入的串行消息出现错误而不是打印传感器的Z ##### z #####\r\n输出,它将是某种加密版本,例如。 Z #### Z#### Z #### z ####e或只是将数字放在同一行。

如何设置arduino和python循环,以便它们正确捕获传入的串行消息?

理想情况下,我可以使循环仅从传感器抓取30行/值(15秒)。我似乎找不到一种使循环将回车识别为结束循环并在x次迭代后结束的方法。

Arduino代码:

if(Serial.available() > 0) {
    String inChar = Serial.readString();
    Serial.println(inChar);

if(inChar.indexOf('a') >= 1) {

for (int i = 0; i < 300; i++){
   if (Serial1.available()) {
         int mys = Serial1.read();
         Serial.write(mys);
         delay(20);

Python代码:

co2time = 0
CO2_LIST = []

serco2.write('ba'.encode('utf_8'))


while co2time <= 10:
concentrationline = serco2.readline()
concentration = str(concentrationline[3:8].decode('utf-8'))
CO2_LIST += [str(concentration) + 'ppm@'+ str(co2time) + 's,']
sleep(0.25)
co2time += 0.25

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...