Estou fazendo para fins de estudo uma aplicação que deva emitir um cupom impressora fiscal. Instalei o emulador da impressora MP4200 THFI, da bematech e o programa Vitrual serial ports emul…l (VSPE) para virtualizar a porta COM6: que onde configuro o emulador da bematech.
Toda vez que mando algum comando para impressora, meu programa esta retornando uma execeção de “Acesso negado”, acreditando ser talvez algum bloqueio do windows 7 64bits que uso, tentei fazer em uma VM com windows xp 32bits, e estou tendo o mesmo erro ao mandar algum comando para a porta emulada, alguem já passou por isto e poderia me dar uma ajudinha ?
Codigo para comunicar com a impressora:
package auxi;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
public class ImpressoraTexto {
//02. Os atributos
//view plaincopy to clipboardprint?
private String porta = "";
private FileOutputStream impressora = null;
//03. Um método que inicializa a comunicação com a impressora.
//view plaincopy to clipboardprint?
private boolean open() {
try {
impressora = new FileOutputStream(this.porta);
return true;
} catch (FileNotFoundException ex) {
JOptionPane.showMessageDialog(null, "erro na comunicação: "+ex.getMessage(),"Erro", JOptionPane.ERROR_MESSAGE);
return false;
}
}
//04. Um método que aciona a Guilhotina, caso a usa possua.
//view plaincopy to clipboardprint?
public void acionarGuilhotina() {
imprimirTexto("" + (char) 27 + (char) 109);
}
//05. Um Construtor para a Classe. Note que o próprio construtor já chama o método de abertura.
//view plaincopy to clipboardprint?
public ImpressoraTexto(String Porta) {
this.porta = Porta;
this.open();
}
//06. Um Método para imprimir o conteúdo desejado
//view plaincopy to clipboardprint?
public void imprimirTexto(String Texto) {
try {
byte[] bytes = Texto.getBytes();
impressora.write(bytes);
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "erro: "+ex.getMessage());
}
}
//07. Um Método para encerrar a comunicação com a impressora
//view plaincopy to clipboardprint?
public void fechar() {
try {
impressora.close();
} catch (IOException ex) {
Logger.getLogger(ImpressoraTexto.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Codigo que manda o comando:
ImpressoraTexto imp = new ImpressoraTexto("COM6:");
imp.imprimirTexto("AAAAAAAAAAAAAAAA");
imp.fechar();
Qualquer sugestão ou criticas são bem vindas, obrigado !
caro amigo,
aconselho vc utilizar a dll da impressora…
primeiro que cada modelo de impressora pode
ter um software basico diferente e os comandos
via serial serem diferentes para elas…
e vc usando a dll ela padroniza todos os modelos…
digo isso porque trabalho ha muito tempo com impressoras fiscais… e sei o que estou dizendo…
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: bemajava.Bematech.LeituraX()I
at bemajava.Bematech.LeituraX(Native Method)
at bematech.NovoCupom.geraRelatorioX(NovoCupom.java:261)
at visao.Principal.jMenuItem17ActionPerformed(Principal.java:2353)
at visao.Principal.access$4300(Principal.java:36)
at visao.Principal$47.actionPerformed(Principal.java:1790)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: bemajava.Bematech.LeituraX()I
at bemajava.Bematech.LeituraX(Native Method)
at bematech.NovoCupom.geraRelatorioX(NovoCupom.java:261)
at visao.Principal.jMenuItem17ActionPerformed(Principal.java:2353)
at visao.Principal.access$4300(Principal.java:36)
at visao.Principal$47.actionPerformed(Principal.java:1790)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)