CRC CCIT (0xFFFF) auf String-Frame bilden

Gast #2960657
Lesenswert?

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
Gast #2960766
Lesenswert?

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.
Gast #2961494
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren