我能用PHP语言控制硬件吗?

17

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


在哪个平台上?你能更具体地说明一下是什么类型的硬件吗? - Pekka
连接到哪台电脑?服务器还是客户端? - Your Common Sense
@Pekka,考虑一个简单的硬件,比如连接在并口上的 LED 灯。 - Waseem
@ Shrapnel上线了服务器。为了让您有一个清晰的想法,我想建立一个通过网络程序控制我们家灯光的系统。 - Waseem
啊,我现在明白了。我的朋友也用 com 端口做了同样的事情。有一些库可以使用。 - Your Common Sense
8个回答

5
这是一个在Linux上用于串行连接设备的有用类:PHP Serial 串口通常用于与外围设备通信,例如:调制解调器、POS终端、特殊打印机等。该类可用于在Linux下通信和配置连接到串口的外围设备,简化需要访问串行设备的应用程序的开发过程。

4
您可能需要了解PHP exec。 PHP不允许直接通过API访问硬件,您需要调用子程序来实现。

1
从本质上讲,没有什么能够阻止 PHP 访问硬件 - 的确,如果权限允许,它可以在文件系统中操作映射而无需额外的扩展/代码。例如,$of=fopen('/dev/lp0','w')。然而,实际上能做到什么取决于操作系统和设备驱动程序。 - symcbean

2

0

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


并不完全如此。有一些仅适用于Windows的扩展可以通过Windows的COM接口访问打印机和(间接地)硬件。尽管如此,通常情况下是正确的。 - Pekka
1
@Pekka - 据我所知,这些都适用于虚拟打印机设备,而不是物理端口。 - symcbean

0
根据我在Filip Ekberg的回答中的评论...也许吧。
这取决于您的操作系统和所需访问级别 - 是否应该是双向的?您是否试图将控制线用于除流量控制之外的其他目的?您是否了解通信协议的详细信息?
C.

0
如果您打算在*NIX系统上运行此程序,您可能需要查看Plan 9 From User Space。使用这些库,您可以编写一个C程序,使您的硬件出现为文件系统的一部分,即您可以像挂载USB驱动器一样挂载它。 一旦挂载,您可以使用PHP的文件操作函数来控制您的硬件。
如果您不知道什么是Plan 9,这可能不是很清楚。让我通过一个虚拟例子来说明:您的硬件是一个电子板,通过7段显示器显示已登录用户的数量。您使用Plan 9 from user space编写一个程序,挂载2个文件:
/somewhere/input
/somewhere/output
将“42”(就像您使用文本文件一样)写入输入,将使您的板显示42。读取输出将告诉您例如这个数字没有改变多长时间。
这可能不是实现目标的最简单方法,因为学习使用Plan 9库并不容易(尽管IRC上的人们非常友好和乐于助人),但在我看来,这是最优雅的方式。

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


0

0
你可能会想要了解一下Node.js和socket.io的npm包。我已经建立了一个类似的系统,通过Web API接口我可以直接控制我的硬件。我的Linux机器是树莓派,连接着硬件I/O,Node.js服务器也在树莓派上运行。Node.js不仅监听来自前端JavaScript的Web指令,还能通过npm硬件I/O包来控制硬件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接