{"id":15014411,"url":"https://github.com/manilboudjemai/serial-pulse","last_synced_at":"2025-08-28T16:55:43.821Z","repository":{"id":215999048,"uuid":"735989415","full_name":"manilboudjemai/serial-pulse","owner":"manilboudjemai","description":"SerialPulse is an experimental PHP application facilitating serial communication with connected devices via a serial port. With CLI interactivity, users can configure connections, send data byte by byte, and extend functionality by adding new commands, currently supported on Windows operating systems.","archived":false,"fork":false,"pushed_at":"2024-01-07T21:35:28.000Z","size":59,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T08:04:07.947Z","etag":null,"topics":["cli","command-line-interface","data-transmission","experimental","interactive","open-source","php","phpunit","serial-communication","symfony","windows"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/manilboudjemai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-12-26T16:58:47.000Z","updated_at":"2024-09-13T05:23:23.000Z","dependencies_parsed_at":"2024-01-07T22:39:19.175Z","dependency_job_id":null,"html_url":"https://github.com/manilboudjemai/serial-pulse","commit_stats":null,"previous_names":["manilboudjemai/serial-pulse"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manilboudjemai%2Fserial-pulse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manilboudjemai%2Fserial-pulse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manilboudjemai%2Fserial-pulse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manilboudjemai%2Fserial-pulse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manilboudjemai","download_url":"https://codeload.github.com/manilboudjemai/serial-pulse/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248537141,"owners_count":21120709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","command-line-interface","data-transmission","experimental","interactive","open-source","php","phpunit","serial-communication","symfony","windows"],"created_at":"2024-09-24T19:45:35.808Z","updated_at":"2025-04-12T08:08:26.895Z","avatar_url":"https://github.com/manilboudjemai.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SerialPulse\n\nThis application is an experimental project utilizing [PHP](https://github.com/php/php-src), a server-side language, for establishing serial communication with a connected device through a serial port.\n\nIt provides a CLI interactive experience, enabling users to configure a connection and transmit data over the serial port.\n\n## Installation\n\nInstall the library using Composer. Run the following command in your project's root directory; `composer require manilboudjemai/serial-pulse`.\n\n## Features\n\n### CLI Interactivity\n\nThe application currently exposes a single command to the user : `app:serial-connect`.\n\nThis command initiates an interactive process, allowing users to configure and establish a connection while progressively sending data to the connected device byte by byte.\n\n## How to Use\n\nEnsure you have **PHP 8.2 or higher** installed in your environment.\n\nOpen a CLI interface and locate yourself at the root of the application's directory structure.\n\nRun the following command to initiate the application : `php vendor/manilboudjemai/serial-pulse/index.php app:serial-connect`. This launches an interactive process for configuring the connection and sending data.\n\nTo view all available commands, use `php vendor/manilboudjemai/serial-pulse/index.php list`.\n\n## Adding New Commands\n\nDevelop a new `App\\Command` class in the `vendor/manilboudjemai/serial-pulse/app/command` directory; e.g. `NewCommand.php`.\n\nAdd the new command class to the application by including `$app-\u003eadd(new NewCommand());` in the `vendor/manilboudjemai/serial-pulse/index.php` file, the main entry point of the application.\n\n## Considerations\n\n### Stateless Nature\n\nAs PHP is inherently stateless, a new connection needs to be configured and established every time data is sent. Future enhancements are planned to introduce a solution that retains connection configuration settings across requests, streamlining the process of sending data via the serial port.\n\n### Connection Configuration\n\nEnsure that connection configurations match those set on the connected device, including baud rate, data bits, parity, and stop bit, to ensure proper communication.\n\n### Windows Limitations\n\nDue to Windows architecture and PHP's single-threaded nature, duplex communication is not supported on Windows OS. Contributions to extend support to other operating systems are welcome.\n\n## Limitations\n\nThe application is currently only supported on Windows operating systems.\n\n## User Agreement\n\nThis software is provided \"as is\" without warranty. Users assume the risk of its quality and performance.\n\nYou may copy, distribute, and modify the software under the GNU General Public License.\n\n## Credits\n\nThis project utilizes the following libraries to enhance its functionality :\n\n+ [symfony/console](https://github.com/symfony/console) for building the CLI interactive experience for users.\n+ [sebastianbergmann/phpunit](https://github.com/sebastianbergmann/phpunit) for ensuring the reliability and quality of the application.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanilboudjemai%2Fserial-pulse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanilboudjemai%2Fserial-pulse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanilboudjemai%2Fserial-pulse/lists"}