linux openwrt上的Php串行到Arduino
我正在尝试使用Arduino进行基于网页的串行通信,它连接到运行Openwrt的路由器,但只有当屏幕正在运行或通过putty远程连接时,它才起作用,出于某种原因,php到串行通信没有正确启动会话?我使用ser2net通过以下设置管理串行数据linux openwrt上的Php串行到Arduino,php,serial-port,arduino,openwrt,Php,Serial Port,Arduino,Openwrt,我正在尝试使用Arduino进行基于网页的串行通信,它连接到运行Openwrt的路由器,但只有当屏幕正在运行或通过putty远程连接时,它才起作用,出于某种原因,php到串行通信没有正确启动会话?我使用ser2net通过以下设置管理串行数据 1000:raw:0:/dev/ttyACM0:9600 我也尝试过stty,在这个论坛上提供了各种设置建议 更新1 还尝试了80:raw:0:/dev/ttyACM0:9600作为ser2net的设置,假设端口80是web/http端口 我的php代码是
1000:raw:0:/dev/ttyACM0:9600
我也尝试过stty,在这个论坛上提供了各种设置建议
更新1
还尝试了80:raw:0:/dev/ttyACM0:9600
作为ser2net的设置,假设端口80是web/http端口
我的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代码来说,它似乎解决了一些问题
几点
cat/dev/ttyACM0&
添加到Openwrt路由器的启动配置中,可实现与Arduino的串行通信,而无需在每次数据传输时重置它
遗留问题:
看起来您的PHP正试图直接连接到tty。其中ser2net可能已经连接到tty。一次只能将一个应用程序连接到tty。停止ser2net,或者您的PHP应该根据ser2net.conf连接到所需tty的tcp侦听器谢谢您的输入mpflaga,我禁用了ser2net,但没有改进。我只是不明白screen或putty做了什么来启动一个连接,而我并没有用php做这个连接到serial?不是php专家。听起来像是个植物问题。使用ser2net,从openwrt box的bash,您可以telnet或netcat到本地主机1000或80,无论您的ser2net正在监听什么,以验证tty是否工作。是的,从我的windows pc使用putty,我可以连接到端口1000并命令arduino,在本地使用屏幕,我也可以命令arduino,所有这些都工作正常。奇怪的是,当我登录到我的网站时,我只能从远程网络/位置控制arduino,如果连接已经从screen或putty hope激活,这是有意义的,它看起来就像putty和screen启动ttyacm0,而php不确定当您的php尝试访问tty时ser2net是否停止。