Escolar Documentos
Profissional Documentos
Cultura Documentos
1 8
O objetivo deste documento apresentar a dll QZECF32. Esta dll atende a impressora fiscal modelo QZ1000.
Caractersticas
A dll QZECF32 foi gerada para atender plataformas que suportam funes 32 bits. O ambiente utilizado na gerao desta dll foi o Visual Studio(Visual C/C++ - v6.0) Compilao:SINGLE THREAD.
Funes
As funes da dll so as seguintes: A. Verso 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 transmisso, recepo e execuo dessas operaes 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 funes realizam a comunicao 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 diretrio Windows \SYSTEM. - Para usurios da linguagem C - Utilize o arquivo QZECF32.H e QZECF32.LIB na compilao de seu aplicativo. Caso esteja utilizando a biblioteca QZCOM32.LIB, NO utilize os arquivos mencionados acima. - Observe as convenes e definies abaixo: VOID - Esta declarao indica que a funo no recebe parmetros e no
2 8
- Esta declarao indica que a <varivel> do tipo caractere, ou seja, esta <varivel> receber um caractere("A","1","*" e etc ); no caso de retorno de uma funo, a mesma retornar um caractere.
- Esta declarao indica que a <varivel> um ponteiro para caracteres, ou uma string de caracteres. - Esta declarao indica que a <varivel ou funo> do tipo inteiro, ou seja, esta <varivel> receber valores numricos; no caso de retorno de uma funo, a mesma retornar valores numricos.
Os exemplos aqui descritos foram escritos em linguagem "C", mas existem exemplos, disponveis em nosso site, nas seguintes linguagens: - Visual Basic; e - Delphi. Abaixo se encontra o descritivo de cada funo.
A. Verso da DLL
Declarao: Funo: Retorno: void QZ1000_VersaoDLL(char *pbuffer) Atravs do buffer( pbuffer ) fornece a verso da DLL que est em uso. Nenhum.
Exemplo: char buffer[50]; (void)QZ1000_VersoDLL( buffer ); printf( "DLL: %s\n" ,buffer ); Resultado do exemplo: Mensagem exibida: "DLL: QZECF32.DLL v1.0"
B. Retorno do comando.
Declarao: Funo: int QZ1000_LeRetorno(void) Realiza a leitura do retorno referente ao ltimo comando enviado para impressora. Esta funo utilizada, normalmente, aps o uso das funes: QZ1000_EnviaComando Esta funo, atualmente, por ser dispensada; a mesma est presente apenas para manter compatibilidade com os aplicativos desenvolvidos com base na primeira verso da DLL. A funo QZ1000_EnviaComando, assumiu,tambm, a funo desempenhada por esta funo. 0 1 2 3 4 - Sucesso - Impressora desligada. - No consegue monitorar os sinais seriais. - Timeout de recepo. - Fim do tempo maximo para recepo da string.
Retorno:
3 8
Exemplo: if( QZ1000_LeRetorno() != 0 ) { /* Falha ao ler retorno do comando */ printf( "Falha ao ler retorno do comando" ); } Resultado do exemplo: Em caso de sucesso a leitura do retorno ser feita; para ter acesso ao retorno o programador dever utilizar a funo QZ1000_LeBufferRetorno. Em caso de erro a seguinte mensagem ser exibida: "Falha ao ler retorno do comando"
Retorno:
Exemplo: Vamos supor que o numero de um ECF seja 0001. char buffer[500]; if( QZ1000_LeBufferASCII( buffer ) == 0 ) { /* Falha ao ler resposta do comando */ printf( "Falha ao ler resposta do comando" ); } Resultado do exemplo: Em caso de sucesso a varivel buffer possuir o retorno do comando. Em caso de erro a seguinte mensagem ser exibida: "Falha ao ler resposta do comando"
D. Envia um comando.
Declarao: Funo: int QZ1000_EnviaComando( const char *str ) Envia um comando ( char *str ) para impressora, o comando se encontram em um buffer apontado pelo ponteiro char. NO h necessidade de inserir o caractere ESC na formatao da string de comando a ser enviado para impressora. 0 1 2 3 4 5 6 - Sucesso - Impressora desligada. - No consegue monitorar sinais seriais. - Timeout de envio. - Fim do tempo maximo para envio da string. - Erro ao transmitir o byte - Erro ao inicializar a porta serial com valor default. - Comando inexistente, ou fora do formato: ESC.<comando/argumento>} - Timeout de recepo. - Fim do tempo mximo para recepo da string. - Tamanho da resposta excede o tamanho do buffer de recepo.
Retorno:
7
8 9 10
4 8
Exemplo: Comando ESC.13 - Leitura X if( QZ1000_EnviaComando( ".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 impressora imprimir a leitura X. Em caso de erro a seguinte mensagem ser exibida: "Falha ao enviar um comando para o ECF"
Exemplo: if( QZ1000_InicializaPortaSerial( 1 ) != 0 ) { /* Nao conseguiu inicializar a porta COM1 */ printf( "Falha ao incializar a porta serial !!\n" ); } Resultado do exemplo: Em caso de sucesso a porta ser inicializada e configurada. Em caso de erro a seguinte mensagem ser exibida: "Falha ao inicializar a porta serial !!"
5 8
Retorno:
Exemplo: if( QZ1000_FechaPortaSerial() != 0 ) { /* Nao conseguiu encerrar o uso da porta configurada */ printf( "Falha ao fechar porta serial !!\n" ); } Resultado do exemplo: Em caso de sucesso a porta ser fechada. Em caso de erro a seguinte mensagem ser exibida: "Falha ao fechar a porta serial !!"
Valores mximos para configurao( em segundos ): Transmisso Recepo Valor mximo( operTimeout ) 60 60 120 Retorno: 0 1 2 3 - Sucesso - Valor para timeout de recepo invlido. - Valor para timeout de transmisso invlido. - Valor para timeout de execuo de uma operao invlida.
Exemplo: if( QZ1000_ConfiguraValorDeTimeout( 10 ,10 ,60 ) != 0 ) { /* Erro ao configurar valores de timeout */ printf( "Erro ao configurar valores de timeout!!\n" ); } Resultado do exemplo: Em caso de sucesso os novos valores passam a ser adotados instantaneamente.
6 8
Exemplo de nome: 20000121.ZLG Este arquivo possuir o seguinte aspecto: [HH:MI:SE]: Comando: XXXXX [HH:MI:SE]: Retorno: YYYYY Onde: HH:MI:SE XXXXX YYYYY - Representam hora, minutos e segundos respectivamente do envio do comando. - Representa o comando enviado. ex.: .23}. - Representa o retorno do comando. ex.: .+P550.+0004}.
Exemplo do contedo do arquivo: [19:38:07]: Comando: .23} [19:38:07]: Retorno: .+P550.+0004} Retorno: Nenhum.
Exemplo: (void)QZ1000_AtivaLOG();
Exemplo de nome: 20000121.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
7 8
- Representam hora, minutos e segundos respectivamente do envio do comando. - Representa o comando enviado. ex.: .23}. - Representa o retorno do comando. ex.: .+P550.+0004}. - Representa os bytes hexadecimais. ex.: 1B.
Exemplo do contedo do arquivo: [19:38:07]: Comando: .23} [19:38:07]: Dados( Hexadecimal ): 1B 2E 32 33 7D [19:38:07]: Retorno: .+P550.+0004} [19:38:07]: Dados( Hexadecimal ): 2E 2B 50 35 35 30 2E 2B 30 30 30 34 7D Retorno: Nenhum.
.23} .+P550.+0004}
Exemplo: (void)QZ1000_AtivaLOGHEX();
Exemplo: (void)QZ1000_DesativaLOG();
Observaes
A depurao (gerao do arquivo de LOG) de uso dessa dll poder ser feita de duas formas: Uso das funes: QZ1000_AtivaLOG QZ1000_AtivaLOGHEX QZ1000_DesativaLOG Criao dos arquivos: DEPURA.TXT DEPURA.HEX
A forma de uso das funes est descrita acima; caso o usurio no pretenda fazer uso dessas funes, o mesmo poder ativar o sistema de depurao da seguinte forma: Crie, no diretrio da aplicao, um dos arquivos mencionados acima; este arquivo no precisa possuir contedo. O arquivo DEPURA.TXT solicitar, a dll, a criao de um arquivo de LOG simples, os comandos, e os cdigos de retorno, so exibidos conforme o envio e recepo atravs impressora fiscal. ATENO!. O protocolo trabalha com caracteres, muitas vezes, no estampveis, e sendo assim, arquivo de LOG pode apresentar sinais como , e outros. O arquivo DEPURA.HEX solicitar, a dll, a criao de um arquivo de LOG hexadecimal, ou seja, alm da depurao normal (DEPURA.TXT os sinais no estampveis possuem seu valor hexadecimal apresentado. Por exemplo: -> 01h. O arquivo de depurao ser gerado enquanto um dos arquivos existir. As funes, da dll, mencionadas acima podem trabalhar em conjunto com os arquivos sem nenhum problema. A composio do nome do arquivo de LOG mencionada no descritivo das funes QZ1000_AtivaLOG e QZ1000_AtivaLOGHEX.
8 8
Todas as caractersticas e especificaes tcnicas das funes presentes na DLL, bem como as informaes deste documento esto sujeitas a alterao a critrio exclusivo da empresa ZANTHUS sem aviso prvio. Recomendamos aos usurios de nossos produtos, que faam visitas peridicas ao nosso site www.zanthus.com.br .
Histrico da DLL Verso Data 1.0 28/07/1999 1.1 09/09/1999 1.2 08/12/1999 Observaes Primeira verso Correo do valor de timeout para resposta dos comandos "ESC.13","ESC.14","ESC.15" e "ESC.16". Verificao do modelo da impressora; se no for QZ1000 a DLL no funciona.
Correo do valor de timeout para resposta dos comandos. Correo do "bug" palavra "TOTAL" - ( ESC. 07/08/12/38/39 ). Aumento da capacidade para atender porta serial alm da COM4. Implementao de sistema de depurao - LOG e LOG Hexadecimal. Melhorias em funes internas da DLL. Correes de Timeout Alterao no timeout de recepo da Leitura X sem abertura de caixa(55) Alterao no timeout de recepo da Leitura X (.13) e Reduo Z
Em caso de dvidas entre em contato com a ZANTHUS atravs de e-mail: suportezan@zanthus.com.br. - Linguagem que est sendo utilizada no desenvolvimento do aplicativo. - Verso da DLL.