n_X1 := PRM->PRMLIN // Endereços de tela.
n_Y1 := PRM->PRMCOL
n_Interv := 200 // Intervalo entre leituras da Serial.
*
DEFINE WINDOW principal AT n_X1, n_Y1 WIDTH 200 HEIGHT 80 ;
TITLE "JS600 - COM " + c_Porta MAIN ;
ON INIT Dados_Iniciais( c_Form ) ;
ON RELEASE { || COM_CLOSE( n_Porta ) }
*
@ 12, 15 LABEL label_1 WIDTH 160 HEIGHT 16 ;
VALUE 'COM ' + c_Porta + " => INATIVA" ;
FONT 'Times New Roman' SIZE 14
principal.label_1.fontcolor := RED
*
DEFINE TIMER Timer_1 INTERVAL n_Interv ACTION Ctrl_Read()
*
END WINDOW
ACTIVATE Window principal
O demais é dedicado ao controle de leitura e escrita da porta serial.
Durante os teste de uma rotina de ErrorLog, me deparei com algo estranho: Enquanto em modo janela (DOS) eu consigo gravar as variáveis de memória ativas no momento do erro com:
A partir deste arquivo pode-se listar todas as variáveis públicas e de herança, o que facilita muito a identificação do erro.Save All Like * to ErrorMem
Quando em modo GUI isto não funciona. Há alguma Função que permita este acesso ?
O trecho abaixo também não funciona em modo GUI, onde identifica o erro, a descrição, o seu tipo, etc..., a linha e o módulo onde ocorreu o erro:
__Error := Padr('Tipo de Mensagem .: ' + oErr:SubSystem(),50 ) + ";" +;Eu já vi que a GUI oferece uma rotina, um pouco diferente, com menos dados. Existe alguma função que me forneça estes dados ?
Padr('N£mero do Erro ...: ' + StrValue(oErr:SubCode()),50 ) + ";" +;
Padr('Descri‡Æo ........: ' + oErr:Description(),50) + ";" +;
Padr('Objeto do Erro ...: ' + Upper(oErr:Operation() ),50) + ";" +;
Padr('Erro do DOS ......: ' + Strvalue(oErr:OsCode() ),50) + ";" +;
Padr('µrea de Trabalho .: ' + StrValue(Select() ),50) + ";" +;
Padr('Nome do Arquivo ..: ' + oErr:FileName(),50) + ";" +;
Padr('Module Name.... ..: ' + oErr:ModuleName(),50) + ";" +;
Padr('M¢dulo .....: ' + Procname(2) + REPLICATE(".",15-LEN(Procname(2))) +;
': Linha... ' + StrValue(Procline(2)),50)
No Anexo gravei um arquivo dos dados do ErrorLog para analise.