Hallo, ich bin auf der Suche nach einem Protokoll, um zwischen dem Host (PC) und dem uC (z.B. STM32) über USB kommunizieren zu können. Mein Wunsch wäre auf der uC Seite eine zentrale Stelle, die Daten an die entsprechenden Module weitergibt, und auch die zurückgegeben Daten wieder an den Host zurück schickt. Nett wäre so etwas wie Callback-Funktionen, wodurch sich die Module nur bei dem Kommunikationsmodul registrieren müssen, und dann bei einer entsprechenden Nachricht die Callback Funktion aufgerufen wird. Und super wäre auch ein "Continuous-Mode", mit dem ich auch Messwerte kontinuierlich an den Host übergeben kann (z.B. AD-Werte). Bevor ich das Rad jetzt das zweite/dritte mal erfinde und alles selber schreibe: habt Ihr so etwas im Einsatz oder etwas im Hinterkopf, was mir helfen würde? Vielen Dank schon einmal im Voraus!
Oz z. schrieb: > ich bin auf der Suche nach einem Protokoll, um zwischen dem Host (PC) > und dem uC (z.B. STM32) über USB kommunizieren zu können. Um was für Datenraten geht es dir dabei. Reicht auf PC-Seite eine (virtuelle) serielle Schnittstelle?
Hallo, danke für Deine Antwort. Ja, das reicht mir völlig aus!
Oz z. schrieb: > Bevor ich das Rad jetzt das zweite/dritte mal erfinde und alles > selber schreibe: habt Ihr so etwas im Einsatz oder etwas im Hinterkopf, > was mir helfen würde? In der Arduino Welt gibt es den CmdMessenger. Dieser deckt einiges von deinen Anforderungen ab. Evtl kannst du dir da was abschauen.
Dazu fällt mir spontan MQTT ein - das geht allerdings in der Regel über Ethernet. Für serielle Schnittstellen gibt es Adapter-Programme. Installiere Dir einen MQTT Broker auf deinen PC, der zeigt Dir die Nachrichten dann im Web-Browser an und du kannst auch welche per Eingabeformular an den µc senden. Ansonsten rate ich auf jeden Fall zu einem Text-Basierten Protokoll, dass man man notfalls mit einem simplen Terminalprogramm oder copy Befehl nutzen kann.
Aus http://www.serialcominstruments.com/SerialComInstruments Doku.pdf Beitrag "Daten von der seriellen Schnittstelle einfach darstellen" #nMn< # - Identifier Messwertübertragung Start n - Instrumenten-Nummer M - Identifier Messwert Start m - Messwert < - Ende Messwert Mit realen Werten dann z.B. so : #41M15.345< in Klartext: schicke an Instrument Nr. 41 den Wert 15,3
Hallo, danke für die Tips, also der CmdMessenger sieht schon echt interessant aus, den werde ich mir mal genauer ansehen!
Stefan ⛄ F. schrieb: > Dazu fällt mir spontan MQTT ein Bloss nicht. Völlig unbrauchbar dieser Subscribe/Publish Quatsch für solche Anwendungen. >Fall zu einem Text-Basierten Protokoll Denkbar. Aber warum? Damit man es lesen kann? Wer tut das noch, wenn die unterste Kommunikationsschicht (Übertragung) sauber funktioniert....
Matthias L. schrieb: >> zu einem Text-Basierten Protokoll > Denkbar. Aber warum? Damit man es lesen kann? Genau. Und damit man nicht zwei Baustellen gleichzeitig hat, weil man beiden Enden des Kabels sein eigenes erstes Kommunikationsprotokoll entwickelt, dass man eben nicht mit einem Terminalprogramm debuggen kann. Daran scheitern nämlich viele.
> habt Ihr so etwas im Einsatz oder etwas im Hinterkopf, > was mir helfen würde? Such mal nach Modbus. Das ist ein in der Industrie verbreitetes Protokoll wo du den Standard einfach so runterladen und lesen kannst. Das hat gleich drei Vorteile: 1. Deine Protokollbeschreibung ist schon fertig. 2. Das Protokoll ist seit vielen Jahren in der Praxis bewaehrt und du machst nicht irgendwelche dummen Anfaengerfehler die du hinterher bereust. 3. Es gibt Diagnosesoftware die du auf den Bus klemmen kannst. Das hilft beim debuggen. Olaf
Ich stand vor einiger Zeit vor einem ähnlichen Problem, mir war aber Modbus zu unpraktisch, da man direkt mit irgendwelchen Registern hantieren muss. Deshalb hab ich nun ein recht flexibles Protokoll basierend auf JSON implementiert, siehe hier: https://libre.solar/thingset/ Eine embedded C++ Bibliothek mit Beispiel: https://github.com/LibreSolar/thingset-device-library Man kann über das Protokoll sowohl Daten lesen und schreiben als auch eine Funktion aufrufen (intern entweder mit einer Variablen oder einem callback verknüpft). Diverse Beispiele sind in der Doku zu finden.
Stefan ⛄ F. schrieb: > Installiere Dir einen MQTT Broker auf deinen PC, der zeigt Dir die > Nachrichten dann im Web-Browser an und du kannst auch welche per > Eingabeformular an den µc senden. hhhhääää, was wird da wie im Browser angezeigt und was für ein Eingabeformular?
Stefan ⛄ F. schrieb: >> Installiere Dir einen MQTT Broker auf deinen PC, der zeigt Dir die >> Nachrichten dann im Web-Browser an und du kannst auch welche per >> Eingabeformular an den µc senden. 50c schrieb: > hhhhääää, was wird da wie im Browser angezeigt und was für ein > Eingabeformular? Als ich das neulich mal ausprobiert hatte, stieß ich auf einen MQTT Broker mit Webinterface, wo man die ganze Nachrichten sehen konnte und auch welche manuell erzeugen konnte, indem man ein Formular ausfüllt. http://activemq.apache.org/components/classic/
Stefan ⛄ F. schrieb: > Als ich das neulich mal ausprobiert hatte, stieß ich auf einen MQTT > Broker mit Webinterface, wo man die ganze Nachrichten sehen konnte und > auch welche manuell erzeugen konnte, indem man ein Formular ausfüllt. > > http://activemq.apache.org/components/classic/ ...ok, activemq kannte ich noch nicht, aber eine Web-Gui gehört aber nicht zum normalen Standard eines MQTT-Brokers. Deshalb ist deine Anwort schon etwas verwirrend...
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.