Comunicação Serial

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

supgaroto
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 19 Ago 2003 14:24
Localização: Rua Aristotoles Fernandes Valdares, 1190

Comunicação Serial

Mensagem por supgaroto »

Preciso fazer comunicação do meu programa com um aparelho Identificador de chamadas. Já fiz muitos testes usando os comandos CATOOLs mas não consegui nada. Tenho um manual com os protocolos de comunicação. O aparelho é IDC PC1000. Ele comunica usando porta serial. Estou disponibilizando o manual.
Anexos
Protocolo CPA1000 e CPA 1000 DTMF.doc
Manual contendo os Protocolos de comunicação
(37 KiB) Baixado 238 vezes
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Comunicação Serial

Mensagem por rochinha »

Amiguinho,

Se voce der uma pesquisada aqui no forum por bina+vagucs irá encontrar algo a respeito inclusive com informações sobre um resistor que vc terá de acoplar para que o sinal tenha mais efeito.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
supgaroto
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 19 Ago 2003 14:24
Localização: Rua Aristotoles Fernandes Valdares, 1190

Comunicação Serial

Mensagem por supgaroto »

Não estou querendo fazer isso ligando direto no moldem. Estou usando um aparelho chamando IDC PC1000 ele recebe o sinal da linha telefonica e transfere para o pc via serial ou usb. No meu caso estou preciso com mais urgencia Serial.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Comunicação Serial

Mensagem por rochinha »

Amiguinho,

Encontre os tópicos com a mesma chave que passei, lá voce encontra também informações sobre a IOLib.

Para Clipper é uma das mais simples de implementar.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
supgaroto
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 19 Ago 2003 14:24
Localização: Rua Aristotoles Fernandes Valdares, 1190

Comunicação Serial

Mensagem por supgaroto »

Não consegui achar nada que possa me ajudar!!

Estou usando essa função que é a mesma que uso para receber informações da balança:
Me ajudem a encontrar onde esta o erro! Pq se é só ler a porta serial, essa função deveria funcionar ou estou enganado o identificador de chamada necessita de algum comando pra enviar a informação pra porta serial?

Código: Selecionar todos

conta=0
cappeso=.f.
xPeso := ""
do while .t.
   com_close(1)
   com_open(1, 1024, 1024)
   com_init(1, 4800, "N", 8, 1)
   com_hard(.f.)
   millisec(500)
   cinput := com_read(1)
   if empty(cinput)
      inkey(.1)
      conta++
   else
      if substr(cinput,1,1)=chr(2)
         xpeso:=substr(cinput,2,20)
         cappeso=.t.
         exit
      endif
      inkey(.1)
      conta++
   endif
   ? xPeso
enddo
com_close(1)
if cappeso=.t.
    Alert("NÆo deu certo")
else
   alert("ok "+XPeso)
endif
return(.t.)
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Comunicação Serial

Mensagem por rochinha »

Amiguinho,

Se este código funciona com a balança não mexa.

Mas voce deve procurar não funções desta biblioteca de funções de comunicação outras funções de configurações como as pedidas no manual.

O manual diz:
Como o antigo, só usa TX e RX, mas para que o cabo funcione é necessário, que se deixe o DTR ativado e o RTS desativado.

A comunicação é feita em 4800,n,8,1.

Para iniciar qualquer comunicação, o PC deve 'enviar' um BREAK...
Voce vai precisar setar DTR e RTS além de seguir a risca os comandos de ativação.

A IOLib possui estes comandos, veja no manual.

Faça uma busca no forum por IOLib garanto que irá encontrar mais dicas.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
supgaroto
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 19 Ago 2003 14:24
Localização: Rua Aristotoles Fernandes Valdares, 1190

Comunicação Serial

Mensagem por supgaroto »

Uff!!
Valeu Rochinha!
Ajudou muito consegui resolver o problema!
roberson
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 03 Fev 2012 09:57
Localização: Curitiba/PR

Comunicação Serial

Mensagem por roberson »

Ola estou com mesmo problema.
tenho uma balança da Toledo portanto não teria como postar esse codigo corrigido para que eu tenha uma base no que você fez?
grato.
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Comunicação Serial

Mensagem por Clipper »

Prezado Colega

Uso balanças Toledo Modelo Prix III em meu sistema, veja abaixo um exemplo que funciona perfeitamente :

Código: Selecionar todos

*-------------------*
 FUNCTION CHAMABAL()
*-------------------*
COM_CLOSE(1)
COM_OPEN(1, 1024, 1024)
COM_INIT(1, 9600, "N", 8, 1)
COM_HARD(.F.)
CONTA=0
CAPPESO=.F.
PESO=0
DO WHILE CONTA<50
   COM_SEND(1,CHR(5))
   INKEY(.1)
   CINPUT:=COM_READ(1)
   IF EMPTY(CINPUT)
      INKEY(.1)
      CONTA++
   ELSE
      IF SUBSTR(CINPUT,1,1)=CHR(2)
         PESO=VAL(SUBSTR(CINPUT,2,6))
         CAPPESO=.T.
         EXIT
      ENDIF
      INKEY(.1)
      CONTA++
   ENDIF
ENDDO
COM_CLOSE(1)

KILO=SUBSTR(STR(PESO,5),1,2)
GRAMAS=SUBSTR(STR(PESO,5),3,3)
PESOC=KILO+"."+GRAMAS
PESO=VAL(PESOC)
IF PESO<0.100 .AND. PESO>0.09
   PESOC="0.0"+(LTRIM(GRAMAS))
ELSEIF PESO<0.010
   PESOC="0.00"+(LTRIM(GRAMAS))   
ENDIF
PESO=VAL(PESOC)

ITQTD=PESO-PTAR
PRECO=ITUNI*ITQTD
IF CAPPESO=.F.
   MSG("Falha na captura do peso !",1,2)
ENDIF
RETURN(.T.)
Observações :

1 - No meu caso utilizo as funções de comunicação da Clipper Tools Lib, mas se preferir basta adaptar para a IO.LIB.

2 - Lembrando que você deverá configurar a balança e o adaptar o código acima conforme sua necessidade. No caso acima está para uso com o protocolo PR3 da Toledo.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
roberson
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 03 Fev 2012 09:57
Localização: Curitiba/PR

Comunicação Serial

Mensagem por roberson »

ok.
vou configurar a balnaça e fazer testes.
Responder