Synology-Forum.nl

Tweaks / Addons A.K.A. The Underground => Overige mods => Topic gestart door: fozed op 10 augustus 2013, 11:19:34

Titel: USB-relaiskaart en Synology
Bericht door: fozed op 10 augustus 2013, 11:19:34
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.php
Reactie 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)
Titel: Re: USB-relaiskaart en Synology
Bericht door: fozed op 28 september 2013, 10:41:17
Door read/write-rechten aan others te geven in bestand ttyACM0 is besturing op afstand mogelijk geworden.
Hiervoor is gebruik gemaakt van het command  ==>  chmod -R o+rw /dev/ttyACM0.
Hiermee is het probleem opgelost.

Fozed