Chip, многозадачность, на удивление работает довольно эффективно. НО! В ТЕРМИНАЛЕ! Через PHP разницы никакой. Может быть я что-то не правильно делаю?
Задача следующая - управление из PHP 8-ю устройствами (в настоящее время светиками). Это получается хорошо (передача из PHP в Ардуину, но при включении любого из 8 устройств, его значение меняется с 0 на 1 и ардуина в PHP должна об этом сообщить. Вот в этом и проблема.
Вот скетч для Ардуинки (с leOs):
PHP код:
#include "leOS.h"
leOS myOS; //создать экземпляр класса
#define led1Pin 30
#define led2Pin 31
#define led3Pin 32
#define led4Pin 33
#define led5Pin 34
#define led6Pin 35
#define led7Pin 36
#define led8Pin 37
int stat1;
int stat2;
int stat3;
int stat4;
int stat5;
int stat6;
int stat7;
int stat8;
void setup()
{
Serial.begin(9600);
myOS.begin();
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
pinMode(led4Pin, OUTPUT);
pinMode(led5Pin, OUTPUT);
pinMode(led6Pin, OUTPUT);
pinMode(led7Pin, OUTPUT);
pinMode(led8Pin, OUTPUT);
myOS.addTask(sendstatus, 1000);//добавить задачу с интервалом выполнения через 250мс
}
void loop()
{
serial_read_write();
}
void serial_read_write()
{
if (Serial.available() > 0)
{
byte inByte = Serial.read();
switch (inByte)
{
case 65:
digitalWrite(led1Pin, HIGH);
break;
case 66:
digitalWrite(led1Pin, LOW);
break;
case 67:
digitalWrite(led2Pin, HIGH);
break;
case 68:
digitalWrite(led2Pin, LOW);
break;
case 69:
digitalWrite(led3Pin, HIGH);
break;
case 70:
digitalWrite(led3Pin, LOW);
break;
case 71:
digitalWrite(led4Pin, HIGH);
break;
case 72:
digitalWrite(led4Pin, LOW);
break;
case 73:
digitalWrite(led5Pin, HIGH);
break;
case 74:
digitalWrite(led5Pin, LOW);
break;
case 75:
digitalWrite(led6Pin, HIGH);
break;
case 76:
digitalWrite(led6Pin, LOW);
break;
case 77:
digitalWrite(led7Pin, HIGH);
break;
case 78:
digitalWrite(led7Pin, LOW);
break;
case 79:
digitalWrite(led8Pin, HIGH);
break;
case 80:
digitalWrite(led8Pin, LOW);
break;
}
}
}
void sendstatus()
{
stat1 = digitalRead(led1Pin);
stat2 = digitalRead(led2Pin);
stat3 = digitalRead(led3Pin);
stat4 = digitalRead(led4Pin);
stat5 = digitalRead(led5Pin);
stat6 = digitalRead(led6Pin);
stat7 = digitalRead(led7Pin);
stat8 = digitalRead(led8Pin);
Serial.print(stat1);
Serial.print(stat2);
Serial.print(stat3);
Serial.print(stat4);
Serial.print(stat5);
Serial.print(stat6);
Serial.print(stat7);
Serial.print(stat8);
}
Вот главной стр. PHP (relay_button.php) -
PHP код:
<?php
include "php_serial.class.php";
$serial = new phpSerial;
$serial->deviceSet("/dev/ttyACM0");
$serial->confBaudRate(9600);
$serial->deviceOpen();
usleep(2000000);
$read = $serial->readPort();
print $read;
$serial->deviceClose();
?>
<a href="1on.php"><button><img src="on.png" width="31" height="31" alt="ON" style="vertical-align: middle"></button></a>
<a href="1off.php"><button><img src="off.png" width="31" height="31" alt="OFF" style="vertical-align: middle"></button></a>
<a href="2on.php"><button><img src="on.png" width="31" height="31" alt="ON" style="vertical-align: middle"></button></a>
<a href="2off.php"><button><img src="off.png" width="31" height="31" alt="OFF" style="vertical-align: middle"></button></a>
<a href="3on.php"><button><img src="on.png" width="31" height="31" alt="ON" style="vertical-align: middle"></button></a>
<a href="3off.php"><button><img src="off.png" width="31" height="31" alt="OFF" style="vertical-align: middle"></button></a>
<a href="4on.php"><button><img src="on.png" width="31" height="31" alt="ON" style="vertical-align: middle"></button></a>
<a href="4off.php"><button><img src="off.png" width="31" height="31" alt="OFF" style="vertical-align: middle"></button></a>
<a href="5on.php"><button><img src="on.png" width="31" height="31" alt="ON" style="vertical-align: middle"></button></a>
<a href="5off.php"><button><img src="off.png" width="31" height="31" alt="OFF" style="vertical-align: middle"></button></a>
<a href="6on.php"><button><img src="on.png" width="31" height="31" alt="ON" style="vertical-align: middle"></button></a>
<a href="6off.php"><button><img src="off.png" width="31" height="31" alt="OFF" style="vertical-align: middle"></button></a>
<a href="7on.php"><button><img src="on.png" width="31" height="31" alt="ON" style="vertical-align: middle"></button></a>
<a href="7off.php"><button><img src="off.png" width="31" height="31" alt="OFF" style="vertical-align: middle"></button></a>
<a href="8on.php"><button><img src="on.png" width="31" height="31" alt="ON" style="vertical-align: middle"></button></a>
<a href="8off.php"><button><img src="off.png" width="31" height="31" alt="OFF" style="vertical-align: middle"></button></a>
Вот примеры Non.php и Noff.php -
PHP код:
<?php
$filename = "/dev/ttyACM0"; //UART порт роутера
$fp = fopen($filename, "w+"); //открыть порт
fwrite($fp, A); //полать в порт строку
fclose($fp); //закрыть порт
header("Location: relay_button.php");
?>