PHP port série de données de retour d'Arduino

Je me demande si il existe un moyen pour accomplir la lecture de mon port série via PHP qui fonctionne 🙂

Dans l'exercice de mon Arduino compétences, j'ai développé une simple LED on/OFF de l'esquisse. Il fonctionne en entrant sur ou hors dans la série du moniteur.

Étape suivante, j'ai mis en place une page web pour agir comme une interface graphique à cliquer sur un lien et d'effectuer sur et hors de la fonction ci-dessus. Cette web GUI fonctionne via PHP.
Je suis l'aide de la PHP SÉRIE classe d'interagir avec le port série de mon Arduino.

Le problème est que j'ai besoin de trouver un moyen d'obtenir de la rétroaction à partir du port série. À l'aide de l'IDE Arduino moniteur de série, je peux voir mes messages imprimés en réponse à chacune de mes entrée série et j'ai besoin de récupérer les mêmes commentaires dans mon code PHP.

Le PHP de Série de la classe offre une readPort() fonction, mais je ne retourne pas mes données.

Mise à JOUR[2]:

ARDUINO:

const int greenPin = 2;
const int bluePin = 3;
const int redPin = 4;

int currentPin = 0; //current pin to be faded
int brightness = 0; //current brightness level

void setup(){
  Serial.begin(9600);

  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
  pinMode(redPin, OUTPUT);
}

void loop(){
  //if there's any serial data in the buffer, read a byte
  if( Serial.available() > 0 ){
    int inByte = Serial.read();

      //respond only to the values 'r', 'g', 'b', or '0' through '9'
      if(inByte == 'r')
        currentPin = redPin;

      if(inByte == 'g')
        currentPin = greenPin;

      if(inByte == 'b')
        currentPin = bluePin;

      if(inByte >= '0' && inByte <= '9'){
        //map the incoming byte value to the range of the analogRead() command
        brightness = map(inByte, '0', '9', 0, 255);
        //set the current pin to the current brightness:
        analogWrite(currentPin, brightness);
      }

      Serial.print("Current Pin : ");
      Serial.println(currentPin);

      Serial.print("Brightness : ");
      Serial.println(brightness);

  }//close serial check

}

PHP/HTML:

<?php
require("php_serial.class.php");
//include("php_serial.class.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("/dev/ttyACM0");
//Set for 9600-8-N-1 (no flow control)
$serial->confBaudRate(9600); //Baud rate: 9600
$serial->confParity("none");  //Parity (this is the "N" in "8-N-1")
$serial->confCharacterLength(8); //Character length     (this is the "8" in "8-N-1")
$serial->confStopBits(1);  //Stop bits (this is the "1" in "8-N-1")
$serial->confFlowControl("none");
//Then we need to open it
$serial->deviceOpen();
//Read data
$read = $serial->readPort();
print "<pre>";
print_r($read);
print "</pre>";
//Print out the data
echo $read;
//print exec("echo 'r9g9b9' > /dev/ttyACM0");
print "RESPONSE(1): {$read}<br><br>";
//If you want to change the configuration, the device must be closed.
$serial->deviceClose();
?>
<?php
if( isset($_REQUEST['LED']) )
response();
?>
<form action='index.php' method='POST'>
<select id='led' name='LED'>
<option id='nil'>-</option>
<option id='red'>RED</option>
<option id='green'>GREEN</option>
<option id='blue'>BLUE</option>
<option id='all'>ALL</option>
</select>
<input type='submit' value='SET'>
</form>
<?php
print "Hi, Earthlings!";
function response(){
$CMDString = "";
$execute   = false;
if( isset($_REQUEST['LED']) ){
switch ($_REQUEST['LED']) {
case 'RED':
$CMDString = 'r9';
$execute = true;
exec("echo 'r9g0b0' > /dev/ttyACM0");
print "<br>FOUND: {$_REQUEST['LED']}";
break;
case 'GREEN':
$CMDString = 'g9';
$execute = true;
print "<br>FOUND: {$_REQUEST['LED']}";
break;
case 'BLUE':
$CMDString = 'b9';
$execute = true;
print "<br>FOUND: {$_REQUEST['LED']}";
break;
case 'ALL':
$CMDString = 'r9g9b9';
$execute = true;
print "<br>FOUND: {$_REQUEST['LED']}";
break;
default:
print exec("echo 'r0g0b0' > /dev/ttyACM0");
$execute = false;
break;
}
if($execute){
print exec("echo '{$CMDString}' > /dev/ttyACM0");
print "<br><br>executing: {$CMDString}";
}
}
}
?>

OriginalL'auteur sisko | 2012-10-28