Hallo,
ich will ein Messgerät ansteuern um verschiedene Messungen automatisch nacheinander durchzuführen…
Die Baudrate ist fest auf 9600 eingestellt. Das verwendete Protokoll ist stets No parity, 8 Databits, 1 Stopbit (N,8,1)
Da nur zwei Leitungen zur Verfuegung stehen, wird das X_ON / X_OFF-Protokoll verwendet.
Da die Verarbeitung der Schnittstelleninformation ueber Interruptsteuerung erfolgt, ist das Pruefgeraet immer empfangsbereit.
Nach jedem CR wird ein XOFF gesendet.
Dann wird der Befehl ausgewertet und beantwortet. Antworten, die Strings oder Tabellen beinhalten, koennen durch Cntr-C abgebrochen werden. Wenn ein Befehl verarbeitet ist wird wieder XON gesendet. Das kann je nach Befehl bis zu mehreren Sekunden dauern. Ein neuer Befehl darf erst nach
XON gesendet werden.
Derzeit steuere ich das Gerät über ComPort_SendText und empfange per com-port <–> cutchars <—> register variable (mit append)
Der IPS Com-Port steht auf com1, 9600 baud, 8 data bits, 1 stop, parity: none, Flowcontrol: Software.
Muss ich da was ändern? DTR und RTS aktivieren?
Wie kann ich vor dem nächsten Befehl auf XON abfragen?
Was ich bisher gemacht habe:
$id = 20934;
// Remote Modus einschalten
ComPort_SendText($id,"tas!ron".chr(13).chr(10));
IPS_Sleep(1200);
// Tastenstellung abfragen (nicht so wichtig)
ComPort_SendText($id,"tas?".chr(13).chr(10));
IPS_Sleep(1200);
// Hochspannungsprüfung mit 500 Volt 0,5s Rampe hoch 10s halten 0,5s Rampe runter
ComPort_SendText($id,"iso!h 50,5,10,5".chr(13).chr(10));
IPS_Sleep(1200);
// Hochspannungsprüfung starten
ComPort_SendText($id,"mes!uhv".chr(13).chr(10));
IPS_Sleep(18000);
// Werte auslesen
ComPort_SendText($id,"wer?".chr(13).chr(10));
IPS_Sleep(1200);
// Remote-Modus abschalten
ComPort_SendText($id,"tas!rof".chr(13).chr(10));
IPS_Sleep(1200);
$inbuf = Trim(GetValueString("Messgeraet"));
echo $inbuf."
";
echo "-----------";