Schönen guten Tach, ich bin gerade dabei, für die Kommunikation zwischen einem PC und einem ATmega128 eine grafische Oberfläche zu basteln. Die Kommunikation an sich läuft über String-Vergleiche und funktioniert mit einer Terminal-Software (Super-Terminal von Bray) einwandfrei. Das Borland-C++-Programm verwendet die Komponente TComPort um Strings über einen USB-Port zu schicken oder zu empfangen. Im Prinzip funktioniert auch das. Das Problem ist nun, daß nicht alle Strings vom ATmega vollständig ankommen. Es kann z.B. passieren, daß es zehn oder zwanzig Mal klappt und beim nächsten Versuch kommt nur ein Fragment der Nachricht an. Hat jemand eine Idee woran es liegen könnte oder schonmal ein ähnliches Problem gehabt? Danke für alle Antworten, Nihil Baxter
das kann daran liegen, dass deine usb->seriell schnittstelle die strings fragmentweise raus schmeisst. Je nachdem was du da benutzt und wie es eingestellt ist kann es sein das die schnittstelle erst nach X bytes die Daten an deinen mega weiter gibt. Oder erst nach 0,X sekunden. Eine möglichkeit wäre mal länger zu warten oder zu überprüfen ob das bei größeren Datenmengen auch passiert. Wenn es so ist, dass deine USB schnittstelle nur alle X bytes was raus haut dann solltest du mal schauen ob es einen flush befehl auf PC seite gibt der dafür sorgt das die daten auch zum mega geschoben werden
Vielen Dank für die fixe Antwort. Ich werde mal sehen, ob ich den Fehler mit den Tips aufspüren kann.
So. Falls es denn jemanden interessiert, ich habe das Problem lösen können. Erstmal nochmal Dank an Marius. Die Hinweise haben tatsächlich geholfen. Nachdem ich alle möglichen flush-Befehle ausprobiert habe, fiel mir dann doch auf, das es viel einfacher ist. Ungeschickterweise habe ich immer ganze Strings geschickt. Der µC konnte die einzelnen Zeichen aber wohl nicht schnell genug verarbeiten. Daher wird jetzt alles mit kleinen Pausen einzeln gesendet. Hätte man früher drauf kommen können. Oder müssen. Aber man kann ja nicht alles wissen. http://www.nichtlustig.de/comics/full/040816.jpg
Hallo, Ich schreibe gerade an einem ähnlichem Projekt mit einem AVR - Mikrocontroller. Ich möchte dem Projekt nun eine serielle Schnittstelle geben. Den Controller programmiere ich in 'C'. Ich möchte über die serielle Schnittstelle (eigentlich USB - Schnittstelle ... ist der FT232 drin ... Treiber sind auf dem Pc installiert) Daten (z.B. Float-Werte) senden und diese Daten dann in meinem C++ Programm verarbeiten z.B. inform einer Messwerttabelle, Grafik etc. Zum Erstellen der Software auf dem PC wird der Borland Builder 6 verwendet. Nun habe ich mir es wie folgt vorgestellt: Ich drücke auf einen Button "Lesen". Dann werden die Daten in einer bestimmten Tastrate ausgelesen und in einem Array gespeichert. Ich suche also nach einer "Funktion", welche es mir erlaubt den seriellen Port auszulesen und nach einer Funktion die es mir erlaubt über diese Werte zu senden. Gruß Timo
Hallo, Vielleicht kann dir, das hier helfen. Ist aber für den Borland Builder 5. Müsste aber klappen. Darin sind die wichtigsten Funktionen enthalten.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.