You are on page 1of 8

ZANTHUS Indústria e Comércio de Equipamentos Eletrônicos Ltda.

QZECF32.DLL Revisão 1.4

Manual de utilização da DLL
Objetivo

1 8

O objetivo deste documento é apresentar a dll QZECF32. Esta dll atende a impressora fiscal modelo QZ1000.
Características

A dll QZECF32 foi gerada para atender plataformas que suportam funções 32 bits. O ambiente utilizado na geração desta dll foi o Visual Studio(Visual C/C++ - v6.0) Compilação:SINGLE THREAD.
Funções

As funções da dll são as seguintes: A. Versão da DLL void QZ1000_VersaoDLL(char *pbuffer); B. Retorno do comando int QZ1000_LeRetorno(void) C. Lê buffer de retorno de dados (ASCII) int QZ1000_LeBufferRetorno(char *pbuffer) D. Envia um comando. int QZ1000_EnviaComando(const char *str); E. Inicializa porta serial int QZ1000_InicializaPortaSerial(int porta); F. Encerra o uso da porta serial int QZ1000_FechaPortaSerial(void); G. Configura os valores de timeout de transmissão, recepção e execução dessas operações int QZ1000_ConfiguraValorDeTimeout(int rxTimeout ,int txTimeout ,int operTimeout); H. Ativa sistema de depuracao ( LOG ) void QZ1000_AtivaLOG( void ); I. Ativa sistema de depuracao ( LOG ) hexadecimal. void QZ1000_AtivaLOGHEX( void ); J. Desativa sistema de depuracao ( LOG ) void QZ1000_DesativaLOG( void ); Estas funções realizam a comunicação com a impressora fiscal(ECF) diretamente, ou seja, dispensando o uso de qualquer device driver. Para utilizá-las lembre-se dos seguintes aspectos: - A DLL deve estar presente, preferencialmente, no diretório Windows \SYSTEM. - Para usuários da linguagem C - Utilize o arquivo QZECF32.H e QZECF32.LIB na compilação de seu aplicativo. Caso esteja utilizando a biblioteca QZCOM32.LIB, NÃO utilize os arquivos mencionados acima. - Observe as convenções e definições abaixo: VOID - Esta declaração indica que a função não recebe parâmetros e não

Declaração: Função: int QZ1000_LeRetorno(void) Realiza a leitura do retorno referente ao último comando enviado para impressora. no caso de retorno de uma função. esta <variável> receberá um caractere("A". printf( "DLL: %s\n" . Versão da DLL Declaração: Função: Retorno: void QZ1000_VersaoDLL(char *pbuffer) Através do buffer( pbuffer ) fornece a versão da DLL que está em uso.Impressora desligada.DLL Revisão 1. a mesma retornará valores numéricos. Resultado do exemplo: Mensagem exibida: "DLL: QZECF32. atualmente. Esta função é utilizada. disponíveis em nosso site. A.0" B."*" e etc ). assumiu. a mesma está presente apenas para manter compatibilidade com os aplicativos desenvolvidos com base na primeira versão da DLL. CHAR <variável> 2 8 .também. Exemplo: char buffer[50]."1". Retorno do comando. Retorno: . mas existem exemplos. Abaixo se encontra o descritivo de cada função. a mesma retornará um caractere.Esta declaração indica que a <variável ou função> é do tipo inteiro. e . ou uma string de caracteres. (void)QZ1000_VersãoDLL( buffer ). ou seja. normalmente.Sucesso .Visual Basic. Os exemplos aqui descritos foram escritos em linguagem "C".Não consegue monitorar os sinais seriais. . . . após o uso das funções: QZ1000_EnviaComando Esta função. a função desempenhada por esta função. CHAR *<variável> INT <variável> . por ser dispensada.Esta declaração indica que a <variável> é um ponteiro para caracteres. 0 1 2 3 4 . .ZANTHUS Indústria e Comércio de Equipamentos Eletrônicos Ltda. Nenhum. esta <variável> receberá valores numéricos. no caso de retorno de uma função.Delphi. QZECF32. ou seja.buffer ).DLL v1. nas seguintes linguagens: .Esta declaração indica que a <variável> é do tipo caractere.Timeout de recepção.4 Manual de utilização da DLL fornece valores de retorno. A função QZ1000_EnviaComando.Fim do tempo maximo para recepção da string.

para um buffer apontado por pbuffer. . Declaração: Função: int QZ1000_EnviaComando( const char *str ) Envia um comando ( char *str ) para impressora. QZECF32. Retorno: Exemplo: Vamos supor que o numero de um ECF seja 0001. .Erro na copia da resposta.Comando inexistente. ou fora do formato: ESC. o comando se encontram em um buffer apontado pelo ponteiro char.Sucesso . Em caso de erro a seguinte mensagem será exibida: "Falha ao ler retorno do comando" C. para ter acesso ao retorno o programador deverá utilizar a função QZ1000_LeBufferRetorno. Em caso de erro a seguinte mensagem será exibida: "Falha ao ler resposta do comando" D. char buffer[500]. Envia um comando.Tamanho da resposta excede o tamanho do buffer de recepção.Onde N corresponde ao número de caracteres copiados. normalmente. } Resultado do exemplo: Em caso de sucesso a leitura do retorno será feita. .Timeout de recepção.DLL Revisão 1.Erro na leitura do byte. N .<comando/argumento>} .ZANTHUS Indústria e Comércio de Equipamentos Eletrônicos Ltda. . Lê buffer de retorno de dados (ASCII). Retorno: 7 8 9 10 . NÃO há necessidade de inserir o caractere ESC na formatação da string de comando a ser enviado para impressora.Fim do tempo máximo para recepção da string.Fim do tempo maximo para envio da string. } Resultado do exemplo: Em caso de sucesso a variável buffer possuirá o retorno do comando.Erro ao inicializar a porta serial com valor default. após o uso das funções: QZ1000_LeRetorno 0 .4 Manual de utilização da DLL 5 6 3 8 .Não consegue monitorar sinais seriais. if( QZ1000_LeBufferASCII( buffer ) == 0 ) { /* Falha ao ler resposta do comando */ printf( "Falha ao ler resposta do comando" ).Tamanho da resposta excede o tamanho do buffer de recepção. Exemplo: if( QZ1000_LeRetorno() != 0 ) { /* Falha ao ler retorno do comando */ printf( "Falha ao ler retorno do comando" ). . Esta função é utilizada. Declaração: Função: int QZ1000_LeBufferRetorno( char *pbuffer ) Copia o retorno. não conseguiu copiar a resposta para o buffer. 0 1 2 3 4 5 6 . . .Erro ao transmitir o byte . . obtido pela função QZ1000_LeRetorno.Timeout de envio. os valores apresentados em ASCII.Impressora desligada.

Em caso de erro a seguinte mensagem será exibida: "Falha ao inicializar a porta serial !!" . fortemente. . . Declaração: Função: int QZ1000_InicializaPortaSerial( int porta ) Incializa e configura a porta serial definida através do argumento porta.Falha ao fechar porta configurada anteriormente .13}" ) != 0 ) {/* Nao conseguiu enviar o comando */ printf( "Falha ao enviar um comando para o ECF\n" ). } Resultado do exemplo: Em caso de sucesso a porta será inicializada e configurada. estas funcionam por interrupção.Falha ao configurar valores de timeout Valor( int porta ) 1 2 3 4 Exemplo: if( QZ1000_InicializaPortaSerial( 1 ) != 0 ) { /* Nao conseguiu inicializar a porta COM1 */ printf( "Falha ao incializar a porta serial !!\n" ). .Erro na leitura do byte. As portas COM3 e COM4 operam por polling.Falha ao ler configuração da porta serial.Falha ao ler configuração do valores de timeout. .13 .Impressora NÃO é QZ1000.DLL Revisão 1. como regra geral.4 Manual de utilização da DLL 11 12 . Caso esta função não seja utilizada e seja feito um envio de um comando para impressora a DLL assumirá a COM1 como default e inicializará a mesma.Handle de manipulação da porta invalido. o que pode ocasionar a perda de caracteres durante a troca de dados.Sucesso. .Porta serial invalida. Recomendamos. Em caso de erro a seguinte mensagem será exibida: "Falha ao enviar um comando para o ECF" E. } Resultado do exemplo: Em caso de sucesso a impressora imprimirá a leitura X. . . que se utilize às portas seriais COM1 e COM2 na conexão de impressoras fiscais. QZECF32. Inicializa porta serial. 4 8 Exemplo: Comando ESC.Leitura X if( QZ1000_EnviaComando( ". Recomendamos.ZANTHUS Indústria e Comércio de Equipamentos Eletrônicos Ltda. ainda. o uso desta função antes do envio de qualquer comando para impressora.Falha ao configurar a porta serial. O argumento porta poderá assumir os seguintes valores: porta serial COM1 COM2 COM3 COM4 Retorno: 0 1 2 3 4 5 6 7 .

Valor para timeout de recepção inválido.int txTimeout . Encerra o uso da porta serial. . o objetivo é liberar o uso desta porta para os demais aplicativos. int operTimeout ) Configura os valores de timeout para transmissão( int txTimeout ) e recepção( int rxTimeout ) de dados.DLL Revisão 1. Caso a biblioteca QZCOM32. o uso desta função ao término da execução do aplicativo que faz uso desta DLL. Recomendamos.Falha na operação. Configura os valores de timeout de transmissão. } Resultado do exemplo: Em caso de sucesso os novos valores passam a ser adotados instantaneamente. também. recepção e execução dessas operações.ZANTHUS Indústria e Comércio de Equipamentos Eletrônicos Ltda. Declaração: Função: int QZ1000_FechaPortaSerial( void ) Encerra o uso da porta serial inicializada através da função QZ1000_InicializaPortaSerial. 0 1 . Valores default( em segundos ): Trasmissão Recepção 5 10 Valor máximo( operTimeout ) 30 Valores máximos para configuração( em segundos ): Transmissão Recepção Valor máximo( operTimeout ) 60 60 120 Retorno: 0 1 2 3 . o valor máximo desses timeouts( int operTimeout ).LIB esteja sendo utilizada não há necessidade de se utilizar esta função.Valor para timeout de transmissão inválido.Valor para timeout de execução de uma operação inválida. Em caso de erro a seguinte mensagem será exibida: "Falha ao fechar a porta serial !!" G. ao término do uso desta biblioteca a mesma se encarrega de encerrar o uso da porta serial. configura. fortemente. QZECF32.Sucesso . Recomendamos o uso desta função SOMENTE em casos extremamente necessários. Exemplo: if( QZ1000_ConfiguraValorDeTimeout( 10 . } Resultado do exemplo: Em caso de sucesso a porta será fechada.60 ) != 0 ) { /* Erro ao configurar valores de timeout */ printf( "Erro ao configurar valores de timeout!!\n" ). . Declaração: Função: int QZ1000_ConfiguraValorDeTimeout( int rxTimeout .Sucesso .10 . . Retorno: Exemplo: if( QZ1000_FechaPortaSerial() != 0 ) { /* Nao conseguiu encerrar o uso da porta configurada */ printf( "Falha ao fechar porta serial !!\n" ).4 Manual de utilização da DLL 5 8 F.

QZECF32.Representa o mês. Declaração: Função: void QZ1000_AtivaLOGHEX( void ).: 21.Representa o comando enviado. Ativa sistema de depuracao ( LOG ).ZLG Onde: AAAA MM DD . Exemplo: (void)QZ1000_AtivaLOG().: 2000. I.Representa o retorno do comando.Representa o mês.Representa o dia.Representa o ano corrente. ex.+0004} Retorno: Nenhum. .: .23}. ex. ex.: 2000. A dll criará um arquivo com o seguinte nome: AAAAMMDD.Representa o dia. .DLL Revisão 1. .: 01.Representam hora.: 01. . Exemplo do conteúdo do arquivo: [19:38:07]: Comando: .ZANTHUS Indústria e Comércio de Equipamentos Eletrônicos Ltda. Ativa sistema de depuracao ( LOG ) hexadecimal.+P550. ex.: 21.Representa o ano corrente. ex. Declaração: Função: void QZ1000_AtivaLOG( void ). ex.+0004}.4 Manual de utilização da DLL Em caso de erro a seguinte mensagem será exibida: "Erro ao configurar valores de timeout!!" 6 8 H.+P550.ZLG Este arquivo possuirá o seguinte aspecto: [HH:MI:SE]: Comando: XXXXX [HH:MI:SE]: Retorno: YYYYY Onde: HH:MI:SE XXXXX YYYYY .23} [19:38:07]: Retorno: .ZLG Onde: AAAA MM DD . Exemplo de nome: 20000121. ex.ZLG Este arquivo possuirá o seguinte aspecto: [HH:MI:SE]: Comando: XXXXX [HH:MI:SE]: Dados( Hexadecimal ): HH HH HH HH HH [HH:MI:SE] Retorno: YYYYY HH HH HH HH HH XXXXX YYYYY . . ex.: . Exemplo de nome: 20000121. minutos e segundos respectivamente do envio do comando. Ativa o sistema de depuracao hexadecimal de uso da DLL. . A dll criará um arquivo com o seguinte nome: AAAAMMDD. Ativa o sistema de depuracao de uso da DLL.

não estampáveis.HEX A forma de uso das funções está descrita acima.23}.+P550. As funções.Representam hora. ou seja. . a criação de um arquivo de LOG simples.+0004} Exemplo: (void)QZ1000_AtivaLOGHEX().23} . J.: . a criação de um arquivo de LOG hexadecimal.+P550. o mesmo poderá ativar o sistema de depuração da seguinte forma: Crie. arquivo de LOG pode apresentar sinais como “ ”. e os códigos de retorno. minutos e segundos respectivamente do envio do comando.4 Manual de utilização da DLL Onde: HH:MI:SE XXXXX YYYYY HH 7 8 . ex.23} [19:38:07]: Dados( Hexadecimal ): 1B 2E 32 33 7D [19:38:07]: Retorno: . este arquivo não precisa possuir conteúdo. Desativa sistema de depuracao ( LOG ). O arquivo DEPURA. a dll.+0004}. Nenhum. caso o usuário não pretenda fazer uso dessas funções. os comandos. Por exemplo: “” -> 01h.Representa os bytes hexadecimais. O arquivo de depuração será gerado enquanto um dos arquivos existir.+0004} [19:38:07]: Dados( Hexadecimal ): 2E 2B 50 35 35 30 2E 2B 30 30 30 34 7D Retorno: Nenhum. . mencionadas acima podem trabalhar em conjunto com os arquivos sem nenhum problema.Representa o retorno do comando. além da depuração normal (DEPURA. e sendo assim. da dll. ATENÇÃO!. ex.ZANTHUS Indústria e Comércio de Equipamentos Eletrônicos Ltda. Exemplo do conteúdo do arquivo: [19:38:07]: Comando: . A composição do nome do arquivo de LOG é mencionada no descritivo das funções QZ1000_AtivaLOG e QZ1000_AtivaLOGHEX. . inclusive o modo hexadecimal ( se o mesmo estiver ativo ). são exibidos conforme o envio e recepção através impressora fiscal.TXT solicitará.DLL Revisão 1. a dll.: 1B. QZECF32.Representa o comando enviado. muitas vezes.TXT os sinais não estampáveis possuem seu valor hexadecimal apresentado. e outros.: . O arquivo DEPURA. . O protocolo trabalha com caracteres. ex. no diretório da aplicação. Desativa o sistema de depuração de uso da DLL. Declaração: Função: Retorno: void QZ1000_DesativaLOG( void ). Exemplo: (void)QZ1000_DesativaLOG().TXT DEPURA.+P550. . um dos arquivos mencionados acima.HEX solicitará. Observações A depuração (geração do arquivo de LOG) de uso dessa dll poderá ser feita de duas formas: • Uso das funções: QZ1000_AtivaLOG QZ1000_AtivaLOGHEX QZ1000_DesativaLOG • Criação dos arquivos: DEPURA.

52 27/01/2000 10/03/2000 07/07/2000 18/07/2000 10/08/2000 Correção do valor de timeout para resposta dos comandos. Melhorias em funções internas da DLL.br.Linguagem que está sendo utilizada no desenvolvimento do aplicativo.Versão da DLL. Correção do "bug" palavra "TOTAL" .13) e Redução Z Em caso de dúvidas entre em contato com a ZANTHUS através de e-mail: suportezan@zanthus. bem como as informações deste documento estão sujeitas a alteração a critério exclusivo da empresa ZANTHUS sem aviso prévio."ESC. 1. 07/08/12/38/39 ).15" e "ESC.DLL Revisão 1. Implementação de sistema de depuração . que façam visitas periódicas ao nosso site www. Correções de Timeout Alteração no timeout de recepção da Leitura X sem abertura de caixa(55) Alteração no timeout de recepção da Leitura X (.5 1.ZANTHUS Indústria e Comércio de Equipamentos Eletrônicos Ltda.13".( ESC."ESC.LOG e LOG Hexadecimal. QZECF32. .zanthus.4 Manual de utilização da DLL 8 8 Todas as características e especificações técnicas das funções presentes na DLL. Recomendamos aos usuários de nossos produtos. Verificação do modelo da impressora. .2 08/12/1999 Observações Primeira versão Correção do valor de timeout para resposta dos comandos "ESC.3 1. Aumento da capacidade para atender porta serial além da COM4.com.4 1.51 1. .com.br . se não for QZ1000 a DLL não funciona.1 09/09/1999 1. Histórico da DLL Versão Data 1.16".0 28/07/1999 1.14".