USB Verbindung

OP #580669
Lesenswert?
• ▲
▼
Hallo liebe Leute,

hat schon jemand Erfahrung mit der CDC-Firmware von Microchip für den 
PIC18xxxx sammeln können? In dem Falle könnte ich eine kleine Hilfe 
gebrauchen. Folgendes:
Die CDC emuliert eine RS232 über USB, der µC enthält die komplette HW 
für USB. Ein Programm auf dem µC läuft auch schon, das Befehle 
interpretiert. Verbindet man sich vom PC aus mit einem Terminal-Programm 
(z.B. Hyperterm) zum µC, dann ist alles ok: Kommando senden -> passende 
Antwort vom µC.

Ein selbstgeschriebenes PC-Programm hingegen scheitert. Offensichtlich 
scheint immer nur das 1. Zeichen anzukommen. Verbinde ich das 
PC-Programm mit einem weiteren PC mit Terminal, kann ich aber sehen, 
dass die komplette Zeichenfolge gesendet wurde (Vom selbstgeschriebenen 
PC-Programm).

Ein erster Verdacht: Ein Timing-Problem (Hand-Eingabe, automatisierte 
Eingabe), oder zu kleiner Buffer der USB-Firmware. Aber, dann habe ich 
vom Terminal-Programm aus eine Datei mit Befehlen gesendet, diese wurde 
wie erwartet verarbeitet, die Antworten vom µC waren ok.

Was übersehe ich?

Das PC-Programm ist mit VC 6 (WIN-API) geschrieben, das µC-Programm mit 
C18.

Gruß und vielen Dank im Voraus,

Christian
OP #581268
Lesenswert?
• ▲
▼
Problem gefunden:
Die Funktion getsUSBUSART() um einen String vom USB einzulesen zerstört 
den Buffer, wenn man nicht alles einliest, was gerade an Daten anliegt. 
Bsp.:
getsUSBUSART( buffer, 1 ); und 5 Zeichen im USB-Buffer
-> 1 Zeichen wird geholt, die nächsten 4 sind nach Aufruf der Funktion 
verloren

Beim Handbetrieb war das kein Problem, da ich niemals so schnell tippen 
kann, dass ich 2 Zeichen schaffe, während der µC nur 1mal durch den Loop 
geht, daher hat er immer alles gelesen. Bei Programm-gesteuerter 
Funktion sieht das schon anders aus.

Gruß

Christian

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.