Skip to content

A php extension for peripheral I/O Serial in Linux (wrapper of c-periphery)

License

Notifications You must be signed in to change notification settings

1nv1/php-periphery-serial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

php-periphery-serial Build Status GitHub release License

A php extension for peripheral I/O Serial in GNU/Linux.

Introduction

The goal of this project is build a wrapper (serial I/O) of c-periphery library.

Warning

This project really has two goal, the first is create a wrapper and the second is learn about php extensions. It's my first project around this.

Right now I uploaded to sourceforge two compilations of the extension. One is for x86_64 target system and the other was build on a x86. The last one was tested with real electronics hardware without problems.

Next steps

  • Public attributes
  • Testing arguments
  • Test again over real hardware (x86/x86_64)
  • Documentation of class
  • I will keep uploading compiled versions
  • Errors support

Documentation

You can access to documentation to class in this link.

Download

You can download the compiled library in the sourceforge page.

Build

Previous, do you need install the developer package of ^PHP7x. In Fedora:

# dnf install php-devel

Now, clone the repo:

$ git clone --recurse-submodules -j8 https://github.com/1nv1/php-periphery-serial.git

To compile, you need to do these steps

$ phpize
$ ./configure --enable-periphery_serial
$ make
# make install

Do you need clean the project?

$ make clean && phpize --clean

Example

This is a simple example:

<?php

// Class for use periphery-serial
require_once dirname(__FILE__).$relative_path_to."/class/Periphery.php";

// Create an instance
$pb = new Periphery\Serial();

// Yo can see the version of c-periphery embedded
echo "Version: ".$pb->version().PHP_EOL;

// Now, open the serial port: path to device and baudrate
$res = $pb->open("/dev/ttyUSB0", 38400) ? 'yes' : 'no';
if ($res == 'no') {
  echo "Error at open!".PHP_EOL;
  die();
}
echo "Open: yes".PHP_EOL;

echo "Flush...".PHP_EOL;
$pb->flush();

// Take the "string" to send and convert it in array
$send = str_split("RP");
echo "Write: ".$pb->write($send, 2).PHP_EOL;
echo "Read: ";

// Do you need wait 30 bytes response with a 2 senconds of timeout?
$res = $pb->read(30, 2000);
if (!empty($res)) { var_dump($res); }
else { echo PHP_EOL; }

// You expects 30 bytes with a 2 senconds of timeout
echo "Close: ".($pb->close() ? 'yes' : 'no').PHP_EOL;

License

php-periphery-serial is MIT licensed. See the included LICENSE file.