Clipper On Line • Ver Tópico - Help MiniGUI

Help MiniGUI

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Help MiniGUI

Mensagempor Hasse » 19 Mai 2013 10:59

Bom dia colegas.

Estou apanhando feito cachorro magro.

Vejam o código abaixo:
   DEFINE WINDOW principal AT 30,1230 WIDTH 200 HEIGHT 80 ;
      TITLE "JS600 - COM " + c_Port MAIN ;
      ON INIT dados_iniciais( c_Form )
      *
      @ 12, 15 LABEL label_1 WIDTH 160 HEIGHT 16 ;
         VALUE 'COM ' + c_Port + " => INATIVA" ;
         FONT 'Times New Roman' SIZE 14
         principal.label_1.fontcolor := RED
      *
      _DefineTimer( "Timer_Abertura", "principal", 2000, { || Ctrl_Read() } )
      *
   END WINDOW
   ACTIVATE Window principal

1)-Preciso que a rotina "Ctrl_Read()" seja acessada a cada 2 segundos. Se o processamento da Porta Serial for interrompido por algum motivo, teríamos 2 opções:
a)-Informar o problema encontrado e fehar o Aplicativo, ou
b)-Se não houver alguma exceção, tentar novo acesso à rotina "Ctrl_Read()" após 2 segundos.
O problema é que a Função _DefineTimer acima dispara um acesso a cada 2 segundos, e isto não pode acontecer.

Eu tentei usar "ON INIT" mas dá erro de compilação, já que uso esta propriedade para "dados_iniciais" para gerenciar onde o usuário que posicionar a janela na tela.

2)-Também poderíamos transferir todo o processamento da Porta Serial (leitura e escrita) para uma Procedure ou Funtion, mas também não sei como fazer para sair do Window "principal".
Neste caso, assim que o processamento retornar, o que só acontecerá se houver problemas, deverá informar o motivo e fechar o aplicativo.

3)-Assim que a Porta Serial estiver ATIVA, o LABEL label_1 troca a cor para AZUL. Isto está funcionando com o código abaixo:
            Principal.label_1.Value := 'COM ' + c_Port + ' => ATIVA' 
            Principal.label_1.fontcolor := BLUE


4)-Quando a Porta estiver recebendo dados, a rotina altera o LABEL label_1 para "<<<<<<<<<<<" dinâmico, que também está funcionando com o código abaixo:
   c_Label := "REC ____________"
   FOR CTD := 14 TO 4 step -1
      Principal.label_1.Value := c_Label
      Inkey( PRM->PRMTP1 )       // Temporizador.
      c_Label = Stuff( c_Label, CTD, 1, "<" )
   NEXT CTD

5)-Quando a Porta estiver emitindo dados, invertendo o sinal para ">".

6)-Assim que porta estiver aciosa, ou seja, aberta mas não recebendo e nem emitindo dados, o LABEL label_1 volta ao estado de "ATIVA"

Além da instrução de como contornar o meu problema, também aceito sugestões para tornar o sistema mais simples.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar de usuário

Hasse
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 815
Data de registro: 19 Out 2004 10:30
Cidade/Estado: Jaraguá do Sul - SC
Curtiu: 0 vez
Mens.Curtidas: 24 vezes



Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Bing [Bot] e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro