Stránka 1 z 1

LogView checksum

Napsal: 26 kvě 2016, 23:59
od ZdenekHQ
Já vím, že tady mám jedno dva roky otevřený vlákno, ale tohle dost spěchá, tak mírně poruším pravidla, nevím, kolik lidí to ještě sleduje.

Popis software: http://www.logview.info/lvstudio_doku/index.html

Demo výpočet CRC podle autora :

You can use XOR and AND as Checksum calculation.
Example code for XOR Calculation (Pascal / Delphi Code !!):

Kód: Vybrat vše

CheckCalc := 0;
Data := '$1;1;0;1133;318;0;0;0;0;0;20;21;0;'
For _i := 1 to Length(Data) do begin
 CheckCalc := CheckCalc XOR Byte(Data[_i]);
end;


This means LogView takes the data bytes until the last ";" for the checksum calculation.

Výsledný packet : $1;1;0;1133;318;0;0;0;0;0;20;21;0;16<cr><lf>

T.j. checksum = 16

-----

Já jsem nedávno sice zjistil, že se dá pracovat i 18 hodin, pak si dát 4 hodiny spánku a dalších 12 hodin, ale pak to končí tak, že mozek nezvládá detaily.

Proto se tady na EB v poslední době moc nevyskytuju...

-----

Podobný algo používá pro výpočet i tato stránka : http://www.hhhh.org/wiml/proj/nmeaxor.html

Ale ani můj kód v Pascalu, ani na té stránce nevyrobím číslo 16....

Mě se prostě nepodařilo žádným algoritmem dosáhnout checksum=16 :?

Nějaký nápad ? Dík za pomoc.

Dodatek> můj soft vrací dekadicky 20, ten webovej odkaz to posílá v hex a vrací 14h, což je to samý...

Napsal: 27 kvě 2016, 12:57
od FHonza
U NMEA se CRC počítá bez úvodního $ a výsledek se přidává nakonec v hexa zápisu. Ale podle toho příkladu tady se dolar počítá taky ... Každopádně 16 mi nevyjde nikdy, ani dekadicky, ani hexa, ani s dolarem na začátku ani bez něho. Nemáš ještě nějakou větu jako ukázku ?

Napsal: 27 kvě 2016, 19:24
od ZdenekHQ
Autor to samý uvádí jako demo i u novějšího projektu LogView Studio - přece nemůže být tak hloupej, že by si toho nevšiml a šířil BUG...

A německy bohužel neumím, abych si pročetl fórum...

Napsal: 28 kvě 2016, 13:24
od ZdenekHQ
Vypadá to, že jediný pozitivní výsledek je zatím to, že checksum se dá vypnout. Díky FHonzo za upravený odkaz, tohoto jsem si nevšiml.

Napsal jsem i autorovi, třeba se ozve...

Napsal: 28 kvě 2016, 13:34
od Cowley
Ja jsem se k mensi hodnote dopracoval jedine se zapocitanim 13 a 10, tzn. vcetne CARRIAGE RETURN a LINE FEED. Ale stejne to nedava 16. A navic tomu neodpovida ta cast programu.
Jsem zvedavej, zda Ti, Zdenku, autor odpovi...

EDIT: Něco nového? Než se téma ztratí z úvodní stránky... :)

Napsal: 02 čer 2016, 16:21
od ZdenekHQ
Zatím je ticho....

Napsal: 02 čer 2016, 20:42
od Cowley
Je to fakt záhada...
No, počkáme a uvidíme...

Napsal: 02 čer 2016, 20:55
od ZdenekHQ
Já to v nebližších dnech nainstaluju a otestuju, protože ten soft potřebuju na analýzu dat z "minohledu". Buď to CRC(teda spíš checksum) bude fungovat, nebo ho vypnu.

Napsal: 02 čer 2016, 22:05
od Cowley
Třeba se chytil "za nos" a začal něco předělávat :)

Mě to zajímá jen z principu té metody XORování.

U jednoho zařízení, co používám, používá výrobce metodu sčítání a Checksum je potom modulo 256. Když se to nechce někomu počítat, třeba v simulátoru typu Hyperterminál, pošle namísto Checksum dva symboly # a zařízení to taky zpracuje.

EDIT: Můžeš, prosím, dát do úvodního dotazu odkaz na to své staré vlákno? Teda pokud s tímto souvisí? Díky...

Napsal: 02 čer 2016, 22:19
od ZdenekHQ
Já třeba při testech komunikace přes modbus s jiným zařízením taky používám "záložní" CRC 0FF0h. Protože z hlavy ho nespočítáš, když něco nefunguje.

http://www.ebastlirna.cz/modules.php?na ... ic&t=64799

Tenkrát jsem ten projekt musel zastavit kvůli rodinným problémům, vracím se k němu až teď.

Napsal: 17 čer 2016, 16:19
od Cowley
Zatim nic? A nemam to jeste zkusit ja s nejakym dotazem u nemeckeho autora?

Napsal: 20 čer 2016, 12:53
od ZdenekHQ
Zatím to visí na softu do procesoru, k reálným testům jsem se vůbec nedostal. Navíc musím rozchodit bezdrát, kdo má za sebou pořád tahat kabel...