Catraca topdata

Aew galera!!!

to com um probleminha!!!
Tenho uma catraca topdata, e não estou conseguindo fazer ela se comunicar com o meu projeto em java.

Sei que tem uma maneira dela se comunicar por meio do JNI…porém eu não faço a minima idéia nem como começa
se alguém puder ajudar eu ja to agradecendo…

Vlw!!!

Aguardo dicas…!!!

http://edn.embarcadero.com/article/20679

http://www.urubatan.com.br/chamando-metodos-nativos-dllso-em-java-sem-jni/

Qual o modelo da catraca? Pode ser que você tenha de usar sockets (no caso da “Box Net”) ou então comunicação serial (nesse caso, use o JavaComm. Um exemplo de implementação dessa especificação é a RxTx.)

Responde o “enantiomero”…
Ai fica mais facil de ajudar.

E ai galera!!!

é uma catraca da topdata, modelo “top” e a comunicação é por serial(com1,com2).

blz

Vlw pela ajuda!!!

procure rxtx, vai encontrar muita coisa.
Importe o pacote da mesma e manda bala.

Desculpe a ignorancia mais oq é esse rxtx??

http://www.rxtx.org/

É uma api pra controlar a porta serial do pc… com ela vc pode enviar comandos e receber comandos da sua catraca…
mas pra isso vc deve saber como a catraca funciona.

pra utilizar a api da uma olhada nesse link q vai t ajudar:

http://www.devmedia.com.br/articles/viewcomp.asp?comp=6722

Dei uma procurada sobre a sua catraca e a empresa desenvolvedora fornece informações para desenvolvimento, então acho melhor vc entrar em contato direto com a fabricante. Eles devem ter um material bom, sobre a comunicação com o equipamento.

Valeu pessoal!!!

Vou dar uma olhada nos links e posto os resultados!!!

Vc já tem a dll pronta para a comunicação? Sabe as funções que ela possui para poder operá-la…??? Ou vc tem um protocolo de comunicação com a catraca?

...  
System.loadLibrary("myDllSemExtensao"); // Nome da sua dll sem extensão  
MyDllWrapper myDll = new MyDllWrapper();  
int valor;  
valor = myDll.myMethod();  
...

Tenta desta maneira…

Fiz uma aplicação e deu certo! flw

Eu tenho a dll e suas funções tmb leopoldof…

Agora no caso do colega fdcarli é só colocar esse código que a catraca ja entra em comunicação com o aplicativo em java…?

Eu montei um projetinho de teste utilizando RXTX que nem os colegas thingol e homisinho recomendarão porém
acontece o seguinte erro

“Erro obtendo id da Porta:gnu.io.NoSuchPortException
Java Result: 1”

O código que contém esse erro está aqui

[code]public class serialComLeitura implements Runnable, SerialPortEventListener {
public String dadosLidos;
public int nodeBytes;
private int baudrate;
private int timeout;
private CommPortIdentifier cp;
private SerialPort serialPorta;
private OutputStream saida;
private InputStream entrada;
private Thread threadEntrada;
private Thread threadLeitura;
private boolean idPortaOK;
private boolean portaOK;
private boolean leitura;
private boolean escrita;
private String porta;
protected String peso;

    public void setPeso(String peso){
        this.peso = peso;
    }
    public String getPeso(){
        return peso;
    }

    public void setSerialPorta(SerialPort serialPorta){
        this.serialPorta = serialPorta;
    }
    public SerialPort getSerialPorta(){
        return serialPorta;
    }         
    
    public void serialComLeitura(String p, int b, int t){
        this.porta = p;
        this.baudrate = b;
        this.timeout = t;
     }

    public void habilitaEscrita(){
        escrita = true;
        leitura = false;
    }
    public void habilitaLeitura(){
        escrita = false;
        leitura = true;
    }
    public void obterIdDaPorta(){
        try{
            cp = CommPortIdentifier.getPortIdentifier(porta);
            if (cp == null){
                System.out.println("Erro na Porta");
                idPortaOK = false;
                System.exit(1);
            }idPortaOK = true;
            
        }catch (Exception e) {
            System.out.println("Erro obtendo id da Porta:"+ e);
            idPortaOK = false;
            System.exit(1);
        }    
        
    }
    public void abrirPorta(){
        try{
            serialPorta = (SerialPort)cp.open("serialComLeitura", timeout);
            portaOK = true;
            //configurar os parâmetros
            serialPorta.setSerialPortParams(baudrate, serialPorta.DATABITS_8, serialPorta.STOPBITS_1, serialPorta.PARITY_NONE);
            serialPorta.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
            }catch(Exception e){
                portaOK = false;
                System.out.println("Erro abrindo comunicação: " + e);
                System.exit(1);
            }
    }
    public void lerDados(){
        if (escrita == false){
            try{
                entrada = serialPorta.getInputStream();
            }catch(Exception e){
                System.out.println("Erro de Stream: " + e);
                System.exit(1);
            }
            try{
                serialPorta.addEventListener(this);
            }catch (Exception e){
                System.out.println("Erro de Listener: " + e);
                System.exit(1);                                        
            }serialPorta.notifyOnDataAvailable(true);
            try{
                threadLeitura = new Thread(this);
                threadLeitura.start();
                run();
            }catch (Exception e){
                System.out.println("Erro de Thread: " + e);
            }
        }
    }
    public void enviarUmaString(String msg){
        if(escrita == true){
            try{
                saida = serialPorta.getOutputStream();
                System.out.println("Fluxo OK");
            }catch (Exception e){
                System.out.print("erro.status: " + e);
            }
            try{
                System.out.println("Enviando um byte para " + serialPorta);
                System.out.println("Enviando: " + msg);
                saida.write(msg.getBytes());
                Thread.sleep(100);
                saida.flush();
            }catch (Exception e){
                System.out.println("Ouve um erro durante o envio: " + e);
                System.out.println("Status: " + e);
                System.exit(1);
            }
        }else{System.exit(1);
    }
    }
    public void run(){
        try{
        Thread.sleep(5);
        }catch (Exception e){
            System.out.println("Erro de Thread: " + e);
        }
    }
    public void serialEvent(SerialPortEvent ev){
        StringBuffer bufferLeitura = new StringBuffer();
        int novoDado = 0;
        
        switch (ev.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:
            //Novo algoritmo de entrada
                while (novoDado != -1){
                    try{
                        novoDado = entrada.read();
                        if(novoDado == -1){
                            break;
                        }
                        if('\r' == ((char)novoDado)){
                        bufferLeitura.append('\n');
                        }else{
                            bufferLeitura.append((char)novoDado);}
                    }catch (IOException ioe){
                            System.out.println("Erro de leitura Serial: " + ioe);
                    }
                }
                    setPeso(new String (bufferLeitura));
                    System.out.println(getPeso());
                    break;
        }
        
    }
    public void fecharCom(){
        try{
           serialPorta.close();
        }catch (Exception e){
            System.out.println("Erro ao Fechar Porta: " + e);
            System.exit(1);
        }
    }

    public String obterPorta(){
        return porta;
    }

    public int obterbaudrate(){
        return baudrate;
    }

}
[/code]

Se puderem me ajudar com esse probleminha

Vlw pessoal!!!

Olá, pelo que vc me passou o erro esta ocorrendo na linha 49, confira que valor que a String porta esta assumindo, pode ser que a porta estaja errada!

flw T+

Eu trabalho com o projeto RxTx e nunca tiv problemas, se vc trabalhar direto com o protocolo da catraca é mais fácil do que com jni e vc tem controle total das funções da catraca. Recomendo RxTx.

O erro não esta na porta. Essa variável esta assumindo o valor “com1”. Alguém pode ajudar, to completamente perdido.