Hallo zusammen,
nach meinen ersten erfolgreichen Gehversuchen in der seriellen Kommunikation mit CREAD / CWRITE bin ich nun auf ein Problem gestoßen, bei dem ich mal euren Ratschlag bräuchte:
Ich kommunizere mit einem PC und benutzt dort Hyperterminal. Ich kann mit CWRITE erfolgreich Daten an den PC schicken und auch mit CREAD einen EINZELNEN Wert einlesen und den Roboter damit verfahren. Nun möchte ich die Werte so lange einlesen, bis eine 0 vom PC gesendet wird.
Also habe ich das CREAD in eine Schleife gepackt. Beim ersten Durchlauf klappt auch alles wunderbar, beim zweiten Durchlauf wartet der Zeiger am WAIT FOR $DATA_SER3>0. Nach dem Senden der Daten vom PC geht er auf CREAD, bleibt aber dann mit der Fehlermeldung: Keine Daten / Variablen mehr vorhanden stehen.
Sowohl in der Telnet-Ausgabe als auch im Logfile sind (für mich) keine Fehler erkennbar.
Wo kann der Fehler liegen?
Vielen Dank schon mal für eure Hilfe!
Gruß,
Stephan
Hier der verwendete Code:
MW_T = #SYNC
MR_T = #COND
TIMEOUT = 10.0
OFFSET = 0
REPEAT
COPEN(:SER_3, HANDLE)
WAIT FOR $DATA_SER3>0
CREAD(HANDLE, SR_T, MR_T, TIMEOUT, OFFSET, "%d", LOOPCNT)
ZWPOS = $POS_ACT
ZWPOS.X = ZWPOS.X + LOOPCNT*10
PTP ZWPOS
CCLOSE(HANDLE, SC_T)
UNTIL LOOPCNT == 0
Der Auszug aus der Logdatei (enthält auch die Positionsdaten, die ich an den PC sende):
==== Logging serial communication V1.0 ====
Log Date 28.7.8 : 12:48
==== receive > send < ====
COM 1: no action
COM 2: no action
COM 3: Protocol# 4
COPEN
< <11> +445.0000 +0.0000 +615.0000 +0.0000 +90.0000 +0.0000
CCLOSE
< <13>
COPEN
< <11>
> 9
CCLOSE
< <13>
COPEN
< <11>
> 9
CCLOSE
< <13>
COPEN
< <11>
> 9
COM 4: no action