Beiträge von bzd

    Ja, ich denke wir sollten erstmal schauen ob man eine Antwort auf den allerersten 16 1B 3F Request bekommt, wenn man exakt die gleichen COM-Port Parameter wählt.

    Ich sehe folgende Unterschiede:

    IOCTL_SERIAL_SET_CHAR:

    Original: EOF:0 ERR:0 BRK:0 EVT:0 XON:0 XOFF:0

    Test: EOF:1a ERR:3f BRK:3f EVT:1a XON:11 XOFF:13

    IOCTL_SERIAL_SET_HANDFLOW

    Original: Shake:0 Replace:4 XonLimit:1024 XoffLimit:1024

    Test: Shake:0 Replace:0 XonLimit:0 XoffLimit:0

    IOCTL_SERIAL_SET_TIMEOUTS

    Original: RI:-1 RM:-1 RC:-2 WM:0 WC:0

    Test: RI:-1 RM:-1 RC:10 WM:0 WC:0

    IOCTL_SERIAL_SET_WAIT_MASK

    Original: Mask: RXCHAR RXFLAG CTS DSR RLSD BRK ERR RING

    Test: Mask: RXCHAR

    Wenn man die wie im Original einstellt, und dann den 3 Byte Request sendet, kommt hoffentlich die 1-Byte Antwort.

    Falls nicht, dann müsste man prüfen ob die Original-SW irgendwie noch zusätzlich die Zelle anschaltet.

    Testweise könnte man die Original-SW starten, dann per Taskmanager den Prozess beenden (so dass die SW nichts mehr abschalten kann) und schauen ob der Test dann klappt.

    Hallo,

    vielen Dank für die Unterstützung!

    Das Protokoll scheint dem MettlerMultiRange (MMR) ähnlich zu sein (siehe hier, Kapitel 5.1), aber mit ein paar Zusätzen.

    Die COM-Port Einstellungen sind:

    • 9600 baud
    • 7 databits
    • 2 stopbits
    • even parity
    • kein FlowControl/Hanshake
    • RTS off
    • DTS off

    Ich denke das Protokoll unterstützt mehrere Wägezellen und deshalb haben diese eine 1-Byte-Addresse.

    Zunächst scheint die SW nach Wägezellen zu suchen, und die Wägezelle antwortet mit ihrer Addresse 0x06:


    >> 16 1B 3F

    << 06

    Danach sind alle Befehle von der SW so aufgebaut: Address-Byte Befehl-String \r \n, also binär 06 ... 0d 0a

    Nach dem Finden der Wägezelle schickt die SW ein "I" Befehl, vermutlich für Identifikation.

    Daraufhin scheint die Zelle eine lange Antwort zu schicken, mit mehreren durch \r\n getrennten Teilen, und nach jedem solchen Teil muss die SW erneut die Zelle anfragen mit einem "leeren" Request bestehend nur aus der Addresse

    >> 06 49 0d 0a "I"

    << 06 20 49 42 4c 0d 0a "IBL"

    >> 06

    << 20 41 20 4f 49 4d 4c 20 41 0d 0a

    >> 06
    << ...

    << 49 45 0d 0a "IE"

    Das "IE" steht vielleicht für IdentifikationEnde und daraufhin hört die SW auf leere Requests zu schicken.

    Insgesamt wird folgendes übermittelt:

    Das sind wohl die Genauigkeiten + Messbereiche, sowie der Name der Zelle (LZ20-0-0108)

    Danach tariert die SW die Zelle, das entspricht dem dokumentieren MMR Protokoll:

    >> "T 0.000 kg"

    << "TBH 0.000 kg"

    Und ab dann fragt die SW ca. alle 100ms die Waage nach dem aktuellen Gewicht, ebenfalls nach dem MMR Protokoll:

    >> "SXI"

    << "SX G 0.542 kg N 0.542 kg T 0.000 kg"

    Und hier sieht man das gemessene Gewicht :)

    Manchmal zeigt die Waage an, dass sie noch nicht stabil ist:

    >> "SXI"

    << "SXD G 0.542 kg N 0.542 kg T 0.000 kg"

    Einmal im Trace kommt ein Austausch von "ER" Nachrichten, und die SW beginnt wieder von vorne mit der Identifikation. Das könnte eine Art Fehlerekennung & Reset sein...

    Aber basierend auf diesem Trace könnte man versuchen eine eigene Ansteuerung zu programmieren. Ich würde sogar vermuten dass man die Suche nach der Zell-Adresse und die Identifikation auslassen kann: d.h. es sollte reichen den COM-Port richtig einzustellen und einen "SXI" Befehl an die Zelle zu schicken als binär 06 53 58 49 0d 0a

    -> Klappt das bei dir? Und wenn ja: klappt das auch direkt nach dem Boot nach Strom-Anstecken ohne davor die Original-SW zu starten?

    Denn leider kommt auf meiner UC-HTT-P Waage auch darauf keine Antwort, weshalb ich mich frage ob entweder meine Waage etwas anders ist, oder ob man noch abgesehen vom COM-Port die Wägezelle "aktivieren" muss.

    Hallo zusammen,

    ich habe - für rein private Zwecke - eine gebrauchte Mettler Toledo UC3-HTT-P ganz ohne Betriebssystem&Software erstanden und versuche diese mit einer eigenen Software zu betreiben.

    Eine Linux-Installation mit funktionierendem Touch-Screen, USB, externem RS232-Port, Ethernet funktioniert auch schon, und auf dem Linerless Printer konnte ich auch schon ein paar Buchstaben drucken.

    Allerdings bleibt die Waage selbst noch ein Mysterium. Ich hätte vermutet sie ist über den zweiten COM-Port verbunden und nutzt ggf. eines der Standard-Kommunikationsprotokolle von Mettler Waagen. Leider habe ich noch keine COM-Port Einstellung (Baud-Rate, Datenbits, Partität, ...) gefunden und/oder Zeichensequenz auf der ich irgendeine Reaktion empfange.

    Deshalb die Frage ans Forum: könnte jemand mit dieser Waage und funktionierender Software die Kommunikation zwischen Software und Wägezelle aufzeichnen?

    Das sollte mit diesem Microsoft Tool möglich sein: https://docs.microsoft.com/en-us/sysinter…wnloads/portmon - keine Installation notwendig, läuft direkt von USB-Stick

    1. PortMon herunterladen und auf USB Stick speichern
    2. USB stick an UC3-HTTP-P anstecken und PortMon starten
    3. Im Menü "Computer -> Connect Local" auswählen
    4. Im Menü "Edit -> Max Output Bytes..." auswählen und 512 eingeben
    5. Im Menü "Options > Show Hex" auswählen
    6. Im Menü bei "Capture -> Ports" alle COM und Parallel Ports auswählen
    7. Im Menü "Capture -> Capture Events" anklicken
    8. Normale Software starten
    9. ein paar Wiege (& ggf. Druck-)Vorgänge durchführen
    10. danach in PortMon die Aufzeichnung auf den USB-Stick speichern

    Oder gibt es neben der Verkaufssoftware ein paar extra Waagen-Test (und ggf. auch Drucker-Test?) Tools, die zum Verständis weiterhelfen könnten?

    VIelen Dank!