Acesso dll bematech

13 respostas
orobsonpires

Olá pessoal, eu tô desenvolvendo um sistema de frente de caixa em java, mas tô com um problema ao chamar as funções da impressora fiscal (estou usando a bematech)
e quando ocorre esse erro a aplicação é encerrada…
Segui o log do erro:

A fatal error has been detected by the Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d9a65a5, pid=3856, tid=3428

JRE version: 6.0_16-b01

Java VM: Java HotSpot™ Client VM (14.2-b01 mixed mode, sharing windows-x86 )

Problematic frame:

V [jvm.dll+0xf65a5]

If you would like to submit a bug report, please visit:

http://java.sun.com/webapps/bugreport/crash.jsp

--------------- T H R E A D ---------------

Current thread (0x02b49400): JavaThread “AWT-EventQueue-0” [_thread_in_vm, id=3428, stack(0x03140000,0x03190000)]

siginfo: ExceptionCode=0xc0000005, reading address 0x00000000

Registers:
EAX=0x00000000, EBX=0x26a96d30, ECX=0x00000006, EDX=0x02b49c1c
ESP=0x0318f47c, EBP=0x0318f498, ESI=0x02b49510, EDI=0x02b49400
EIP=0x6d9a65a5, EFLAGS=0x00010246

Top of Stack: (sp=0x0318f47c)
0x0318f47c: 00000000 02b49510 26a96d30 02b49400
0x0318f48c: 00000000 000000b8 00153335 0318f508
0x0318f49c: 10012276 02b49510 00000000 02b49400
0x0318f4ac: 26a96d30 0318f508 26a96d30 26a96d30
0x0318f4bc: 0318f508 00919d27 00b49400 26a96d30
0x0318f4cc: 00919e27 02b49510 0318f510 00000000
0x0318f4dc: 00000000 00000000 fffffffe 0318f4e8
0x0318f4ec: 26a96d30 0318f520 26a9dc20 00000000

Instructions: (pc=0x6d9a65a5)
0x6d9a6595: 00 00 00 74 08 8d 4d f0 e8 2e 84 08 00 8b 45 0c
0x6d9a65a5: 8b 08 8b 51 04 8b 42 3c 50 56 e8 6c a4 01 00 89

Stack: [0x03140000,0x03190000], sp=0x0318f47c, free space=317k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0xf65a5]
C [BemaFI32.dll+0x12276]
j br.com.ecftef.BemaECF.retornoImpressora()V+9
j br.com.ecftef.BemaECF.leituraX()V+22
j br.com.ecftef.ViewCaixa.actionPerformed(Ljava/awt/event/ActionEvent;)V+11
j javax.swing.AbstractButton.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+84
j javax.swing.AbstractButton$Handler.actionPerformed(Ljava/awt/event/ActionEvent;)V+5
j javax.swing.DefaultButtonModel.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+35
j javax.swing.DefaultButtonModel.setPressed(Z)V+117
j javax.swing.AbstractButton.doClick(I)V+64
j javax.swing.plaf.basic.BasicMenuItemUI.doClick(Ljavax/swing/MenuSelectionManager;)V+53
j javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Ljava/awt/event/MouseEvent;)V+62
j java.awt.Component.processMouseEvent(Ljava/awt/event/MouseEvent;)V+64
j javax.swing.JComponent.processMouseEvent(Ljava/awt/event/MouseEvent;)V+23
j java.awt.Component.processEvent(Ljava/awt/AWTEvent;)V+81
j java.awt.Container.processEvent(Ljava/awt/AWTEvent;)V+18
j java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+562
j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+42
j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j java.awt.LightweightDispatcher.retargetMouseEvent(Ljava/awt/Component;ILjava/awt/event/MouseEvent;)V+320
j java.awt.LightweightDispatcher.processMouseEvent(Ljava/awt/event/MouseEvent;)Z+139
j java.awt.LightweightDispatcher.dispatchEvent(Ljava/awt/AWTEvent;)Z+50
j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+12
j java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+19
j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46
j java.awt.EventDispatchThread.pumpOneEventForFilters(I)Z+204
j java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+30
j java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11
j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j java.awt.EventDispatchThread.run()V+9
v ~StubRoutines::call_stub
V [jvm.dll+0xecf9c]
V [jvm.dll+0x1741e1]
V [jvm.dll+0xed167]
V [jvm.dll+0xed1dd]
V [jvm.dll+0x116290]
V [jvm.dll+0x1d0424]
V [jvm.dll+0x173e5c]
C [msvcr71.dll+0x9565]
C [kernel32.dll+0xb729]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j bemajava.Bematech.RetornoImpressora(Lbemajava/BemaInteger;Lbemajava/BemaInteger;Lbemajava/BemaInteger;)I+0
j br.com.ecftef.BemaECF.retornoImpressora()V+9
j br.com.ecftef.BemaECF.leituraX()V+22
j br.com.ecftef.ViewCaixa.actionPerformed(Ljava/awt/event/ActionEvent;)V+11
j javax.swing.AbstractButton.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+84
j javax.swing.AbstractButton$Handler.actionPerformed(Ljava/awt/event/ActionEvent;)V+5
j javax.swing.DefaultButtonModel.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+35
j javax.swing.DefaultButtonModel.setPressed(Z)V+117
j javax.swing.AbstractButton.doClick(I)V+64
j javax.swing.plaf.basic.BasicMenuItemUI.doClick(Ljavax/swing/MenuSelectionManager;)V+53
j javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Ljava/awt/event/MouseEvent;)V+62
j java.awt.Component.processMouseEvent(Ljava/awt/event/MouseEvent;)V+64
j javax.swing.JComponent.processMouseEvent(Ljava/awt/event/MouseEvent;)V+23
j java.awt.Component.processEvent(Ljava/awt/AWTEvent;)V+81
j java.awt.Container.processEvent(Ljava/awt/AWTEvent;)V+18
j java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+562
j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+42
j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j java.awt.LightweightDispatcher.retargetMouseEvent(Ljava/awt/Component;ILjava/awt/event/MouseEvent;)V+320
j java.awt.LightweightDispatcher.processMouseEvent(Ljava/awt/event/MouseEvent;)Z+139
j java.awt.LightweightDispatcher.dispatchEvent(Ljava/awt/AWTEvent;)Z+50
j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+12
j java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+19
j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46
j java.awt.EventDispatchThread.pumpOneEventForFilters(I)Z+204
j java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+30
j java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11
j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j java.awt.EventDispatchThread.run()V+9
v ~StubRoutines::call_stub

--------------- P R O C E S S ---------------

Java Threads: ( => current thread )
0x02f0d400 JavaThread “Image Fetcher 0” daemon [_thread_blocked, id=3900, stack(0x035d0000,0x03620000)]
0x02e2b800 JavaThread “TimerQueue” daemon [_thread_blocked, id=3512, stack(0x03190000,0x031e0000)]
0x002b6800 JavaThread “DestroyJavaVM” [_thread_blocked, id=2788, stack(0x008c0000,0x00910000)]
=>0x02b49400 JavaThread “AWT-EventQueue-0” [_thread_in_vm, id=3428, stack(0x03140000,0x03190000)]
0x02b47c00 JavaThread “AWT-Windows” daemon [_thread_in_native, id=3972, stack(0x030b0000,0x03100000)]
0x02b46c00 JavaThread “AWT-Shutdown” [_thread_blocked, id=1976, stack(0x03060000,0x030b0000)]
0x02ae5800 JavaThread “Java2D Disposer” daemon [_thread_blocked, id=3832, stack(0x03010000,0x03060000)]
0x02ab9400 JavaThread “Low Memory Detector” daemon [_thread_blocked, id=4036, stack(0x02d30000,0x02d80000)]
0x02ab2c00 JavaThread “CompilerThread0” daemon [_thread_blocked, id=3656, stack(0x02ce0000,0x02d30000)]
0x02ab1400 JavaThread “Attach Listener” daemon [_thread_blocked, id=3448, stack(0x02c90000,0x02ce0000)]
0x02ab0000 JavaThread “Signal Dispatcher” daemon [_thread_blocked, id=3924, stack(0x02c40000,0x02c90000)]
0x02a71400 JavaThread “Finalizer” daemon [_thread_blocked, id=3880, stack(0x02bf0000,0x02c40000)]
0x02a6cc00 JavaThread “Reference Handler” daemon [_thread_blocked, id=2704, stack(0x02ba0000,0x02bf0000)]

Other Threads:
0x02a6b000 VMThread [stack: 0x02b50000,0x02ba0000] [id=3212]
0x02abac00 WatcherThread [stack: 0x02d80000,0x02dd0000] [id=2916]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap

def new generation   total 960K, used 335K [0x22990000, 0x22a90000, 0x22e70000)

eden space 896K,  30% used [0x22990000, 0x229d3d98, 0x22a70000)

from space 64K, 100% used [0x22a80000, 0x22a90000, 0x22a90000)

to   space 64K,   0% used [0x22a70000, 0x22a70000, 0x22a80000)

tenured generation   total 4096K, used 3571K [0x22e70000, 0x23270000, 0x26990000)

the space 4096K,  87% used [0x22e70000, 0x231ecef0, 0x231ed000, 0x23270000)

compacting perm gen  total 12288K, used 1079K [0x26990000, 0x27590000, 0x2a990000)

the space 12288K,   8% used [0x26990000, 0x26a9dc88, 0x26a9de00, 0x27590000)

ro space 8192K,  67% used [0x2a990000, 0x2aef9040, 0x2aef9200, 0x2b190000)

rw space 12288K,  54% used [0x2b190000, 0x2b80d348, 0x2b80d400, 0x2bd90000)

Dynamic libraries:
0x00400000 - 0x00424000 C:\Arquivos de programas\Java\jdk1.6.0_16\bin\java.exe
0x7c900000 - 0x7c9b6000 C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c900000 C:\WINDOWS\system32\kernel32.dll
0x77f50000 - 0x77ffb000 C:\WINDOWS\system32\ADVAPI32.dll
0x77db0000 - 0x77e43000 C:\WINDOWS\system32\RPCRT4.dll
0x77f20000 - 0x77f31000 C:\WINDOWS\system32\Secur32.dll
0x7c340000 - 0x7c396000 C:\Arquivos de programas\Java\jdk1.6.0_16\jre\bin\msvcr71.dll
0x6d8b0000 - 0x6db3b000 C:\Arquivos de programas\Java\jdk1.6.0_16\jre\bin\client\jvm.dll
0x7e360000 - 0x7e3f1000 C:\WINDOWS\system32\USER32.dll
0x77e50000 - 0x77e99000 C:\WINDOWS\system32\GDI32.dll
0x76b20000 - 0x76b4e000 C:\WINDOWS\system32\WINMM.dll
0x6d860000 - 0x6d86c000 C:\Arquivos de programas\Java\jdk1.6.0_16\jre\bin\verify.dll
0x6d3e0000 - 0x6d3ff000 C:\Arquivos de programas\Java\jdk1.6.0_16\jre\bin\java.dll
0x6d340000 - 0x6d348000 C:\Arquivos de programas\Java\jdk1.6.0_16\jre\bin\hpi.dll
0x76bd0000 - 0x76bdb000 C:\WINDOWS\system32\PSAPI.DLL
0x6d8a0000 - 0x6d8af000 C:\Arquivos de programas\Java\jdk1.6.0_16\jre\bin\zip.dll
0x6d0b0000 - 0x6d1fa000 C:\Arquivos de programas\Java\jdk1.6.0_16\jre\bin\awt.dll
0x72fb0000 - 0x72fd6000 C:\WINDOWS\system32\WINSPOOL.DRV
0x77bf0000 - 0x77c48000 C:\WINDOWS\system32\msvcrt.dll
0x76360000 - 0x7637d000 C:\WINDOWS\system32\IMM32.dll
0x774c0000 - 0x775fe000 C:\WINDOWS\system32\ole32.dll
0x773b0000 - 0x774b3000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202\comctl32.dll
0x77ea0000 - 0x77f16000 C:\WINDOWS\system32\SHLWAPI.dll
0x746e0000 - 0x7472c000 C:\WINDOWS\system32\MSCTF.dll
0x6d2e0000 - 0x6d334000 C:\Arquivos de programas\Java\jdk1.6.0_16\jre\bin\fontmanager.dll
0x7c9c0000 - 0x7d1de000 C:\WINDOWS\system32\shell32.dll
0x6d6c0000 - 0x6d6d3000 C:\Arquivos de programas\Java\jdk1.6.0_16\jre\bin\net.dll
0x71a70000 - 0x71a87000 C:\WINDOWS\system32\WS2_32.dll
0x71a60000 - 0x71a68000 C:\WINDOWS\system32\WS2HELP.dll
0x6d6e0000 - 0x6d6e9000 C:\Arquivos de programas\Java\jdk1.6.0_16\jre\bin\nio.dll
0x5b1c0000 - 0x5b1f8000 C:\WINDOWS\system32\UxTheme.dll
0x10000000 - 0x10147000 C:\WINDOWS\system32\BemaFI32.dll
0x77900000 - 0x779f5000 C:\WINDOWS\system32\SETUPAPI.dll
0x77be0000 - 0x77be8000 C:\WINDOWS\system32\VERSION.dll
0x76f30000 - 0x76f38000 C:\WINDOWS\system32\wtsapi32.dll
0x76330000 - 0x76340000 C:\WINDOWS\system32\WINSTA.dll
0x5bcb0000 - 0x5bd05000 C:\WINDOWS\system32\NETAPI32.dll

VM Arguments:
jvm_args: -Dfile.encoding=UTF-8
java_command: br.com.ecftef.ViewCaixa
Launcher Type: SUN_STANDARD

Environment Variables:
JAVA_HOME=C:\Arquivos de programas\Java\jdk1.6.0_16
PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Arquivos de programas\Java\jdk1.6.0_16\bin
USERNAME=Robson
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 10, GenuineIntel

--------------- S Y S T E M ---------------

OS: Windows XP Build 2600 Service Pack 3

CPU:total 1 (2 cores per cpu, 1 threads per core) family 6 model 23 stepping 10, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1

Memory: 4k page, physical 1048048k(182528k free), swap 2521292k(1754852k free)

vm_info: Java HotSpot™ Client VM (14.2-b01) for windows-x86 JRE (1.6.0_16-b01), built on Jul 31 2009 11:26:58 by “java_re” with MS VC++ 7.1

time: Mon May 16 16:41:24 2011
elapsed time: 8 seconds

13 Respostas

diogoprosoft

Cara já desenvolvi esse tipo de sistema utilizando a impressora bematech e nunca tive esse problema, você poderia explicar melhor como está tentando fazer essa chamada!!! Assim fica melhor avaliar

Anime

Oi,

O arquivo bemafi32.ini deve estar configurado como impressora fiscal e não emulador…

Vai em C: em arquivos de programas, ache a pasta da Bematech (Emul2100), nela tem um arquivo de ajuda, que explica tudo, abra o arquivo, introdução, onde esta explicando os dois modos de utilização. Em Comunicação Interna, encontrara a explicação necessaria.

Nesse arquivo vai encontrar uma boa ajuda…

orobsonpires

Quando chamo algum método, por exemplo:

public static void main(String args[]) {

BemaECF.leituraX();

}
orobsonpires

Anime:
Oi,

O arquivo bemafi32.ini deve estar configurado como impressora fiscal e não emulador…

Vai em C: em arquivos de programas, ache a pasta da Bematech (Emul2100), nela tem um arquivo de ajuda, que explica tudo, abra o arquivo, introdução, onde esta explicando os dois modos de utilização. Em Comunicação Interna, encontrara a explicação necessaria.

Nesse arquivo vai encontrar uma boa ajuda…

Na verdade eu tô usando o emulador mesmo, mas já configurei o arquivo BemaFI32.INI. A impressora funciona perfeitamente, mas o que ocorre é que, aplicação java é encerrada.

Anime

Oi,

Atualize a JVM.

orobsonpires

Anime:
Oi,

Atualize a JVM.

Cara, atualizei a JVM para a última versão e continua a mesma coisa. :frowning:

Anime

orobsonpires:
Anime:
Oi,

Atualize a JVM.

Cara atualizei a JVM para a última versão e continuar a mesma coisa. :(

Cara, foi ótimo rsrs…

Você leu o arquivo de ajuda que mencionei? Pode encontrar a solução lá…
Pode ser algo relacionado ao IDE que está usando também… :roll:

Boa sorte!

orobsonpires

Anime:
orobsonpires:
Anime:
Oi,

Atualize a JVM.

Cara atualizei a JVM para a última versão e continuar a mesma coisa. :(

Cara, foi ótimo rsrs…

Você leu o arquivo de ajuda que mencionei? Pode encontrar a solução lá…
Pode ser algo relacionado ao IDE que está usando também… :roll:

Boa sorte!

Li o manual mas não vi nada relacionado… vou tentar mais alguns teste aqui .

Obrigado!:slight_smile:

Anime

Oi,

Poste o código fonte, por favor…

fredferrao

Voce esta usando a classe que ja vem no pacote da bematech?? Porque la ja tem até uma classe java, com todos os metodos da dll, é só chamar.

orobsonpires

Criei uma classe chamada BemaECF que usa os métodos da Bematech:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.vcred.util;

import bemajava.BemaInteger;
import bemajava.Bematech;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author Robson
 * 13/05/2011
 */
public class BemaECF {

    private static int iRetorno;
    private static BemaInteger iACK; // Byte indicativo de recebimento correto
    private static BemaInteger iST1; // Byte de estado da impressora
    private static BemaInteger iST2; // Byte indicativo de recebimento incorreto

    public static void analisaIRetorno() {
        switch (iRetorno) {
            case 0:
                JOptionPane.showMessageDialog(null, "Erro de comunicação!");
                break;
            case -1:
                JOptionPane.showMessageDialog(null, "Erro de execução na função. Verifique!");
                break;
            case -2:
                JOptionPane.showMessageDialog(null, "Parâmetro inválido!");
                break;
            case -3:
                JOptionPane.showMessageDialog(null, "Alíquota não programada!");
                break;
            case -4:
                JOptionPane.showMessageDialog(null, "Arquivo BemaFI32.INI não encontrado!");
                break;
            case -5:
                JOptionPane.showMessageDialog(null, "Erro ao abrir a porta de comunicação!");
                break;
            case -6:
                JOptionPane.showMessageDialog(null, "Impressora desligada ou desconectada!");
                break;
            case -7:
                JOptionPane.showMessageDialog(null, "Banco não cadastrado no arquivo BemaFI32.INI!");
                break;
            case -8:
                JOptionPane.showMessageDialog(null, "Erro ao criar ou gravar no arquivo Retorno.txt ou Status.txt!");
                break;
            case -18:
                JOptionPane.showMessageDialog(null, "Não foi possível abrir o arquivo INTPOS.001!");
                break;
            case -19:
                JOptionPane.showMessageDialog(null, "Parâmetros diferentes!");
                break;
            case -20:
                JOptionPane.showMessageDialog(null, "Transação cancelada pelo operador!");
                break;
            case -21:
                JOptionPane.showMessageDialog(null, "A transação não foi aprovada!");
                break;
            case -22:
                JOptionPane.showMessageDialog(null, "Não foi possível terminar a impressão!");
                break;
            case -23:
                JOptionPane.showMessageDialog(null, "Não foi possível terminar a operação!");
                break;
            case -24:
                JOptionPane.showMessageDialog(null, "Forma de pagamento não programada!");
                break;
            case -25:
                JOptionPane.showMessageDialog(null, "Totalizador não fiscal não programado!");
                break;
            case -26:
                JOptionPane.showMessageDialog(null, "Transação já efetuada!");
                break;
            case -28:
                JOptionPane.showMessageDialog(null, "Não há informações para serem impressas!");
                break;
            default:
                break;
        }

    }

    public static void retornoImpressora() {
        iRetorno = Bematech.RetornoImpressora(iACK, iST1, iST2);
        iACK = new BemaInteger();
        iST1 = new BemaInteger();
        iST2 = new BemaInteger();

        // verifica iST1
        if (iACK.number == 6) {
            if (iST1.number >= 128) {
                iST1.number = iST1.number - 128;
                JOptionPane.showMessageDialog(null, "Fim de papel!");
            }
            if (iST1.number >= 64) {
                iST1.number = iST1.number - 64;
                JOptionPane.showMessageDialog(null, "Pouco papel!");
            }
            if (iST1.number >= 32) {
                iST1.number = iST1.number - 32;
                JOptionPane.showMessageDialog(null, "Erro no relógio!");
            }
            if (iST1.number >= 16) {
                iST1.number = iST1.number - 16;
                JOptionPane.showMessageDialog(null, "Impressora em erro!");
            }
            if (iST1.number >= 8) {
                iST1.number = iST1.number - 8;
                JOptionPane.showMessageDialog(null, "CMD não iniciado com esc!");
            }
            if (iST1.number >= 4) {
                iST1.number = iST1.number - 4;
                JOptionPane.showMessageDialog(null, "Comando inexistente!");
            }
            if (iST1.number >= 2) {
                iST1.number = iST1.number - 2;
                JOptionPane.showMessageDialog(null, "Cupom aberto!");
            }
            if (iST1.number >= 1) {
                iST1.number = iST1.number - 1;
                JOptionPane.showMessageDialog(null, "N° de parâmetros inválidos!");
            }

            // verifica iST2
            if (iST2.number >= 128) {
                iST2.number = iST2.number - 128;
                JOptionPane.showMessageDialog(null, "Tipo de parâmetro inválido!");
            }
            if (iST2.number >= 64) {
                iST2.number = iST2.number - 64;
                JOptionPane.showMessageDialog(null, "Memória fiscal lotada!");
            }
            if (iST2.number >= 32) {
                iST2.number = iST2.number - 32;
                JOptionPane.showMessageDialog(null, "CMOS não volátil!");
            }
            if (iST2.number >= 16) {
                iST2.number = iST2.number - 16;
                JOptionPane.showMessageDialog(null, "Alíquota não programada!");
            }
            if (iST2.number >= 8) {
                iST2.number = iST2.number - 8;
                JOptionPane.showMessageDialog(null, "Alíquotas lotadas!");
            }
            if (iST2.number >= 4) {
                iST2.number = iST2.number - 4;
                JOptionPane.showMessageDialog(null, "Cancelamento não permitido!");
            }
            if (iST2.number >= 2) {
                iST2.number = iST2.number - 2;
                JOptionPane.showMessageDialog(null, "CGC/IE não programados!");
            }
            if (iST2.number >= 1) {
                iST2.number = iST2.number - 1;
                JOptionPane.showMessageDialog(null, "Comando não executado!");
            }
        }
    }

    public static void leituraX() {
        if (JOptionPane.showConfirmDialog(null, "Deseja emitir a leitura X?", "Pergunta do Sistema", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
            iRetorno = Bematech.LeituraX();
            analisaIRetorno();
            retornoImpressora();
        }
    }

    public static void reducaoZ() {
        if (JOptionPane.showConfirmDialog(null, "Deseja emitir a redução Z? - ATEN��O: Caixa será enserrada", "Pergunta do Sistema", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
            iRetorno = Bematech.ReducaoZ("08/01/2000", "18:00:00");
            analisaIRetorno();
            retornoImpressora();
        }
    }

    public static void abreCupom() {
        iRetorno = Bematech.AbreCupom("null"); // pode ser o cpf do cliente
        analisaIRetorno();
        retornoImpressora();
    }

    public static void fechaCupom(String acrescimoDesconto, String tipoAcrescimoDesconto,
            String valorAcrescimoDesconto, String mensagem, ArrayList formasPagamento) {
        iRetorno = Bematech.IniciaFechamentoCupom(acrescimoDesconto, tipoAcrescimoDesconto, valorAcrescimoDesconto);

        for (int i = 0; i <= formasPagamento.size(); i++) {
            iRetorno = Bematech.EfetuaFormaPagamento(formasPagamento.get(0).toString(), formasPagamento.get(1).toString());
        }

        iRetorno = Bematech.TerminaFechamentoCupom(mensagem);

        analisaIRetorno();
        retornoImpressora();
    }

    public static void abrePortaSerial() {
        iRetorno = Bematech.AbrePortaSerial();
        analisaIRetorno();
        retornoImpressora();
    }

    public static void fechaPortaSerial() {
        iRetorno = Bematech.FechaPortaSerial();
        analisaIRetorno();
        retornoImpressora();
    }

    public static void horarioVerao() {
        if (JOptionPane.showConfirmDialog(null, "Deseja sair/entrar no horário de verão?", "Pergunta do Sistema", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
            iRetorno = Bematech.ProgramaHorarioVerao();
            analisaIRetorno();
            retornoImpressora();
        }
    }

    public static void memoriaFiscalPorData(String data1, String data2) {
        if (JOptionPane.showConfirmDialog(null, "Deseja emitir o relatório de memória fiscal?", "Pergunta do Sistema", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
            iRetorno = Bematech.LeituraMemoriaFiscalData(data1, data2);
            analisaIRetorno();
            retornoImpressora();
        }
    }

    public static void memoriaFiscalPorReducao(String reducao1, String reducao2) {
        if (JOptionPane.showConfirmDialog(null, "Deseja emitir o relatório de memória fiscal?", "Pergunta do Sistema", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
            iRetorno = Bematech.LeituraMemoriaFiscalReducao(reducao1, reducao2);
            analisaIRetorno();
            retornoImpressora();
        }
    }

    public static void cancelaCupom() {
        if (JOptionPane.showConfirmDialog(null, "Deseja cancelar o cupom anterior?", "Pergunta do Sistema", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
            iRetorno = Bematech.CancelaCupom();
            analisaIRetorno();
            retornoImpressora();
        }
    }

    public static void vendeItem(String codigo, String descricao, String aliquota,
            String tipoQuantidade, String quantidade, int casasDecimais, String valorUnitario,
            String tipoDesconto, String valorDesconto) {

        iRetorno = Bematech.VendeItem(codigo, descricao, aliquota, tipoQuantidade,
                quantidade, casasDecimais, valorUnitario, tipoDesconto, valorDesconto);

        analisaIRetorno();
        retornoImpressora();
    }

    public static void cancelaItemAnterior() {
        iRetorno = Bematech.CancelaItemAnterior();
        analisaIRetorno();
        retornoImpressora();
    }

    public static void cancelaItemGenerico(String item) {
        iRetorno = Bematech.CancelaItemGenerico(item);
        analisaIRetorno();
        retornoImpressora();
    }
    
    public static void main(String args[]) {
        BemaECF.leituraX();
    }
}
Anime

public static void abreCupom() { iRetorno = Bematech.AbreCupom(" "); // tire o null analisaIRetorno(); retornoImpressora(); }

orobsonpires

Anime:
public static void abreCupom() { iRetorno = Bematech.AbreCupom(" "); // tire o null analisaIRetorno(); retornoImpressora(); }

Esse “null” passou despercebido…:slight_smile:

…mas nem tô usando esse método ainda.

Criado 16 de maio de 2011
Ultima resposta 18 de mai. de 2011
Respostas 13
Participantes 4