Input-output COM1

308 views
Skip to first unread message

Pierre blitzkow

unread,
Mar 4, 2009, 8:24:50 AM3/4/09
to Progre...@googlegroups.com, Progress Yahoo
Bom Dia Pessoal,

Preciso fazer um programa para comunicação com uma máquina industrial através de CLP pela porta COM1 pelo progress já estou conseguindo enviar e receber informações separadamente, porém em produção a máquina irá me retornar assim que eu envio os dados mas não da tempo para dar um close e abrir novamente para leitura e como o progress não da acesso ao input-output para COM1 dando uma olhada no ProKB ele indica o uso do OCX MSCOMM32 ActiveX control, alguém já utilizou este OCX para dar algumas dicas ?

Grato,

--
Pierre Blitzkow

DsCruz

unread,
Mar 4, 2009, 11:42:29 AM3/4/09
to Progre...@googlegroups.com
Sim. Utilizo este componente em duas interfaces de pesagem de caixas, onde implemento uma leitura de balança serial Filizola/Toledo.
Ele tem alguns inconvenientes na intalação e registro na máquina. Mas fora isso funciona muito bem.
Implementei somente leitura contínua e não envio de dados.  Diz o que precisa e vejo no que posso ajudar se estiver ao meu alcance..
Aqui já roda desde 2004 em duas Fiações.
 
 
Diógenes S Cruz.
COCARI - Analista de Sistemas


2009/3/4 Pierre blitzkow <pie...@blitzkow.com>

Pierre blitzkow

unread,
Mar 4, 2009, 12:06:04 PM3/4/09
to Progre...@googlegroups.com
Boa Tarde Diógenes,

Então estou testando o MSCOMM pois preciso enviar e ler, os problemas que não estou conseguinto resolver é como enviar NULO para a porta testamos sem o uso da OCX enviando PUT CONTROL NULL foi certinho porém utilizando o MSCOMM aonde hd-com1 é minha handle faço:
hd-com1:OUTPUT = CHR(0).
ou
hd-com1:OUTPUT = STRING('').

E nada nenhuma das opções tivemos sucesso.

Outra coisa qua ainda são sei como fazer é ler o retorno, se vc tiver um exemplo já me ajudaria.

Grato,

Pierre.

2009/3/4 DsCruz <dsc...@gmail.com>



--
Pierre Blitzkow

DsCruz

unread,
Mar 5, 2009, 6:40:04 AM3/5/09
to Progre...@googlegroups.com
Olá.
Estou enviando um pedaço básico de código de leitura que utilizo aqui.
O único detalhe da leitura é que ela é feita no meu caso em um TIMER a cada 1 segundo.
Desta forma atualizo automaticamente a tela do operador. Fica parecendo o mostrador da
balança digital.

Se precisar de mais alguma coisa, é só falar.
Espero que ajude.

Att.


Diógenes S Cruz.
COCARI - Analista de Sistemas


--------------------------------------------------------------------------------------------------------------------------------------
/* Ao entrar no programa eu inicializo a balança */

DEF VAR ComPort AS COM-HANDLE.

ASSIGN v_Desconectado = NO.

ASSIGN
    ComPort          = chCtrlFrame:MSComm /* chCtrlFrame é o nome dado ao OCX MSCom */
    Comport:CommPort = "COM1" /* porta COM */
    ComPort:InputLen = 0.
   
ASSIGN
    ComPort:SETTINGS = "4800,E,7,2".

/* Reinicializo a porta se estiver aberta */
IF ComPort:PortOpen = TRUE THEN DO:
    ComPort:PortOpen = FALSE.
    ComPort:PortOpen = TRUE.
END.
ELSE
    ASSIGN ComPort:PortOpen = TRUE.

ASSIGN
    ComPort:OUTPUT = CHR(80) + CHR(13)  /* Código enviado para a COM para ativar a pesagem contínua da balança */
    TimerPeso:SENSITIVE = TRUE.         /* Inicializo o TIMER que vai fazer a leitura a cada 1 segundo */
   
/*======================================================================*/

/* Tenho um TIMER na tela configurado para leitura a cada 1 segundo */
/* No evento TICK do timer faço a leitura - OCX.Tick */
     
IF ComPort:InBufferCount > 0 THEN DO:
    v_Leitura = v_Leitura + ComPort:INPUT.
END.
  
IF LENGTH(TRIM(v_Leitura)) >= 32 THEN DO:
    /* Neste ponto a variável v_Leitura está com o conteúdo lido.
       No meu caso quebro em 32 caracteres, mas pode ser qualquer tamanho.
       Basta então decodificar o conteúdo lido ou processar ele da maneira que precisar. */

    /* ... */
END.

/*======================================================================*/

/* Quando for sair do programa, paro o TIMER e fecho a conexão com a porta COM */

TimerPeso:SENSITIVE = FALSE.

ComPort:PortOpen = FALSE.
RELEASE OBJECT ComPort NO-ERROR.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



2009/3/4 Pierre blitzkow <pie...@blitzkow.com>

Pierre blitzkow

unread,
Mar 5, 2009, 7:08:27 AM3/5/09
to Progre...@googlegroups.com
Valeu Diógenes !
Vou testar aqui e qualquer coisa trocamos uma idéia.
Muito obrigado.

Att,

Pierre.

2009/3/5 DsCruz <dsc...@gmail.com>



--
Pierre Blitzkow
Reply all
Reply to author
Forward
0 new messages