Forum: Compiler & IDEs ByteArray Kopieren ab Byte X


von Thom (Gast)


Lesenswert?

Hallo,

ich habe folgendes Anliegen, ich bekommen in meine CPU z.B. Folgendes 
rein:
          -Header-- -Command- --------Data------------
Daten RX: 0x41 0x01 0x00 0x05 0x00 0x01 0x02 0x03 0x04

Nun möchte ich diese Daten in den Buffer fifo_rx2 Schieben Ohne Header 
und Ohne Command, diese sollen in zwei weitere Arrays Kopiert werden.

Momentan kopiere ich alles per memcpy, Ich hätte aber gerne die Daten 
gesplittet...

Byte fifo_rx [512];
Byte fifo_rx2 [receivedByte];

Funktion
switch (fifo_rx[0])
{
case 0x41: //Q
memcpy(fifo_rx2,fifo_rx,sizeof(fifo_rx2));
udi_cdc_putc(sizeof(fifo_rx2));
udi_cdc_write_buf(fifo_rx2, sizeof(fifo_rx2));
break;
}

Danke für eure Hilfe

von Max H. (hartl192)


Lesenswert?

Wenn der Header und der Command konstante Länge haben:
1
memcpy(fifo_rx2, fifo_rx + HEADER_LEN + COMMAND_LEN, sizeof(fifo_rx2));

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Max H. schrieb:
> Wenn der Header und der Command konstante Länge haben:
1
> memcpy(fifo_rx2, fifo_rx + HEADER_LEN + COMMAND_LEN, sizeof(fifo_rx2));

Das gilt auch, wenn deren Länge nicht konstant ist — dann hängen 
HEADER_LEN und COMMAND_LEN eben von irgendwelchen Parametern ab.

Und selbst wenn HEADER_LEN und COMMAND_LEN konstant sind, kann durchaus 
sein, dass HEADER_LEN != sizeof (header) oder COMMAND_LEN != sizeof 
(command).

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.