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.