zzepish/php-serial

多平台串口访问便捷类

1.0.9 2020-04-06 14:15 UTC

This package is auto-updated.

Last update: 2024-09-06 23:47:23 UTC


README

PHP Serial是在我仅了解PHP语言的时候编写的,我对它的功能感到非常无聊。

我设法搞到了一个「Citizen C2202-PD」销售点显示器,并想玩玩它。我还设法搞到了它的文档,并创建了一个便利类,通过Linux文件访问串口。

之后,我把这个项目发布到了PHP Classes,这可能是它获得可见性的原因。

示例

<?php
include 'PhpSerial.php';

// Let's start the class
$serial = new PhpSerial;

// 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->deviceSet("COM1");

// We can change the baud rate, parity, length, stop bits, flow control
$serial->confBaudRate(2400);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");

// Then we need to open it
$serial->deviceOpen();

// To write into
$serial->sendMessage("Hello !");

项目状态

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

我认为是时候让这个项目重新焕发生机,并在现代工具(即GitHub)上提供全面可见性了。

错误

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

平台支持

  • Linux:最初支持的平台,我使用的平台。可能是最少的错误。
  • MacOS:尽管我从未在MacOS上尝试过,但它与Linux相似,有人向我提交了一些补丁,所以我猜它是OK的。
  • Windows:它似乎对一些人有效,对另一些人则无效。理论上应该有一种方法可以实现。

关注点

我对这段代码的行为有一些关注。

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

呼吁贡献

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

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

在我看来,需要什么

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

如果你想做任何这些,请不要犹豫创建一个问题或拉取请求,我将非常乐意考虑它:)

许可证

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

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

本程序的发布是希望它有用,但没有任何保证;甚至没有关于其商业性或适用于特定目的的隐含保证。有关详细信息,请参阅GNU通用公共许可证。

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