我正在尝试使用连接到运行Openwrt的路由器的Arduino进行基于网页的串行通信,它确实有效,但只有当任一屏幕正在运行或通过putty远程连接时,由于某种原因,php才能运行串口没有正确启动会话?我使用ser2net来管理序列,具有以下设置
1000:raw:0:/dev/ttyACM0:9600
我也试过stty,在这个论坛上建议了各种设置
更新1
假设端口80是web / http端口,还尝试80:raw:0:/dev/ttyACM0:9600
作为ser2net的设置
我的PHP代码是
if (isset($_GET['action']))
{
$serial = new phpSerial();
$serial->deviceSet('/dev/ttyACM0');
$serial->confBaudRate(9600);
$serial->confParity('none');
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl('none');
$serial->deviceOpen();
if ($_GET['action'] == "PIN_12_HIGH")
{
$serial->sendMessage("A");
}
if ($_GET['action'] == "PIN_12_LOW")
{
$serial->sendMessage("B");
}
if ($_GET['action'] == "PIN_11_HIGH")
{
$serial->sendMessage("C");
}
if ($_GET['action'] == "PIN_11_LOW")
{
$serial->sendMessage("D");
}
$serial->deviceClose();
}
更新2
如果我将sleep(1);
添加到我的PHP代码中,它似乎可以解决一些问题
几点
更新3
找到这个有用的post后,我似乎发现了一个可能的解决方案,Arduino不需要重置黑客攻击。
将cat /dev/ttyACM0 &
添加到Openwrt路由器的启动配置中可以与Arduino进行串行通信,而无需在每次数据传输时重置它。
更新4
答案 0 :(得分:0)
看起来您的PHP正在尝试直接连接到tty。 ser2net可能已经连接到tty的地方。一次只能将一个应用程序连接到tty。要么停止ser2net,要么PHP应该根据你的ser2net.conf连接到所需tty的tcp监听器