我有一个通过并行端口编程与硬件交互的程序。我编译了它并使用其目标文件与硬件进行交互(一个简单的led)。当我直接在shell上执行它时它起到了发光LED的作用,但是当我在php中使用shell_exec()执行它时,命令被执行但无法与硬件交互。我完全糊涂了..。
答案 0 :(得分:1)
如果您的PHP脚本以不同的用户身份运行(例如,如果您将其作为Apache模块运行,则可能是用户apache
),则可能与您自己登录时的HW访问权限不同。检查与并行端口交互所需的权限。
答案 1 :(得分:0)
这可能有点过时了,但如果您要使用PHP进行硬件接口,我也会在那里抛出一些AJAX。
基本上你的javascript通过Ajax函数将键击传递给服务器。每次PHP通过javascript获取新请求时,它会在预先编写的shell_exec()
命令集的数组中查找按键,然后运行该按键进行击键。
让javascript听取按键操作,并让shell命令数组直接与每个可能的击键相关联(或者如果你能得到花哨的话,可以使用笔画的组合)。
我从一些非常简单的事情开始,比如点和破折号,但我打赌你可以快速得到很酷的东西。
答案 2 :(得分:0)
我会在连接到并行端口的主机上设置某种套接字服务器,并提供PHP可以与之交谈的域套接字。它实际上是您通过RESTful协议处理流式I / O的唯一方式。
作为Anthony mentioned,就用户体验而言,一点点AJAX会使这一点变得相当无缝。
这使您可以使用简单的PHP套接字连接,发送,获取响应,显示它,然后根据请求清洗/冲洗/重复。比处理shell_exec()容易得多。