Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

{GELÖST] Suche Prüfsummen Algo

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 09.03.2023, 18:39    Titel: {GELÖST] Suche Prüfsummen Algo Antworten mit Zitat

Hiho ....

vieleicht kann mir einer von euch hierbei helfen.

Ich arbeite gerade an der Aufschlüsselung eines Kommunikationsprotokolls und suche hierfür den richtigen Prüfsummen-algo.

Aber, erstmal, damit Ihr wisst, was genau das alles für Daten sind, und wie weit ich es inzwischen zerlegen konnte:

Das folgende ist ein Daten-Block in Binary
Code:
'10010101 01001100 00110000 00000001 00000011 00000000


Das erste Byte hat folgende Bedeutung:
Code:
'10010101 01001100 00110000 00000001 00000011 00000000
'     ^^^-- Anzahl nachfolgender Bytes
'  ^^^----- Commando
'^^-------- unbekannt (vermutlich die Zeiladresse des geräts)


Das letzte Byte ist vermutlich eine Prüfsumme, dessen Algo ich nicht kenne aber wissen muss. Ich habe bereits ein XOR und ein UByte Überlauf über Alle Bytes bis auf das letzte, sowie auf alle bis auf das erste und letzte versucht, beides führt nicht zum richtigen Ergebnis.

Was mich auch stutzig macht ist die tatsache, das das 8.Bit im letzten Byte nur sehr selten eine 1 bringt.

Dieses Spezielle Datenblock, bzw. dieses kommando ist eine "Zoom"-Anweisung. Sprich, sie ändert den Zoom eines Objektivs von Wide in Tele. Die Geschwindigkeit wird (vermutlich) im Vorletzten Byte codiert.

Code:

'10010101 01001100 00110000 00000001 00000011 00000000
'^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^___ Vermutlich Checksumme
'   |        |        |        |        |________________ Poti-Wert
'   |        |        |        |_________________________ unbekannt (Vermutlich teil des kommandos)
'   |        |        |___________________________________unbekannt (Vermutlich teil des kommandos)
'   |        |___________________________________________ unbekannt (Vermutlich teil des kommandos)
'   |____________________________________________________ Ziel, Kommando, Anzahl folgender Bytes


Hier findet Ihr eine Aufzeichnung einer Sequenz, mit aufsteigendem Poti-Wert

http://ops.deltalabs.de/code?id=313

Die Prüfsumme wird von einem ATMega8 berechnet. Kann also nicht ganz so komplex sein


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]


Zuletzt bearbeitet von ThePuppetMaster am 15.03.2023, 13:20, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 09.03.2023, 22:55    Titel: Antworten mit Zitat

Inzwischen konnte ich etwas mehr herausfinden.

Mit folgendem verfahren komme ich sehr häufig zu einem richtigem Ergebnis.

Alles ab dem 2. byte zusammen zählen (ausser dem letzen checksummenbyte), und wenn es über 128 ist, dann -128.

beispiel:

Code:

[RMC > CAM] CMD: ???, Zoom 10010101 01001100 00110000 00000000 00011000 00010100
[RMC > CAM] CMD: ???, Zoom 10010101 01001100 00110000 00000000 00010000 00001100
[RMC > CAM] CMD: ???, Zoom 10010101 01001100 00110000 00000000 00001111 10010101


ist
Code:

149 76 48 0 24 20
149 76 48 0 16 12
149 76 48 0 15 149


ergibt:
149 76 48 0 24 20
76 + 48 + 0 + 24 = 148 ... größer 128 .. daher 148 - 128 = 20 (checksumme)

Das ganze funktioniert solange, bis auf die letzte zeile (welche sehr selten auftritt) Dort ist der wert deutlich über 128 und das 8.bit ist gesetzt. Aber, ich weis nicht, wie das zustande kommt.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1245
Wohnort: Ruhrpott

BeitragVerfasst am: 15.03.2023, 12:47    Titel: Antworten mit Zitat

ThePuppetMaster hat Folgendes geschrieben:
Alles ab dem 2. byte zusammen zählen (ausser dem letzen checksummenbyte), und wenn es über 128 ist, dann -128.

Das kann auch nicht sein. Die Zeilen

[RMC > CAM] CMD: ???, Zoom 10010101 01001100 00110000 00000001 00010000 10010101
[RMC > CAM] CMD: ???, Zoom 10010101 01001100 00110000 00000001 00010000 10010011

sind soweit gleich, das letzte Byte ist aber trotzdem unterschiedlich. Daraus kann man wohl ableiten, daß es sich hier nicht um eine Prüfsumme handelt.

Es gibt auch noch andere Zeilen, bei denen diese Korrelation nicht passt.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 15.03.2023, 13:19    Titel: Antworten mit Zitat

In der tat konnte ich inzwischen etwas mehr in Erfahrung bringen.

Erste Tests scheinen auch gut zu funktionieren. Es ist wohl, wie schon vermutet, eine 7Bit Prüfsumme über alle Werte (ausgenommen 1 und letztes byte).

Der Fall, das es manchmal eine 1 voransteht, scheint wohl auf einen BUG zurück zu gehen, der nur sehr selten auftritt und eventuell ein Überlauf in der 8-Bit MCU entsteht.

Wenn ich den Kram von Hand erzeuge und via PC zum Gerät sende, mit berechneter Prüfsumme, dann werden die Kommandos alle akzeptiert.

Ich gehe daher erstmal davon aus, das der Algo wohl zu stimmen scheint.

Dennoch THX an alle zwinkern


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz