Ich habe mit Hilfe der STM USB-FW Lib einen virtuellen COM-Port
erstellt. Das senden vom µC zum PC/Terminalprogramm per USB klappt wie
erwartet.
Beim senden vom PC kann ich die Zeichen zwar empfangen, aber nicht
feststellen, wenn neue Zeichen anliegen. Also, ich drücke Taste X im
Terminalprg., dann wird usb_read_byte = 1 und im usb_buffer[0] steht
dann das 'X'. Wäre auch ok, aber beim nächsten Schleifendurchlauf ist
usb_read_byte immer noch 1, obwohl am PC nichts mehr gesendet wurde.
1 | While(1) {
|
2 | usb_read_byte = USB_SIL_Read(EP3_OUT, usb_buffer);
|
3 | if (usb_read_byte) {
|
4 | // Mind. 1 Byte empfangen
|
5 | sprintf(lcd.buffer,"Empfangen: %u",usb_read_byte);
|
6 | printf_tft(1,60,lcd.buffer);
|
7 | // Hier Buffer-Daten auswerten
|
8 | ....
|
9 |
|
10 | SetEPRxValid(ENDP3);
|
11 | } else {
|
12 | printf_tft(1,60,"Keine Daten empfangen");
|
13 | }
|
14 | }
|
Habe mich weitgehend an das Bsp. der Artikelsammlung gehalten:
http://www.mikrocontroller.net/articles/STM32_USB-FS-Device_Lib#Aubau_der_Beispielimplmentierung
Read-Funktion wird dort allerdings nicht verwendet.
Ich dachte, der Aufruf von USB_SIL_Read setzt den Buffer automatisch
zurück. Offenbar nicht der Fall. Wie handelt man das korrekt?