hwcom senden müll - gelöst ... aber wichtig ! Kategorie: Sonstige Hardware (von Helmut Scherzer - 5.11.2004 22:05) | ||
| ||
Dieses Problem ist gelöst. Aber wichtig für die 'Nachwelt' Folgendes Programm funktoniert ... thread main { string s; byte SendBuf[10]; stports.init(); hwcom.init(); hwcom.setspeed(hwcom.SPEED_9600); while(1) { SendBuf[0] = 0x01; SendBuf[1] = 0x01; SendBuf[2] = 0x02; SendBuf[3] = 0x03; hwcom.send(SendBuf[0], 4); // wait until keypressed ... usw. } Folgende kleine �nderung erzeugt nur noch Müll in HWCOM function SendBytes() { byte SendBuf[10]; SendBuf[0] = 0x01; SendBuf[1] = 0x01; SendBuf[2] = 0x02; SendBuf[3] = 0x03; hwcom.send(SendBuf[0], 4); return; } // main ... usw. while(1) { SendBytes(); // wait until keypressed ... usw. } Warum ? - Dauerte leider einige Stunden, ist aber ganz klar. SendBuf wird im zweiten Fall als lokale Variable angelegt. hwcom hat lt. Forum (Andre hat's oft erklärt) einen eigenen Thread und verwendet SendBuf nachdem wir schon wieder aus der function SendBytes zurück sind. Ergo ist der Stack geschrottet und der hwcom Thread findet die bytes nicht mehr. Ein gefährlicher Fehler, den man machen kann und viel Frust, bis es klar wird. Deswegen wollte ich auf diesen Fehler hinweisen. Aber Problem ist nun gelöst, auch Dank vieler Einträge zu diesem Thema im Forum, wo ich auf die Idee kam, da� hwcom einen eigenen Thread benutzt. (Der Fall lohnt sich ggfs. in irgendeine Dokumentation aufzunehmen - Mein Vorschlag !!!!! Vielleicht direkt in den Header von HWCOM.C2 schreiben ....) Gruss ... Helmut | ||
Antwort schreiben Antworten: Re: hwcom senden müll - gelöst ... aber wichtig ! (von André H. - 8.11.2004 13:45) Re: hwcom senden müll - gelöst ... aber wichtig ! (von Helmut Scherzer - 8.11.2004 21:16) Re: hwcom senden müll - gelöst ... aber wichtig ! (von krassos - 8.11.2004 21:43) Re: hwcom senden müll - gelöst ... aber wichtig ! (von krassos - 6.11.2004 10:30) |