Lesen vom COM Port teils Fehlerhaft bitte um hilfe



  • Du willst sagen das wir hier eine folge gemischter längen haben können ?
    Sprich mal sind es 8 bit mal sind es 16 bit, mal sind es 32?
    Dann verstehe ich nicht die Aussage von vorhin, sprich ich dachte das die letzten 2 Bytes Prüfsummen sind von CRC16 und ich versuche die jetzt zu überprüffen. Mit dem x^16Polygon und den Rest.
    Also bin jetzt ganz verwirt, leider kommm ich mit den Zahlen kein stück weiter.
    soll ich noch ergebnisse aufnehmen und zusenden.
    ich verstehe nicht wieso wir die 22158 also die serien nummer so klar sehen und alles andere so schwär ist.
    Wer hat eine idee wie die negativen zahlen abgebildet werden können.
    Und die nachkomamma stellen.
    Schreibt es mir hier rein ich google oder prüffe es selber solange mein wissensstand reicht.
    Oder führt mir beispiele hier auf, oder vermuttungen ich überprüffe dann alles.



  • wir haben uns falsch verstanden...

    ich meinte nur das ein Datensatz aus verschiedenen Datentypen bestehen kann

    z.B. [uint8][uint8][uint16][uint32][uint16]...

    d.h. die Struktur/Offsets der Inhalte in einem Datesatz sind wohl schon fix/stabil

    ich habe das nur angesprochen weil du in deinem Post die 0x01 vor dem 0x50 fuer den Kontroller (falls es das ist) in eine Variable reingesteckt hast - oder deine Schreibweise war einfach nur verwirrend

    ich verstehe nicht wieso wir die 22158 also die serien nummer so klar sehen und alles andere so schwär ist.
    Wer hat eine idee wie die negativen zahlen abgebildet werden können.

    deswegen ist es wichtig ueber Wert-Änderung z.B. nur die Betriebsstunden herauszufinden welche Bytes die Betriebsstunden sein müssen UNABHÄNGIG ob wir den Inhalt dann schon verstehen, z.B. koennten die Betriebsstunden ja auch eine Fließkommawert sein (den man ja in zig Arten kodieren kann) - alleine die Position waere schonmal wunderbar



  • 3.die komplexitet ist nicht sehr groß und schwehr ich brauche auch nicht mehr als 10 bis 15 werte.
    4. die erwarteten werte kann ich aus einem alten programm raussehen, welches von 1982 ist dies hab ich auf einem anderen rechner drauf es zeigt mir halt die werte an seriennummer , neigung , rollung, temperatur u.s.w das problem ist als neigung hab ich ein komma wert der mit - sein kann und wie der jetzt ausgelesen wird ist für mich auch eine frage, die werte können sich ändern dynamisch halt hängt von der position neigung u.s.w des läsers ab.

    bist du sicher dass "der laser" die werte selbst berechnet? ich würde nämlich eher davon ausgehen dass der PC das macht. also "das programm von 1982".
    d.h. durch "inspektion" des protokolls alleine wirst du nie draufkommen wie du die nötigen werte erhältst.
    wenn dann bräuchtest du den source des DOS programms, oder müsstest dieses zumindest mit nem disassembler auseinendernehmen.



  • bist du sicher dass "der laser" die werte selbst berechnet? ich würde nämlich eher davon ausgehen dass der PC das macht. also "das programm von 1982".
    d.h. durch "inspektion" des protokolls alleine wirst du nie draufkommen wie du die nötigen werte erhältst.
    wenn dann bräuchtest du den source des DOS programms, oder müsstest dieses zumindest mit nem disassembler auseinendernehmen.

    Der Laser ist nicht mit mir verbunden. Ich bin mit der Zieltaffel verbunden sieh Bild Testversuch oben. Ja es kann sein dass die Zieltaffel Werte ausgibt und diese im Programm berechnet und interpretiert werden, vielleicht auch berechnet.
    Aber die serriennummer wird so übertragen, und ich denke die werte von roll und nick winkel müssen auch so übertragen werden da dort sensoren diese als pegel rausgeben(stimmt könnte sein das diese auch berechnet werden).
    Ja was mach ich den jetzt.
    Ich frag mal gezielt wieso gibt er die serriennummer 22158 so raus und alle anderen nicht. Besteht die möglichkeit dass alle anderen berechnet werden?



  • Ich frag mal gezielt wieso gibt er die serriennummer 22158 so raus und alle anderen nicht.

    die Seriennummer laesst sich nicht berechnen - darum kommt sie auch direkt

    Besteht die möglichkeit dass alle anderen berechnet werden?

    klar warum nicht?

    Ja was mach ich den jetzt.

    jetzt zum 10. mal - alle Werte so weit es geht ruhig stellen und schauen wo sich die bytes veraendern wenn du einen einzelnen Wert beeinflusst - solange den einzelnen Wert beeinflussen bis du sicher bist das byte n..m dadurch geaendert werden - dann kannst du dich genau auf diese paar bytes konzentrieren wie da wohl der wert drinn steckt

    Hier sagt niemand das du schnell zur Lösung kommst - das kann Wochen dauern



  • chirolog schrieb:

    Aber die serriennummer wird so übertragen,

    s.u.

    chirolog schrieb:

    und ich denke die werte von roll und nick winkel müssen auch so übertragen werden da dort sensoren diese als pegel rausgeben(stimmt könnte sein das diese auch berechnet werden).

    wieso gehst du davon aus? geh mal lieber davon aus dass die messwerte zumindest noch irgendwie gefiltert werden. bzw. ich behaupte mal: da ist gar kein sensor drauf der direkt nen winkel messen kann. d.h. der winkel muss aus irgendwelchen anderen messwerten berechnet werden.
    kann jetzt natürlich sein dass du ganz ganz viel glück hast, und diese berechnung in der zieltafel gemacht wird. ich würde aber, speziell bei einem so alten system, eher davon ausgehen dass die berechnung im PC gemacht wird.
    bzw. ich würde das sogar heute noch so implementieren, da es flexibler ist: man muss nicht extra ein firmware update machen wenn z.B. mit einer neuen softwareversion etwas an der berechnung verbessert wird.

    chirolog schrieb:

    Ja was mach ich den jetzt.

    keine ahnung. weinen?

    ich hab jetzt nicht die ganzen 8 seiten hier gelesen, also sorry falls du das schon beantwortet hast...: warum willst du das ding überhaupt mit ner neuen software auslesen?

    chirolog schrieb:

    Ich frag mal gezielt wieso gibt er die serriennummer 22158 so raus und alle anderen nicht.

    WIE soll er die seriennummer denn sonst ausgeben??? soll er die extra verhunzen nur damit sie nicht so einfach erkennbar ist? wozu sollte das gut sein?

    chirolog schrieb:

    Besteht die möglichkeit dass alle anderen berechnet werden?

    JA! siehe oben. irgendwo müssen die werte berechnet werden, da es mit an sicherheit grenzender wahrscheinlichkeit nicht einfach 1:1 ungefilterte messwerte sind. und da so ein PC einfacher zu programmieren ist als irgend ein kleines mess-kasterl, und es wie schon gesagt flexibler ist, hätte ich persönlich die berechnung ganz sicher im PC gemacht. und nicht im messkasterl.
    was u.a. auch erklären würde wieso für eine messung so viele daten übertragen werden. weil er sich mehrere samples holt und dann filtert und rumrechnet.



  • Ja aber wäre dann unsere vermutung nicht falsch, wo wir angenommen haben das die letzten 2 Bytes CRC16 Prüffsumme der übertragung wären?



  • So nun mal paar antworten, wieso den winkel berechnung, wir haben eine spanung von -15 bis 15 z.B. in der Zieltaffel sind zwei wasserwagen, je nach neigung werden die werte anders angezeigt und übermittelt, so ungefähr, klar könnte ich noch ins detail gehen, aber ich denke für die meisten wird es verständlich sein.

    JA! siehe oben. irgendwo müssen die werte berechnet werden, da es mit an sicherheit grenzender wahrscheinlichkeit nicht einfach 1:1 ungefilterte messwerte sind. und da so ein PC einfacher zu programmieren ist als irgend ein kleines mess-kasterl, und es wie schon gesagt flexibler ist, hätte ich persönlich die berechnung ganz sicher im PC gemacht. und nicht im messkasterl.
    was u.a. auch erklären würde wieso für eine messung so viele daten übertragen werden. weil er sich mehrere samples holt und dann filtert und rumrechnet.

    Das ist eine gute Vermuttung, ich hab heute gemerkt wenn ich selber so ein Datenstring über die rs232 schicke, immer wider den selben, dann pendelt sich der nick wert erst mit der zeit ein, z.B. er war auf 10,7 und ich schick im den string mit der 9,4, dann zeigt er zuerst die 9,8, dann die 9,6 dann die 9,5 und dann erst die 9,4, es hab ich erst heute gemerkt. Aber die Temperatur und all die anderen standart sachen ändern sich sofort. Ich hab ja geschrieben das ich eine 2 bis 3 sekunden verzögerung merke.
    Ich werde morgen vom morgens die versuche durchlaufen lassen, alles aufzeichen , protokolieren und euch jede stunde die ergebnisse rausstellen.
    Vielen Dank für die Tips.
    Ich bedanke mich würklich bei allen die dabei sind und mir helfen ich hätte es nicht glauben können.



  • Ja aber wäre dann unsere vermutung nicht falsch, wo wir angenommen haben das die letzten 2 Bytes CRC16 Prüffsumme der übertragung wären?

    Was hat das eine mit dem anderen zu tun - die Checksumme (wenn es denn eine ist - kann auch ganz was anderes oder eine andere hausgemachte Checksumme sein) interessiert sich doch normalerweise nie für den Inhalt der mit Ihr validiertbar gemacht wird



  • genau.

    nur dass die komplizierten berechnungen nicht im mess-kasterl gemacht werden heisst ja nicht dass das mess-kasterl nicht mal fähig ist eine CRC zu berechnen.
    und da ne CRC, speziell bei einer so unsicheren übertragungsart wie RS232, eine tolle sache ist, ... schickt das mess-kasterl halt ne CRC mit.

    also kein widerspruch.



  • ps: wenn du da eh aufgezeichnete daten reinschicken kannst, dann kannst du ja auch "geschummelte" daten reinschicken.

    => hast du schon probiert einfach mal das eine oder andere byte in einer aufgezeichneten messkasterl-message zu ändern, und diese geänderte message reinzuschicken?

    dabei könnte dich natürlich eine evtl. vorhandene prüfsumme stören. was aber schonmal ein guter test wäre um rauszufinden ob die kommunikation irgendwie abgesichert ist.



  • Ja ich hab versuche eine message zu schicken und ja es gibt eine Prüffsumme.
    Bei einer veränderten message schreibt mir das Programm, übertragen daten Fehlerhaft.



  • Ich versuche mit dem Umrechner die RCR zu ermitteln für meine Daten, leide ohne erfolg, was sagt Ihr dazu.
    http://www.lammertbies.nl/comm/info/crc-calculation.html
    z.B.

    ff ff ff ff 07 81 00 00 48 7d 01 50 8e 56 03 08 09 00 10 00 0a 00 12 00 08 00 10 00 0a 00 10 00 10 00 0f 00 12 00 10 00 12 00 0f 00 12 00 0e 00 12 00 0e 00 10 00 0c 00 00 00 00 00 00 00 ff 0f 00 00 22 00 ff 0f 00 00 00 00 53 00 09 03 38 09 ff 07 02 00 00 00 00 00 00 00 a6 e2 df c1 57 b2 e4 3b 05 81 73 32 e1 a6 ad af 81 7f
    

    Der Gedanke war dass die 81 7f die Prüfsumme ist.



  • Bei einer veränderten message schreibt mir das Programm, übertragen daten Fehlerhaft.

    Poste mal die 100% exakte Fehlermeldung - oder besser einen Screenshot davon, moeglicherweise findet man die in der EXE



  • http://img4web.com/view/WTK8NE
    Siehe Bild unten.
    Auf dem Bild unten Rechts steht jetzt " Status: 1600 " und im roten Feld ">>> Fehler: Laser nicht auf Zieltafel <<"
    So wenn ich jetzt ein veränderten Packet zu im hin sende, schreibt er mir.
    " Status: 0002 " und im roten Feld ">>> Fehler: Uebertragene Daten fehlerhaft <<<"
    Diese sachen lassen sich im Ordner der ELS finden , Sprache1 z.B. da sind alle Fehlermeldungen aufgezählt.



  • Ich glaube, man muss manchmal auch einfach zugeben, dass man einer Aufgabe nicht gewachsen ist. Wir diskutieren hier schon 9 Seiten und versuchen dir zu helfen. Z.B. fragt Gast3 gezielt nach Informationen, und du ignorierst die Fragen komplett. Das mag eine Weile gut gehen, aber irgendwann verlieren die Leute die Laune, weil sie das Gefühl haben, mit einer Wand zu sprechen, und ich wage die Vermutung, dass hier auch bald Feierabend ist.

    Ich habe folgende Bitten an dich:

    - welche Felder im Protokoll hast du identifiziert und weißt sicher, welche Bedeutung sie haben
    - welche Vermutungen hast du über bestimmte Felder, ohne ihre Bedeutung sicher zu kennen
    - poste nur relevante Informationen, versuche dabei aber so genau wie möglich zu sein
    - antworte auf Fragen, die dir gestellt werden. Und auch hier wieder: so genau wie möglich und nur relevante Informationen
    - Screenshots sind schon eine schöne Sache, aber nicht alle Benutzer möchten/können auf irgendwelche Imagehoster Seiten surfen. Mach eine tabellarische Übersicht, in der du die Anzeigeparameter auflistest. Um zu sagen, dass die Temperatur 27° ist braucht man nicht unbedingt einen Screenshot



  • ohne debuggen kommt man da nicht weit - IDA kann nicht so gut mit dem Turbo Pascal Kompiler-Code und es sind auch einige größere (denke schon Codebereiche) nicht aufgelöst (einfach mit der C-Taste da durch fuehrt zu keinen Erfolg), noch dazu werden fast alle IRQ-Procs (z.B. der fuer den seriellen Empfang) erst zur Laufzeit dynamisch zugewiesen und es werden Zeigervariablen genutzt die nirgends initalisiert werden

    kannst du mal den Turbo Debugger auf deiner VM
    installieren und schauen ob man damit die EXE Starten kann?

    in dem Turbo Debugger 5.5 Download ist der 5.0 drinn der sollte fuer DOS passen
    http://www.woodmann.com/collaborative/tools/index.php/Category:16_bit_and_DOS_Debuggers



  • Zu DocShoe, ich danke natürlich allen die sich die Mühe geben mir zu helfen, doch der Vorwurf ist wirklich unnötig und fehl am Platz.
    Wenn Sie sich durchlesen hab ich alles schon gemacht. Mach es gerade nochmal. Wie schon vorher von anderen erwähnt wurde, sind die Zahlen
    die übertragen werden irrelewant. Ich kann Sie nirgends wohin zuordnen, verstehen Sie. Machen Sie sich doch mal die Mühe und setzen Sie bitte ein Datenpacket in zahlen um, Sie werden feststellen das die Zahlen für mich keine bedeutung haben, oder nicht den Zahlen
    entsprechen die ich sehe.Es wurde eine Vermuttung ausgesprochen das die Zahlen erst im Rechner berechnet werden, damit war ich einverstanden und führe jetzt dafür test durch.
    Ich versuche alle zu antworten so gut es geht.

    - welche Felder im Protokoll hast du identifiziert und weißt sicher, welche Bedeutung sie haben
    Atwort: Ich konnte bisher nur die Seriennummre klar identifizieren sonst nichts, alle anderen werte sind für mich nicht zu zu ordnen.
    - welche Vermutungen hast du über bestimmte Felder, ohne ihre Bedeutung sicher zu kennen
    Atwort: Auch eine Frage die nicht klar definiert ist, was für bestimmte Felder, und was für Bedeutung. Wie ich schon geschrieben hab, ich weiß das machen zahlen negativ sind, ich weiß das manche nachkomma stellen haben 2 Werte hinter koma,
    ich denke das die letzten 2 Bytes Prüfsumme sind.
    - poste nur relevante Informationen, versuche dabei aber so genau wie möglich zu sein
    Antwort: ich versuche es wirklich, es könnte ja jemandem etwas auffallen auch wenn es für eine irrelevant ist, so wie in den Beiträgen oben.
    - antworte auf Fragen, die dir gestellt werden. Und auch hier wieder: so genau wie möglich und nur relevante Informationen
    Antwort: Ich versuche wirklich alles umzusetzen was von mir verlangt wird und versuche zu antworten. Wenn ihr merkt dass ich etwas übersehen habt copy & paste und mich nochmal drauf ansprechen, bitte.
    - Screenshots sind schon eine schöne Sache, aber nicht alle Benutzer möchten/können auf irgendwelche Imagehoster Seiten surfen.
    Mach eine tabellarische Übersicht, in der du die Anzeigeparameter auflistest. Um zu sagen, dass die Temperatur 27° ist braucht man nicht unbedingt einen Screenshot
    Antwort: Ich zeige die Screenshots damit mehr verständniss aufkommt, was ich sehe und was Ihr denkt was ich noch realesieren kann und vielleicht auch nicht.
    Sie sagen mir gerade screens schön und gut , sollte ich aber nicht machen, doch der gast3 davor schreibt mir mach ein screenshoot.

    Es ist von mir jetzt keine Kritik an Sie doch sie müssen verstehen dass ich mir wirklich viel Mühe damit gebe.
    Ich arbeite ja noch paaralel, Schreib im C++ code , visualesiere es noch mit movicon von progea und lasse die Test laufen und versuche die Auszuwerten.
    Jetzt bin ich mit der CRC Prüffsume dran, meine frage können sie die letzten 2 BYTES der Prüffsumme zuordnen, irgendwie ?



  • ohne debuggen kommt man da nicht weit - IDA kann nicht so gut mit dem Turbo Pascal Kompiler-Code und es sind auch einige größere (denke schon Codebereiche) nicht aufgelöst (einfach mit der C-Taste da durch fuehrt zu keinen Erfolg), noch dazu werden fast alle IRQ-Procs (z.B. der fuer den seriellen Empfang) erst zur Laufzeit dynamisch zugewiesen und es werden Zeigervariablen genutzt die nirgends initalisiert werden

    kannst du mal den Turbo Debugger auf deiner VM
    installieren und schauen ob man damit die EXE Starten kann?

    in dem Turbo Debugger 5.5 Download ist der 5.0 drinn der sollte fuer DOS passen
    http://www.woodmann.com/c ....... :16_bit_and_DOS_Debuggers

    Ja es läuft mit den Programmen, aber wirklich schlau werde ich gerade nicht daraus, vielleicht mach ich ja was falsch 😉
    Aber die Assembler umsetzung sehe ich und all die anderen Sachen.
    Könnte sich das auch mal einer anschauen und seine Meinung dazu sagen.



  • es wäre auch einfacher wenn du Quote-Blöcken beim Antworten verwendest - so wie jeder im ganzen Internet

    Wie schon vorher von anderen erwähnt wurde, sind die Zahlen
    die übertragen werden irrelewant. Ich kann Sie nirgends wohin zuordnen

    Sie können nicht irrelevant sein - du kannst den Inhalt nur noch nicht interpretieren, ich habe doch mind. 20 Felder gefunden dich sich im In/Dekrement 1 um Werte bewegen - koennte doch so eine Pegel/Spannung sein - oder?
    deine 27 kam doch sogar mehrfach vor - aber vielleicht auch nur ein Pegel

    Ich zeige die Screenshots damit mehr verständniss aufkommt, was ich sehe und was Ihr denkt was ich noch realesieren kann und vielleicht auch nicht.
    Sie sagen mir gerade screens schön und gut , sollte ich aber nicht machen, doch der gast3 davor schreibt mir mach ein screenshoot.

    den Screenshot wollte ich nur du keinen Fehler machen kannst - damit ich das auch in der EXE finde

    aber ansonsten kommt das Gefühl auf das du gar keine Aufschriebe deiner Erkenntnisse hast - oder nur wilde Zettel, damit kommst du auch nie zum Ziel
    auch ist es blöd wenn du auf mein bitten hin Daten in meinem Format postest aber das irgendwie relativ sinnfrei ist und so wirkt als würdest du es nur tun damit ich was gesehen habe - wie sind deine Information gerade Strukturiert

    Es ist von mir jetzt keine Kritik an Sie doch sie müssen verstehen dass ich mir wirklich viel Mühe damit gebe.
    Ich arbeite ja noch paaralel, Schreib im C++ code , visualesiere es noch mit movicon von progea und lasse die Test laufen und versuche die Auszuwerten.

    die Visualiserung ist von dem bisherigen das einfachste - das Protkoll ist viel viel schwieriger

    Jetzt bin ich mit der CRC Prüffsume dran, meine frage können sie die letzten 2 BYTES der Prüffsumme zuordnen, irgendwie?

    Neine - sonst hätte es schon jemand gepostet - aber wenn du den Turbo Debugger
    unter deiner VM zum laufen bringst habe ich möglicherweise mal Zeit zu schauen ob ich von der Fehlerausgabe auf die Fehlererkennung kommen kann - denn dort muss ja irgendwo eine Prüfung stattfinden - dazu wäre dein Programm/Vorgehen noch schön mit dem du den Fehler provozierst (ich will einfach so wenig wie möglich Zeit investieren)

    und warum DocShoe von "zu hoch" spricht: du bist einfach unstrukturiert und wechselst hin und her in der Hoffnung auf einen kleinen/schnellen Erfolg - wir Profis wissen das es so nicht läuft, beruhigen uns und gehen langsam und massiv strukturiert eine Möglichkeit nach der anderen durch - und viele Tests würden bei uns Tage dauern wo du schon nach 2h postest das da nichts geht

    Beispiel: Warum hast du noch immer nicht die Betriebsstunden-Position?

    du wartest bis die Betriebsstunden gerade gewechselt hat

    1. Tracemessung

    du wartest bis die Betriebsstunde nochmal wechselt

    2. Tracemessung

    du wartest bis die Betriebsstunde nochmal wechselt

    3. Tracemessung

    jetzt hast du

    3 Sätze (Messungen)
      n Datensätze a 108 bytes
    

    jetzt muss es an einer Position X in einem Datensatz eine Bytefolge kommen die
    in einem Satz immer gleich ist - aber sich über die Sätze unterscheidet

    und das haben wir ALLE schon x mal erklärt - dann kennst du die Position und
    kannst dir jetzt nur diese Bytes anschauen, von denen du weist welchen Wert sie haben (sollten) und das z.B. mit 1 Inkrementiert wird

    wenn du so was vergisst oder anders verstehst könnte es zu hoch für dich sein


Anmelden zum Antworten