Bizerba Waage ansprechen

Bitte aktiviere JavaScript!
Geht aus dem obige Dokument hervor, direkt auf der ersten Seite: https://www.sbzsystems.com/download/pdf/Check-D-06-eng.pdf:)

Die Werte sind aus deinem Beispiel, dies hier ist das Senden von Preis und Text (Record No. 4):
0x04,0x02,0x30,0x34,0x1b,0x30,0x35,0x35,0x35,0x30,0x30,0x1b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x03

Der Preis ist dies: 0x30,0x35,0x35,0x35,0x30,0x30, was 055500 entspricht.
Der Text sind die ganzen 0x20, was Leerzeichen sind.
und 0x1b Escape trennt die Blöcke jetzt habe ich es auch Verstanden und werde mich mal ans umsetzen machen.

Habt erstmal herzlichen Dank

wenns klappt werde ich den fertigen Code hier noch einsetzen gibt sicher einige die Ihn auch brauchen können
Und sollte noch was hängen wende ich mich auch noch mal hoffnungsvoll an euch ;-)
 
Ich dachte an etwas wie (Achtung: keine Ahnung, ob das auch nur ansatzweise funktioniert)
Java:
import gnu.io.CommPortIdentifier;
import gnu.io.NoSuchPortException;
import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import gnu.io.UnsupportedCommOperationException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.TooManyListenersException;

/**
*
*
*/
public class BizerbaScale implements Scale, SerialPortEventListener {
    private static final byte STX = 0x02;
    private static final byte ETX = 0x03;
    private static final byte EOT = 0x04;
    private static final byte ENQ = 0x05;
    private static final byte ACK = 0x06;
    private static final byte NAK = 0x15;
    private static final byte ESC = 0x1b;

    private static final byte[] REQ_NAK_REASON = {EOT, STX, 0x30, 0x38, ETX};
    private static final byte[] REQ_RESULT = {EOT, ENQ};
    private static final byte[] SET_PRICE = {
       EOT, STX, 0x30, 0x34, ESC, 0x30, 0x35, 0x35, 0x30, 0x35, 0x35, 0x35, 0x30, 0x30,
       ESC, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ETX
    };

    private static final int SCALE_READY = 0;
    private static final int SCALE_READING = 1;
 
    private String m_sPortScale;
    private CommPortIdentifier m_PortIdPrinter;
    private SerialPort m_CommPortPrinter;  
    private OutputStream m_out;
    private InputStream m_in;

    private double m_dWeightBuffer;
    private int m_iStatusScale;

    private byte[] frame = new byte[256];
    private int frameLen = 0;

     
    /** Creates a new instance of ScaleComm
     * @param sPortPrinter */
    public BizerbaScale(String sPortPrinter) {
        m_sPortScale = sPortPrinter;
        m_out = null;
        m_in = null;
     
        m_iStatusScale = SCALE_READY;
        m_dWeightBuffer = 0.0;
    }
 
    /**
     *
     * @return
     */
    @Override
    public Double readWeight() {
     
        synchronized(this) {

            if (m_iStatusScale != SCALE_READY) {
                try {
                    wait(1000);
                } catch (InterruptedException e) {
                }
                if (m_iStatusScale != SCALE_READY) {
                    // bascula tonta.
                    m_iStatusScale = SCALE_READY;
                }
            }
         
            // Ya estamos en SCALE_READY
            m_dWeightBuffer = 0.0;
            send(SET_PRICE);
         
            // Esperamos un ratito
            try {
                wait(1000);
            } catch (InterruptedException e) {
            }
         
            if (m_iStatusScale == SCALE_READY) {
                // a value as been readed.
                double dWeight = m_dWeightBuffer / 1000.0;
                m_dWeightBuffer = 0.0;
                return new Double(dWeight);
            } else {
                m_iStatusScale = SCALE_READY;
                m_dWeightBuffer = 0.0;
                return new Double(0.0);
            }
        }
    }
 
    private void flush() {
        try {
            m_out.flush();
        } catch (IOException e) {
        }    
    }
 
    private void write(byte[] data) {
        try {
            if (m_out == null) {
                m_PortIdPrinter = CommPortIdentifier.getPortIdentifier(m_sPortScale); // Tomamos el puerto                
                m_CommPortPrinter = (SerialPort) m_PortIdPrinter.open("PORTID", 2000); // Abrimos el puerto    

                m_out = m_CommPortPrinter.getOutputStream(); // Tomamos el chorro de escritura
                m_in = m_CommPortPrinter.getInputStream();
             
                m_CommPortPrinter.addEventListener(this);
                m_CommPortPrinter.notifyOnDataAvailable(true);
             
                m_CommPortPrinter.setSerialPortParams(4800, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_ODD); // Configuramos el puerto
            }
            m_out.write(data);
        } catch (NoSuchPortException | PortInUseException | UnsupportedCommOperationException | TooManyListenersException | IOException e) {
        }    
    }
 
    /**
     *
     * @param e
     */
    @Override
    public void serialEvent(SerialPortEvent e) {
        switch (e.getEventType()) {
            case SerialPortEvent.BI:
            case SerialPortEvent.OE:
            case SerialPortEvent.FE:
            case SerialPortEvent.PE:
            case SerialPortEvent.CD:
            case SerialPortEvent.CTS:
            case SerialPortEvent.DSR:
            case SerialPortEvent.RI:
            case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
                break;
            case SerialPortEvent.DATA_AVAILABLE:
                try {
                    while (m_in.available() > 0) {
                        int b = m_in.read();

                        if (frameLen == 0) {
                            if (b == 0x15) {
                                send(REQ_NAK_REASON);
                            } else if (b == 0x06) {
                                send(REQ_RESULT);
                            } else if (b == 0x02) {
                                push((byte) b);
                                synchronized(this) {
                                    m_iStatusScale = SCALE_READING;
                                }
                            }
                        } else {
                            push((byte) b);
                            if (b == 0x03) {
                                processFrame();
                            }
                        }
                    }
                } catch (IOException eIO) {}
                break;
        }
    }

    private void send(byte[] buf) {
        write(buf);
        flush();
    }

    private void push(byte b) {
        frame[frameLen] = b;
        frameLen = (frameLen + 1) % frame.length;
    }


    private void processFrame() {
        if (frame[1] == 0x30 && frame[2] == 0x32) {
            int units = 0;
            for (int i = 0; i < 5; i++) {
                units = units*10 + (frame[i+6] - 0x30);
            }
            frameLen = 0;
            synchronized(this) {
                m_dWeightBuffer = units / 1000.0;
                m_iStatusScale = SCALE_READY;
                notifyAll();
            }
        } else {
            frameLen = 0;
            send(REQ_RESULT);
        }
    }
}
 
Ja, das ist ein Fehler. Korrektur:
Java:
    private static final byte[] SET_PRICE = {
       EOT, STX, 0x30, 0x34, ESC, 0x30, 0x35, 0x35, 0x35, 0x30, 0x30, ESC,
       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ETX
    };
 
@Werner_66 und, schon ans Laufen gebracht? :)
Nein will noch nicht so recht:oops:
warte jetzt aber bis Montag-Dienstag bekomme dann sehr wahrscheinlich das Polynom für die Waage und einen OPOS Waagentreiber von Bizerba.
Dann schaue ich mal weiter derzeit sendet er gar nichts an den COMPORT der Monitor bleibt leer nur über die externe Datei funktioniert es im Notfall muss ich halt mit JNA arbeiten.
Habe da gestern mal reingesehen so einfach wie das beschrieben ist
Code:
import com.sun.jna.*;
und JNA von Github holen ist es bei weitem nicht

hab das runtergeladenen Verzeichnis in die Bibliothek bei Netbeans geladen aber angeblich gibts keine JNA komponeneten, war aber nur mal ein kurzes reinschnuppern.
 
Dann schaue ich mal weiter derzeit sendet er gar nichts an den COMPORT der Monitor bleibt leer nur über die externe Datei
Vermutlich musst Du die Parameter in der Zeile
Java:
m_CommPortPrinter.setSerialPortParams(4800, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_ODD); // Configuramos el puerto
anpassen.
 
Vermutlich musst Du die Parameter in der Zeile
Java:
m_CommPortPrinter.setSerialPortParams(4800, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_ODD); // Configuramos el puerto
anpassen.
Selbstverständlich ebenso habe ich public class BizerbaScale und public BizerbaClass in public class ScaleDialog6 und public ScaleDialog6 geändert
 
Selbstverständlich ebenso habe ich public class BizerbaScale und public BizerbaClass in public class ScaleDialog6 und public ScaleDialog6 geändert
Die Klassennamen sind aber uninteressant :) Wichtig ist, dass die Parameter (und natürlich der COM-Port) stimmen. Dein Monitor sollte dann in jedem Fall wenigstens ausgeben, was Du an die Waage schickst.
 
Die Klassennamen sind aber uninteressant :) Wichtig ist, dass die Parameter (und natürlich der COM-Port) stimmen. Dein Monitor sollte dann in jedem Fall wenigstens ausgeben, was Du an die Waage schickst.
Die Klassennamen waren insoweit wichtig da ich es ja schon vorbereitet hatte und keine neue Datei dafür erstellen wollte.

Code:
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:123)
    at uk.chromis.pos.scale.ScaleDialog6.write(ScaleDialog6.java:115)
    at uk.chromis.pos.scale.ScaleDialog6.send(ScaleDialog6.java:177)
    at uk.chromis.pos.scale.ScaleDialog6.readWeight(ScaleDialog6.java:84)
    at uk.chromis.pos.scale.DeviceScale.readWeight(DeviceScale.java:92)
    at uk.chromis.pos.sales.JPanelTicket.incProduct(JPanelTicket.java:1064)
    at uk.chromis.pos.sales.JPanelTicket.buttonTransition(JPanelTicket.java:1101)
    at uk.chromis.pos.sales.JPanelTicketSales$CatalogListener.actionPerformed(JPanelTicketSales.java:108)
    at uk.chromis.pos.catalog.JCatalog.fireSelectedProduct(JCatalog.java:243)
    at uk.chromis.pos.catalog.JCatalog$SelectedAction.actionPerformed(JCatalog.java:407)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at org.pushingpixels.substance.internal.utils.RolloverButtonListener.mouseReleased(RolloverButtonListener.java:124)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
    at java.awt.Component.processMouseEvent(Component.java:6539)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6304)
    at java.awt.Container.processEvent(Container.java:2239)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2297)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
    at java.awt.Container.dispatchEventImpl(Container.java:2283)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
    at java.awt.EventQueue$4.run(EventQueue.java:733)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
vieleicht hilft das sobald ich die Waage auslöse
 
Du hast vermutlich RXTX noch nicht eingebunden?
habs gerade nochmal kontroliert die RXTXcomm ist in der Bibliothek
vorhanden und habe sie auch noch mal wie in der Readme steht in die entsprechenden Verzeichnisse der JRE kopiert

Manifest
Code:
Export-Package: gnu.io;version="3.11.0",gnu.io.rfc2217;version="3.11.0
 ";uses:="gnu.io"
gnu.io.rxtx.properties
Code:
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang2057{\fonttbl{\f0\fnil\fcharset0 Courier New;}{\f1\fnil\fcharset0 Calibri;}}
{\*\generator Riched20 10.0.10240}\viewkind4\uc1
\pard\f0\fs22 gnu.io.rxtx.SerialPorts=//./COM1://./COM2://./COM3://./COM4://./COM5://./COM6://./COM7://./COM8://./COM9://./COM10://./COM11://./COM12:\par

\pard\sa200\sl276\slmult1\f1\lang9\par
}
Readme zu dieser Version ich arbeite aber auf COM3:
To support virtual serial ports COM9-12 on Windows, the file gnu.io.rxtx.properties needs to be copied into your Java Runtime Environment:
{JRE-PATH}/lib/ext/gnu.io.rxtx.properties
 
Code:
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
Der hat doch einen an der Waffel der Treiber :cool:

Windows 10/64bit und Netbeans, habe jetzt den Treiber und die Jar so fleißig verteilt wie kein anderer.

die 32 und 64 bit Version jeweils in die Java Versionen in die "lib" und in die "bin" Ordner, im Projektordner auch in die "Lib" die Quellordner von wo ich Sie verteilt habe habe ich auch noch mal extra in die Bibliothek eingebunden: Ich habe mir später einfach gesagt besser einmal zu viel als das es immer noch fehlt.

Und was ist? Er mault immer noch! Der hat doch ne Schraube locker soll mal die Augen aufmachen und seine bits polieren.

Spass beiseite woran kanns liegen?
 
Gib mal bei der Ausführung explizit -Djava.library.path=/pfad/zum/ordner/der/die/dll/enthält an. Wenn Du 64-Bit-Java verwendest, musst Du die 64-Bit-Version des Treibers nehmen.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben