Leitura porta serial java

estou tentando ler uma porta serial de uma balanca rodoviaria, utilizando java,
mas nao consigo, utilizei o virtualSerialPort para ver o que trafegava na rede,
entrei em contato com a fabrica, mas eles so tem exemplos em dephi e VB,
e fica meio dificil de traduzir, jah que o java utiliza maquina virtual, e os exemplos
chamam funcoes direto do sistema operacional.

alguem podeira me passar os passos resumidos de como capturar as informacoes ?

isso vai ser interessante… vou acompanhar e depois tentar fazer algo. eu ja trabalhei com serial mais foi em delphi.

descobri umas coisas a mais,
consegui fazer a comunicacao com a balanca atravez de uma dll, fornecida pela fabricante da mesma, utilizando a biblioteca JNA, onde eh simples fazer, mas nao eh o interessante, pois provavelmente nao seja multiplataforma,
agora estou lendo este post http://www.viamais.net/blog/index.php?s=rxtx , se conseguir posto mais coisas.

import com.sun.jna.Native;
import com.sun.jna.win32.StdCallLibrary;


public class JNATeste {
    public static void main(String[] args) {

        JNATeste h = new JNATeste();
        // carregando a .dll
        User32 us = (User32) Native.loadLibrary(User32.class);
        us.MessageBoxA(0, "MSG", "Titulo", 0);
        
    }


// parte principal. Voce deve conhecer a biblioteca, seus métodos, o conjunto tipo/parametro e retorno
interface User32 extends StdCallLibrary {

    public int MessageBoxA(int hwnd, String text, String caption, int type);

    }

}

É só tomar cuidado com a localização da biblioteca (sua .dll), a conversão de tipos.
Ou então tentar usar JNI, esta fico te devendo.

Site:
https://jna.dev.java.net/

sim, quanto a dll eu consegui, desta forma:

interface MylibComp

import com.sun.jna.Library;
import com.sun.jna.platform.win32.WinDef.HWND;

public interface MyLibComp extends Library {

    //coloca as assinaturas do metodos contidos na DLL que ira ser carregada
    public double lbCapturarPeso(int port);

    public double lbZerarPeso(int porta);

    public boolean lbReiniciarBalanca(int porta);

    void lbExibirUltimoErro(HWND handle);
}

classe main:

import com.sun.jna.Native;
import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {

        //constante LB_FALHA, que equivale a 2 elevado a 32 (0xFFFFFFFF)(4.294967295 E9).

       //aqui carrega a bibliotaca para a classe MylibComp, da dll colocada no disco C
        MyLibComp m = (MyLibComp) Native.loadLibrary(
                "c:\\Balanca.dll", MyLibComp.class);
//usando os metodos, 
        JOptionPane.showMessageDialog(null, m.lbCapturarPeso(1), "ler peso com 1", JOptionPane.INFORMATION_MESSAGE);
        JOptionPane.showMessageDialog(null, m.lbReiniciarBalanca(1), "reiniciar bal", JOptionPane.INFORMATION_MESSAGE);
        JOptionPane.showMessageDialog(null, m.lbZerarPeso(1), "zerar peso com 1", JOptionPane.INFORMATION_MESSAGE);
    }
}

funcionou, so tenho q tirar um tempo pra testar se funciona em outros SO, o que provavelmente nao,
e a fabrica nao relata nada sobre outras plataformas,

Tenta usar algo do tipo:


        // identifica o sistema operacional
        String sistemaOperacional = System.getProperty("os.name");
        if (sistemaOperacional.contains("Windows")) {
            System.out.println(sistemaOperacional);
            System.out.println("Carregando biblioteca para Windows (.dll): " + sistemaOperacional);
            //... sua logica aqui
            //... sua logica aqui
        } else if ( sistemaOperacional.contains("Linux") ) {
            System.out.println(sistemaOperacional);
            System.out.println("Carregando biblioteca para Linux (.so): " + sistemaOperacional);
            //... sua logica aqui
            //... sua logica aqui
        } // fim de else
    }// fim de main

Windows, Linux, Mac.

Somente testei com Windows, nunca com outros SO.
Vale a tentativa.

voce tah certo Anderson, vai funcionar,

vale, com ceteza vale a pena, e se possivel vou utilizar como recomendação linux, mas antes vou ter que ver com a fabrica =(, se pelo menos passar o codigo, ai talvez recompilasse para linux, mas vamos aguardar…

Estou tentando fazer a comunicação com as balanças rodoviárias da Toledo, e estou com o mesmo problema.

Alguém poderia me informar ou me passar um link com as dll’s da balança pra poder fazer minhas classes??

Obrigado a todos, desde já.

Qual modelo da sua balança?