Php python从串行数据中重叠值

Php python从串行数据中重叠值,php,python,arduino,raspberry-pi,pyserial,Php,Python,Arduino,Raspberry Pi,Pyserial,我的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(

我的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函数将数据放在一个新行上,但似乎来自serial的数据是重叠的。如果有人能告诉我如何更正,我将不胜感激。

请尝试打印报告。。。甚至打印温度条+

我非常强烈地怀疑当你读到你得到的

"23.0\r"
\r将光标返回到行的开头

如果打印23.0\rB,您将看到B3.0

ie我认为您看到重叠只是因为您正在打印它…

已解决

我浏览了一些网站,发现这个页面非常有用。我看了一些代码,发现原来的代码在serial.serial中。。。我只是在逗号后输入波特率,没有指定波特率=9600

此代码似乎已修复该问题!下面是它的屏幕截图。

使用reptemp方法只会得到“222.0\r\n”,值更改的问题仍然存在。温度带+。就是在数字的末尾加上一个小数点。
import serial
port = serial.Serial('/dev/ttyACM0',baudrate=9600,timeout=3.0)
temp = port.readline()

print data