www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik String-Übertragung über USB (Borland C++)


Autor: Horst Peter (luke_duke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Marius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Horst Peter (luke_duke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die fixe Antwort. Ich werde mal sehen, ob ich den Fehler 
mit den Tips aufspüren kann.

Autor: Horst Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.