Bytes trennen



  • Hallo,
    ich habe folgendes problem: Ich bekomme über serielle Schnittstelle von einem Microcontroller zahlen von 4 Messsensoren. Ein Datenpacket ist 128 B groß.
    Wie kann ich dieses packet so aufteilen, das ich jedes 4 B einer variablen zuweisen kann die ich dann in einer Datenbank speichere?
    vor allem wie kann ich die einzelnen B trennen?ich habe ja kein bestimmtes zeichen
    dazwischen oder sowas, und wenn ich mit dem schiebe Operator immer 2 stellen nach links schiebe, wie selektiere ich dann ein B?
    Irgendwie stehe ich gerade auf dem Schlauch, ich wäre euch dankbar wenn ihr mir auch ein paar Codeschnippsel als Beispiel Posten könntet

    mfg



  • Hallo

    in welchem Typ speicherst du den das 128B-Datenpaket, nachdem du es empfangen hast?

    bis bald
    akari



  • Ich speichere die Daten in inem char array[128];



  • Hallo

    na, dann kannst du doch prima auf die einzelnen Bytes zugreifen. Du must doch nur immmer 4 Stellen des Arrays gleichzeitig betrachten.

    bis bald
    akari



  • hier mal ein kleines Beispiel:

    typedef unsigned long u_long;
    typedef unsigned char u_char;
    
    // Funktion liest aus eine Array von Typ 'u_char' jeweils
    // 4 Byte und verschiebt den Zeiger des Array, damit dieser
    // auf das nachfolgende Byte zeigt
    u_long ReadUnsignedLong(u_char *&Data)
    {
      if (!Data) 
        return 0;
    
      // Wert auslesen
      u_long Value  = *((u_long*) Data);
    
      // Zeiger im Array um 4 Byte verschieben
      Data         += 4;
    
      return Value;
    }
    


  • Ich glaube, die Suche war eher, das es sich bei den Messwerten um eine 4 byte grosse Ganzzahl handelt oder?

    -junix



  • Nein die Antworten sind schon richtig, die sache war nur das ich auf dem Schlauch stand:-(
    ich habe dieses array nähmlich in ein Memo geschrieben und wollte es von dort trennen, weil jedes byte einen wert eines jeweils anderen Sensors enthält!diese muß ich dann in eine DB einfügen
    (*manchmal tut dumheit halt weh, deswegen habe ich whohl Kopfschmerzen*g)

    kleine Frage noch: ist es möglich mit mehreren ADOQuerys über einen Connectionstring auf eine DB zuzugreifen?



  • Bitte die Faustregel beachten: ein Thema pro Thread, ein Thread pro Thema. Danke!


Anmelden zum Antworten