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.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------