Einsetzen von Captures Kategorie: Programmierung (von Newbie - 15.09.2011 10:06) | ||
| ||
Ich vernetze 2 CC2 über RS232 (CAN ist nicht möglich in dem Umfeld) Dabei funktioniert alles eigentlich ganz gut, ausser das ich konkurrenzierende Zugriffe habe. Also muss ich dies wohl über Captures in den Griff bekommen. Die eine CC2 sendet regelmässig Statusanfragen, getaktet mit ca. 1 Sekunde Ab und zu sollen dann Kommandos ausgeführt werden. Die Struktur ist folgende: Modul Global: long Antwort; Modul Kommunikation: function Kommando1 returns long {hwcom send&receive stuff....;return timer} function Kommando2 returns long {hwcom send&receive stuff....;return timer} function Status {hwcom send&receive stuff....;return timer} thread main loop { cap.Capture(0); Global.Antwort=Status(); cap.Release(0); sleep 1000; } Modul Regelung: thread main loop {if x==Event {cap.Capture(0); Global.Antwort=Kommunikation.Kommando1(); cap.Release(0);} if x=Event2 {cap.Capture(0); Global.Antwort=Kommunikation.Kommando1(); cap.Release(0);} sleep 1000; } Wenn ich jetzt mit einem Terminalprogramm dies manuell teste, dann senden die Threads trotzdem durcheinander.. Was habe ich falsch gemacht? cap.init() wurde ausgeführt. Ich habe das Problem hier strukturell beschrieben und nicht den detailierten Code. | ||
Antwort schreiben Antworten: Re: Einsetzen von Captures (von André H. - 15.09.2011 11:31) |