Hallo liebe Leute!
Bin neu hier und hab auch gleich ein Problem.
Ich versuche 16 Sensorwerte seriell an meinen PC zu senden. Es soll ein simples Protokoll mit Checksumme werden. Beim Versuch den Sende-Buffer mit den Daten zu füllen scheitere ich jedoch schon.
Ich hab ein Array mit 16 Integer Werten. Diese will ich in ein Byte Array kopieren.
Deklaration:
int adc[16];
byte Sendbuffer[34] = { 0xFE,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 };
Wenn ich das komplette int Array in das Byte Array kopiere ist alles ok.
memcpy(&Sendbuffer[1], adc, sizeof(adc));
Ergebnis:
1 6 164 6 64 5 220 5 120 5 20 4 176 4 76 3 232 3 132 3 32 2 188 2 88 1 244 1 144 1 44 0 200 254
Das erste Byte ist immer 254 --> OK
Byte 2 + 3 = 200 --> OK
Byte 4 + 5 = 300 --> OK
………
Byte 32 + 33 = 1700 --> OK
Byte 34 soll mal die Checksum werden
Wenn ich jedoch versuche jeweils nur einen Int Wert zu kopieren läuft etwas schief.
zB.:
for (int i=0; i < 16; i++) {
memcpy(&Sendbuffer[i*2+1], adc[i], sizeof(adc[i]));
}
Ergebnis:
1 174 119 122 180 221 37 45 191 130 188 56 0 0 0 58 114 232 0 0 0 91 128 0 0 0 0 0 0 0 0 0 32 254
Kann mir bitte jemand sagen was ich falsch mache?
Schon mal danke im Voraus.