定制 gregorj/serial-port 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

gregorj/serial-port

最新稳定版本:v3.0.0

Composer 安装命令:

composer require gregorj/serial-port

包简介

PHP interfaces and classes for serial port communication.

README 文档

README

License: MIT PHPStan level Code Style

PHP classes to connect to serial devices using streams or HTTP(S) gateways.

This library separates the command model from the transport:

  • Command defines command payload, terminators, timeout, and response mapping
  • Communication executes the command (StreamCommunication or HttpCommunication) via query() or write()
  • transport is provided by either Stream (for sockets) or HttpTransport (for gateways)

BasicStringCommand, BasicVoidCommand, and StringResponse are reference implementations for common command/response patterns.

Usage

You can either:

  1. bridge a serial device to TCP (for example with pySerial tcp_serial_redirect) and use TcpStream
  2. call an HTTP(S) serial gateway and use HttpCommunication with CurlTransport or StreamWrapperTransport

TCP stream communication

<?php

use GregorJ\SerialPort\Commands\BasicStringCommand;
use GregorJ\SerialPort\StreamCommunication;
use GregorJ\SerialPort\TcpStream;

$stream = new TcpStream('127.0.0.1', 5000);
$communication = new StreamCommunication($stream);

$command = new BasicStringCommand('HELLO', "\n", "\n");
$response = $command->invoke($communication);

echo $response?->get('response');

HTTP gateway communication

<?php

use GregorJ\SerialPort\Commands\BasicStringCommand;
use GregorJ\SerialPort\CurlTransport;
use GregorJ\SerialPort\HttpCommunication;

$communication = new HttpCommunication(
	new CurlTransport(),
	'https://example.com/query',
	'ttyUSB0',
	HttpCommunication::DEVICE_TYPE_WIRED
);

$command = new BasicStringCommand('HELLO', "\n", "\n");
$response = $command->invoke($communication);

echo $response?->get('response');

HttpCommunication::setTimeout() configures the serial-device response timeout and sends it to the gateway as deviceTimeoutMs. HTTP transport timeouts (connect and request) are configured separately in CurlTransport and StreamWrapperTransport.

Fire-and-forget commands

If your command does not expect a response, call Communication::write() directly (or use BasicVoidCommand, which now delegates to write()):

<?php

use GregorJ\SerialPort\Commands\BasicVoidCommand;
use GregorJ\SerialPort\StreamCommunication;
use GregorJ\SerialPort\TcpStream;

$communication = new StreamCommunication(new TcpStream('127.0.0.1', 5000));
$command = new BasicVoidCommand('AT+RESET', "\r\n");
$command->invoke($communication);

For custom command types, implement GregorJ\SerialPort\Interfaces\Command and decide per command whether to call query() or write().

For the expected HTTP JSON contract and fields, see src/Http/JsonSerialGatewayContract.php.

统计信息

  • 总下载量: 33
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-03-30

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固