我将arduino通过usb连接到pi,它使用下面的简单程序从DHT传感器发送读数(此位在arduino串行监视器中按预期工作):
int chk = DHT.read11(DHT_PIN);
Serial.println(DHT.temperature,1);
delay(2000);
然后,我有一个应该从串行端口获取数据的python程序:
import serial
conn = serial.Serial('/dev/ttyACM0',9600)
temp = conn.readline()
print temp
然后使用php调用此脚本,该脚本可以$temp = shell_exec('python temp.py 2>&1');
正常工作,但我从序列号获取的值是错误的。
预期的输出应该是这样的23.0
,但是当我刷新页面(甚至运行终端Python脚本)我得到的值一样2323.0
,23.023.0
,22..0
和2
。这些内容一直在变化,很少以所需的格式出现。
即使Serial.println()
函数将其放在新行上,似乎来自串行的数据也是重叠的。如果有人可以告诉我如何纠正此问题,将不胜感激。
解决了
我浏览了几个站点,发现此页面http://www.elinux.org/Serial_port_programming很有帮助。我查看了一些代码,发现使用原来的代码时,serial.Serial(...)
我只是在逗号后面输入了波特率而未指定baudrate=9600
。
import serial
port = serial.Serial('/dev/ttyACM0',baudrate=9600,timeout=3.0)
temp = port.readline()
print data
此代码似乎已解决了该问题!这是运行中的屏幕快照http://gyazo.com/22e7801fd0d7cdf2873e627bb8b88fdc。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句