Hallo, im Prinzip funktioniert die USB-CDC Verbindung vom STM32 zum PC und zurück. Jetzt hätte ich noch gern, dass beim Verbinden einmalig ein Menü erscheint. Mein Ansatz war zyklisch mit CDC_Transmit_FS Daten zu senden, bis die Funktion USBD_OK zurück gibt. Leider wird danach gar nicht mehr gesendet. Weiß jemand den passenden Interrupt der dieses Verhalten ermöglicht? Also beim ersten Anstecken, oder auch nach dem wieder öffnen der USB Schnittstelle durch Cutecom das Menü an Cutecom sendet? Danke fürs denken ;)
Das geht nicht. Der PC meldet CDC-ACM Geräten nicht, dass das Terminal geöffnet wurde, und das Gerät kann es auch nicht abfragen. CDC_Transmit_FS kann auch Erfolg signalisieren obwohl kein Terminal offen ist, die Daten gehen dann ins Nirvana. Das hatten wir hier schon mal ausführlich diskutiert... Du musst im Terminal irgendwas senden oder die Flusskontrollleitungen setzen. Oder du sendest das Menü immer wieder in Endlosschleife, bis man eine Auswahl trifft. Dann noch ein Timeout, um von Untermenüs automatisch wieder ins Hauptmenü zurück zu kehren. Oder du implementierst dein eigenes USB-Protokoll mit einer eigenen PC-Anwendung, dann stellen sich solche Probleme nicht...
:
Bearbeitet durch User
Das wäre sehr Schade. Menü in Endlosschleife wollte ich gerade vermeiden. Ich dachte einer der vielen schönen Interrupts könnte da helfen....
pegel schrieb: > Ich dachte einer der vielen schönen Interrupts könnte da helfen.... Leider nein, wenn der PC nichts entsprechendes sendet kann auch kein Interrupt kommen. Beim echten RS-232 merkst du ja auch nicht wenn man ein Terminal-Programm öffnet.
Traditionell drückt der Benutzer eine Taste, sobald er mit dem uC reden will. Wenn das nicht gerade Shift ist, oder so, kommt ein Zeichen im uC an. Manche Terminalemulatoren können beim Start auch von sich aus etwas senden. Früher musste so ein Programm ja das Modem konfigurieren und wählen lassen.
Wenn die Applikation am PC die comsettings ändert beim Starten (z.B. baudrate) kannst du darauf einmalig reagieren.
Danke. In der Tat habe ich mal was mit Parameter Änderung überflogen. Aber nicht kapiert und verworfen. Ich glaube das war etwas in der Art. Habe es jetzt aber anders gelöst.
Für sowas ist die DTR-Leitung (Data Terminal Ready) vorgesehen. Beim Arduino z.B. ist sie mit dem RESET-Pin verbunden. Bei CDC sollte die per set controle line state ausgewertet werden können.
pegel schrieb: > Jetzt hätte ich noch gern, dass beim Verbinden einmalig ein Menü > erscheint. https://man7.org/linux/man-pages/man7/udev.7.html
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.