datagutten / php-serial
多平台串口访问便捷类
This package is auto-updated.
Last update: 2024-09-22 03:07:16 UTC
README
安装
composer require blamebutton/php-serial
PHP Serial 是在我只知道 PHP 语言的时候编写的,我对它的能力感到非常无聊。
我偶然得到了一个「Citizen C2202-PD」销售点显示器,并想玩一玩它。我还设法得到了它的文档,并创建了一个便捷类,通过 Linux 文件来访问串口。
之后,我把这个项目发布到了 PHP Classes,这可能就是它获得关注的原因。
示例
<?php include 'SerialConnection.php'; // Let's start the class $serial = new datagutten\phpSerial\SerialConnection(); // First we must specify the device. This works on both linux and windows (if // your linux serial device is /dev/ttyS0 for COM1, etc) $serial->setDevice("COM1"); // We can change the baud rate, parity, length, stop bits, flow control $serial->setBaudRate(2400); $serial->setParity("none"); $serial->setCharacterLength(8); $serial->setStopBits(1); $serial->setFlowControl("none"); // Then we need to open it $serial->open(); // To write into $serial->send("Hello, World!");
项目状态
有趣的是,这块代码自从创建以来就引起了广泛的兴趣,尤其是在现在,每个人都在玩 Arduino 和 Raspberry Pi。我每个月都会收到大约一封邮件,询问代码帮助或发送补丁/建议。
我认为是时候让这个项目恢复活力,并在现代工具(即 GitHub)上全面展示。
错误
有很多错误。我知道。我只是不知道它们是什么。
平台支持
- Linux:最初支持的平台,我使用过的平台。可能是最少的错误。
- MacOS:尽管我从未在 MacOS 上尝试过,但它与 Linux 类似,有人向我提交了一些补丁,所以我猜它应该是可以的。
- Windows:有些人似乎可以用它,有些人不行。理论上应该有一种方法可以实现。
关注点
我对这段代码的行为有一些关注点。
- 跨平台一致性。我严重怀疑所有操作在所有平台上都是相同的。
- 读取操作。在我的项目中从未需要读取,所以我在这方面做的所有测试都是理论上的。我也相当天真,所以 API 可能不是最优的。我们需要从头开始重新思考读取。
- 通过调用函数进行配置。这太 Java 了。最好能够一次性传递一个配置数组。此外,我怀疑调用顺序很重要,这是不好的。
- 自动关闭设备。有一个在 PHP 关闭时注册的自动关闭函数。这听起来相当荒谬,必须对此采取措施。
- 使用异常。目前错误系统被大量用来报告错误(2007 年的孩子),但这是非常糟糕的。它们必须被实际的异常替换。
呼吁贡献
我没有时间来编写或测试这个项目。然而,显然有需求。
正如所有开源项目一样,我需要人们根据他们的需求调整它,并将他们的代码贡献回来。
我认为需要什么
- 解决上述问题,并找到新的问题。
- 为每个操作系统创建可重现的测试环境,并证明每个功能都有效(基本上,单元测试)。
- 使用案例、错误、缺少功能等的报告。
如果你想做这些,不要犹豫,创建一个问题或拉取请求,我会乐意考虑它:)
许可
PHP Serial 版权 (C) 2007-2014 PHP Serial 贡献者(见 CONTRIBUTORS 文件)
本程序是免费软件;您可以按照自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它;许可证的版本可以是2,或者(根据您的选择)任何更新的版本。
本程序的分发是希望它有用,但没有任何保证;甚至没有关于其商业性或针对特定目的的适用性的暗示性保证。有关详细信息,请参阅GNU通用公共许可证。
您应该已经随本程序收到了一份GNU通用公共许可证副本;如果没有,请写信给自由软件基金会,地址:美国马萨诸塞州波士顿市富兰克林街51号,第5层,邮编02110-1301。