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…
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.)
H
homisinho
Responde o “enantiomero”…
Ai fica mais facil de ajudar.
M
Mibex
E ai galera!!!
é uma catraca da topdata, modelo “top” e a comunicação é por serial(com1,com2).
blz
Vlw pela ajuda!!!
H
homisinho
procure rxtx, vai encontrar muita coisa.
Importe o pacote da mesma e manda bala.
É 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:
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.
M
Mibex
Valeu pessoal!!!
Vou dar uma olhada nos links e posto os resultados!!!
L
leopoldof
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?
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
publicclassserialComLeituraimplementsRunnable,SerialPortEventListener{publicStringdadosLidos;publicintnodeBytes;privateintbaudrate;privateinttimeout;privateCommPortIdentifiercp;privateSerialPortserialPorta;privateOutputStreamsaida;privateInputStreamentrada;privateThreadthreadEntrada;privateThreadthreadLeitura;privatebooleanidPortaOK;privatebooleanportaOK;privatebooleanleitura;privatebooleanescrita;privateStringporta;protectedStringpeso;publicvoidsetPeso(Stringpeso){this.peso=peso;}publicStringgetPeso(){returnpeso;}publicvoidsetSerialPorta(SerialPortserialPorta){this.serialPorta=serialPorta;}publicSerialPortgetSerialPorta(){returnserialPorta;}publicvoidserialComLeitura(Stringp,intb,intt){this.porta=p;this.baudrate=b;this.timeout=t;}publicvoidhabilitaEscrita(){escrita=true;leitura=false;}publicvoidhabilitaLeitura(){escrita=false;leitura=true;}publicvoidobterIdDaPorta(){try{cp=CommPortIdentifier.getPortIdentifier(porta);if(cp==null){System.out.println("Erro na Porta");idPortaOK=false;System.exit(1);}idPortaOK=true;}catch(Exceptione){System.out.println("Erro obtendo id da Porta:"+e);idPortaOK=false;System.exit(1);}}publicvoidabrirPorta(){try{serialPorta=(SerialPort)cp.open("serialComLeitura",timeout);portaOK=true;//configurar os parâmetrosserialPorta.setSerialPortParams(baudrate,serialPorta.DATABITS_8,serialPorta.STOPBITS_1,serialPorta.PARITY_NONE);serialPorta.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);}catch(Exceptione){portaOK=false;System.out.println("Erro abrindo comunicação: "+e);System.exit(1);}}publicvoidlerDados(){if(escrita==false){try{entrada=serialPorta.getInputStream();}catch(Exceptione){System.out.println("Erro de Stream: "+e);System.exit(1);}try{serialPorta.addEventListener(this);}catch(Exceptione){System.out.println("Erro de Listener: "+e);System.exit(1);}serialPorta.notifyOnDataAvailable(true);try{threadLeitura=newThread(this);threadLeitura.start();run();}catch(Exceptione){System.out.println("Erro de Thread: "+e);}}}publicvoidenviarUmaString(Stringmsg){if(escrita==true){try{saida=serialPorta.getOutputStream();System.out.println("Fluxo OK");}catch(Exceptione){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(Exceptione){System.out.println("Ouve um erro durante o envio: "+e);System.out.println("Status: "+e);System.exit(1);}}else{System.exit(1);}}publicvoidrun(){try{Thread.sleep(5);}catch(Exceptione){System.out.println("Erro de Thread: "+e);}}publicvoidserialEvent(SerialPortEventev){StringBufferbufferLeitura=newStringBuffer();intnovoDado=0;switch(ev.getEventType()){caseSerialPortEvent.BI:caseSerialPortEvent.OE:caseSerialPortEvent.FE:caseSerialPortEvent.PE:caseSerialPortEvent.CD:caseSerialPortEvent.CTS:caseSerialPortEvent.DSR:caseSerialPortEvent.RI:caseSerialPortEvent.OUTPUT_BUFFER_EMPTY:break;caseSerialPortEvent.DATA_AVAILABLE://Novo algoritmo de entradawhile(novoDado!=-1){try{novoDado=entrada.read();if(novoDado==-1){break;}if('\r'==((char)novoDado)){bufferLeitura.append('\n');}else{bufferLeitura.append((char)novoDado);}}catch(IOExceptionioe){System.out.println("Erro de leitura Serial: "+ioe);}}setPeso(newString(bufferLeitura));System.out.println(getPeso());break;}}publicvoidfecharCom(){try{serialPorta.close();}catch(Exceptione){System.out.println("Erro ao Fechar Porta: "+e);System.exit(1);}}publicStringobterPorta(){returnporta;}publicintobterbaudrate(){returnbaudrate;}}
Se puderem me ajudar com esse probleminha
Vlw pessoal!!!
F
fdcarli
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+
J
j_chanan
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.
M
Mibex
O erro não esta na porta. Essa variável esta assumindo o valor “com1”. Alguém pode ajudar, to completamente perdido.