Re: Quelltext Kategorie: Programmierung (von Cris, http://www.crisullmann.de - 1.08.2003 17:45) | |
Als Antwort auf Quelltext von LittleHouse - 1.08.2003 7:34
| |
Hallo, ich habe mir Deine Threads nicht einzeln angeschaut. Du hast meiner Ansicht nach im main-Thread schon ein Problem. thread main { if (variable.init == 0) { funktionen.thread_Init(); if (variable.init == 1) station_lcd.print("Bereit..."); } run threads.rxd; run threads.write_buf; run threads.read_buf; } Der gesamte Programmtext zwischen den geschweiften Klammern der thread-Anweisung wird immer wieder durchlaufen. D.h. die threads rxd, write_buf, read_buf werden bei jedem Aufruf von run ein weiteres mal gestartet. Das ist sicherlich das was Du willst. Ich sehe in Deinem Programm noch gar nicht den Sinn der vielen threads. Wenn ich Deinen Programmtext richtig verstehe, möchtest Du mit der Anweisung run ... den thread einmal ausführen. Wenn das so ist, ist Dein Programm falsch. Du musst dann aus Deinen thread rxd, write_buf und read_buf ganz normale Funktionen machen. Das thread-Konzept bietet sehr schöne Möglichkeiten bei parallel ablaufenden Prozessen. Jedoch sollte man sich sehr genau �berlegen ob man das wirklich braucht. Manchmal ist es viel einfacher, ein Programm sequentiell abarbeiten zu lassen. Man wei� dann genau, welche Funktion wann auf welche Variable zugreift. Dein neuer main-thread könnte so aussehen: thread main { funktionen.thread_Init(); loop { station_lcd.print("Bereit..."); threads.rxd(); threads.write_buf(); threads.read_buf(); } Cris PS Hast Du mal überprüft, ob Dein neues serielles Kabel auch die Handshake-Signal CTS und RTS zwischen PC und CC2 austauscht? Meine Seite: http://www.crisullmann.de | |
Antwort schreiben Antworten: |