none
Clipper x Observer2.EXE RRS feed

  • Pergunta

  • Já fiz todos os procedimentos relativos à Daruma32.DLL, Observer2.exe e configuracoes.  A impressora já grilou por 10 minutos. Já fiz vários testes de retorno e de impressao via o botao ENVIAR que tem no OBSERVER2.EXE. Tudo OK mesmo.

    Porém, pelo meu sistema, sem declarar a DARUMA32.LIB (pois eu tinha esquecido), nao consigo nem obter uma simples Leitura X. O comando é enviado, a impressora me retorna o DARUMA.RET, porém sempre vazio e nada acontece.

    Estou programando pelo índice ao invés dos nomes das funcoes, pois o Clipper entende até no máximo 10 caracteres para nomes de funcoes e também para nomes de variáveis, o que acredito que muita gente nao sabe disso. Portanto, nao posso usar o nome de uma funcao por exemplo: DARUMA_FI_XXXXXXXXXXXXX, pois o Clipper "entenderia" até a letra "I", desconsiderando o restante.

    Entao, ao tentar declarar a LIb em meu sistema me deparo com os seguinte erro:

     

                                    BLINKER  : 1165 : DARUMA32.LIB is a COFF file so is not currently supoorted

                          Error RMAKE/R2001  Exit 1: 'Blinker @Vendas file cld.lib'

     

    Alguém sabe como declarar a lib ou se é outro tipo de problema ???

     

    [  ]s e obrigado!

    quinta-feira, 14 de fevereiro de 2008 11:42

Respostas

  • Danilo, ligue na Daruma.  Tenho certeza que rapidamente eles te auxiliam.

    Se puder, poste a solução do problema aqui, depois, para encerrar a thread e disponibilizar a solução a outros.

    Quando eu sugeri comunicação serial, quis dizer que você poderia mandar os comandos diretamente para a porta serial.  Pelo o que sei, isso é bem fácil de ser feito no Clipper.

    Gustavo
    quinta-feira, 14 de fevereiro de 2008 16:18

Todas as Respostas

  • Danilo,

    Não programo em Clipper, mas sou programador.  Programação trata-se de resolver um problema.  Há várias maneiras de se resolver um problema.

    Em seu caso, obviamente você tem o código-fonte do programa que precisa comandar a impressora fiscal.  O Clipper é uma linguagem boa, mas voltada para outro ambiente, que nem é mais suportado pela Microsoft.  Neste caso, eu consideraria a opção de comunicação com a impressora através da porta serial.

    Sei que o Observer funciona e tudo, mas eu encaro este tipo de "solução" proposta pelos fabricantes como um "acelerador de início de desenvolvimento". 

    Existe uma outra opção.  Não sei se o Clipper consegue fazer chamadas diretamente às APIs do Windows.  Se conseguir, você poderá considerar a opção de carregar apenas as funções que precisa, que residem na Daruma32.dll, em tempo de execução.

    Para isso, utilize as seguintes funções do Windows:

      LoadLibrary()
      GetProcAddress()

    Fazendo uso dessas funções, você:
    • economiza memória;
    • economiza código;
    • não exige early binding, o que vai previnir erros de inicalização de seu programa;
    • se liberta dos problemas de nomes de função muito longos;
    Coloque um exemplo aqui de como o Clipper faz para carregar uma função que esteja em uma DLL.  Note que não sei se o Clipper conseguirá integração com as DLLs do Windows, porque as próprias funções citadas acima, residem em DLLs do Windows.

    Se o Clipper não conseguir, acho que a melhor opção em seu caso é a comunicação serial.

    Gustavo
    quinta-feira, 14 de fevereiro de 2008 15:07
  • Quanto à comunicação com a impressora ela é serial mesmo.

    Porém, minha maior dificuldade, está realmente em compilar o meu sistema usando a DARUMA32.LIB

     

    Quanto ao uso de DLLs, eu consegui desenvolver a mesma coisa para o ECF da  Bematech (Bemafi.DLL, BematechMonitor.EXE, Bemafi.ini), porém nao tive dificuldades como esta que postei referente à compilação, pois nao declarei nada, nao foi preciso. Inclusive usei a programacao em forma de código de comandos ao invés dos nomes das funções que tem mais de 10 caracteres.

     

    Acredito que a administracao da DLL é o OBSERVER2.EXE que faz para aplicacoes comerciais de plataforma DOS.

    Veja o que o arquivo DARUMA32.chm nos explica:

     

    "Daruma.lib: Biblioteca de informação necessária para o funcionamento das operações realizadas em Clipper e funcionabilidade do aplicativo. "

     

    Por isso, acredito que estou fazendo alguma coisa errada, mas nem tenho certeza de que devo declarar este arquivo .lib em meus arquivos .lnk que tratam de link-edicao e compilação, pois quando fiz a Bematech nao fiz nada com o .lib deles.

     

    [  ]s e obrigado!

     

     

    quinta-feira, 14 de fevereiro de 2008 15:22
  • Danilo, ligue na Daruma.  Tenho certeza que rapidamente eles te auxiliam.

    Se puder, poste a solução do problema aqui, depois, para encerrar a thread e disponibilizar a solução a outros.

    Quando eu sugeri comunicação serial, quis dizer que você poderia mandar os comandos diretamente para a porta serial.  Pelo o que sei, isso é bem fácil de ser feito no Clipper.

    Gustavo
    quinta-feira, 14 de fevereiro de 2008 16:18
  • Ligarei com certeza. E valew pelas dicas!

    Acabei me precipitando em pensar que o erro era de declaracao de lib.

    Queria apagar este post, mas acho que nao tem a opcao.

     

    to fazendo testes manuais como alguns documentos nos auxiliam. Tipo mandar um comando "1101;" via arquivo chamado daruma.cmd. O mesmo está sendo processado e apagado pelo OBSERVER.EXE, mas a impressora nao imprimi nada e me devolve o retorno no DARUMA.RET de "000;000;000;000" e o arquivo de log fica em aberto.

     

    [  ]s

     

     

    quinta-feira, 14 de fevereiro de 2008 17:05
  • Não se preocupe em apagar o post, porque o que pode parecer uma bobeira, para muitos é pode ser oportunidade de eliminação de dúvidas.

    Gustavo
    quinta-feira, 14 de fevereiro de 2008 17:09