Problem Serielle Schnittstelle

Hallo liebes Forum,

ich versuche eine elektronische Last über die serielle Schnittstelle zu steuern, leider komme ich nicht weiter und benötige Eure Hilfe!
Ich habe einen COM-Sniffer (Advanced Serial Port Monitor) benutzt und mit diesem klappt die Kommunikation (beide Richtungen) ohne Probleme.
In IPS habe ich einen Serial Port angelegt und eine Register Variable. Bei der Register Variable habe ich den Serial Port als übergeordnete Instanz hinzugefügt. Der Register Variable habe ich folgendes Zielscript gegeben:


<?
$datenFrame = IPS_VALUE;
IPS_LogMessage($IPS_SELF, $IPS_VALUE);
?>

Dann habe ich ein weiteres Script zum Ansteuern angelegt:


<?
RegVar_SendText(13084,"MEAS:VOLT?".chr(0x0A));
?>

Sende ich nun an den ComPort, wird der Befehl ausgeführt, aber IPS empfängt die Antwort nicht! Das Zielscript der Register Variable wird gar nicht erst aufgerufen. Habe ich noch etwas vergessen?
Schließe ich nach dem Senden den COM-Port und öffne diesen im COM Sniffer, so wird die Antwort dort sofort empfangen.

Wer weiss Rat?

Danke,
Gruß
Tobias

Öffne dir mal den Debug Reiter in der SerialPort Instanz. Dann kannst du genau sehen, was gesendet und empfangen wird.

paresy

das hatte ich schon gemacht, dort sehe ich nur was gesendet wird - ich sehe nicht, das etwas empfangen wird.

Gruß
Tobias

Nur geraten: Kann es sein, das das Gerät RTS/CTS oder DTR Handshake oder als Zeilenende CRLF statt nur LF haben will?

Im ersten Script sollte statt IPS_VALUE $IPS_VALUE stehen. Die Daten kommen von der IO-Instance auch nicht unbedingt an einem Stück. Deshalb ggfls. noch einen Cutter mit Schnitt am Zeilenende dazwischenschalten

Tommi

vielen Dank für die Antwort, dass fehlende $ war nur ein Tippfehler im Forum, im Script war es korrekt.
Ich habe mit dem Gerät über das Terminal Programm ja ohne Handshake usw. problemlos kommuniziert. Das mit dem Cutter könnte sein, wobei es mir so aussieht als wenn alles am Stück kommt. Das Zielscript der Register Variable wird halt gar nicht erst ausgeführt, dass sollte doch in jedem Fall ausgeführt werden oder?

Gruß
Tobias

Der Cutter gibt nur Daten weiter wenn seine Regeln zutreffen. Auch der Cutter hat ein Debug-Fenster.

auch im Cutter-Debug Fenster keine Ausgaben!
Wenn ich aber keinen Cutter verwende, müsste ja dennoch das Script der RegVariable getriggert werden oder?

Wenn ich das ganze mit Advanced Serial Port Monitor mache sieht das so aus:

<20140306174133.951 TX>
MEAS:VOLT? [len=10]
<20140306174133.979 RX>
2.361E+0 [len=8]
<20140306174133.979 RX>
<LF>

und hier als Hex:

4D 45 41 53 3A 56 4F 4C 54 3F 0A
32 2E 33 36 31 45 2B 30 0D 0A

Meine RegVar_SendText Anfrage an das Gerät ist im Hex Code identisch (geprüft über Serial Port Debug) und das Gerät antwortet ja auch, denn wenn ich den Port in IPS schließe und im Port Monitor öffne, kommt immer die Antwort der letzten Anfrage aus IPS automatisch rein.
Aus irgendeinem Grund kann IPS den Inhalt nicht empfangen und das Script der RegVar wird nicht ausgeführt.

Gruß
Tobias

Hallo Tobias,

solange am seriellen Port(Empfangsrichtung) keine Daten anstehen, wird auch kein Script getriggert.
Wenn es mit deinem externen Programm geht, dann stimmen deine Einstellungen in IPS nicht.

Tommi hat es ja schon angedeutet, hast Du es denn mal probiert!

ich habe das Problem gelöst! Die Last speichert irgendwie nicht die Einstellungen und daher stand Float Control wieder auf ON…
Nun gehts, danke für Eure Hilfe!

Gruß
Tobias