- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 15

Thema: Brauche Hilfe bei Algorithmenentwicklung (Kommunikationsprotokoll)

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473

    Brauche Hilfe bei Algorithmenentwicklung (Kommunikationsprotokoll)

    Hallo allerseits

    Folgende:
    Ich entwerfe momentan ein Kommunikationsprotokoll damit sich ein Laptop und ein Mikrocontroller verstehen. Das Ganze stelle ich mir folgendermaßen vor:

    Ein Telegramm (ich hoffe der Fachterminus ist richtig) besteht aus einem "Kopf" aus vier Bytes und einem Rumpf, der zwischen 0 und 255 Bytes enthält.
    xxxx xxxB | xxxx xxxx | xxxx xxxx | RRRR RRRR

    Bedeutet:
    B - Bestätigungsbit
    R - Anzahl der Bytes im Rumpf
    x - Freie Bits oder weitere Informationen über die Daten im Rumpf, für die eigentliche Kommunikation jedoch hier nicht wichtig

    Der Kommunikationsablauf soll wie folgt aussehen:
    Sender: sendet ein Telegramm wie beschrieben, mit B=0

    Empfänger: wartet auf Daten, wenn alle Daten beisammen sind (Anzahl der Bytes nach dem Telegrammkopf stehen ja in R). Kommen zu lange keine/nicht genug Daten rein (Timeout z.B. 100ms), wird die Nachricht verworfen. Sind alle Bytes vollständig und rechtzeitig im Speicher versammelt, führt der Empfänger eine CRC-Prüfung durch und sendet das Ergebnis zurück.

    Sender: prüft den CRC-Wert. Stimmt der CRC, wird der Telegrammkopf zurückgesendet, diesmal mit B=1. Stimmt der CRC nicht, wird das ganze Telegramm nocheinmal (inkl. Telegrammkopf, wieder mit B=0), gesendet.


    Nun will ich das Ganze in Code gießen und komme damit nicht recht zu Rande. Ich hab so einige Knoten im Hirn-wie lösen Informatiker sowas auf?

    Das gleich sofort in Java runterzucoden hab ich gar nicht erst probiert, ich scheitere momentan schon an einem UML (mach ich mit Flowgorithm) für diese Angelegenheit. Zu viele If-Abfragen, das Ganze wird recht schnell ziemlich anstrengend.

    Kann mir da irgendjemand helfen?

    Nachtrag:
    Ich sollte vielleicht noch etwas zu einigen Umständen schreiben, die mir das Leben schwer machen.

    Der o.g. Algorithmus soll in einem eigenen Thread laufen. Im Wesentlichen hab ich eine Dauerschleife angedacht, wenn die Schleife beginnt wird erstmal überprüft ob überhaupt neue Daten reingekommen sind. Wenn ja, gehts weiter-wenn nicht, geht der Thread wieder schlafen.

    Bisher hab ich mich nur der Empfängerseite am PC gewidmet-aber wie bringe ich in diesem Thread auch das Sende-Verhalten unter? Etwas Besseres als ein einfaches "ReadOrWrite"-Boolean ist mir nicht eingefallen.
    Code:
    while(true){
        if(readoperation){
            //Empfängercode
        }
        else{
            //Sendecode
        }
    }
    So richtig überzeugt hat mich das allerdings noch nicht. Vor allem: was mache ich, wenn beide, Computer und Mikrocontroller, gleichzeitig auf die Idee kommen etwas senden zu wollen?

    Wie lösen diejenigen, die sowas jeden Tag machen, sowas?
    Geändert von White_Fox (29.07.2017 um 08:46 Uhr)

Ähnliche Themen

  1. Balancierender Roboter(HILFE!!SOS!!!HILFE!!)
    Von snoopy82 im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 3
    Letzter Beitrag: 25.11.2014, 21:40
  2. Hilfe, Hilfe, ist das Zumo-Reflectance-Sensor-Array fehlerhaft ???
    Von oderlachs im Forum Sensoren / Sensorik
    Antworten: 6
    Letzter Beitrag: 23.01.2014, 08:57
  3. Antworten: 7
    Letzter Beitrag: 27.11.2013, 16:44
  4. hilfe Anfänger braucht hilfe beim start
    Von thomas3 im Forum Robby RP6
    Antworten: 26
    Letzter Beitrag: 20.09.2010, 21:07
  5. Hilfe Hilfe Schnelle es qualmt
    Von Larzarus im Forum Motoren
    Antworten: 32
    Letzter Beitrag: 07.06.2006, 14:04

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress