Hallo,
Door mij is een USB-relaiskaart gekoppeld aan DS209 via tttyACM0.
Voor de seriele koppeling is gebruik gemaakt van een php-serial.class, het geheel is te besturen via de Terminal (command line).
Daarna is een PHP-script gemaakt met hetzelfde doel dit script werkt.
Echter de uitvoering van het script relais3.php door 1. Browser (apache) of 2. PHP geeft verschillende reactie.
Het PHP-script om relais 3 in te schakelen volgt hieronder
<?php
// Relais 3 inschakelen
// Foutmelding ==> serial.class
error_reporting(E_ALL);
ini_set('display_errors', '1');
// Communicatie kanaal ==> USB-Kaart
require("./php_serial.class.php");
// Commando's ==> Settings USB-Kaart
$serial = new phpSerial;
$serial->deviceSet("/dev/ttyACM0");
$serial->confBaudRate(1200);
$serial->deviceOpen();
// Commando's ==> Functie besturing I/O USB-Kaart
$serial->sendMessage("O2=1" . "\r");
echo $serial->readPort();
$serial->deviceClose();
?>
Het stukje code dat het verschil op levert is hieronder weergegeven
$this->_dHandle = @fopen($this->_device, $mode);
echo " Waarde Handle : " . $this->_dHandle . "<br />";
echo " Waarde device : " . $this->_device . "<br />";
echo " Waarde mode : " . $mode . "<br />";
if ($this->_dHandle !== false)
{
stream_set_blocking($this->_dHandle, 0);
$this->_dState = SERIAL_DEVICE_OPENED;
return true;
}
Uitgevoerde testen:
1. Browser starten
Adres
http://IP-adres/smartcontroller/relais3.phpReactie van de Browser
Waarde Handle :
Waarde device : /dev/ttyACM0
Waarde mode : r+b
Warning: Unable to open the device in /volume1/web/smartcontroller/php_serial.class.php on line 160
2 .Uitvoering vanuit Diskstation met PHP
DiskStation> php relais3.php
Waarde Handle : Resource id #15<br />
Waarde device : /dev/ttyACM0<br />
Waarde mode : r+b<br />
OK
DiskStation>
Einde uitgevoerde testen.
Hieruit blijkt dat het Commando " @fopen" uit de regel: " $this->_dHandle = @fopen($this->_device, $mode); " verschillende reactie geeft.
Uitvoering van programma met Browser krijgt de variabele "Handle" geen waarde (zie test 1).
Uitvoering met programma met PHP krijgt de variabele "Handle" de waarde "Resource id #15" (zie test 2).
Wat zou de oorzaak kunnen zijn?
Heeft iemand een hint die kan leiden tot oplossing?
Alvast bedankt voor reactie(s)