Avatar billede charlie2000 Nybegynder
02. august 2012 - 15:49 Der er 13 kommentarer

CRC på hex string

Hejsa

Jeg er ved at lave kommunikation til en seriel enhed. Det virker som også helt fint lige indtil jeg kom til at skulle lave crc tjek på kommunikationen..

Jeg har denne HEX string: "66 31 32 33 34 35 36 37"
og jeg har CRC koden som den skal være: "2A87"

jeg kan bare ikke få min kode til at generere den rigtige.. :-(

funktionen:

        public int crc16(string Buffer, int Initial)
        {
            int result;
            int i;
            int j;
            int d;
            int b;
            result = Initial;
            for (i = 2; i < Buffer.Length; i++)
            {
                d = (int)(Buffer[i]);
                for (j = 0; j <= 7; j++)
                {
                    b = result & 1;
                    result = result >> 1;
                    if ((d & 1) != 0)
                    {
                        result = result | 0x8000;
                    }
                    if (b != 0)
                    {
                        result = result ^ 0xA001;
                    }
                    d = d >> 1;
                }
            }
            return result;
        }
Avatar billede charlie2000 Nybegynder
10. august 2012 - 10:05 #1
det var ikke de store svar :-p

Er der nogen der kender en dansk side som getacoder.com hvor jeg kan smide opgaven ind?
Avatar billede charlie2000 Nybegynder
10. august 2012 - 10:38 #3
Hej Buzzzz


Så vidt jeg kan se er begge de links du er kommet med til 32 bit CRC.. Jeg skal bruge en 16 bit.
Avatar billede Syska Mester
10. august 2012 - 10:42 #4
http://www.sanity-free.com/134/standard_crc_16_in_csharp.html

Jeg har ikke testet det ... men ellers kan jeg nok få lidt tid til at lege med det i aften.
Avatar billede charlie2000 Nybegynder
10. august 2012 - 11:02 #5
Den har jeg også prøvet.. Den giver mig bare denne værdi: 588F :-(

Det kan selvfølgelig være en variabel der ikke er sat til det rigtige eller noget i den dur..

Det ville være super hvis du kunne lege lidt med det.. Det ville jeg virkelig sætte pris på :-D

Især hvis hvis du finder noget det virker :-D
Avatar billede Syska Mester
10. august 2012 - 11:08 #6
Men hvor har du fået fra at din checksum er 2A87?
Avatar billede Syska Mester
10. august 2012 - 11:13 #7
Den her giver nemlig ikke det du forventer.

http://www.lammertbies.nl/comm/info/crc-calculation.html

mvh
Avatar billede charlie2000 Nybegynder
10. august 2012 - 11:15 #8
Jeg har den gamle software(gammelt delphi program) hvor crc virker. Så jeg har bare brugt portmon til at se hvad programmet sender når den affyrer den samme kommando..
Avatar billede Syska Mester
10. august 2012 - 11:23 #9
Jeg ville i hvert fald først finde ud af om den CRC kode er korrekt. Dvs finde andre online eller offline tools så vi er sikre på hvad vi skal gå efter.

Jeg ville ikke føle mig sikker på at lave en implementering kun et andet program kan give ...

mvh
Avatar billede charlie2000 Nybegynder
10. august 2012 - 11:58 #10
Det virker også lidt mystisk at jeg kun kan få det gamle program til at give det resultat... men det virker. og jeg kan desværre ikke ændre på koden i hardwaren..
Avatar billede charlie2000 Nybegynder
14. august 2012 - 12:59 #11
Har du haft tid til at kikke på det?
Avatar billede Syska Mester
14. august 2012 - 13:04 #12
Så længe den giver forkert CRC i forhold til alle andre implementeringer, så vil jeg jo antage at den implementering der bruges nu er forkert.

Kan du skaffe koden til hvordan den udregnes nu? Der må jo være en grund til at den giver en anden CRC.

mvh
Avatar billede charlie2000 Nybegynder
17. august 2012 - 14:38 #13
Hej Jeg holder lige ferie en uges tid... jeg finder lige koden frem når jeg er tilbage :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester