Eis um modelo de leitura X para Bematech('BEMAFI32.DLL), mude conforme a sua dll precisa:
Execute os seguintes passos: 1-) Crie as packages: PACKAGE IMPFISCAL IS -- Funcao que efetua Leitura X FUNCTION LeituraX RETURN PLS_INTEGER; end; PACKAGE BODY IMPFISCAL IS dll_handle Ora_Ffi.Libhandletype; Leiturax_fhandle Ora_Ffi.Funchandletype; arch_dll varchar2(100); ------ -- Funcao que efetua LEITURA X -- FUNCTION ff_LeituraX(fhandle Ora_Ffi.FUNCHANDLETYPE) RETURN PLS_INTEGER; PRAGMA interface(C,ff_LeituraX,11265); FUNCTION LeituraX RETURN PLS_INTEGER IS BEGIN RETURN(ff_LeituraX(LeituraX_fhandle)); END; begin -- inicializacao do package. Registra as funcoes externas para uso dentro do forms -- abre o arquivo de dll como um ponteiro de biblioteca dll_handle:=Ora_Ffi.Load_Library('C:\WINDOWS\SYSTEM\','BEMAFI32.DLL'); if Ora_Ffi.Is_Null_Ptr(dll_handle) then -- se nao achou o arquivo. message('IMPFISCAL: Biblioteca não encontrada - '||arch_dll); raise form_trigger_failure; end if; ---Registra a função Bematech_FI_LeituraX LeituraX_fhandle:=Ora_Ffi.Register_Function(dll_handle,'Bematech_FI_Leitu raX',Ora_Ffi.Pascal_Std); if Ora_Ffi.Is_Null_Ptr(LeituraX_fhandle) then message('IMPFISCAL: Função não encontrada - Bematech_FI_LeituraX'); raise form_trigger_failure; end if; Ora_Ffi.Register_Return(LeituraX_fhandle,Ora_Ffi.C_Int); --- END; PACKAGE cupom IS -- efetua leitura X PROCEDURE leiturax; END; PACKAGE BODY cupom IS -- efetua leitura X PROCEDURE leiturax IS alerta number(5); aux pls_integer; codigo varchar2(5); descricao varchar2(29); aliquota varchar2(5); tipoqtdade varchar2(1); quantidade varchar2(4); casasdecimais varchar2(1); valorunitario varchar2(8); tipodesconto varchar2(1); valordesconto varchar2(8); valorpago varchar2(14); formaPagamento varchar2(16); acrescimodesconto varchar2(1); tipoacrescimodesconto varchar2(1); valoracrescimodesconto varchar2(14); mensagem varchar2(490); BEGIN -- tenta fazer a leitura if impfiscal.LeituraX <> 1 then raise form_trigger_failure; -- se nao deu certo entao vai para a exception end if; set_application_property(cursor_style,'DEFAULT'); set_alert_property('alert_nob',alert_message_text,'Leitura X Efetuada'); alerta:=show_alert('alert_nob'); exception when others then set_application_property(cursor_style,'DEFAULT'); -- emite um lancamento falso pois se nao foi emitido nenhum o cupom nao fecha codigo := '000000000000'; descricao := 'Cancelamento'; aliquota := '0000'; tipoqtdade := 'I'; quantidade := '0000'; casasdecimais := '2'; valorunitario := '00000000'; tipodesconto := '%'; valordesconto := '0000'; aux:=impfiscal.VendeItem(codigo,descricao,aliquota,tipoqtdade,q uantidade,casasdecimais,valorunitario,tipodesconto,valordesconto); -- Finaliza a entrada de itens acrescimodesconto := 'D'; tipoacrescimodesconto := '$'; valoracrescimodesconto := '00000000000,00'; valorpago := '00000000000,00'; formapagamento := 'DINHEIRO'; mensagem := 'Cancelamento'; aux:=impfiscal.FechaCupom(FormaPagamento, acrescimodesconto, tipoacrescimodesconto, valoracrescimodesconto, valorpago, mensagem); aux:=impfiscal.CancelaCupom; aux:=impfiscal.LeituraX; set_alert_property('alert_nob',alert_message_text,'Leitura X Efetuada.'); alerta:=show_alert('alert_nob'); END; 2-) Dentro de um botao ou trigger dispare para executar a funcao: declare FFI_Error BOOLEAN; FFI_Error_Text VARCHAR2(2000); FFI_Error_Code NUMBER; aux pls_integer; begin CUPOM.leiturax; EXCEPTION WHEN OTHERS THEN -- Place the first error on the TOOL_ERR stack into the package header variables available for it. FFI_ERROR := TRUE; FFI_Error_Text := TOOL_ERR.MESSAGE; FFI_Error_Code := TOOL_ERR.CODE; FOR iErrors IN 1..TOOL_ERR.NERRORS LOOP Message(TOOL_ERR.MESSAGE); TOOL_ERR.POP; END LOOP; TOOL_ERR.CLEAR; END; -----Mensagem original----- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] nome de Eduardo Gimenes Enviada em: sábado, 12 de agosto de 2006 09:24 Para: oracle_br@yahoogrupos.com.br Assunto: Re: RES: [oracle_br] Impressora Fiscal Daruma com Form 6i Olá estou usando a Daruma32.dll... Existe alguma outra?? Valeu... --- Mauricio Roberto Maciel <[EMAIL PROTECTED]> escreveu: > Qual dlll vc está usando? > -----Mensagem original----- > De: oracle_br@yahoogrupos.com.br > [mailto:[EMAIL PROTECTED] > nome de Eduardo Gimenes > Enviada em: sexta-feira, 11 de agosto de 2006 > 16:53 > Para: oracle_br@yahoogrupos.com.br > Assunto: [oracle_br] Impressora Fiscal Daruma com > Form 6i > > > Olá pessoal estou trabalhando tentando trabalhar > com > uma impressora Daruma FS 345 e forms 6i. Estou > utilizando o FFigen para gerar a PLL porem sempre > que > tento testar a biblioteca ele sai fora e nao me > deixa > continuar. > Alguem faz ideia do que alterar... ou mesmo possui > alguma pll que possa me ajudar? > > Ambiente Windows XP com Oracle 8.1.7. > > Obrigado > > Eduardo > > > > > > > > > > _______________________________________________________ > Você quer respostas para suas perguntas? Ou você > sabe muito e quer > compartilhar seu conhecimento? Experimente o Yahoo! > Respostas ! > http://br.answers.yahoo.com/ > > > > [As partes desta mensagem que não continham texto > foram removidas] > > _______________________________________________________ Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular. Registre seu aparelho agora! http://br.mobile.yahoo.com/mailalertas/ [As partes desta mensagem que não continham texto foram removidas] -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __________________________________________________________________ Seu banco Oracle retornou erro? Ora-??? Pesquise aqui: http://www.oraclebr.com.br/ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html