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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren