Página 1 de 1

Erro no sistema ao usar funções da CTP.LIB

Enviado: 04 Ago 2008 00:23
por ANDRIL
Olá pessoal,

Fiz uma rotina para ler a porta serial e capturar os dados de uma balança. O problema é que sem eu chamar a função, apenas coloca-la no código fonte, ele linka normalmente, porem ao ser executado dá o erro

Unrecoverable error 667: Eval stack fault

Ele dá em qualquer parte do programa, não tem uma área específica. Fiz um teste, e anulei na função que fiz, todas as chamadas a funções:

COM_INIT(), COM_OPEN(), COM_SEND(), COM_READ(), COM_CLOSE()

e o sistema voltou a funcionar normalmente sem da o erro acima.

Será que estas funções são incompativeis com o modo protegido do BLINKER mesmo usando a CTP.LIB e __WAIT.OBJ e CTUSP.OBJ

Alguém poderia me dar uma luz????


Meu lnk esta assim:

Código: Selecionar todos

FILE np

BLINKER INCREMENTAL OFF
BLINKER EXECUTABLE CLIPPER //F250
BLINKER EXECUTABLE EXTENDED
BLINKER EXECUTABLE COMPRESS 1

file @bli_lnk

SEARCH BLXCLP52 

LIB CTP
LIB EXTEND
LIB CLIPPER
LIB DBFCDX
LIB DBFNSX
LIB SCRSVE52
LIB IMPBAR
LIB PRN_LPT
LIB EVEN
LIB WAPI
meu script file:

Código: Selecionar todos

file np,agedbf5,pcterror,ageopc,agemen4, agetap, agetdbf, calcula, agesan, ageimpr1, ageimpr2, ageimpr3, agedbf4, agedbf9, rotina, agecheq, ageace, agecart, agepend, agefatu,ageprv,agemen2,agecon,agemen3,np2,timeslic,comanda,caixaope,projeto
file mesas,f_mod_v,f_mod_v1,precos,np3,promocao,agemen1,ativareg,__wait
Ate+

Erro no sistema ao usar funções da CTP.LIB

Enviado: 04 Ago 2008 09:25
por Pablo César
Não que eu tenho utilizado para balanças, mas acho que o conceito é igual. Eu prefiro usar a IOLIB para acesso a seriais, na verdade a experiência que eu tive com acesso serial com a CA-Tools foi pouca e não obtive bons resultados, tem aqui quem prefira usar a CT mas na minha opinião é IOLIB.

Re: Erro no sistema ao usar funções da CTP.LIB

Enviado: 04 Ago 2008 10:18
por sygecom
Andril,
A CTP.LIB é para usar em modo extendido, vc deve usar a CT.LIB , alias uso ela até hj em sistemas clipper e ela é muito boa para comunicação serial, alias diga de passagem, tah ai uma coisa que o xharbour tem alguma falha e o clipper não. Em meus teste em deixar a busca de peso continuo no clipper ele toda vida busca certinho sem trancar, já a mesma coisa usando a hbcomm do xharbour em determinado tempo de busca continua de peso eletronico ele trava tudo...mas isso é coisa de 10 ou 15 min, busca peso um atraz do outro sem intervalo. Tive que limitar o tempo de busca em xharbour. Já me estendi de mais, apena deixar a minha dificuldade em relação clipper x xharbour.

Re: Erro no sistema ao usar funções da CTP.LIB

Enviado: 04 Ago 2008 14:07
por ANDRIL
Pablo, a questão é que a CTP.LIB é muito boa pra comunicação serial, o que me intriga é causar esse erro apenas ao mencionar as funções relatadas acima.

Fiz um programinha a parte usando a CTP.LIB e funcionou certinho, acho que deve ter alguma função ou rotina dentro do meu sistema que ocasiona o problema com referência cruzada.

Sygecom, uso a CTP.LIB pq já estou linkando em modo protegido/extendido como citado no meu .lnk

Aproveitando, fiz umas buscas no forum e vi algumas mensagens sua dizendo que tinha algumas rotinas para leitura de algumas balanças, só que não encontrei o link na seção "CODIGO FONTE", onde poderia encontra-las?

Obrigado Pessoal,

Ate+

Re: Erro no sistema ao usar funções da CTP.LIB

Enviado: 05 Ago 2008 19:52
por sygecom
Segue abaixo um exemplo simples usando a CTP.LIB

Código: Selecionar todos

Function CHAMABAL
COM_CLOSE(1)
COM_OPEN(1, 1, 1)
COM_INIT(1, 1200, "N", 8, 1)
COM_HARD(.F.)
W_PESO:=""
W_LETRA:=""
DO WHILE .T.
   IF COM_COUNT(1) > 0
      W_LETRA := COM_READ(1, 1)
      IF !W_LETRA$"0123456789"
         W_PESO := ""
      ELSE
         W_PESO = W_PESO+W_LETRA
      ENDIF
   ENDIF
   IF LEN(ALLTRIM(W_PESO)) = 6
      EXIT
   ENDIF
ENDDO
W_PESO = ALLTRIM(W_PESO)
COM_CLOSE(1)
vLIQ=VAL(W_PESO)
Return(vLIQ)