Relais ansteuern: Pascal geht - PHP wie?
Geizhals » Forum » Programmierung » Relais ansteuern: Pascal geht - PHP wie? (9 Beiträge, 479 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Relais ansteuern: Pascal geht - PHP wie?
25.12.2015, 17:48:46
Hi,

ich habe da eine alte Platine mit 6 Relais und einige Pascal-Prozeduren zur Ansteuerung via serieller Schnittstelle. Damit klappt das Ein- und Ausschalten tadellos.
Nun möchte ich die Relais mit einem PHP-Skrip ansteuern. Ich habe eine PHP-Klasse gefunden, die die serielle Kommunikation recht einfach bewerkstelligt. Leider tut sich da nix. Die Daten werden gesendet - das Relais schaltet aber nicht - keine Fehlermeldung nix. Wie muss ich diese Sequenz im PHP-Skript übermitteln?

Aus dem Pascal-Programm schließe ich, dass man mit folgenden Sequenzen ein Relais ein bzw. aus schaltet:    
ein =  167 84 83 48 48 49+relaisnr 0 0
aus = 167 84 82 48 48 49+relaisnr 0 0

Pascal-Code:

PROCEDURE InitCOM;
VAR i,Dummy:Byte;
BEGIN
 BA:=$03F8;
 Port[BA+3]:=128;
 Port[BA+0]:=12;
 Port[BA+1]:=0;
 Port[BA+3]:=7;
 Port[BA+1]:=0;
 Port[BA+4]:=0;
 for i:=1 to 3 do Dummy:=Port[BA];
END;

PROCEDURE Sende(Zeichen:Byte);
BEGIN
 WHILE (Port[BA+5] AND 32)=0 do;
 Port[BA]:=Zeichen;
END;


PROCEDURE TURN_ON(relnr:Byte;);
BEGIN
 InitCOM;
 sende(167);sende(84);sende(83);sende(48);sende(48);sende(49+relnr);sende(0);sende(0);
END;

PROCEDURE TURN_OFF(relnr:Byte;);
BEGIN
 InitCOM;
 sende(167);sende(84);sende(82);sende(48);sende(48);sende(49+relnr);sende(0);sende(0);
END;



  

Mein PHP-Code

<?php
include 'PhpSerial.php';

$serial = new PhpSerial;
$serial->deviceSet("/dev/ttyUSB0");

$serial->confBaudRate(2400);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");

$serial->deviceOpen();

// relais #1 on
$serial->sendMessage(167);
$serial->sendMessage(84);
$serial->sendMessage(83);
$serial->sendMessage(48);
$serial->sendMessage(48);
$serial->sendMessage(49);
$serial->sendMessage(0);
$serial->sendMessage(0);

$serial->deviceClose();
...



Antworten PM Alle Chronologisch
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung