我试图创建一个web界面使用的OpenWrt固件通过TP-Link的路由器MR3420的USB接口来控制Arduino的乌诺串行连接。错误?
奇怪的是,我的PHP脚本只能在运行一个python脚本后,得到的答复的Arduino与Arduino的沟通
我敢肯定,我的PHP脚本工作,因为它能够关闭LED灯上的Arduino,但仍没有得到Arduino的
这里回复我的PHP代码:
require("lib/php_serial.class.php");
$serial = new phpSerial;
$serial->deviceSet("/dev/ttyACM0");
$serial->confBaudRate(9600);
$serial->deviceOpen();
$serial->sendMessage($cmd);
sleep(1);
$read = $serial->readPort();
$serial->deviceClose();
这里是我的Arduino素描:
int numSerial;
if (Serial.available() > 0)
{
char inByte = Serial.read();
switch (inByte)
{
case 'l':
numSerial = numberFromSerial();
if (numSerial >= 0)
{
Serial.print("LED Mode: ");
switch (numSerial)
{
case 0:
ledMode = 0;
Serial.print("OFF");
break;
case 1:
ledMode = 1;
Serial.print("TEMP");
break;
case 2:
ledMode = 2;
Serial.print("KR");
break;
}
}
else
Serial.print(ledMode);
break;
case 't': //Data request
Serial.print(getTemp());
break;
}
}
这里是我的Python代码:
import serial
ser = serial.Serial("/dev/ttyACM0", 9600, timeout=3)
ser.open()
ser.write("t")
print ser.readline()
ser.close()
请帮助。 谢谢。
发现问题的真正根源!
在phpSerial类:
$ret = $this->_exec("stty -F " . $this->_device . " " . (int) $rate, $out);
替换:
$ret = $this->_exec("stty -F " . $this->_device . " raw speed " . (int) $rate, $out);
解决了! 在每个路由器启动时运行“stty -F/dev/ttyACM0 raw speed 115200”解决了我的问题 – gutzz 2012-08-02 07:43:41
如果你解决了你自己的问题,你应该发布解决方案作为答案并接受它。 – 2012-08-02 12:34:39
会做。谢谢。 – gutzz 2012-08-02 12:58:47