Com Port auslesen mit CommMG

  • Hallöchen,
    ich hab da ein Gerät an meiner Seriellen Schnittstelle, welches auf Knopfdruck Daten in meinen Rechner schubst. Das funktioniert auch einwandfrei, wenn ich die Schnittstelle mit nem Port-Monitor beobachte, kommen da schöne brauchbare Hex-Werte raus.
    Jetzt will ich die Daten aber mit einem AutoIt Script benutzen, hab also nach einer Möglichkeit gesucht und CommMG gefunden.

    Habs dann schnell wiefolgt in mein Script eingebaut:

    Und ich bekomm Tatsächlich Daten in meine Temp.txt geschrieben, aber anstatt schöner Hex-Werte bekomm ich dann sowas:

    Und das, obwohl ich die _CommSetPort Parameter eigentlich so eingestellt habe wie im Port-Monitor auch.

    Wie kommt das, und was kann ich tun, dass mir das Programm schöne Hex-Werte ausspuckt?

  • Eins vorweg: Ich habe mit Auslesen von seriellen Schnittstellen bisher nix zu tun gehabt und kann daher auch nicht wirklich fundiertes Wissen beitragen.
    Aber eines fällt mir auf.
    Erst schreibst du, dass dir Hex-Werte angezeigt werden (also binäre Daten) und dann schreibst du, dass du eine txt-Datei der Daten erstellt hast (also Textdaten).
    Wenn du eine Datei als txt abspeicherst (egal mit welchen Daten) und sie dann mit einem Texteditor anschaust wird der Editor natürlich versuchen die Daten als Text zu interpretieren.
    Also deine Binärdaten werden im einfachsten Fall als ASCII behandelt.

    Bekommst du nun also Textdaten oder Binärdaten übertragen?
    Je nachdem musst du die Daten entsprechend behandeln.

  • Hex-Daten bekomme ich wenn ich die Übertragung mit dem Port-Monitor beobachte.
    AutoIt bekommt Bytes von der Seriellen Schnittstelle, soweit ich das erkenne, und die werden dann in Chars umgewandelt und in der Datei gespeichert.
    Aber die Bytes stimmen vorne und hinten nicht, ich hab mal ein bisschen rumprobiert, das wären die ersten 10 Hex-Daten:

    Code
    0D 0A 4D 4F 44 45 4C 20 20 20

    und das die Bytes:

    Code
    13 10 83 138 170 197 5 2 2

    Die ersten beiden Stimmen ja noch überein, aber Nummer 8-10 sollten ja eigentlich zumindest in der Codierung gleich sein :/

  • Soweit ich es mitbekommen habe, wandelt AutoIt alles automatisch in das Dezimalsystem um. Wenn Du die Ausgabe im hexadezimalen System möchtest, musst Du vor der Ausgabe mittels Hex() umwandeln.

    Versuch mal mit _CommSendByte und _CommReadByte zu arbeiten, das führte zumindest bei mir für die hexadezimale Kommunikation zum Erfolg. Du wirst allerdings, wie oben erwähnt, die Zahlenformate Deinen
    Wünschen entsprechend umwandeln müssen.

    Ich weiß gar nichts.