Gast
#2090465
Hallo Ich bin nun schon seit fast einer Woche dabei den folgenden Fehler zu Suchen. Rahmenbedingungen: Auf dem uRechner läuft ein Programm, welches Messwerte erfassen soll. Diese werden in Arrays gespeichert. Ein kleine C# Sharp Programm soll die Messerte auslesen und in einer Datei Speichern, welche mittels Ajax auf eine Webseite geladen wird. Auf dem uRechner sind Baudraten und Parity so wie Stop bits richtig gesetzt. Es wird ein 20MHz eingesetzt. Die Taktrate habe ich mit _delay_ms(1000) und einer blinkenden LED schon getestet. das Problem: Sende ich ein bestimmtes Zeichen an den Controller beginnt dieser damit 254 Byte an den PC zu schicken. Mittels hTerm klappt dies Wunderbar. Bei C# kommen aber immer unterschiedlich viele Zeichen an. meistens so an die 120 bis 180 und dann hört es einfach auf. Mitlerweile habe ich das Programm schon so angeändert, dass immer nur 25 byte übertragen werden und der uRechner dann erst auf eine Checksumme des PCs Wartet. Aber selbst hier treten sehr oft Checksummen Fehler auf oder es kommen nicht alle 25 Byte am PC an. Hier nochmal. Mit hTerm kein Problem. In Visual C# nutze ich die fertige SerialPort Klasse. Es sind 8 bit Daten, 2 Stop bits und keine Parität eingetragen. Der Puffer ist auf den Standartmäßigen 4kb. Es ist keine Timeout überwachung. Die Daten lese ich mit dem Interrupt aus, welches ausgelöst wird, wenn sich ein neues byte im Puffer befindet. Es wird dann immer nur ein byte mit .Readbyte() aus dem ComPort gelesen. Trotzdem gehen jede Menge Daten verloren oder kommen fehlerhaft an. Die einstellungen bei Visual C# sind genau die gleichen wie bei hterm. Was vieleicht noch eine Interessante Information ist, ist dass es auf meinem Desktop PC auch mit C# wunderbar klappt. Auf allen anderen Laptops allerdings nicht. Die USB-Serial Adapter sind die gleichen mit gleichem Treiber und gleichem OS. Am ATmega644 ist ein MAX232 vor den UART geschaltet. Ich hoffe mir kann jemand helfen. Bin echt am verzweifeln. Ich würde auch euf eine andere Programmiersprache umsteigen, wenn mir jemand die Einbindung der Bibliotheken erklährt. Vieleicht gibt es auch ne Alternative zur .net Klasse von C#. Ein Umsteigen auf Visual C++ oder VB wird wahrscheinlich keinen sinn machen, da diese ja die gleiche Klasse verwenden. Danke für eure Bemühungen.