Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以通过PHP语言控制硬件吗?_Php_Hardware - Fatal编程技术网

我可以通过PHP语言控制硬件吗?

我可以通过PHP语言控制硬件吗?,php,hardware,Php,Hardware,我想知道我是否可以使用PHP来控制与并行端口或USB端口连接的外部硬件? 有什么想法或资源吗?您必须编写一个可以通过系统调用调用的程序。PHP代码无法直接访问您的硬件。您可能需要研究一下。PHP不允许通过API直接访问硬件,您需要调用子程序来实现这一点。这是Linux上串行连接设备的有用类: 串行端口通常用于 与外围设备通信, 例如:调制解调器、POS终端、, 特殊打印机等 此类可用于通信 并配置连接到的外围设备 Linux下的串口,简化了 应用程序的开发 需要访问串行设备 根据我对菲利普·埃克

我想知道我是否可以使用PHP来控制与并行端口或USB端口连接的外部硬件?
有什么想法或资源吗?

您必须编写一个可以通过系统调用调用的程序。PHP代码无法直接访问您的硬件。

您可能需要研究一下。PHP不允许通过API直接访问硬件,您需要调用子程序来实现这一点。

这是Linux上串行连接设备的有用类:

串行端口通常用于 与外围设备通信, 例如:调制解调器、POS终端、, 特殊打印机等

此类可用于通信 并配置连接到的外围设备 Linux下的串口,简化了 应用程序的开发 需要访问串行设备


根据我对菲利普·埃克伯格回答的评论……也许吧

这取决于您的操作系统和所需的访问级别—是否应该是双向的?您是否试图将控制线用于流量控制以外的目的?你知道通讯协议的细节吗


C.

< P>如果你可以编写一个C++程序,与该设备通信,你可以创建一个PHP扩展:

如果你想在*nix系统上运行这个,你可能想看看。使用这些库,您可以编写一个C程序,使您的硬件显示为文件系统的一部分,例如,您可以像安装USB驱动器一样安装它。 一旦安装,您就可以使用PHP的函数来操纵文件来控制硬件

如果你不知道计划9是什么,这可能不是很清楚。让我用一个虚拟示例来说明:您的硬件是一个电子板,通过7段显示器显示登录用户的数量。您可以从用户空间使用Plan 9编写一个程序来装载2个文件:

/某处/输入

/某处/输出

将“42”(与文本文件一样)写入输入将使电路板显示42。 例如,读取输出将告诉您该数字保持不变的时间

这可能不是实现目标的最简单的方法,因为学习使用Plan 9库不是很容易(尽管IRC上的人很友好,也很有帮助),但我认为这是最优雅的方法


有了它,您还可以从任何其他语言控制您的硬件,因为我知道的所有语言都可以操作文件。

好吧,它是一个LPT端口和一个二进制文件,对于Lin和Win以及小PHP代码来说,都可以调用这个二进制文件:


您可能需要查看带有socket io npm包的Node js。。我已经建立了一个smiliar系统,我可以通过WebAPI接口直接控制我的硬件。
我的linux机器是Raspberry Pi,它控制连接到ots I/O的硬件。我的节点js web服务器是Raspberry Pi,节点js不仅侦听前端javascript的web指令,还可以通过npm硬件I/O包控制硬件。

在什么平台上?你能更具体地说一下什么样的硬件?连接到什么计算机上?服务器或客户端?@ PEKKA一个简单的硬件,让我们考虑一个与并行端口LED连接的灯。@弹片连接到服务器。让我们给你们一个清晰的想法,我想建立一个系统,通过网络基地程序来控制我们家的灯光。啊,我现在明白了。我的一个朋友也用com端口做了同样的事情。有一些图书馆可供使用。不完全。只有Windows扩展才能通过Windows的COM访问打印机和(间接)硬件。不过,通常是这样。@Pekka-AFAIK这些都在虚拟打印机设备上工作,而不是在物理端口上。没有什么内在的东西可以阻止php访问硬件——事实上,如果权限允许,它可以在文件系统上操作映射,而无需额外的扩展/代码。e、 g.$of=fopen('/dev/lp0','w');然而,很大程度上取决于操作系统和设备驱动程序的实际可能性。