Tenho tentado comunicar com o emulador bematech de impressora fiscal com a api RXTX ou JAVAComm , ambas não tive sucesso .
O que está acontecendo , eu escrevo e leio na porta normalmente com outra aplicação que tenho feita em delphi que envia meus comandos para meu app que estou fazendo em java e os dois comunicam entre si normalmente , porem quando eu mando uma comando simples da minha aplicação em java de uma Leitura X para o emulador , nada acontece no simulador , porém quando eu mando abrir a porta , no meu outro aplicativo em delphi , a leitura x é impressa no emulador , se eu mandar o mesmo comando da minha aplicação em delphi para o emulador , comunica normalmente, talvez algum de vocês tenha passado pela mesma situação e talvez encontraram uma solução.
Na minha opinião , creio eu que seja um bug na RXTX api ou no programa que uso para criar o par de portas seriais virtuais . segue abaico meu método. Grato desde ja !
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 Main {
InputStream in ;
OutputStream out = null ;
SerialPort port = null ;
CommPortIdentifier ci ;
public static void main(String[] args) {
Main ma = new Main();
ma.montaPack();
}
public void montaPack(){
byte[] pacote = new byte[7] ;
pacote[0] = 0x02;
pacote[1] = 0x04;
pacote[2] = 0x00 ;
pacote[3] = 0x1B ;
pacote[4] = 0x06 ;
pacote[5] = 0x21;
pacote[6] = 0x00;
byte a = 0x00;
try {
ci = CommPortIdentifier.getPortIdentifier("COM5");
port = (SerialPort) ci.open("MontaPack", 2000);
port.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
// port.disableReceiveThreshold();
// port.disableReceiveTimeout();
// port.setInputBufferSize(1);
// port.setOutputBufferSize(1);
// port.enableReceiveFraming(1);
// port.disableReceiveFraming();
out = port.getOutputStream();
out.write(pacote);
out.flush();
out.close();
port.close();
} catch (NoSuchPortException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (PortInUseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedCommOperationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}