Página 1 de 1

Bemafi.exe com xHarbour Console

Enviado: 17 Nov 2008 18:43
por Hergon
Boa noite

Estou convertendo meu frente de loja de Clipper para xHarbour console e
estou tendo problemas quando executo o BEMAFI.EXE, a mensagem é a seguinte:

Subsistema MSDOS de 16 bits - O sistema não pode abrir a porta COM1 solicitada
pelo aplicativo. Escola fechar para finalizar o aplicativo.


Teria alguma maneira de executar o BEMAFI.EXE sem dar esse problema? Não gostaria
de utilizar a DLL porque teria que modificar muito meu programa imediatamente, já
que tenho a pretenção de convertê-lo para Fivewin a médio prazo.

Obrigado

Re: Bemafi.exe com xHarbour Console

Enviado: 18 Nov 2008 08:39
por BHS
Bom dia amigo

Eu fiz a conversão do meus sistema semana passada, e não houve nenhum erro.

Por essa mensagem de erro q esta dando, eu acho que deve ser algum problema no bemafi.ini.

Veja se o IRQ esta certo no bemafi.ini, pois o erro não é referente ao sistema e sim que ele não ta achando a COM1.


Até mais

BHS

Re: Bemafi.exe com xHarbour Console

Enviado: 18 Nov 2008 10:01
por Hergon
Bom dia

BHS, eu verifiquei o meu bemafi.ini e está certinho, veja abaixo:

[CONFIG]
NumPorta=0
IRQ=4
Impressora=MP2000
TimeoutRelatorios=0
Path=D:\ECF
Log=0
LogDiario=0

Mas para tirar qualquer tipo de dúvida eu executei o programa compilado em clipper
e funcionou sem problemas, quando executo com xHarbour apresenta a mensagem.

Se alguem puder me ajudar ou manifestar sobre experiência com o bemafi em
xHarbour em modo console seria de grande ajuda, já não sei mais o que fazer.

Obrigado

Hergon

Re: Bemafi.exe com xHarbour Console

Enviado: 18 Nov 2008 11:55
por BHS
viu...

uma pergunta: vc compilou com o #include "fiscal.ch" ?

eu retirei essa linha do meu prg principal, sera que não pode ser isso ?

Até

BHS

Re: Bemafi.exe com xHarbour Console

Enviado: 18 Nov 2008 13:12
por DLZ
Bom dia amigo..
não posso deixar de ter dar um conselho..
Já que vc migrou do clipper para o xHarbour, considere a opção de passar a usar a Bemafi32.dll para comunicar com o ECF. Eu fiz isso e não me arrependi nenhum pouco..
Caso não saiba como usar DLL do Xharbour, da uma pesquisada no fórum que ta cheio de exemplos, ou me mande um e-mail para derciozanatta@yahoo.com.br (msn tb) que eu te mando um exemplo..
Um grande abraço..

Re: Bemafi.exe com xHarbour Console

Enviado: 18 Nov 2008 15:50
por Hergon
Boa tarde

Amigo BHS, quanto a compilação com o #include "fiscal.ch" , não tem, já compilo sem...
Vc teria um programa simples (apenas um ou dois comandos para ecf) compilado com
xHarbour para eu testar aqui na minha máquina? Isso se não for te atrapalhar.

Obrigado

Hergon

PS: Vou entrar em contato com o Dércio pelo msn para trocar idéia sobre bemafi32.dll

Re: Bemafi.exe com xHarbour Console

Enviado: 18 Nov 2008 17:11
por BHS
vê se ajuda:

Código: Selecionar todos

*************************** IMPRIME CUPOM BEMATECH ***************************
PROCEDURE I_BEMAT
PARAMETERS mchama,mdeu_erro,mimp_icf,mstatus
mpula="N"
DO CASE

  CASE mchama="ABRE O CUPOM"
    Comando := Chr(27) + Chr(251) +"00|"+ Chr(27)

  CASE mchama="ABRE CUPOM COM CPF"
    Comando := Chr(27) + Chr(251) +"00|"+ mimp_icf +"|"+ Chr(27)

  CASE mchama="IMPRIME O PRODUTO"
*   Comando := Chr(27) + Chr(251) +"09|"+ mimp_icf +"|"+ Chr(27)  && -> S/UNIDADE
    Comando := Chr(27) + Chr(251) +"63|"+ mimp_icf +"|"+ Chr(27)  && -> C/UNIDADE

* CASE mchama="DESCONTO NO CUPOM"
*   mval_des=STRZERO(INT(VAL_DES),10)+RIGHT(STR(VAL_DES,12,2),2)
*   @ prow(),pcol() say chr(27)+".03          "+mval_des+"S}"

  CASE mchama="CANCELA 1 ITEM"
    Item_Cancel := StrZero(RECNO(),4,0)
    Comando := Chr(27) + Chr(251) +"31|"+ Item_Cancel +"|"+ Chr(27)

  CASE mchama="CANCELA O CUPOM"
    comando := chr(27) + chr(251) +"14|"+ chr(27)

  CASE mchama="TOTALIZA O CUPOM"
    comando := chr(27) + chr(251) +"32|A|0000|"+ chr(27)   && -> Acrescimo 0000
    Delete File( "BEMAFI.CMD" )
    Delete File( "STATUS.TXT" )
    Delete File( "RETORNO.TXT" )
    ****************************
    iArquivo := FCreate( "BEMAFI.CMD" )
    ****************************
    FWrite( iArquivo, @Comando, Len( Comando ) )
    FClose( iArquivo )
    !BEMAFI.EXE
    MostraStatus()                && -> ABAIXO
    mpula="S"

    mpagto=1
    DO WHILE mpagto<=3
      mvalor=0.00
      DO CASE
        CASE mpagto=1 .AND. VAL_PAG1>0.00
          mforma="01"                            && -> Dinheiro
          mvalor=VAL_PAG1
        CASE mpagto=2 .AND. VAL_PAG2>0.00
          mforma="02"                            && -> Cheque
          mvalor=VAL_PAG2
        CASE mpagto=3 .AND. VAL_PAG3>0.00
          mforma="03"                            && -> Cartao/Convenio
          mvalor=VAL_PAG3
      ENDCASE
      IF mvalor>0.00
        mvalor=STRZERO(mvalor*100,14,0)
        comando := chr(27) + chr(251) +"72|"+ mforma +"|"+ mvalor +"|"+ chr(27)
        Delete File( "BEMAFI.CMD" )
        Delete File( "STATUS.TXT" )
        Delete File( "RETORNO.TXT" )
        ****************************
        iArquivo := FCreate( "BEMAFI.CMD" )
        ****************************
        FWrite( iArquivo, @Comando, Len( Comando ) )
        FClose( iArquivo )
        !BEMAFI.EXE
        MostraStatus()            && -> ABAIXO
        mpula="S"
      ENDIF
      mpagto=mpagto+1
    ENDDO

  CASE mchama="NUMERO DO CUPOM"
    Comando := Chr(27) + Chr(251) +"30|"+ Chr(27)

  CASE mchama="FECHA SEM MENSAGEM"
    comando := chr(27) + chr(251) +"34|"+ chr(27)

  CASE mchama="FECHA COM MENSAGEM"
    comando := chr(27) + chr(251) +"34|"+ ALLTRIM(mensag) +"|"+ chr(13) + chr(10) + chr(27)

  CASE mchama="ABRE A GAVETA"
    comando := chr(27) + chr(251) +"22|"+ chr(27)

  CASE mchama="LEITURA X"
    comando := chr(27) + chr(251) +"06|"+ chr(27)

  CASE mchama="REDUCAO Z"
    comando := chr(27) + chr(251) +"05|"+ chr(27)

ENDCASE

IF mpula="N"
  Delete File( "BEMAFI.CMD" )
  Delete File( "STATUS.TXT" )
  Delete File( "RETORNO.TXT" )
  ****************************
  iArquivo := FCreate( "BEMAFI.CMD" )
  ****************************
  FWrite( iArquivo, @Comando, Len( Comando ) )
  FClose( iArquivo )
  !BEMAFI.EXE
  MostraStatus()               && -> ABAIXO
ENDIF
RETURN

Re: Bemafi.exe com xHarbour Console

Enviado: 19 Nov 2008 16:32
por lucimauro
Isso geralmente aconteçe quando o programa tenta acessa a COM1 e a mesma ja esta sendo usado por outro programa, voce nao taria com outro programa carregado usando a mesma porta.Tipo acbrmonitor, ou o proprio bematech monitor.?

Re: Bemafi.exe com xHarbour Console

Enviado: 22 Nov 2008 16:10
por dbsh
Este prtoblema e muito comum quanto se tem sistema 16 bits, BEMAFI.EXE esta usando IO e IRQ, ou a porta ja foi aberta anteriormente usando outros parametros diferente do que o BEMAFI.EXE esta usando.
crie um rotina para abrir e fechar a porta de comunicacao no inicio do sistema no HARBOUR, passando o parametro.
EX COM1 9600 8 N 2, o XP/VISTA lembra que a porta ja joi aberta, funciona tambem no clipper com XP/VISTA com multiserial, desde que mude o numero da porta para ate COM4 na configuracao do windows, qualquer duvida e so postar.

codigo fonte do exemplo de abrir, ler gravar porta serial https://pctoledo.org/forum/viewto ... =43&t=8822

Re: Bemafi.exe com xHarbour Console

Enviado: 22 Nov 2008 16:50
por sygecom
O ideal seria que todas balanças usasem o mesmo padrão de protocolo de comunicação, mas infelizmente isso não acontece, as vezes muda o protocolo até mesmo para balanças do mesmo fabricante. Hoje eu tenho comunicação com Balanças, Bextra, Digitron, Toledo, Saturno, Jundiai, Lider, LibraTek, LucasTec, Filizola, Confiança e Muller, e cada uma se comunica de maneira diferente uma da outra. No exemplo que você postou bem provavel que seja para balanças Toledo ou Filizola, mas a mesma já não funciona com qualquer outra balança muda totalmente a comunicação. Mas mesmo assim é muito valida sua contribuição e a comunidade agradece.

Re: Bemafi.exe com xHarbour Console

Enviado: 22 Nov 2008 18:56
por dbsh
O exemplo e para parar de dar a mensagem Subsistema MSDOS de 16 bit, que acontece quando um sistema 16 bit abre a porta serial usando valores diferente do configurado pelo windows.
Abrindo e fechando primeiro por um sistema feito para windows , HARBOUR, VB, VO, de dentro de sua aplicacao ou antes dentro da mesma tarefa DOS, usando a configuracao que voce precisa, velocidade databit, paridade e stopbit e abrindo depois em sistema 16 bit, clipper/BEMAFI.EXE por exemplo, voce conseque abrir a porta serial com qualquer IRQ e IO, comum nas multiserial, mesmo aquelas mais teimosas que nao vem com suporte para MSDOS, pois depois de aberta no windows, ele memoriza que ja foi aberta e abre a porta sem precisar de IRQ e IO pelo sistema MSDOS para windows XP/VISTA, ja para 98 e preciso passar a IRQ e IO, acredito quer deva ser uma falha do windows XP/VISTA (bendita falha) pois em sistema velho nao tive que mudar, criei um programa em xharbour que chamo antes do sistema e libera a porta serial, uso a LIB CT.LIB/CTP.LIB.

Re: Bemafi.exe com xHarbour Console

Enviado: 23 Nov 2008 17:22
por helio
Eu utilizava o BEMAFI.EXE mais passei a utilizar o ACBR que funciona muito bem.

Helio Beltrao Jr.