Hallo Comunity, ich habe ein kleines Programm, dabei erhalte ich Daten über eine Serielle Schnittstelle in Folgender Form: "Point 0xFF,0xFFFF,0,0,0" 0xFF ist ein Schrittzähler, 0xFFFF der aktuelle Punkt, die drei "0" Zustände über 3 Stellbuttons. Nun möchte ich an diesen String noch eine CRC-CCITT (0xFFFF) anhängen, allerdings weiß ich nicht wie ich dies mit einem String Frame umsetze? Kann mir jemand einen Tipp geben oder einen kleinen Ansatz? Vielen Dank! Grüße
:
Verschoben durch User
Trölf schrieb: > "Point 0xFF,0xFFFF,0,0,0" "Point 0xFF,0xFFFF,0,0,0" + ",0xFFFF" wenn das nicht die Lösung ist, dann solltest du dein Prblem etwas genauer beschreiben.
Ich weiß nicht wie ich die Checksumme auf einen String bilde :) alles was ich bisher gefunden habe erstellt eine CRC auf ein Byte Arry.. oder verstehe ich da einfach etwas falsch? Grüße
Trölf schrieb: > alles was ich bisher gefunden habe erstellt eine CRC auf ein Byte Arry.. und wie ist unteschied? Ein String ist ein array von einzelzeichen.
heißt ich muss lediglich meinen String in ein Arry schreiben? danke für deine Antwort Gruß
Trölf schrieb: > heißt ich muss lediglich meinen String in ein Arry schreiben? Der String IST ein Array.
Zumindest in C wäre das so. Da aber nicht mal die Programmiersprache bekannt ist, in der das umgesetzt werden soll... Auch ist nicht klar, ob "String Frame" jetzt irgendwas besonderes ist oder ob damit eben einfach nur ein normaler String gemeint ist.
Rolf Magnus schrieb: > Zumindest in C wäre das so. Da aber nicht mal die Programmiersprache > bekannt ist, in der das umgesetzt werden soll... > Auch ist nicht klar, ob "String Frame" jetzt irgendwas besonderes ist > oder ob damit eben einfach nur ein normaler String gemeint ist. Möglichst in C# und es handelt sich um einen einfachen String wie oben beschreiben mit diesem Format.
bei ASCII codierung und 23 buchstaben d.h. 23 bytes sprichst du wahrscheinlich von CRC16? soweit ich weiss gibt es da nichts fertiges für .NET. passt auch nicht wirklich zu .NET, fehlererkennung gehört viel tiefer (bezogen auf die osi layer) hier code von wikipedia, sollte sich schnell anpassen lassen:
1 | #include <stdio.h> |
2 | #include <stdlib.h> |
3 | #include <inttypes.h> |
4 | #define CRC32POLY 0x04C11DB7 /* CRC-32 Polynom */ |
5 | |
6 | int datastream[] = {1,0,0,0,1,1,0,0}; |
7 | int databits = 8; |
8 | uint32_t crc32 = 0; /* Schieberegister */ |
9 | /*__int32 crc32 = 0; => für MS VS */ |
10 | |
11 | int main(void) |
12 | { |
13 | int i; |
14 | for (i = 0; i < databits; ++i) |
15 | if (((crc32 & 0x80000000) ? 1 : 0) != datastream[i]) |
16 | crc32 = (crc32 << 1) ^ CRC32POLY; |
17 | else |
18 | crc32 <<= 1; |
19 | printf("0x%08X\n", crc32); |
20 | return EXIT_SUCCESS; |
21 | } |
um das chararray zu bekommen, brauchst du: http://msdn.microsoft.com/en-us/library/aa904309(v=vs.71).aspx
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.