Kommunikationsprotokoll PC <-> uC für Tests und Logging

OP #6236410
Lesenswert?

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!
Gast #6236701
Lesenswert?

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.
Gast #6236708
Lesenswert?

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.
Gast #6237627
Lesenswert?

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....
Gast #6237772
Lesenswert?

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.
Gast #6237788
Lesenswert?

> 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
#6242606
Lesenswert?

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.
Gast #6242650
Lesenswert?

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/
Gast #6243336
Lesenswert?

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...

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