How to calculate the checksum?  
Author Message
JakobEspersen





PostPosted: Sun Nov 18 06:36:28 PST 2007 Top

Visual C#.Net >> How to calculate the checksum? Hi,

how can I calculate the checksum (CRC-16) from the byte[] I retrieve from a
hardware device through the RS232 serial port?

Christian

DotNet119  
 
 
Morten





PostPosted: Sun Nov 18 06:36:28 PST 2007 Top

Visual C#.Net >> How to calculate the checksum? Hi Christian,

Maybe this articles can give you some ideas.

[CRC Encoding]
http://www.codeproject.com/csharp/marcelcrcencoding.asp?df=3D100&forumid=
=3D29803&exp=3D0&select=3D1726104



On Sun, 18 Nov 2007 15:23:00 +0100, Christian Havel <ChristianHavel@disc=
ussions.microsoft.com> wrote:

> Hi,
>
> how can I calculate the checksum (CRC-16) from the byte[] I retrieve f=
rom a
> hardware device through the RS232 serial port?
>
> Christian
>



-- =

Happy coding!
Morten Wennevik [C# MVP]
 
 
arne





PostPosted: Sun Nov 18 06:46:48 PST 2007 Top

Visual C#.Net >> How to calculate the checksum? Christian Havel wrote:
> how can I calculate the checksum (CRC-16) from the byte[] I retrieve from a
> hardware device through the RS232 serial port?

I have some CRC-16 code on the shelf.

I fact I have more than one version.

Do you have some sample data and an expected result to
help determine which ?

Arne
 
 
ChristianHavel





PostPosted: Sun Nov 18 08:31:01 PST 2007 Top

Visual C#.Net >> How to calculate the checksum? Hi Arne,

thanks for your help. I have the following informations:

<Sync_1 = 0x81> 8 DATA-BITS No Parity
<Sync_2 = 0x82> 8 DATA-BITS No Parity
<Cksum> = Telegramm<[pos_Sync_1]> XOR . XOR . XOR ... [<pos_Sync_2-2>]
<Cmd> = Command to modem

|<--- CheckSum : --------------- XOR ------------------->|
<Sync_1>, <DEV_ADR>, <Cmd>, <OPTION>, [<DATA>], <Chksum>, <Sync_2>

Hope this helps.
Christian

"Arne Vajhøj" wrote:

> Christian Havel wrote:
> > how can I calculate the checksum (CRC-16) from the byte[] I retrieve from a
> > hardware device through the RS232 serial port?
>
> I have some CRC-16 code on the shelf.
>
> I fact I have more than one version.
>
> Do you have some sample data and an expected result to
> help determine which ?
>
> Arne
>
 
 
Peter





PostPosted: Sun Nov 18 15:49:02 PST 2007 Top

Visual C#.Net >> How to calculate the checksum?
"Christian Havel" <EMail@HideDomain.com> wrote in
message news:EMail@HideDomain.com...
> Hi Arne,
>
> thanks for your help. I have the following informations:
>
> <Sync_1 = 0x81> 8 DATA-BITS No Parity
> <Sync_2 = 0x82> 8 DATA-BITS No Parity
> <Cksum> = Telegramm<[pos_Sync_1]> XOR . XOR . XOR ... [<pos_Sync_2-2>]
> <Cmd> = Command to modem
>
> |<--- CheckSum : --------------- XOR ------------------->|
> <Sync_1>, <DEV_ADR>, <Cmd>, <OPTION>, [<DATA>], <Chksum>, <Sync_2>
>

It depends on what sort of CRC it is.

For most serial protocols it is based on the table driven one in x/y/zmodem
source code. However that isn't the correct CRC value for an ethernet packet
OR an SDLC/HDLC comms protocol.

You could use
http://sourceforge.net/projects/classlesshasher/?format=raw

which contains more CRC variants than I've encountered in the wild but most
comms protocols tend to use the one contained in FCS16.

I suspect from your code that actually you just want to XOR all the bytes in
the data together.

Without a sample data packet (or sample source code) it's nearly impossible
to tell if you've got it right. When I first did the ethernet one I ended up
hand decoding a packet on an oscilloscope screen to see exactly what was
transmitted!

Peter

 
 
arne





PostPosted: Sun Nov 18 18:06:26 PST 2007 Top

Visual C#.Net >> How to calculate the checksum? Christian Havel wrote:
> thanks for your help. I have the following informations:
>
> <Sync_1 = 0x81> 8 DATA-BITS No Parity
> <Sync_2 = 0x82> 8 DATA-BITS No Parity
> <Cksum> = Telegramm<[pos_Sync_1]> XOR . XOR . XOR ... [<pos_Sync_2-2>]
> <Cmd> = Command to modem
>
> |<--- CheckSum : --------------- XOR ------------------->|
> <Sync_1>, <DEV_ADR>, <Cmd>, <OPTION>, [<DATA>], <Chksum>, <Sync_2>
>
> Hope this helps.

That is not sample data and sample checksum.

It looks more as simple XOR than CRC.

But without more specific information everything will just
be guesswork.

Arne