Olá pessoal!
Estou tendo um grave problema com a impressora dataregis que utiliza o protocolo fiscnet, não consigo encontrar suporte adequado por parte dela, até tentaram mas não exatamente se o problema está com a impressora, talvez seja o meio como tento comunicar.
Essa é a minha classe de teste:
package impressoras;
import gnu.io.*;
import java.io.*;
import javax.swing.JOptionPane;
public class ListPortClass
{
public static void main(String[] s)
{
try
{
int idChamada = 244;
CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("COM1");
SerialPort serialPort = (SerialPort) portIdentifier.open("ListPortClass", 2000);
serialPort.setSerialPortParams(115200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_EVEN);
OutputStream mOutputToPort = serialPort.getOutputStream();
for (int i = 0;i<1;i++)
{
System.out.println("Abrindo o cupom fiscal...");
idChamada++;
String mValue = "{"+idChamada+";AbreCupomFiscal;;}";
mOutputToPort.write(mValue.getBytes());
mOutputToPort.flush();
System.out.println(mValue);
Thread.sleep(2500);
System.out.println("Vendendo o item...");
idChamada++;
mValue = "{"+idChamada+";VendeItem;CodAliquota=-3 CodProduto=\"1\" NomeProduto=\"TESTE\" PrecoUnitario=1,00 Quantidade=1,000 Unidade=\"UN\";}";
mOutputToPort.write(mValue.getBytes());
mOutputToPort.flush();
System.out.println(mValue);
Thread.sleep(2500);
System.out.println("Pagando em dinheiro...");
idChamada++;
mValue = "{"+idChamada+";PagaCupom;CodMeioPagamento=-2 Valor=1,00;}";;
mOutputToPort.write(mValue.getBytes());
mOutputToPort.flush();
System.out.println(mValue);
Thread.sleep(4500);
System.out.println("Encerrando o cupom...");
idChamada++;
mValue = "{"+idChamada+";EncerraDocumento;TextoPromocional=\"Obrigado pela preferencia, volte sempre!\";}";
mOutputToPort.write(mValue.getBytes());
mOutputToPort.flush();
System.out.println(mValue);
Thread.sleep(10000);
}
mOutputToPort.close();
serialPort.close();
JOptionPane.showMessageDialog(null, "Fim");
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Usei a biblioteca do RXTXComm.
Como vocês viram, tem um laço de duas voltas, para cada volta imprimo um cupom completo mas ao executar só é impresso o primeiro, o segundo fica “engasgado” na memória dela, depois eu uso um programa de teste da dataregis e consigo fazer com que esse cupom seja “desengasgado”. Esse segundo cupom é gerado normalmente mas não sai na hora, fica preso na memoria da impressora.