Acesso dll bematech

13 respostas
O

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

D

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

A

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…

O

Quando chamo algum método, por exemplo:

public static void main(String args[]) {

BemaECF.leituraX();

}
O

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.

A

Oi,

Atualize a JVM.

O

Anime:
Oi,

Atualize a JVM.

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

A

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!

O

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:

A

Oi,

Poste o código fonte, por favor…

F

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.

O

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();
    }
}
A

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

O

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