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) |