Olá a Daniel, obrigado pela resposta e desculpe a demora, seguinte, no meu projeto está adicionado a JNA.jar, entre outras, a DLL coloquei no System32, reajustei conforme teu exemplo, mas ainda assim minha impressora segue ligada, imprimindo teste no windows, mas quando mando rodar o java, ele diz q minha impressora está desligada ou desconectada, segue meus códigos, e mais uma vez obrigado por me ajudar, aguardo contato!
Está é minha interface.
public interface MySharedLibrary extends /*Library*/StdCallLibrary {
void ConfiguraTaxaSerial(int i);
int IniciaPorta(String PORTA);
int BematechTX(String texto);
int ConfiguraModeloImpressora(int i);
int FormataTX(String texto, int i, int j, int k, int l, int m);
int FechaPorta();
int PrinterReset();
int AjustaLarguraPapel(int i);
int HabilitaEsperaImpressao(int i);
int Le_Status();
}
Aqui, é para gerar relatório na bematech, mas antes verifica status da impressora.
public class RelatorioAtendentes {
private StatusImpressora si = new StatusImpressora();
public RelatorioAtendentes(){}
public int iniciarImpressao() {
int i = 0;
if(si.verificarStatus() == 1){
i = imprimirAtendentes();
StatusImpressoraGrafico st = new StatusImpressoraGrafico();
st.setVisible(true);
}
else
JOptionPane.showMessageDialog(null, "Impressão de Dados das Atendentes cancelada!" , "Erro de Impressão", JOptionPane.ERROR_MESSAGE);
return(i);
}
private int imprimirAtendentes() {
char t[] = null;
int tam_texto = 0;
int i;
MySharedLibrary lib = (MySharedLibrary) Native.loadLibrary("mp2032", MySharedLibrary.class);
lib.IniciaPorta("LPT1");
lib.BematechTX("\n*************************************");
lib.BematechTX("\n--- @LTERNATIVA INFORMÁTICA ----");
lib.BematechTX("\n CNPJ: xxxxxxxxxxxx || Tel:[telefone removido]");
lib.BematechTX("\n--- End: xxxxxx, Aparecida ----");
lib.BematechTX("\n*************************************");
lib.BematechTX("\n\nData: " + new Date());
lib.BematechTX("\t\tHora: " + new Date().getTime() + "\n");
lib.BematechTX("\nTestando a IMPRESSORA nao fiscal:");
lib.BematechTX("\nProduto: Descrição:");
tam_texto = "Roteador".length();
if(tam_texto > 8) // CODIGO DA ATENDENTE
lib.BematechTX("Roteador");
else{
tam_texto = 8 - tam_texto;
if(tam_texto == 0)
tam_texto = 1;
t = new char[tam_texto];
for(i=0;i<tam_texto;i++)
t[i] = ' ';
lib.BematechTX("\n" + "Roteador");
}
tam_texto = "Wireless 150 MBPs".length();
if(tam_texto > 30) // NOME DA ATENDENTE
lib.BematechTX(" " + "Wireless 150 MBPs");
else{
tam_texto = 30 - tam_texto;
if(tam_texto == 0)
tam_texto = 1;
t = new char[tam_texto];
for(i=0;i<tam_texto;i++)
t[i] = ' ';
lib.BematechTX(" " + "Wireless 150 MBPs");
}
lib.BematechTX("\n\n\n\n\n\n\n\n\n\n\n");
lib.FechaPorta();
return 0;
}
}
Aqui faço a chamada para verificar status da impressora.
public class StatusImpressora {
public StatusImpressora() {
}
public int verificarStatus() {
boolean status = true;
//File f = new File("/");
//System.setProperty("jna.library.path",f.getAbsolutePath());
MySharedLibrary lib = (MySharedLibrary) Native.loadLibrary("mp2032", MySharedLibrary.class);
System.out.println("Caminho da DLL: "+lib.toString());
/* PORTA PARALELA
+ Códigos do Status da Impressora: ON-LINE : 144
OFF-LINE : 79
Fim de Papel : 40
Desligado ou Cabo Desconectado : 0
////////////////////////////////////////////////////////////////////////////////
int HabilitaEsperaImpressao(int i)
+ RETORNO: 1 (um) : OK
-2 (menos dois) : Parâmetro Inválido
Esta função habilita ou desabilita o envio do caracter ETX (03h),
que mantém a impressora ocupada até o término da impressão de todo o
texto (string).
+ Parâmetro do tipo INTEIRO:
0 (zero) : Desabilitado
1 (um) : Habilitado
*/
lib.HabilitaEsperaImpressao(1);
////////////////////////////////////////////////////////////////////////////////
lib.IniciaPorta("LPT1");
if(lib.Le_Status() == 79){
JOptionPane.showMessageDialog(null, "A impressora está OFF-LINE!" , "Status da Impressora", JOptionPane.ERROR_MESSAGE);
status = false;
}
else if(lib.Le_Status() == 40){
JOptionPane.showMessageDialog(null, "O PAPEL da impressora está no FIM!" , "Status da Impressora", JOptionPane.ERROR_MESSAGE);
status = false;
}
else if(lib.Le_Status() == 0){
JOptionPane.showMessageDialog(null, "A impressora está DESLIGADA ou o cabo está DESCONECTADO!" , "Status da Impressora", JOptionPane.ERROR_MESSAGE);
status = false;
}
lib.FechaPorta();
if(status == true)
return(1);
else
return(-1);
}
}