Forum: Mikrocontroller und Digitale Elektronik array entpacken (PIC)


von ichbinDeutschland (Gast)


Lesenswert?

Hallo zusammen

Ich habe hier ein Protokoll zum senden von Daten, die ich eingepackt 
habe, geschrieben.
Doch wie entpacke ich diese jetzt?
So dass ich nur noch meine Rohdaten zur verfügung habe?
Hier meine eingepackten daten:

void main()
{
  unsigned int i = 0;
  unsigned int j = 0;
  unsigned int z = 0;
  unsigned int rohdaten_l = 9;
  unsigned int eingepackte_daten_l;
  unsigned char eingepackte_daten[15];
  signed char rohdaten[9];

  unsigned int16 speed;
  unsigned int16 height;
  unsigned int16 direction;
  signed int16 roll;
  signed int16 pitch;

  rohdaten[0] = speed;
  rohdaten[1] = 0x24;
  rohdaten[2] = height;
  rohdaten[3] = 0x24;
  rohdaten[4] = direction;
  rohdaten[5] = 0x24;
  rohdaten[6] = roll;
  rohdaten[7] = 0x24;
  rohdaten[8] = pitch;

for(z=0; z<=14; z++){                eingepackte_daten[z]='\0';
  }


  eingepackte_daten[0] = ESC;
  eingepackte_daten[1] = STX;

  j = 2;
  for(i=0; i<=4; i++){
    if(rohdaten[i] == ESC){
      eingepackte_daten[i+j] = ESC;
      j++;
      eingepackte_daten[i+j] = ESC;
    }
    else                        eingepackte_daten[i+j] = rohdaten[i];
  }

  eingepackte_daten[i+j]  = CRC;
    eingepackte_daten[i+j+1]= ESC;
    eingepackte_daten[i+j+2]= ETX;

von Timmo H. (masterfx)


Lesenswert?

Genauso, bloß umgekehrt?
Du solltest auch etwas mit den Datentype aufpassen. Speed ist z.B. 16 
Bit, aber du schreibst sie in ein 16 Bit-array, welches anschließen in 
ein 8-Bit (char) Array geschrieben wird. Oder wolltest du die obersten 8 
Bit immer verwerfen?

von ichbinDeutschland (Gast)


Lesenswert?

oooh ja
es muss auch ein 16bit array sein

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
Noch kein Account? Hier anmelden.