我创建了一个项目来读取pH值的水,但是我的模块传感器无法修复raspberry pi3,所以我使用Arduino读取pH值,然后发送到raspberry并将数据上传到firebase。在
但是,我有一个问题,当raspberry从Arduino读取数据时,循环不起作用。错误消息是serial.util.serialexception异常在
这是关于Raspberry的源代码
import os
import serial
import time
from firebase import firebase
arduino = serial.Serial('/dev/ttyACM0',9600)
firebase = firebase.FirebaseApplication('https://raspi-ph.firebaseio.com/', None)
def update_firebase():
phair = arduino.readline()
if data is not None:
time.sleep(1)
pieces = data.split("sensor= ")
ph = pieces
print ph
else:
print('Failed to get data. Try Again!')
time.sleep(10)
data = {"Sensor pH": phair}
firebase.post('/sensor/ph', data)
while True:
update_firebase()
time.sleep(5)
这是Arduino的源代码
^{pr2}$最后,raspi上的错误消息
['seor= 0.52\r\n']
Traceback (most recent call last):
File "ard.py", line 27, in <module>
update_firebase()
File "ard.py", line 11, in update_firebase
phair = arduino.readline()
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 490, in read
'device reports readiness to read but returned no data '
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
循环只运行一次
看看source code,这个异常是基于这样一个假设,即准备读取加上空数据意味着设备断开连接。在
避免这种行为的方法是在创建
Serial
实例时指定timeout
。在相关问题 更多 >
编程相关推荐