Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: COM Ausgabe aus mehreren threads bedienen? Lösung Kategorie: Programmierung (von André H. - 28.11.2003 2:21)
Als Antwort auf COM Ausgabe aus mehreren threads bedienen? Lösung von Klaus - 27.11.2003 23:06

Hallo Klaus,

Es gibt eine sehr viel einfacher Möglichkeit, aus mehreren Threads
schreibend auf hwcom zuzugreifen, ohne daÃ? es zu einem Durcheinander kommt:
...
Zeile =123;
wait cap.Capture(0);
 // Hier die Ausgabe
 hwcom.print("Thread xy")
 hwcom.num(Zeile);
 hwcom.ret();
cap.Release(0);
...


Wichtig ist hier, da� hier alle Augaben über das selbe Capture vom Modul cap.c2
abgewickelt werden. (Hier das Capture mit dem Index 0)

MfG André H.


> Hallo André,
>
> ich war offensichtlich nicht der Einzige, der Probleme mit dem Datenaustausch
> zwischen CC2 und Computer über die hwcom hatte.
>
> Ich stand vor dem Problem, das ich
> 1. mein Prog mit Ausgaben im Terminalfenster debugge
> 2. eine Visual Basic Apps schreibe, um Stati auf dem Com darzustellen
> 3. (wenn ich mal viel zeit habe) eine Webseite baue, und über die Com die
>    CC2 fernsteuern möchte (z.B. damit meine Gartenberegnung von einem
>    Bekannten über das Web gemacht werden kann o.ä.
>
> Fakt ist, dass ich natürlich in verschiedenen threads Testausgaben im Terminalfenster  
> generiere, bzw. unterschiedlich threads für verschiedene Funktionen habe. Als ich dann
> Die Ausgabe mit put, print usw, gemacht habe, bekam ich die üblichen Probs.
>
> Deine Antworten haben mir sehr weitergeholfen und ich habe für mich folgende Lösung gefunden,
> die ich einfach gerne mal posten will, falls noch jemand  soetwas machen möchte. Funzt prima.
> Ich erstelle einfach ein neues Modul mit folgendem Code und rufe die Ausgabebefehle nur noch über
> das neue modul auf und nicht direkt aus hwcom.
>
> byte flagw;
> byte work;
>
> byte   toputbyte;
> string toputstring;
>
> function put (byte c) {
>    capture flagw;
>    wait work==0;
>    toputbyte=c;
>    work=1;
>    release;
>    }
>
> function print (string s) {
>    byte x;
>    capture flagw;
>    wait work==0;
>    toputstring=s;
>    work=2;
>    release;
>    }
>
> function ret() {
>    capture flagw;
>    wait work==0;
>    work=3;
>    release;
>    }
>
> thread main {
>   work=0;
>   run 32;
>   loop {
>    wait work>0;
>    if work==1 hwcom.put(toputbyte);
>    if work==2 hwcom.print(toputstring);
>    if work==3 hwcom.ret();
>    work=0;
>   }}
>
> Ich hoffe es kann jemand gebrauchen, wenn er wie ich mal im Forum sucht.
>
> GruÃ?
> Klaus


Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: COM Ausgabe aus mehreren threads bedienen? Lösung (von Klaus - 7.12.2003 18:51)