Forum: PC-Programmierung CRC CCIT (0xFFFF) auf String-Frame bilden


von Trölf (Gast)


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

: Verschoben durch User
von Peter II (Gast)


Lesenswert?

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.

von Trölf (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von Trölf (Gast)


Lesenswert?

heißt ich muss lediglich meinen String in ein Arry schreiben?

danke für deine Antwort

Gruß

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Trölf schrieb:
> heißt ich muss lediglich meinen String in ein Arry schreiben?

Der String IST ein Array.

von Rolf Magnus (Gast)


Lesenswert?

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.

von Trölf (Gast)


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.

von wegregrg (Gast)


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

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.