问题描述
我正在尝试从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 (将#修改为@)