从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 (将#修改为@)