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önntetmfg
-
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!