Programmering

Checksum af Hex Streng

15. november 2014 af Houmaa (Slettet)

Hej

Dette er et arbejdsrelateret problem og jeg har brug for en der ved lidt om hex og checksum

Jeg skal styrer en projektor med et andet system (Beolink gateway) via usb/rs232

For at kunne ændre aspect eller tændsluk skal der skrives en hex streng.. 

Jeg ved hvad der skal skrives alle steder bortset fra feltet checksum

Dette er et eksempel der stemmer: 
ITEM NUMBER = 0020h (ASPECT)
SET/GET = 00h (SET)
DATA = 000Ch (1.85:1 Zoom)
CHECK SUM = 23h

Men hvad hvis der står følgende:

ITEM NUMBER = 0020h (ASPECT)
SET/GET = 00h (SET)
DATA = 000Dh (2:35:1 Zoom)
CHECK SUM = ????

Checksum are calculated by OR. Refer to the example below.
<Example of Calculation>
0xA9     1010      1001      0xA9      1010      1001
0xA9     1010      1001      0x9A      1001      1010
Answer  1010      1001      Answer   1011      1011
                          0xA9                                0xBB

Vedhæftet fil: VPL-VW1000ES.pdf

Brugbart svar (0)

Svar #1
15. november 2014 af hesch (Slettet)

0:  Dette giver delvis fornuft:

Checksum are calculated by OR.    

Det er så ikke en checksum men en checkcode. "Sum" forbindes med (måske "shifted") addition.


<Example of Calculation>
0xA9           1010      1001                                                 0xA9           1010      1001
0xA9           1010      1001                                                 0x9A           1001      1010
Checkcode  1010      1001                                                 Checkcode   1011      1011
                          0xA9                                                                                 0xBB

Altså, de i kommandoen indgående bytes OR-res blot sammen. Indgår der tilstrækkeligt mange bytes i kommandoen, bliver checkcode hurtigt = 0xFF, næsten ligegyldigt hvad, og denne checkcode er derfor ikke særlig effektiv, omend meget let at implementere. ( 8 OR-gates + 8 D-flipflop ).

Til gengæld stemmer dette så ikke:

ITEM NUMBER = 0020h (ASPECT)
SET/GET = 00h (SET)
DATA = 000Ch (1.85:1 Zoom)
CHECK SUM = 23h

. . . for her burde checkcode = 0x2C   ( 00h OR 20h OR 00h OR 00h OR 0Ch )

Din vedhæftede manual er noget bras, for den beskriver ikke protokollen strigent, fx ved gode gamle "Bachus-Naur notation". Dette kan meget vel indikere, at protokollen i sig selv ikke er stringent, og derfor netop ikke kan beskrives ved Bachus-Naur, (og så er der noget galt).

Stil bare flere spørgsmål.


Skriv et svar til: Checksum af Hex Streng

Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk? Klik her for at oprette en bruger.