我正在编写一个php页面,用于使用一些屏幕内按钮控制串口。当我按下一个按钮时,它通过串行端口发送一些数据,并显示其响应。这一切都工作正常。
现在,我需要连续监听串行端口,以便接收我没有要求的数据。我试图用javascript中的计时器来做,但每次我通过AJAX执行PHP代码时,串行端口重新启动,其缓冲区被刷新。在完成PHP代码的执行之前,我需要将控制串口的对象传递给javascript代码。当按下按钮时,我需要将这个对象传递给新的PHP代码。
我该怎么做?
Thanks to lot
首先在代码中创建一个全局js变量。当你第一次做ajax调用,然后存储响应在你的js变量。
所以每次你需要通过ajax传递全局js变量。
你可以使用
设置窗口级别的js全局变量window.myVariable="";
确保在发送任何js请求之前定义这个变量
查看:http://php.net/manual/en/language.oop5.serialization.php您应该传递序列化的对象,或者,为了在会话之间保持串行对象的活动,将其存储在文本文件中。在AJAX
端,存储为Global [WINDOW] variable
。例如
window.serialphpobject = data;
然后在下一次AJAX调用时使用该数据
{object: window.serialphpobject}
很明显,没有看到你的代码,我无法准确地匹配它
我需要在完成PHP代码的执行之前将控制串行端口的对象传递给javascript代码。当按下按钮时,我需要将这个对象传递给新的PHP代码。
这个解决方案是脆弱的。您应该将这些信息保存在PHP会话中。
http://php.net/manual/en/session.examples.basic.php我发现这是不可能做到的:当PHP代码完成其执行时,串行端口自动关闭,因此我丢失了接收到的所有数据,直到我再次打开端口。