Z innej aplikacji przesyłam przez UDP strukturę danych
Łącznie jest to 34 bajty.
Te bajty odbieram prawidłowo:
Przykładowy ciąg bajtów: 373231363338333501020304050000000000f8030000000000000000cd0000ff00e2
I teraz chciałbym ten ciąg przypisać do zmiennych w strukturze:
Szukałem różnych przykładów, np memcpy(pakiet, incomingPacket, sizeof(pakiet))
ale przypisuje mi jakieś bajty z kosmosu. Nic się nie zgadza.
na przykład do zmiennej strefy przypisuje 33383335123450 a powinno być 01020304050000000000 (tablica 10 bajtów)
Nie wiem co robię źle.
Poradzicie coś jak to najłatwiej zrobić?
Ewentualnie mogę rozbić ten ciąg znaków w kilku krokach podając początek i ilość bajtów do skopiowania.
Przy okazji jeszcze jedno pytanie. Jaki tym danych mam użyć dla typu data czas + milisekundy.
Kod:
typedef struct
{
unsigned Timestamp;
unsigned char Strefy[10];
unsigned char Lampy[10];
unsigned char Rozkaz;
unsigned char Parametry[4];
unsigned char Opoznienie;
}
Pakiet;
Łącznie jest to 34 bajty.
Te bajty odbieram prawidłowo:
Kod:
int packetSize = UDPTestServer.parsePacket();
if (packetSize)
{
// receive incoming UDP packets
Serial.printf("Received %d bytes from %s, port %d\n", packetSize, UDPTestServer.remoteIP().toString().c_str(), UDPTestServer.remotePort());
int len = UDPTestServer.read(incomingPacket, 255);
if (len > 0)
{
Serial.printf("UDP packet length: %d\n", len);
incomingPacket[len + 1] = 0;
Serial.printf("UDP packet contents: %s\n", incomingPacket);
Serial.write("UDP packet HEX : "); //Serial.write(incomingPacket,HEX);Serial.write("\n\r");
for (int i = 0; i< len; i++)
{
sprintf(s, "%02x", incomingPacket[i]);
Serial.print(s);
}
Serial.println("");
Przykładowy ciąg bajtów: 373231363338333501020304050000000000f8030000000000000000cd0000ff00e2
I teraz chciałbym ten ciąg przypisać do zmiennych w strukturze:
Szukałem różnych przykładów, np memcpy(pakiet, incomingPacket, sizeof(pakiet))
ale przypisuje mi jakieś bajty z kosmosu. Nic się nie zgadza.
na przykład do zmiennej strefy przypisuje 33383335123450 a powinno być 01020304050000000000 (tablica 10 bajtów)
Nie wiem co robię źle.
Poradzicie coś jak to najłatwiej zrobić?
Ewentualnie mogę rozbić ten ciąg znaków w kilku krokach podając początek i ilość bajtów do skopiowania.
Przy okazji jeszcze jedno pytanie. Jaki tym danych mam użyć dla typu data czas + milisekundy.