Balanca Toledo 9090 - Colocar PDV para comunicar com ela

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mensagem por rubens »

Seguinte..
Compilo com a lib CTP
e quando manda executar abre uma telinha no windows com a seguinte mensagem:

SUBSISTEMA MS-DOS DE 16 BITS

Prompt do MSDOS - nome do aplicativo (no meu caso LESERIAL 1)
A CPU NTVDM encontrou uma instrução não permitida.
CS:0000 IP: 00 77 OP: F0 37 05 13 02
Escolha fechar para finalizar o aplicativo.

e não executa o programa...

Baixei a CATOOLS na pagina do Maligno, com as atualizacoes e instalei pelo disquete e atualizei.

Tb baixei a versao da Pagina do Vagus removi a do Maligno e instalei a do VAGUS e dá o mesmo problema..

Agora vou tenta com a IOLIB...

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

rubens escreveu:Compilo com a lib CTP e quando manda executar abre uma telinha no windows com a seguinte mensagem:

SUBSISTEMA MS-DOS DE 16 BITS

Prompt do MSDOS - nome do aplicativo (no meu caso LESERIAL 1)
A CPU NTVDM encontrou uma instrução não permitida.
A biblioteca que está no meu site é a mais completa possível. Esse erro é bem estranho. Mesmo usando apenas a CATools eu nunca vi esse erro por causa dela.
Poste aqui como você está compilando seu programa, que linker usa, etc.
Só assim pra dar uma opinião.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mensagem por rubens »

Tentei compilar de 2 formas:
COM RTLINK

CLIPPER leserial /n/v/l /b
RTLINK file leserial,CTINTP,CTUSP,MSG,__WAIT_B lib CTP
* Assim aparece o problema que falei no post anterior

COM BLINKER

CompOptions := /n/v/l /b
LinkOptions := BLINKER
.prg.obj:
clipper $< $(CompOptions)
leserial.obj: leserial.prg
errorsys.obj: errorsys.prg
leserial.exe: ctintp.obj ctusp.obj __wait_b.obj errorsys.obj
all:
$(LinkOptions) @balpm

BALPM.LNK

NOBELL
BLI EXE EXT
BLINKER INCREMENTAL OFF
BeginArea
File lerserial
File errorsys
EndArea
SEA BLXRATEX
SEA BLXCLP52
Lib ctp
Lib clipper
Lib extend
Lib dbfntx
/NOE;

Assim dá o erro
run time error R6003
-integer divider by zero

...
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, Use o Blinker, atualize a sua Ca-Tools com a versão do site do Maligno e tire fora esse __WAIT_B.OBJ e veja se continua o problema...e posta como vc esta fazendo a comunicação com a balança.

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Você está misturando as estações. Seu programa está sendo montado para o modo real mas você está usando as bibliotecas pro modo protegido.

Outra: BLXRATEX é pra compatiblidade com o ExoSpace. Pode tirar. E tirar a __wait_b não vai refrescar nada, já que este objeto foi feito pra resolver um bug da CATools, o tal do R6003.
Atualize sua CATools com o patch catools_patch_l_3.zip que está na área "pub" do meu site.

Em linha de comando mesmo, tente o seguinte.

Código: Selecionar todos

clipper leserial /n/v/l/v
blinker fi leserial,msg li ct52
Só isso já é suficiente. Não sei pra que serve esse objeto MSG, mas se puder, remova, pra efeito de teste. Pode esquecer também os objetos CTUSP e CINTP, que não são necessários pra comunicação serial. Se quiser, pode trocar o BLinker pelo RTLink usando essa mesma configuração. Não fará diferença.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mensagem por rubens »

Maligno sabe que voce nao é bobo, não.. !!!
Funcionou com a rotina que voce montou.. belezinha... ela tá recebendo os dados da balança!!!
Só que tive que programa a balança no BTR2...

Eu tava pensando que no BTR3 ficaria melhor por causa da segurança... esse esquema de ficar lendo nao me passa segurança.. eu acho que confirmando a leitura fica mais confiável.. o que voce acha ?!!?!

Na hora de vender o meu PDV pede o codigo de barra e a qtde... Se o operador da enter em branco ele pula para qtde se somente lê o código de barra ele assume qtde 1 e solicita outro código de barra, o que imaginei seria: pular para a qtde, aí coloca o peso na balança e pressione F8 ou qualquer outra tecla especifica e o programa lê a qtde e pula para o código do produto...
Para ser assim tem que ser na configuração PRT3, que pelo manual tem que abrir a balança enviando um ASCII (05H) e recebendo o peso e fechando a balanca...

Bem vou desmembrar a sua rotina porque não precisa ser tão generalizada porque as definicoes da balança já estão prontas... e volto a colocar um resultado aqui...

Ah.. o erro provavelmente era porque tava usando a lib CTP e CTP52, quando coloquei a LIB CT52, nao deu nenhuma msg de erro na compilação e o programa rodou...

por enquanto obrigado... vou postar aqui os resultados...
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

rubens escreveu:Maligno sabe que voce nao é bobo, não.. !!!
Funcionou com a rotina que voce montou.. belezinha... ela tá recebendo os dados da balança!!!
Você está falando de qual rotina? Daquele programa que eu não testei? O serial_to_text.zip? Funcionou?
Só que tive que programa a balança no BTR2...

Eu tava pensando que no BTR3 ficaria melhor por causa da segurança... esse esquema de ficar lendo nao me passa segurança.. eu acho que confirmando a leitura fica mais confiável.. o que voce acha ?!!?!
A princípio, analisando de longe, eu preferiria o Prt2. Pelo menos o peso já vem estável. Você só tem que ficar "escutando" a serial por alguns instantes.
Para ser assim tem que ser na configuração PRT3, que pelo manual tem que abrir a balança enviando um ASCII (05H) e recebendo o peso e fechando a balanca...
De qualquer maneira o protocolo Prt3 pode ser usado. Você só precisa enviar o sinal "ENQ" pra impressora.
Ah.. o erro provavelmente era porque tava usando a lib CTP e CTP52, quando coloquei a LIB CT52, nao deu nenhuma msg de erro na compilação e o programa rodou...
Confusões acontecem. :)
por enquanto obrigado... vou postar aqui os resultados...
Ok. Ficaremos no aguardo.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, Rubens.....posta sua rotina de comunicação dessa balança..para nos ver como ficou.....

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Acho que ele vai fazer isso depois que decidir qual protocolo usar. São três protocolos possíveis. Mas apenas SE ele quiser mostrar o resultado. Logicamente ele não é obrigado. E nem é tão importante assim. O que mais importa é a forma como a comunicação é feita com a serial. Pra isso já existem vários e vários exemplos prontos. Inclusive, você próprio acabou de postar um neste mesmo tópico.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Maligno escreveu:Acho que ele vai fazer isso depois que decidir qual protocolo usar. São três protocolos possíveis. Mas apenas SE ele quiser mostrar o resultado. Logicamente ele não é obrigado. E nem é tão importante assim. O que mais importa é a forma como a comunicação é feita com a serial. Pra isso já existem vários e vários exemplos prontos. Inclusive, você próprio acabou de postar um neste mesmo tópico.
Tche, como assim tres protocolos para a mesma balança....esta me dizendo que pode usar tres configurações diferente para se comunicar com a mesma balança....e que negocio de segurança é esse...pra min é simples abre,envia, recebe,le e fecha......

Fique boiando nessa ai....

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Claro que não é obriado a postar....soh queria entender sobre esse negocio de segurança....e bla,bla,bla......protocolo e etc...

Explica pra nos ai...e onde encontro exemplos......o que eu postei é bem simples...tenho outros aqui...para varios tipo e modelo de balança...mas nunca usei isso ai...que vcs estão citando...

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mensagem por rubens »

Gente a rotina ficou desse jeito:
* Na realidade peguei essa rotina aqui numa postagem do Rochinha... ele disse que nao sabe quem passou entao nao tem jeito de dar o crédito original... Mas agradeço a ele...

mPeso := 0.000
Set Key K_F7 to ler_peso(@mPeso)
@ 10,10 say "Peso..:" Get mPeso
Read

Function Ler_Peso( mPeso )
Local nPorta := 1
Local cTrans := "N"
Local nBits := 8
Local nParad := 2
Local nVeloc := 2400
Local cInicia:= Chr(05)
Local Erro := .F.
Local VlrPeso:= 0
Local nRetorn:= .T.

If Com_Open(nPorta,1024,1024) == .F.
Erro := .T.
Else
nConf := Com_Init(nPorta,nVeloc,cTrans,nBits,nParad)
Com_Send(nPorta,cInicia)
Inkey(0.10)
Com_Count(nPorta)
Inkey(0.10)
nLeitura := Com_read(nPorta,10)
If Substr(nLeitura,1,1)== Chr(02) .And. Right(AllTrim(nLeitura),1)==Chr(03)
VlrPeso := Val(Substr(nLeitura,2,5))/1000
Endif
Com_Close(nPorta)
Endif
If Erro == .F.
mPeso := VlrPeso
Endif
Return (.T.)

Funcionou belezinha usando o PRT3, voce entra no get do Peso e pressiona F7 e ela captura o peso da balança...

Mas como nem tudo é flores.. me deparei com outro problema que agora não sei como resolver... No meu frente de caixa uso a FGL e quando insiro a rotina no prg e compila, dá um erro na execução.. Me parece alguma incompatibilidade da dll ct52 com a FGL não..sei.. vou postar o RMK e LNK para voces darem uma olhada se tá tudo blz... fiz vários testes tirando e acrescentando linhas da rotina... quando deixa o primeiro comando da ct52 nao executa o programa dá o erro abaixo...

BLX286: 1313: exception error 0d: general protection fault, code=0000h
Active host is DPMI (v4.10 iP:15360kb)

uso o RMK e LNK original da FGL.
FGDEMO.RMK
CompOptions := /n /a /es2

// Determine if BLINKER is enabled
// #ifdef BLINKER
LinkOptions := BLINKER
// #else
// LinkOptions := RTLINK
// #end

.prg.obj:
clipper $< $(CompOptions)

Fgdemo.obj: Fgdemo.prg
pdv.obj: pdv.prg
venda.obj: venda.prg
FglTools.obj: FglTools.prg
TBDemo.obj: TBDemo.prg
errorsys.obj: errorsys.prg

fgdemo.exe: fgdemo.obj fgltools.obj TBDemo.obj venda.obj pdv.obj errorsys.obj

all:
$(LinkOptions) @fgdemoPM // Change fgdemo to fgdemoPM for Protected Mode


fgdemopm.lnk
NOBELL # I think it's an annoying bell...
BLI EXE EXT # Remove for Real mode
BLINKER INCREMENTAL OFF # To improve Memory(0) and speed

BeginArea

File FGdemo # Demo file of Ferns' Graphics Library
File TBDemo # file for standard Tbrowse
File Pdv
File errorsys
File Venda
File FGLTools # Ferns' Graphics Library tools : Windows,
# textbuttons, dialogboxes, etc.
EndArea

SEA BLXRATEX # Remove for Real Mode
SEA BLXCLP52 # Remove for Real Mode

Lib fglib30 # Ferns' Graphics Library, always before clipper.lib
Lib ct52
Lib clipper
Lib extend
Lib dbfntx
/NOE; # Very important! Must be included!



Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mensagem por rubens »

Leonardo,

Conforme o manual da balança, existe três formas de trabalhar com ela, 03 protocolos... PRT1, PRT2, PRT3.
O PRT1 e o PRT3 são quase iguais, a diferença é que o PRT3 te retorna mais opções de controle, tipo se a nalança estabilizou, se o peso é negativo, se está acima. Mas você tem que iniciar a trasmissão, pegar o peso e fechar a transmissão.. Já o PRT2 desde que o peso estabilizou ele fica enviando comandos... Então na minha opinião pode ocorrer mais erros porque a operadora pode colocar o peso como a balança tá enviando dados o programa pode ler o mesmo peso 2 vezes, já o programa tendo que iniciar a transmissão só vai pegar o peso 1 vez, até que a operadora mende pegar o peso novamente... no meu caso, pressionando o F7.
Posso estar falando besteira... mas no meu entendimento foi assim...
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Entendi Rubnes, vlw pelo esclarecimento....tenho alguma coisa assim....eu achava que era para fazer leitura do Peso....até uso outros recurso de balança eu tenho uma função que Tara a balança....mas é especifica para esse Modelo que tenho....que é a Bextra...

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

sygecom escreveu:Tche, como assim tres protocolos para a mesma balança....esta me dizendo que pode usar tres configurações diferente para se comunicar com a mesma balança....
Não. A comunicação entre os dispositivos usa a mesma geometria: 8N1. Protocolo de comunicação é outra coisa. É como os dispositivos conversam e se entendem. Esta balança tem três protocolos. Num deles, por exemplo, pra conseguir algum dado você precisa pedí-lo emitindo um byte especial. De forma semelhante é o handshake que eu citei em outra mensagem. Se um dispositivo for enviando bytes sem parar, chega numa hora que o buffer estoura. Havendo um handshake o dispositivo emissor sabe que precisa perguntar pro rececptor se o buffer dele não está cheio. Se estiver, ele receberá um sinal, até que o receptor libere-o novamente. Isso tudo é o que se chama de protocolo. Existem centenas de protocolos diferente mundo afora. Alguns, como dessas balanças, são proprietários, inventados pelo fabricante.
e que negocio de segurança é esse...pra min é simples abre,envia, recebe,le e fecha......
E é assim mesmo. O termo "segurança" não foi utilizado no sentido de sigilo ou algo parecido. É no sentido do programa se sentir "seguro" quanto ao que ele recebe da impressora. Só isso. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder