blamebutton/php-serial

多平台串行端口访问便捷类

v1.0.0-rc1 2019-01-30 09:28 UTC

This package is auto-updated.

Last update: 2024-09-09 06:46:40 UTC


README

安装

composer require blamebutton/php-serial

PHP Serial 是在我不懂除 PHP 之外的任何语言的时候编写的,我对它的功能感到非常无聊。

我设法弄到了一个“Citizen C2202-PD”销售点显示屏,并想玩玩它。我还设法搞到了它的文档,并创建了一个便捷类来通过 Linux 文件访问串行端口。

之后,我把它发布到 PHP Classes,这可能是它获得任何知名度的原因。

示例

<?php
include 'vendor/autoload.php';

use SerialConnection\SerialConnection;

// Let's start the class
$serial = new 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->sendMessage("Hello, World!");

项目状态

很有趣的是,这段代码自从被创建以来就引起了很大的兴趣,尤其是在现在,每个人都喜欢玩 Arduino 和 Raspberry Pi。我每个月都会收到大约一封询问代码帮助或发送补丁/建议的电子邮件。

我认为是时候把这块尘土从这个项目上扫掉了,并给它在现代工具(即 GitHub)上提供全面的曝光。

错误

有很多错误。我知道。我只是不知道它们是哪些。

平台支持

  • Linux:最初支持的平台,我使用的平台,可能是最少错误的。
  • MacOS:尽管我从未在 MacOS 上尝试过,它与 Linux 类似,有人向我提交了一些补丁,所以我想它应该是好的。
  • Windows:似乎对一些人有效,对一些人无效。理论上应该有办法让它工作。

关注点

我对这段代码的行为有一些担忧。

  • 跨平台一致性。我严重怀疑所有操作在所有平台上都是相同的。
  • 读取操作。在我的项目中从未需要读取,所以我在这方面所做的所有测试都是理论性的。我也相当天真,所以 API 可能不是最优的。我们需要从头开始重新思考读取。
  • 通过调用函数进行配置。这太像 Java 了。最好能够一次性传递一个配置数组。此外,我怀疑调用顺序很重要,这是不好的。
  • 自动关闭设备。有一个在 PHP 关闭时注册的自动关闭函数。这听起来相当荒谬,必须对此采取措施。
  • 使用异常。目前严重使用错误系统来报告错误(2007 年的孩子),但这是非常糟糕的。它们必须由实际的异常替换。

贡献呼吁

我几乎没有时间编码或测试这个项目。然而,显然有需求。

就像所有开源项目一样,我需要人们根据他们的需求对其进行调整,并贡献他们的代码。

我认为需要什么

  • 解决上述关注点,并找到新的关注点。
  • 为每个操作系统创建可重复的测试环境,并证明每个功能都有效(基本上,单元测试)。
  • 使用案例、错误、缺失功能等的报告。

如果你愿意做任何这些事情,请不要犹豫创建一个 issue 或 pull-request,我会很高兴考虑它:)

许可证

PHP Serial 版权 (C) 2007-2014 PHP Serial 的贡献者(见 CONTRIBUTORS 文件)

本程序是自由软件;您可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发和/或修改它;无论是许可证的第2版,还是(根据您的选择)任何更新版本。

本程序的分发是希望它是有用的,但没有任何保证;甚至没有关于适销性或特定用途适用性的暗示保证。有关更多详细信息,请参阅GNU通用公共许可证。

您应该已经随本程序一起收到GNU通用公共许可证的副本;如果没有,请写信给自由软件基金会,公司地址:51 Franklin Street,第五层,波士顿,MA 02110-1301 美国。