Componentes COM TRXCom

Versão  03/10/2002a


Introdução

O TRXCom é uma DLL para o ambiente Windows que implementa diversos automation servers (componentes COM) para permitir a comunicação entre uma aplicação e a base TRXCom. Pode ser utilizada por aplicações compiladas desenvolvidas em C++, Delphi, Visual Basic ou por linguagens script como VBScript, Javascript, Perl, Python, Ruby e outras. A seguir estão listados os componentes contidos da bilblioteca e para cada um são apresentadas suas funções e tópicos principais.

  1. Componente Com - Permite acesso direto ao canal serial
  2. Componente TRXMessage - Codifica/decodifica mensagens no formato utilizado pelos terminais da rede sem fio TRXCom
  3. Componente BaseMessage - Codifica/decodifica mensagens no formato utilizado na comunicação com a Base TRXCom
  4. Componente BaseCom - Envia e recebe mensagens para a Base TRXCom.
  5. Componente TermCom - Envia e recebe mensagens para Terminais TRXCom através da Base

Componente Com

Este componente permite acesso direto aos canais seriais do microcomputador sendo utilizado internamente pelos outros componentes.
Estão descritas a seguir todas as suas funções, sendo que para cada uma delas é exibido um exemplo nas linguagens Javascript e Perl.

Com / Ativação

Para o componente poder ser utilizado é necessário criar uma instância do mesmo. Este processo vária para cada linguagem utilizada mas consiste basicamente em passar o nome "TRXCom.Com" para uma função que irá retornar uma referência para o objeto. Caso ocorra problema normalmente é gerada uma exceção pelo interpretador da linguagem ou retornada uma referência nula.

Javascript:
Com = WScript.CreateObject("TRXCom.Com");


Perl:
$Com = Win32::OLE->new('TRXCom.Com');

Com / Open - Abre canal de comunicação serial

Entradas
Tipo
Descrição
nChannel
Inteiro
Número do canal de comunicação a ser aberto de 0 à N. O canal 0 corresponde à COM1, o canal  1 corresponde a COM2 e assim por diante.
nRate
Inteiro
Taxa de comunicação a ser utilizada:: 110, 300, 600, 1200, 2400, 4800, 9600, , 384960000, 56000, 57600, 115200, 128000, 2560000.
nBits
Inteiro
Número de bits do caractere:: 5, 6, 7 e 8.
nStop
Inteiro
Número de stop bits: 1 ou 2
nParid
Inteiro
Tipo do bit de paridade a ser utilizado: 0 - sem paridade, 1 - paridade ímpar, 2 - paridade par
nTxFlow
Inteiro
Tipo do controle de fluxo para transmissão: 0 - sem controle de fluxo, 1- RTS/CTR 2- XON/XOFF
nRxFlow
Inteiro
Tipo do controle de fluxo para recepção: 0 - sem controle de fluxo, 1- RTS/CTR 2- XON/XOFF
dwTxBuffer
Inteiro
Tamanho do buffer de transmissão em bytes
dwRxBuffer
Inteiro
Tamanho do buffer de recepção em bytes
Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se canal aberto com sucesso ou valor negativo caso contrário.

Descrição

Esta função deve ser a primeira função a ser chamada antes de utilizar o canal serial. É responsável por sua abertura e configuração dos  seus parâmetros.

Exemplos:

Javascript:
Res = Com.Open(0, 9600, 8, 1, 0, 0, 0, 1000, 1000);
if (Res) {
   WScript.Echo("Erro na abertura do canal");
}


Perl:
$Result = $Com->Open(0, 9600, 8, 1, 0, 0, 0, 1000, 1000);
if ($Result) {
  printf("Erro na abertura do canal");
}

Com / Close - Fecha canal de comunicação serial

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se canal aberto ou código de erro caso contrário

Descrição

Esta função deve chamada após ter sido encerrada a utilização do canal serial.

Exemplo:

Javascript:
Res = Com.Close();
if (Res) {
   WScript.Echo("Erro: " + Res + " no fechamento do canal");
}


Perl:
$Result  = $Com->Close();
if ($Result) {
    printf("Erro: $Result no fechamento do canal");
}

Com / Config - Configura canal de comunicação serial

Entradas
Tipo
Descrição
nRate
Inteiro
Taxa de comunicação a ser utilizada:: 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,  56000, 57600, 115200, 128000, 2560000.
nBits
Inteiro
Número de bits do caractere:: 5, 6, 7 e 8.
nStop
Inteiro
Número de stop bits: 1 ou 2
nParid
Inteiro
Tipo do bit de paridade a ser utilizado: 0 - sem paridade, 1 - paridade ímpar, 2 - paridade par
nTxFlow
Inteiro
Tipo do controle de fluxo para transmissão: 0 - sem controle de fluxo, 1- RTS/CTR 2- XON/XOFF
nRxFlow
Inteiro
Tipo do controle de fluxo para recepção: 0 - sem controle de fluxo, 1- RTS/CTR 2- XON/XOFF
Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se canal aberto com sucesso ou valor negativo caso contrário.

Descrição

Esta função permite reconfigurar o canal serial após sua abertura sem ser necessário fechá-lo e abrí-lo novamente. Os tamanhos dos buffers de transmissão e recepção não podem ser reconfigurados por esta função.

Exemplo:

Javascript:
Res = Com.Config(9600, 8, 1, 0, 0, 0);
if (Res) {
   WScript.Echo("Erro: " + Res + " no fechamento do canal");
}


Perl:
$Result  = $Com->Config(9600, 8, 1, 0, 0, 0);
if ($Result == 0) {
    printf("Canal reinicializado com sucesso");
}

Com / GetConfig - Obtém configuração do canal serial

Entradas
Tipo
Descrição
nInfo
Inteiro
Código da configuração do canal que se deseja obter:
1 para canal aberto
2 para taxa de comunicacao
3 para número de bits
4 para número de stop-bits
5 para paridade
6 para tipo de controle de fluxo na transmissao
7 para tipo de controle de fluxo na recepcao
8 para tamanho do buffer de recepcao
8 para tamanho do buffer de transmissao
Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: valor da configuração especificada ou número negativo se ocorreu erro.

Descrição

Esta função permite obter todos os parâmetros de configuração do canal serial. Para obter uma determinada configuração deve ser passado para a função o código da configuração desejada e a função retorna o valor atual da configuração correspondente.

Exemplo:

Javascript:
var Taxa = Com.GetConfig(2);
WScript.Echo("Canal configurado com taxa" + Taxa);

Perl:
$Taxa = $Com->GetConfig(2);
printf("Canal configurado com taxa: $Taxa");

Com / TxChar - Transmite caractere pelo canal serial

Entrada
Tipo
Descrição
nByte
Inteiro
Código de caractere de 0 a 255 a ser enviado pelo canal serial
Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se caractere foi aceito para transmissão ou código de erro caso contrário

Descrição

Esta função permite transmitir dados caractere a caractere. O caractere recebido é introduzido no buffer do driver de comunicação e a função retorna imediatamente. O caractere será transmitido através do driver de comunicação serial.

Exemplo:

Javascript:
var Res = Com.TxChar(65);
if (Res) {
   WScript.Echo("Erro na transmissao de caractere");

}


Perl:
$Result  = $Com->TxChar(chr(0x01));
if ($Result) {
    printf("Erro na transmissao de caractere");
}


Com / TxData - Transmite dados pelo canal serial

Entrada
Tipo
Descrição
Buffer
String
String com dados a serem enviados pelo canal serial
wBytes
Inteiro
Número de bytes a serem transmitidos. Deve ser um valor menor ou igual ao tamanho do string fornecido no parâmetro anterior.
Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 se o string foi aceito para transmissão ou código de erro caso contrário

Descrição

Esta função permite transmitir um string de bytes. São introduzidos no buffer de transmissão do driver de comunicação os caracteres do string especificado e a função retorna imediatamente. Os caracteres são efetivamente transmitidos pelo driver de comunicação.

Exemplo:

Javascript:
var sMsg = "Teste do TRXCom";
Result = Com.TxData(sMsg, sMsg.length);
if (Result) {
    WScript.Echo("Erro na transmissao");

Perl:
my $sMsg = "Teste do TRXCom";
$Result = $Com->TxData($sMsg, length($sMsg)));
if ($Result) {
    printf("Erro na transmissao");
}

Com / GetnTx - Retorna número de bytes no buffer de transmissão

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: Se for um valor maior ou igual a zero, indica o número de bytes no buffer de transmissão, caso contrário é um código de erro.

Descrição

Esta função permite verificar quantos caracteres ainda estão no buffer de transmissão do driver de comunicação.

Exemplos:

Javascript:
var Result;
Result = Com.GetnTx();
if (Result == 0) {
    WScript.Echo("Buffer de transmissao vazio");

Perl:
my $Result;
$Result = $Com->GetnTx();
if (!$Result) {
    printf("Buffer de transmissao vazio");
}

Com / RxChar - Recebe caractere do canal de comunicação

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: Se for um valor maior ou igual a zero, representa o código do caractere recebido, caso contrário é um código de erro.

Descrição

Esta função permite retirar um caractere do buffer de recepção do driver de comunicação .Se o buffer estiver vazio, a função retorna um código de erro.

Exemplos:

Javascript:
var Result;
Result = Com.RxChar();
if (Result >= 0) {
    WScript.Echo("Recebido caractere");

Perl:
my $Result;
$Result = $Com->RxChar();
if ($Result >= 0) {
    printf("Recebido caractere");
}

Com / RxData - Recebe dados do canal de comunicação

Entrada
Tipo
Descrição
wBytes
Inteiro
Número de bytes a serem retirados do buffer de comunicação do canal serial
Saída
Tipo
Descrição
Buffer
String
String com exatamente o número de bytes especificados ou string nulo caso tenha ocorrido algum erro.

Descrição

Esta função permite retirar um conjunto de bytes do buffer de recepção do driver de comunicação. Se o buffer estiver vazio ou contiver menos bytes que o número de bytes que foi especificado, a função retorna um string vazio.

Exemplos:

Javascript:
var Result;
Result = Com.RxData(10);
if (Result.length() == 0) {
    WScript.Echo("mensagem nao foi recebida");

Perl:
my $Result;
$Result = $Com->RxData(10);
if (length($Result) == 0) {
    printf("mensagem nao foi recebida");
}

Com / GetnRx - Retorna número de bytes no buffer de recepção

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: Se for um valor maior ou igual a zero, indica o número de bytes no buffer de recepção, caso contrário é um código de erro.

Descrição

Esta função permite verificar quantos caracteres estão no buffer de recepção do driver de comunicação.

Exemplos:

Javascript:
var Result;
Result = Com.GetnRx();
if (Result == 0) {
    WScript.Echo("Buffer de recepcao vazio");

Perl:
my $Result;
$Result = $Com->GetnRx();
if (!$Result) {
    printf("Buffer de recepcao vazio");
}

Com / ClearTxBuffer - Limpa buffer de transmissão

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se função executado com sucesso ou código de erro caso contrário

Descrição

Esta função permite limpar o buffer de transmissão. Todos os dados no buffer são perdidos.

Exemplos:

Javascript:
var Result;
Result = Com.ClearTxBuffer();
if (Result == 0) {
    WScript.Echo("Buffer de transmissao esvaziado");

Perl:
my $Result;
$Result = $Com->ClearTxBuffer();
if (!$Result) {
    printf("Buffer de transmissao esvaziado");
}

Com / ClearRxBuffer - Limpa buffer de recepção

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se função executado com sucesso ou código de erro caso contrário

Descrição

Esta função permite limpar o buffer de recepção sem ser necessário chamar as funções de retirada de dados. Todos os dados no buffer são perdidos.

Exemplos:

Javascript:
var Result;
Result = Com.ClearRxBuffer();
if (Result == 0) {
    WScript.Echo("Buffer de recepcao esvaziado");

Perl:
my $Result;
$Result = $Com->ClearRxBuffer();
if (!$Result) {
    printf("Buffer de transmissao esvaziado");
}

Com / ClearTxRx - Limpa buffers de transmissão e recepção

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se função executado com sucesso ou código de erro caso contrário

Descrição

Esta função permite limpar os buffers de transmissão e recepção. Todos os dados nos buffer s são perdidos.

Exemplos:

Javascript:
var Result;
Result = Com.ClearTxRx();
if (Result == 0) {
    WScript.Echo("Buffers esvaziados");

Perl:
my $Result;
$Result = $Com->ClearTxRx();
if (!$Result) {
    printf("Buffers esvaziados");
}

Com / GetErrors - Retorna erros de comunicação

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: Se for igual a zero, não ocorreram erros de comunicação. Se for maior que zero representa os erros de comunicação ocorridos. Se for menor zero indica um código de erro na execução da função. Os códigos de erro de comunicação são representados por bits no valor retornado de acordo com a seguinte tabela:
0x0001
Overflow no buffer de recepção
0x0004
Erro de overrun na recepção
0x0008
Erro de framing na recepção
0x0010
Detectada recepção de BREAK
0x0100
Buffer de transmissão cheio

Descrição

Esta função permite verificar a ocorrência de erros de comunicação. O valor retornado indica os erros ocorridos através de bits setados (valor igual a 1) na posição correspondente ao erro de acordo com a tabela anterior. Os erros ficam memorizados internamente e vão sendo acumulados conforme vão ocorrendo. A função ClearErrors(), descrita a seguir, limpa todos os erros.

Exemplos:

Javascript:
var Result;
Result = Com.GetErrors();
if (Result > 0 and (Result ....)) {
    WScript.Echo("Buffers esvaziados");

Perl:
my $Result;
$Result = $Com->GetErrors();
if ($Result > 0 and ($Result ....)) {
    printf("Ocorreu erro de overrun");
}

Com / ClearErrors - Limpa erros de comunicação

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se função executado com sucesso ou código de erro caso contrário

Descrição

Esta função permite limpar os erros de comunicação memorizados internamente.

Exemplos:

Javascript:
var Result;
Result = Com.ClearErrors();
if (Result == 0) {
    WScript.Echo("Erros de comunicacao zerados");

Perl:
my $Result;
$Result = $Com->ClearErrors();
if (!$Result) {
    printf("Erros de comunicacao zerados");
}

Com / GetCTS - Retorna estado do sinal CTS (Clear To Send)

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se CTS estiver desativo, 1 - se CTS estiver ativo, código de erro caso contrário

Descrição

Esta função permite obter o estado do sinal CTS (Clear To Send) da interface serial. Este sinal normalmente indica, quando ativo, que o receptor está pronto para receber dados.

Exemplos:

Javascript:
var Result;
Result = Com.GetCTS();
if (Result == 1) {
    WScript.Echo("CTS ATIVO");

Perl:
my $Result;
$Result = $Com->GetCTS();
if ($Result == 1) {
    printf("CTS ATIVO");
}

Com / GetDCD - Retorna estado do sinal DCD (Data Carrier Detect)

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se DCD estiver desativo, 1 - se DCD estiver ativo, código de erro caso contrário

Descrição

Esta função permite obter o estado do sinal DCD (Data Carrier Detect) da interface serial. Este sinal normalmente indica, quando ativo, que o modem conectado a interface serial detectou sinal de portador e está pronto para comunicação.

Exemplos:

Javascript:
var Result;
Result = Com.GetDCD)();
if (Result == 0) {
    WScript.Echo("DCD DESATIVO");

Perl:
my $Result;
$Result = $Com->GetDCD();
if ($Result == 0) {
    printf("DCD DESATIVO");
}

Com / GetDSR - Retorna estado do sinal DSR (Data Set Ready)

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se DSR estiver desativo, 1 - se DSR estiver ativo, código de erro caso contrário

Descrição

Esta função permite obter o estado do sinal DSR (Data Set Ready ) da interface serial. Este sinal normalmente indica, quando ativo, que o modem conectado a interface serial está ligado (pronto)..

Exemplos:

Javascript:
var Result;
Result = Com.GetDSR();
if (Result == 1) {
    WScript.Echo("DSR ATIVO");

Perl:
my $Result;
$Result = $Com->GetDSR();
if ($Result == 0) {
    printf("DSR ATIVO");
}

Com / GetRI - Retorna estado do sinal RI (Ring Indicator)

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se RI estiver desativo, 1 - se RI estiver ativo, código de erro caso contrário

Descrição

Esta função permite obter o estado do sinal RI (Ring Indicator ) da interface serial. Este sinal normalmente indica, quando ativo, que o modem conectado a interface serial está detectando uma chamada telefônica na linha.

Exemplos:

Javascript:
var Result;
Result = Com.GetRI();
if (Result == 1) {
    WScript.Echo("RI ATIVO");

Perl:
my $Result;
$Result = $Com->GetRI();
if ($Result == 1) {
    printf("RI ATIVO");
}

Com / SetDTR - Estabelece estado do sinal DTR (Data Terminal Ready)

Entrada
Tipo
Descrição
nState
Inteiro
Estado desejado do sinal: 0 - para desativar, 1 - para ativar
Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se função executada com sucesso, ou código de erro caso contrário

Descrição

Esta função permite estabelecer o estado do sinal DTR (Data Terminal Ready ) da interface serial. Este sinal normalmente indica, quando ativo, que o transmissor está ligado e pronto.

Exemplos:

Javascript:
var Result;
Result = Com.SetDTR(1);
if (Result == 0) {
    WScript.Echo("DTR Ativado");

Perl:
my $Result;
$Result = $Com->SetDTR(1);
if ($Result == 1) {
    printf("DTR Ativado");
}

Com / SetRTS - Estabelece estado do sinal RTS (Request To Send)

Entrada
Tipo
Descrição
nState
Inteiro
Estado desejado do sinal: 0 - para desativar, 1 - para ativar
Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se função executada com sucesso, ou código de erro caso contrário

Descrição

Esta função permite estabelecer o estado do sinal RTS (Request To Send ) da interface serial. Este sinal normalmente indica, quando ativo, que o transmissor deseja transmitir dados.

Exemplos:

Javascript:
var Result;
Result = Com.SetRTS(0);
if (Result == 0) {
    WScript.Echo("RTS Desativado");

Perl:
my $Result;
$Result = $Com->SetRTS(0);
if ($Result == 1) {
    printf("RTS Desativado");
}

Com / SetBREAK - Estabelece estado do BREAK

Entrada
Tipo
Descrição
nState
Inteiro
Estado desejado do sinal: 0 - para desativar, 1 - para ativar
Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se função executada com sucesso, ou código de erro caso contrário

Descrição

Esta função permite enviar um BREAK. O BREAK consiste em estabelecer um nível lógico zero no sinal de transmissão por um intervalo de tempo mínimo necessário para o receptor detectar a presença do BREAK. Este intervalo é normalmente o tempo de transmissão de um caractere utilizando a taxa de comunicação atualmente configurada. Pode ser utilizado para interromper uma comunicação em andamento.

Exemplos:

Javascript:
var Result;
Result = Com.SetBREAK(1);
if (Result == 0) {
    WScript.Echo("BREAK ativado");

Perl:
my $Result;
$Result = $Com->SetBREAK(1);
if ($Result == 1) {
    printf("BREAK ativado");
}

Com / Códigos de erros retornados

Os códigos de erro retornados por este componente estão na faixa de -1 a -99:

Código do erro
Descrição
-2
Canal de comunicação inválido
-4
Número de bits inválido
-5
Taxa de comunicação inválida
-6
Número de stop-bits inválido
-7
Paridade inválida
-8
Tamanho de buffer inválido
-9
Tipo de controle de fluxo inválido
-10
Canal de comunicação já está aberto
-11
Canal de comunicação não está aberto
-13
Buffer de transmissão cheio
-14
Buffer de recepção vazio
-15
Estado de sinal inválido
-16
Porta inválida  ou erro de hardware
-17
Código de configuração inválido
-18
Erro na recepção
-19
Erro no fechamento do canal
-20
Erro na transmissão
-21
Erro retornado pelo Windows

Componente TRXMessage

Este componente permite codificar e decodificar mensagens que podem ser enviadas ou recebidas, através da Base TRXCom, para os terminais da rede sem fio. Estas mensagens possuem diversos campos compactados que precisam ser formatados corretamente além de possuirem um checksum ou CRC-16 utilizado para detecção de erros. Este componente facilita a codificação e decodificação destas mensagens através de funções que acessam os valores dos campos dentro da mensagem.

Para construir uma mensagem, deve ser criada uma instância do objeto e devem ser estabelecidos os valores dos campos desejados.
Em seguida, deve ser chamada a função Encode() que retorna um string com a mensagem corretamente codificada. Este string poderá ser utilizado para transmissão desta mensagem. São apresentados a seguir, exemplos de codificação de mensagens:

Javascript:
TRXMsg = WScript.CreateObject("TRXCom.TRXMessage");
TRXMsg.SetCheckType(0);        // utiliza checksum
TRXMsg.SetMsgType(1);          // mensagem de dados                
TRXMsg.SetReturnAck(1);        // solicita retorno de ACK
TRXMsg.SetDestination(100);    // envia para terminal 100
TRXMsg.SetData("MENSAGEM");    // campo de dados da mensagem
Msg = TRXMsg.Encode();         // 'Msg' contem string com mensagem codificada           

Perl:
$TRXMsg =  Win32::OLE->new("TRXCom.TRXMessage") ;
$TRXMsg->SetCheckType(1);       # utiliza CRC-16
$TRXMsg->SetMsgType(0);         # mensagem de ACK
$TRXMsg.SetDestination(34900);  # envia para terminal 34900
$Msg = TRXMsg.Encode();         # $Msg contém string com mensagem codificada

Para decodificar uma mensagem recebida, deve ser criada uma instância do objeto, o string com os bytes da mensagem deve ser passado para a função Decode() e a seguir os campos da mensagem podem ser acessados. Seguem exemplos de decodificação.

Javascript:
TRXMsg = WScript.CreateObject("TRXCom.TRXMessage");
TRXMsg.Decode(Msg);                  // decodifica mensagem em 'Msg'
if (TRXMsg.GetCheckType() == 0) {    // se for mensagem de dados
  var Data = TRXMsg.GetData();       // obtem dados da mensagem
}

Perl:
$TRXMsg = WIN32::OLE->new("TRXCom.TRXMessage");
$TRXMsg->Decode(Msg);                // decodifica mensagem em 'Msg'
if ($TRXMsg->GetCheckType() == 0) {  // se for mensagem de dados
  var Src = TRXMsg.GetSource();      // obtem terminal que enviou
}

A seguir estão descritos mais detalhadamente o processo de ativação e todas as funções disponíveis neste componente.

TRXMessage / Ativação

Para o componente poder ser utilizado é necessário criar uma instância do mesmo. Este processo vária para cada linguagem utilizada mas consiste basicamente em passar o nome 'TRXCom.TRXMessage" para uma função que irá retornar uma referência para o objeto. Caso ocorra problema normalmente é gerada uma exceção pelo interpretador da linguagem ou retornada uma referência nula.

Javascript:
var TRXMsg;
TRXMsg = WScript.CreateObject("TRXCom.TRXMessage");


Perl:
my $TRXMsg;
$TRXMsg = Win32::OLE->new('TRXCom.TRXMessage');

TRXMessage / SetCheckType - Estabelece tipo de detecção de erros

Entrada
Tipo
Descrição
bState
Inteiro
Tipo de detecção de erros desejada:: 0 (falso) - para checksum, 1 (verdadeiro) - para CRC-16
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o tipo de campo de deteçcão de erros que será utilizado na mensagem. Caso esta função não seja utilizada e a mensagem for codificada será utilizado o valor padrão que é checksum

Exemplos:

Javascript:
TRXMsg.SetCheckType(0);        // utiliza checksum

Perl:
$TRXMsg->SetCheckType(1);      # Utiliza CRC-16

TRXMessage / GetCheckType - Retorna tipo de detecção de erros

Entrada
Tipo
Descrição
Nenhuma
Inteiro
Tipo de detecção de erros desejada:: 0 (falso) - para checksum, 1 (verdadeiro) - para CRC-16
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite obter o tipo de campo de deteçcão de erros utilizado na mensagem previamente decodificada. Normalmente esta informação não é necessária para o programa aplicativo pois se a mensagem foi decodificada corretamente o checksum ou o CRC-16 já foram verificados pela função Decode() .

Exemplos:

Javascript:
if (TRXMsg.GetCheckType() == 0) {
    WScript.Echo("Mensagem utiliza checksum");
}


Perl:
if ($TRXMsg->GetCheckType() == 1) {
    printf("Mensagem utiliza CRC16");
}

TRXMessage / SetMsgType - Estabelece tipo da mensagem (Dados ou ACK)

Entrada
Tipo
Descrição
bState
Inteiro
Tipo da mensagem: 0 (falso) - para DADOS, 1 (verdadeiro) - para ACK
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o tipo da mensagem que será codificada. A mensagem pode ser de DADOS a serem enviados para um terminal da rede ou de ACK para confirmar o recebimento de uma mensagem enviada previamente pelo terminal. O valor padrão é DADOS.

Exemplos:

Javascript:
TRXMsg.SetMsgType(1);          // mensagem de ACK

Perl:
$TRXMsg->SetMsgType(0);        # mensagem de DADOS

TRXMessage / GetMsgType - Retorna tipo da mensagem (Dados ou ACK)

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
bState
Inteiro
Tipo da mensagem: 0 (falso) - para DADOS, 1 (verdadeiro) - para ACK

Descrição

Esta função permite obter o tipo de uma mensagem previamente decodificada. Esta informação é necessária para o programa aplicativo estabelecer como vai processar a mensagem recebida. Se for uma mensagem de DADOS e a mesma solicitar ACK (veja GetReturnAck() ) deverá ser transmitido uma mensagem de ACK pelo programa aplicativo para o terminal que enviou a mensagem. Se for uma mensagem de ACK foi confirmada a recepção pelo terminal de uma mensagem previamente enviada pelo programa aplicativo.

Exemplos:

Javascript:
if (TRXMsg.GetMsgType() == 0) {
    if (TRXMsg.GetReturnAck()) {
        ...
    }
}


Perl:
if ($TRXMsg->GetMsgType() == 1) {
    printf("Terminal recebeu mensagem");
}

TRXMessage / SetReturnAck - Estabelece solicitação de retorno de ACK

Entrada
Tipo
Descrição
bState
Inteiro
Solicitação de ACK: 0 (falso) - terminal não deverá responder com ACK, 1 (verdadeiro) - termina deverá responder com ACK
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer a solicitação de retorno de ACK desta mensagem. Se a mensagem solicitar ACK o termina,l ao recebê-l,a deverá enviar uma mensagem de ACK, caso contrário o terminal não irá enviar ACK.

Exemplos:

Javascript:
TRXMsg.SetReturnAck(1);        // solicita retorno de ACK

Perl:
$TRXMsg->SetReturnAck(0);      # mensagem de DADOS

TRXMessage / GetReturnAck - Retorna estado da solicitação de ACK

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
bState
Inteiro
Solicitação de ACK: 0 (falso) - Não deverá ser enviado ACK, 1 (verdadeiro) - Deverá ser enviado ACK

Descrição

Esta função permite obter o estado de solicitação de ACK de uma mensagem previamente decodificada. Esta informação é necessária para o programa aplicativo estabelecer como vai processar a mensagem recebida. Se for uma mensagem de DADOS (veja GetMsgType() ) e a mesma solicitar ACK deverá ser transmitido uma mensagem de ACK pelo programa aplicativo para o terminal que enviou a mensagem. Se for uma mensagem de ACK foi confirmada a recepção pelo terminal de uma mensagem previamente enviada pelo programa aplicativo.

Exemplos:

Javascript:
if (TRXMsg.GetMsgType() == 0) {
    if (TRXMsg.GetReturnAck()) {
        ...
    }
}


Perl:
if ($TRXMsg->GetReturnAck() == 0) {
    printf("Nao precisa enviar ACK pare terminal");
}

TRXMessage / SetMsgApplication - Estabelece mensagem de aplicação ou protocolo

Entrada
Tipo
Descrição
bState
Inteiro
Tipo de mensagem de aplicação ou protocolo: 0 (falso) - mensagem de protocolo, 1 (verdadeiro) - mensagem de protocolo
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer se a mensagem será de aplicação ou protocolo. O valor padrão é mensagem de protocolo.

Exemplos:

Javascript:
TRXMsg.SetMsgApplication(1);        // solicita retorno de ACK

Perl:
$TRXMsg->SetReturnAck(0);           # mensagem de DADOS

TRXMessage / GetMsgApplication - Retorna se mensagem é de aplicação ou protocolo

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
bState
Inteiro
Tipo de mensagem de aplicação ou protocolo: 0 (falso) - mensagem de protocolo, 1 (verdadeiro) - mensagem de protocolo

Descrição

Esta função permite verificar se uma mensagem previamente decodificada é de aplicação ou protocolo. Esta informação é necessária para o programa aplicativo estabelecer como vai processar a mensagem recebida.

Exemplos:

Javascript:
if (TRXMsg.GetMsgApplication()) {
    WScript.Echo("Mensagem de aplicacao");

}


Perl:
if (! $TRXMsg->GetMsgApplication()) {
    printf("Mensagem de protocolo");
}

TRXMessage / SetSource - Estabelece endereço de origem da mensagem

Entrada
Tipo
Descrição
dwSource
Inteiro
Endereço de origem da mensagem: 0xFFFFFFFF para indicar que mensagem não tem endereço de origem ou outro valor representando o endereço de origem da mensagem.                                    
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o endereço de origem da mensagem a ser enviada. Uma mensagem pode não conter endereço de origem. Neste caso deve ser passado o valor 0xFFFFFFFF para função.

Exemplos:

Javascript:
TRXMsg.SetSource(0xFFFFFFFF);     // mensagem sem endereço de origem

Perl:
$TRXMsg->SetSource(48345);         # endereco de origem = 48345

TRXMessage / GetSource - Retorna endereço de origem da mensagem

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
bState
Inteiro
Endereço de origem da mensagem: Se for 0xFFFFFFFF indica que mensagem não contém endereço de origem, caso contrário é um endereço de origem válido.

Descrição

Esta função permite obter o endereço de origem de uma mensagem previamente decodificada. A mensagem pode não conter endereço de origem e neste caso é retornado o valor 0xFFFFFFFF.

Exemplos:

Javascript:
if (TRXMsg.GetSource() == 0xFFFFFFFF) {
    WScript.Echo("Mensagem nao contem origem");

}


Perl:
$Source = TRXMsg->GetSource();
if ($Source != 0xFFFFFFFF) {
    printf("Endereco de origem: $Source");
}

TRXMessage / SetDestination - Estabelece endereço de destino da mensagem

Entrada
Tipo
Descrição
dwDest
Inteiro
Endereço de destino da mensagem: 0xFFFFFFFF para indicar que mensagem não tem endereço de destino ou outro valor representando o endereço de destino da mensagem.                                    
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o endereço de destino da mensagem a ser enviada. Uma mensagem pode não conter endereço de destino. Neste caso deve ser passado o valor 0xFFFFFFFF para função.

Exemplos:

Javascript:
TRXMsg.SetDestination(100);           // mensagem para terminal 100

Perl:
$TRXMsg->SetDestination(0xFFFFFFFF);  # mensagem sem endereco de destino

TRXMessage / GetDestination - Retorna endereço de destino da mensagem

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
dwDest
Inteiro
Endereço de destino da mensagem: Se for 0xFFFFFFFF indica que mensagem não contém endereço de destino, caso contrário é um endereço de destino válido.

Descrição

Esta função permite obter o endereço de destino de uma mensagem previamente decodificada. A mensagem pode não conter endereço de destino e neste caso o valor retornado será 0xFFFFFFFF.

Exemplos:

Javascript:
if (TRXMsg.GetDestination() == 0xFFFFFFFF) {
    WScript.Echo("Mensagem nao contem destino");

}


Perl:
$Dest = TRXMsg->GetDestination();
if ($Dest != 0xFFFFFFFF) {
    printf("Endereco de destino: $Dest");
}

TRXMessage / SetData - Estabelece dados da mensagem

Entrada
Tipo
Descrição
Data
String
String com dados da mensagem.                                                                        
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer os dados da mensagem a ser enviada. Apenas as mensagens de DADOS podem conter esta campo . As mensagens de ACK não podem transportar dados.

Exemplos:

Javascript:
TRXMsg.SetData("OK");

Perl:
$TRXMsg->SetData("ERRO. TENTE DE NOVO");

TRXMessage / GetData - Retorna dados da mensagem

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Data
String
String com conteudo do campo de dados da mensagem. Pode ser vazio se mensagem não contiver campo de dados, caso contrário seu tamanho mínimo é de um caractere.

Descrição

Esta função permite obter o campo de dados de uma mensagem previamente decodificada. Se a mensagem não for uma mensagem de dados será retornado um string vazio.

Exemplos:

Javascript:
var Data = TRXMsg.GetData();
WScript.Echo("Dados recebidos: " + Data);


Perl:
my $Data = TRXMsg->GetData();
if (length($Data) == 0) {
    printf("Mensagem nao contem dados");
}

TRXMessage / Encode - Codifica mensagem

Entrada
Tipo
Descrição
Nenhuma

                                                                       
Saída
Tipo
Descrição
Message
String
String com bytes codificados da mensagem.

Descrição

Esta função permite codificar uma mensagem cujos campos foram previamente definidos através das funções Set . A função retorna um string com os bytes da mensagem codificada. Este string poderá ser passado para outros objetos para a transmissão da mensagem.

Exemplos:

Javascript:
var Msg = TRXMsg.Encode();

Perl:
my $Msg = $TRXMsg->Encode();

TRXMessage / Decode - Decodifica mensagem

Entrada
Tipo
Descrição
Buffer
String
String com bytes a serem decodificados
Saída
Tipo
Descrição
nRes
Inteiro
Resultado da decodificação: 0 - se decodificação foi efetuada com sucesso ou código de erro caso contrário.

Descrição

Esta função permite decodificar um string de bytes recebidos. A função verifica todos os campos e calcula o checksum ou CRC-16 retornando 0 se os bytes foram decodificados corretamente ou um código de erro caso contrário. Após a chamada desta função e caso a decodificação tenha sido bem sucedida poderão ser utilizadas as funçoes Get para obter o conteúdo dos campos da mensagem.

Exemplos:

Javascript:
var Res = TRXMsg.Decode(Data);
if (Res = 0) {
    WScript.Echo("Mensagem decodificada corretamente");
}


Perl:
my $Res = TRXMsg->Decode($Data);
if ($Res) {
    printf("Mensagem invalida");
}

TRXMessage / DumpHex - Retorna representação hexadecimal de string

Entrada
Tipo
Descrição
Buffer
String
String com bytes a serem transformados em uma representação hexadecimal em ASCII
Saída
Tipo
Descrição
Dump
Dump
String com caracteres hexadecimais em ASCII que representam os bytes contidos no Buffer passado como parãmetro.

Descrição

Esta é uma função auxiliar que permite obter um dump em hexadecimal dos bytes contidos em um string. O string retornado tem o seguinte formato:
XX XX XX XX ... XX <LF>
XX XX XX XX ... XX <LF>

Onde XX representa o valor hexadecimal de cada byte. São exibidos até 16 bytes por linha. As linhas são separadas por LF (line-feeds)

Exemplos:
Javascript:
var Dump = TRXMsg.DumpHex(Data);
WScript.Echo("Dados recebidos:" + Dump);

Perl:
my $Dump = TRXMsg->DumpHex($Data);
printf("Dados recebidos:\n$Data");

TRXMessage / Códigos de erros retornados

Os códigos de erro retornados por este componente estão na faixa de -100 a -199:

Código do erro
Descrição
-101
Instruction header inválido (configuração de bits inconsistente)
-102
Mensagem truncada (faltando dados)
-103
Erro na decodificação do campo de endereço de destino da mensagem
-104
Erro na decodificação do campo de endereço de origem da mensagem
-105
Erro na decodificação do campo de número de bytes da mensagem
-106
Mensagem com tamanho inválido (maior do que deveria ser)
-107
Erro no checksum da mensagem
-108
Erro no CRC da mensagem

Componente BaseMessage

Este componente permite codificar e decodificar mensagens que podem ser enviadas ou recebidas diretamente para a Base TRXCom. Estas mensagens podem ser mensagens de comando ou controle para a Base ou mensagens de dados (TRXMessage) ou ACK a serem enviados para os terminais da rede sem fio através da base.  Estas mensagens possuem diversos campos compactados que precisam ser formatados corretamente além de possuirem um checksum utilizado para detecção de erros. Este componente facilita a codificação e decodificação destas mensagens através de funções que acessam os valores dos campos dentro da mensagem.

Para construir uma mensagem para a base, deve ser criada uma instância do objeto e devem ser estabelecidos os valores dos campos desejados.
Em seguida, deve ser chamada a função Encode() que retorna um string com a mensagem corretamente codificada. Este string poderá ser utilizado para transmissão desta mensagem através do componente BaseCom. São apresentados a seguir, exemplos de codificação de mensagens:

Javascript:
BaseMsg = WScript.CreateObject("TRXCom.BaseMessage");

Msg = TRXMsg.Encode();         // 'Msg' contem string com mensagem codificada           

Perl:
$BaseMsg = Win32::OLE->new("TRXCom.BaseMessage") ;

$Msg = TRXMsg.Encode();         # $Msg contém string com mensagem codificada

Para decodificar uma mensagem recebida, deve ser criada uma instância do objeto, o string com os bytes da mensagem deve ser passado para a função Decode() e a seguir os campos da mensagem podem ser acessados. Seguem exemplos de decodificação.

Javascript:
BaseMsg = WScript.CreateObject("TRXCom.BaseMessage");
BaseMsg.Decode(Msg);                  // decodifica mensagem em 'Msg'
...
...

Perl:
$BaseMsg = WIN32::OLE->new("BaseMsg.TRXMessage");
$BaseMsg->Decode(Msg);                // decodifica mensagem em 'Msg'
...
...


A seguir estão descritos mais detalhadamente o processo de ativação e todas as funções disponíveis neste componente.

BaseMessage / Ativação

Para o componente poder ser utilizado é necessário criar uma instância do mesmo. Este processo vária para cada linguagem utilizada mas consiste basicamente em passar o nome 'TRXCom.BaseMessage" para uma função que irá retornar uma referência para o objeto. Caso ocorra problema normalmente é gerada uma exceção pelo interpretador da linguagem ou retornada uma referência nula.

Javascript:
var BaseMsg;
BaseMsg = WScript.CreateObject("TRXCom.BaseMessage");


Perl:
my $BaseMsg;
$BaseMsg = Win32::OLE->new('TRXCom.BaseMessage');

BaseMessage / SetType - Estabelece tipo da mensagem

Entrada
Tipo
Descrição
dwType
Inteiro
Tipo da mensagem. Veja tabela de tipos de mensagens .
Saída
Tipo
Descrição
Nenhuma

                                                                                                           

Descrição

Esta função permite estabelecer o tipo de mensagem a ser codificada. A tabela de tipos de mensagens contém os valores possíveis deste parâmetro.

Exemplos:

Javascript:
BaseMsg.SetType(0x00);

Perl:
$BaseMsg->SetType(0x01);

BaseMessage / GetType - Obtém tipo da mensagem

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
dwType
Inteiro
Tipo da mensagem                                                                                                           

Descrição

Esta função permite obter o tipo de mensagem previamente decodificada. A tabela de tipos de mensagens contém os valores válidos deste parâmetro.

Exemplos:

Javascript:
var Type = BaseMsg.GetType();

Perl:
my $Type = $BaseMsg->GetType();

BaseMessage / GetBaseID - Obtém ID da base

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
dwID
Inteiro
ID da Base                                                                

Descrição

Esta função permite obter o ID da Base contido em uma mensagem de resposta de configuração da  Base previamente decodificada.

Exemplos:

Javascript:
var ID = BaseMsg.GetBaseID();
WScript.Echo("ID da Base: " + ID);

Perl:
my $ID = $BaseMsg->GetBaseID();
printf("ID da Base: $ID\n");

BaseMessage / GetTxStatus - Obtém status de transmissão da base

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
bStatus
Inteiro
Status de transmissão da Base: 1 (verdadeiro) - se transmissão ativa, 0 (falso) - caso contrário.             

Descrição

Esta função permite obter o status de transmissão da base contido em mensagens de resposta do tipo: RESET, CONFIG, STATUS e ACK. O valor retornado é 1 se a base estiver com o transmissor ativo ou 0 caso contrário.

Exemplos:

Javascript:
var TX = BaseMsg.GetTxStatus();
WScript.Echo("TxStatus: " + TX);

Perl:
my $TX = $BaseMsg->GetTxStatus();
printf("TxStatus: $TX\n");

BaseMessage / GetRxStatus - Obtém status de recepção da base

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
bStatus
Inteiro
Status de recepção da Base: 1 (verdadeiro) - se recepção ativa, 0 (falso) - caso contrário.

Descrição

Esta função permite obter o status de recepção da base contido em mensagens de resposta do tipo: RESET, CONFIG, STATUS e ACK. O valor retornado é 1 se a base estiver com o transmissor ativo ou 0 caso contrário.

Exemplos:

Javascript:
var RX = BaseMsg.GetRxStatus();
WScript.Echo("RxStatus: " + TX);

Perl:
my $RX = $BaseMsg->GetRxStatus();
printf("RxStatus: $RX\n");

BaseMessage / GetColision - Obtém status de colisão da base

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
bStatus
Inteiro
Status de colisão da Base: 1 (verdadeiro) - silêncio ativo, 0 (falso) - caso contrário.

Descrição

Esta função permite obter o status de colisão da base contido em mensagens de resposta do tipo: RESET, CONFIG e STATUS. O valor  retornado é 1 se a base estiver detectando colisão na recepção ou 0 caso contrário.

Exemplos:

Javascript:
var Colision = BaseMsg.GetColision();
if (Colision) {
    WScript.Echo("Colisão na recepcao");
}

Perl:
my $Colision = $BaseMsg->GetColision();
if (Colision) {

    printf("Colisão na recepcao");
}

BaseMessage / GetBuffers - Obtém número de buffers livres

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
dwBuffers
Inteiro
Número de buffers livres na Base disponíveis para receção de mensagens do microcomputador

Descrição

Esta função permite obter o número de buffers livres na Base disponíveis para recepção de mensagens do microcomputador.
Este campo está disponível nas seguintes mensagens de resposta: RESET, CONFIG, STATUS e ACK.

Exemplos:

Javascript:
var Buffers = BaseMsg.GetBuffers();
WScript.Echo("Numero de buffers livres=" + Buffers);

Perl:
my $Buffers = BaseMsg.GetBuffers();
printf("Numero de buffers livres=$Buffers\n");

BaseMessage / GetBuffersSize - Obtém tamanho dos buffers

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
dwBuffersSize
Inteiro
Tamanho em bytes dos buffers disponíveis para recepção de mensagens do microcomputador

Descrição

Esta função permite obter o tamanho em bytes dos buffers livres na Base disponíveis para recepção de mensagens do microcomputador.
Este campo está disponível nas seguintes mensagens de resposta: RESET e CONFIG.

Exemplos:

Javascript:
var Size = BaseMsg.GetBuffersSize();
WScript.Echo("Tamanho de buffer=" + Size);

Perl:
my $Size = $BaseMsg->GetBuffersSize();
printf("Tamanho de buffer=$Size\n");

BaseMessage / GetModel - Obtém modelo da Base

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Model
String
String com descrição do modelo da base                                              

Descrição

Esta função permite obter descrição do modelo da Base. Este campo está disponível na resposta da mensagem de configuração  (CONFIG).

Exemplos:

Javascript:
var Model = BaseMsg.GetModel();
WScript.Echo("Modelo da base=" + Model);

Perl:
my $Model = $BaseMsg->GetModel();
printf("Modelo da base=$Model\n");

BaseMessage / GetVersion - Obtém versão da Base

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Version
String
String com versão da base                                              

Descrição

Esta função permite obter a versão da Base. Este campo está disponível na resposta da mensagem de configuração  (CONFIG).

Exemplos:

Javascript:
var Version = BaseMsg.GetVersion();
WScript.Echo("Versao da base=" + Version);

Perl:
my $Version = $BaseMsg->GetVersion();
printf("Versao da base=$Version\n");

BaseMessage / SetLocalBaseID - Estabelece ID da base local

Entrada
Tipo
Descrição
dwID
Inteiro
ID da Base Local                                                                    
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o ID da Base Local  nas mensagem de configuração do ID da base (SETID).

Exemplos:

Javascript:
BaseMsg.SetType(0x03);
BaseMsg.SetLocalBaseID(10);
var Msg = BaseMsg.Encode();

Perl:
$BaseMsg->SetType(0x03);
$BaseMsg->SetLocalBaseID(10);
my $Msg = $BaseMsg->Encode();

BaseMessage / SetMsg - Estabelece campo de mensagem para terminal

Entrada
Tipo
Descrição
Msg
String
String com mensagem do tipo TRXMessage que será transmitida para a base e desta para o terminal
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o campo de mensagem para terminal (DATA). Este campo deve ser um string com bytes codificados através do componente TRXMessage .

Exemplos:

Javascript:
var MsgData = TRXMsg.Encode();
BaseMsg.SetType(0x10);

BaseMsg.SetMsg(MsgData);
var Msg = BaseMsg.Encode();

Perl:
my $MsgData = TRXMsg->Encode();
$BaseMsg->SetType(0x10);
$BaseMsg->SetMsg($MsgData);

my $Msg = $BaseMsg->Encode();

BaseMessage / GetMsg - Obtém campo de mensagem para terminal

Entrada
Tipo
Descrição



Saída
Tipo
Descrição
Msg
String
String com bytes codificados de mensagem TRXMessage recebida de terminal

Descrição

Esta função permite obter o campo de mensagem recebida de terminal. Para acessar os campos da mensagem recebida deve ser utilizado o componente TRXMessage ..

Exemplos:

Javascript:
BaseMsg.Decode(Msg);
Data = BaseMsg.GetMsg()
TRXMsg.Decode(Data);


Perl:
$BaseMsg->Decode(Msg);
Data = BaseMsg->GetMsg();
TRXMsg.Decode(Data);

BaseMessage / SetNetwork - Estabelece número da rede

Entrada
Tipo
Descrição
dwNetwork
Inteiro
Número da rede de 0 a 63                                                                                                          
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o número da rede associado à base de comunicação que poderá ser configurado através de mensagem SETNET para a base. Uma base de comunicação só considera mensagens recebidas com o mesmo número de rede que foi configurada e envia mensagens para terminais da mesma rede.

Exemplos:

Javascript:
BaseMsg.SetType(0x04);
BaseMsg.SetNetwork(1);
var Msg = BaseMsg.Encode();

Perl:
$BaseMsg->SetType(0x04);
$BaseMsg->SetNetwork(1);

my $Msg = $BaseMsg->Encode();

BaseMessage / GetNetwork - Obtém número da rede

Entrada
Tipo
Descrição



Saída
Tipo
Descrição
dwNetwork
Inteiro Número da rede de 0 a 63                                                                                    

Descrição

Esta função permite obter o número da rede retornado pela resposta de mensagem de obtenção de configuração da base.

Exemplos:

Javascript:
BaseMsg.Decode(Msg);
Net = BaseMsg.GetNetwork()

Perl:
$BaseMsg->Decode(Msg);
Net = BaseMsg->GetNetwork();

BaseMessage / SetSerRate - Estabelece taxa de comunicação da interface serial da base

Entrada
Tipo
Descrição
dwRate
Inteiro
Taxa de comunicação: 300, 600, 1200, 2400,  4800, 9600, 19200, 28800, 57600
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer a taxa de comunicação da interface serial da base que pode ser configurada através da mensagem SETSERIAL.

Exemplos:

Javascript:
BaseMsg.SetType(0x05);
BaseMsg.SetSerRate(19200);
BaseMsg.SetSerBits(8);
BaseMsg.SetSerParity(0x4E);
BaseMsg.SetSerStops(1);
BaseMsg.SetSerFlow(
0x4E);
var Msg = BaseMsg.Encode();

Perl:
$BaseMsg->SetType(0x05);
$BaseMsg->SetSerRate(19200);
$BaseMsg->SetSerBits(8);
$BaseMsg->SetSerParity(ord('N'));
$BaseMsg->SetSerStops(1);
$BaseMsg->SetSerFlow(ord('N'));
my $Msg = $BaseMsg->Encode();

BaseMessage / SetSerBits - Estabelece número de bits da interface serial da base

Entrada
Tipo
Descrição
dwBits
Inteiro
Número de bits: 4, 5, 6, 7, 8 (A versão atual só aceita 8 bits)
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o número de bits da interface serial da base que pode ser configurado através da mensagem SETSERIAL.

Exemplos:

Javascript:
BaseMsg.SetType(0x05);
BaseMsg.SetSerRate(19200);
BaseMsg.SetSerBits(8);
BaseMsg.SetSerParity(0x4E);
BaseMsg.SetSerStops(1);
BaseMsg.SetSerFlow(
0x4E);
var Msg = BaseMsg.Encode();

Perl:
$BaseMsg->SetType(0x05);
$BaseMsg->SetSerRate(19200);
$BaseMsg->SetSerBits(8);
$BaseMsg->SetSerParity(ord('N'));
$BaseMsg->SetSerStops(1);
$BaseMsg->SetSerFlow(ord('N'));
my $Msg = $BaseMsg->Encode();

BaseMessage / SetSerParity - Estabelece paridade da interface serial da base

Entrada
Tipo
Descrição
dwParity
Inteiro
Paridade: 'E' (Even = 0x45), 'O' (Odd = 0x4F), 'N' (None = 0x4E), 'M' (Mark = 0x4D) , 'S' (Space = 0x53) (A versão atual só aceita 'N' )
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer a paridade da interface serial da base que pode ser configurado através da mensagem SETSERIAL.

Exemplos:

Javascript:
BaseMsg.SetType(0x05);
BaseMsg.SetSerRate(19200);
BaseMsg.SetSerBits(8);
BaseMsg.SetSerParity(0x4E);
BaseMsg.SetSerStops(1);
BaseMsg.SetSerFlow(
0x4E);
var Msg = BaseMsg.Encode();

Perl:
$BaseMsg->SetType(0x05);
$BaseMsg->SetSerRate(19200);
$BaseMsg->SetSerBits(8);
$BaseMsg->SetSerParity(ord('N'));
$BaseMsg->SetSerStops(1);
$BaseMsg->SetSerFlow(ord('N'));
my $Msg = $BaseMsg->Encode();

BaseMessage / SetSerSerStops - Estabelece o número de stop-bits da interface serial da base

Entrada
Tipo
Descrição
dwStops
Inteiro
Número de stop-bits:1, 2 (A versão atual só aceita 1 )                                    
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o número de stop-bits da interface serial da base que pode ser configurado através da mensagem SETSERIAL.

Exemplos:

Javascript:
BaseMsg.SetType(0x05);
BaseMsg.SetSerRate(19200);
BaseMsg.SetSerBits(8);
BaseMsg.SetSerParity(0x4E);
BaseMsg.SetSerStops(1);
BaseMsg.SetSerFlow(
0x4E);
var Msg = BaseMsg.Encode();

Perl:
$BaseMsg->SetType(0x05);
$BaseMsg->SetSerRate(19200);
$BaseMsg->SetSerBits(8);
$BaseMsg->SetSerParity(ord('N'));
$BaseMsg->SetSerStops(1);
$BaseMsg->SetSerFlow(ord('N'));
my $Msg = $BaseMsg->Encode();

BaseMessage / SetSerSerFlow - Estabelece o tipo de controle de fluxo da interface serial da base

Entrada
Tipo
Descrição
dwFlow
Inteiro
Tipo de controle de fluxo: 'X' (Xon = 0x58), 'H' (Hardware = 0x48) , 'N' (None =0x4E )  (A versão atual só aceita 'N' )                        
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o tipo de controle de fluxo da interface serial da base que pode ser configurado através da mensagem SETSERIAL.

Exemplos:

Javascript:
BaseMsg.SetType(0x05);
BaseMsg.SetSerRate(19200);
BaseMsg.SetSerBits(8);
BaseMsg.SetSerParity(0x4E);
BaseMsg.SetSerStops(1);
BaseMsg.SetSerFlow(
0x4E);
var Msg = BaseMsg.Encode();

Perl:
$BaseMsg->SetType(0x05);
$BaseMsg->SetSerRate(19200);
$BaseMsg->SetSerBits(8);
$BaseMsg->SetSerParity(ord('N'));
$BaseMsg->SetSerStops(1);
$BaseMsg->SetSerFlow(ord('N'));
my $Msg = $BaseMsg->Encode();

BaseMessage / Encode - Codifica mensagem

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Msg
String
String com bytes codificados de mensagem para Base                                

Descrição

Esta função permite codificar uma mensagem cujos campos foram previamente definidos através das funções Set . A função retorna um string com os bytes da mensagem codificada. Este string poderá ser passado para outros objetos para a transmissão da mensagem.

Exemplos:

Javascript:
var Msg = BaseMsg.Encode();
Base.TxMsg(Msg);


Perl:
my $Msg = $BaseMsg->Encode();
$Base->TxMsg($Msg);

BaseMessage / Decode - Decodifica mensagem

Entrada
Tipo
Descrição
Msg
String
String com bytes codificados de mensagem para/da Base.
Saída
Tipo
Descrição
nRes
Inteiro
Resultado da decodificação: 0 - se decodificação foi efetuada com sucesso ou código de erro caso contrário.

Descrição

Esta função permite decodificar um string de bytes recebidos com mensagem proveniente da Base. A função verifica todos os campos e calcula o checksum retornando 0 se os bytes foram decodificados corretamente ou um código de erro caso contrário. Após a chamada desta função e caso a decodificação tenha sido bem sucedida poderão ser utilizadas as funçoes Get para obter o conteúdo dos campos da mensagem.

Exemplos:

Javascript:
var Msg = BaseCom.RxMsg();
if (Msg.length()) {
   BaseMsg.Decode(Msg);}
}


Perl:
my $Msg = $BaseCom->RxMsg();
if (length($Msg)) {
   $BaseMsg->Decode($Msg);
}

BaseMessage / DumpHex - Retorna representação hexadecimal de string

Entrada
Tipo
Descrição
Buffer
String
String com bytes a serem transformados em uma representação hexadecimal em ASCII
Saída
Tipo
Descrição
Dump
Dump
String com caracteres hexadecimais em ASCII que representam os bytes contidos no Buffer passado como parâmetro.

Descrição

Esta é uma função auxiliar que permite obter um dump em hexadecimal dos bytes contidos em um string. O string retornado tem o seguinte formato:
XX XX XX XX ... XX <LF>
XX XX XX XX ... XX <LF>

Onde XX representa o valor hexadecimal de cada byte. São exibidos até 16 bytes por linha. As linhas são separadas por LF (line-feeds)

Exemplos:
Javascript:
var Dump = BaseMsg.DumpHex(Data);
WScript.Echo("Dados recebidos:" + Dump);

Perl:
my $Dump = BaseMsg->DumpHex($Data);
printf("Dados recebidos:\n$Data");

BaseMessage / Códigos de erros retornados

Os códigos de erro retornados por este componente estão na faixa de -200 a -299:

Código do erro
Descrição
-201
Mensagem com código de operação (opcode) inválido
-202
Erro na decodificação de endereço da base
-203
Mensagem truncada (faltando dados)
-204
Erro no checksum da mensagem

BaseMessage / Tipos de mensagens

A tabela a seguir descreve os tipos de mensagens possíveis entre a microcomputador e a base e relaciona as funções necessários para codificar e decodificar cada uma.

Mensagem / Sentido
Descrição
RESET (0x00)
PC >> Base

Reset da Base. Interrompe eventuais transmissões ou recepções RF em andamento, inicializa contador de mensagens transmitidas, inicializa contador de mensagens recebidas e limpa buffers de recepção e transmissão. Função para codificação: SetType()
RESET_RESP (0x80)
Base >> PC
Resposta do Reset da Base que retorna informações sobre a base que podem ser obtidas através das funções de decodificação: GetType() ; GetTxStatus() , GetRxStatus() , GetBuffers() , GetBuffersSize()
CALL (0x01)
PC >> Base
Mensagem de chamada.
CALL_RESP (0x81)
Base >> PC
Resposta da mensagem de chamada
CONFIG (0x02)
PC >> Base
Solicita configuração da Base. Função para codificação: SetType()
CONFIG_RESP (0x82)
Base >> PC
Resposta da solicitação de configuração da Base. Retorna informações sobre a  base que podem ser obtidas através das funções de decodificação: GetType() , GetBaseID , GetNetwork()GetTxStatus() , GetRxStatus() , GetColision() , GetBuffers() , GetBuffersSize() , GetModel() e GetVersion() .
SETID (0x03)
PC >> Base
Configuração do ID físico da base. Funções para codificação: SetType(), SetLocalBaseID()
SETID_RESP (0x83)
Base >> PC
Resposta da configuração do ID físico da base: Funcão para decodificação: GetType()
SETNET (0x04)
PC >> Base
Configuração da Rede da base. Funções para codificação: SetType(), SetNetwork()
SETNET_RESP (0x84)
Base >> PC
Resposta da configuração da rede da base. Funções para decodificação: GetType()
SETSERIAL (0x05)
PC >> Base
Configuração da interface serial da base. Funções para codificação:SetSerRate(), SetSerBits(), SetSerParity(), SetSerStops(), SetSerFlow()
SETSERIAL_RESP (0x85)
Base >> PC
Resposta da configuração serial da base: Funções para decodificação: GetType()
RFCABLE (0x06)
PC >> Base
Ativação do modo RFCABLE (sem protocolo). Funções para codificação: SetType()
RFCABLE_RESP (0x86)
Base >> PC
Resposta da ativação do modo RFCABLE: Funções para decodificação: GetType()
STATUS (0x07)
PC >> Base
Solicita status da Base. Função para codificação: SetType()
STATUS_RESP (0x87)
Base >> PC
Resposta a solicitação de status. Funções para decodificação: GetType() , GetTxStatus() , GetRxStatus() , GetBuffers() .
TXDATA (0x10)
PC >> Base
Mensagem de DADOS para terminal. Funções para codificação: SetType() , SetMsg() e funções do componente TRXMessage .
TXDATA_ACK (0x90)
Base >> PC
ACK da mensagem de DADOS para terminal. Funções para decodificação: GetType() , GetTxStatus() , GetRxStatus() , GetBuffers()
RXDATA (0xA0)
Base >> PC
Mensagem de DADOS recebida de terminal. Funções para decodificação: GetType() , GetMsg() e funções do componente TRXMessage .
RXDATA_ACK (0x20)
PC >> Base
ACK de mensagem de DADOS . Funções para codificação: SetType()
   

Componente BaseCom

Este componente permite transmitir e receber mensagens da Base TRXCom. As mensagens transmitidas e recebidas podem ser codificadas e decodificadas através dos componentes BaseMessage e TRXMessage . A seguir estão apresentados diversos exemplos de utilizacão deste componente juntamente com os componentes auxiliares descritos anteriormente. Por simplificação não foi incluído nos exemplos a seguir procedimentos de verificação de erros.

Exemplo de inicialização dos componentes e da comunicação serial

Javascript:
// Cria instancia de todos os componentes necessarios
var Com     = WScript.CreateObject("TRXCom.Com");
var TRXMsg  = WScript.CreateObject("TRXCom.TRXMessage");
var BaseMsg = WScript.CreateObject("TRXCom.BaseMessage");
var Base    =
WScript.CreateObject("TRXCom.BaseCom");

// Inicializa canal serial e comunicacao com a base
Com.Open(0, 9600, 8, 1, 0, 0, 0, 1000, 1000);
Base.Open(0);



Perl:
# Cria instancia de todos os componentes necessarios
my $Com     = Win32::OLE->new("TRXCom.Com");
my $TRXMsg  =
Win32::OLE->new ("TRXCom.TRXMessage");
my $BaseMsg =
Win32::OLE->new ("TRXCom.BaseMessage");
my $Base    =
Win32::OLE->new ("TRXCom.BaseCom");

# Inicializa canal serial e comunicacao com a base
$Com->Open(0, 9600, 8, 1, 0, 0, 0, 1000, 1000);
$Base->Open(0);

Exemplo de envio de mensagem de RESET

Javascript:
// Codifica e envia mensagem de RESET
BaseMsg.SetType();
var Msg = BaseMsg.Encode();
Base.TxMsg(Msg);

// Espera evento e se OK, decodifica resposta
var Res = Base.EventWait();

if (Res) {
    Msg = Base.RxMsg();
    BaseMsg.Decode(Msg);
}

Perl::
# Codifica e envia mensagem de RESET
$BaseMsg->SetType();
my $Msg = BaseMsg->Encode();
$Base->TxMsg(Msg);

# Espera evento e se OK, decodifica resposta
my $Res = $Base->EventWait();

if ($Res) {
    $Msg = $Base->RxMsg();
    $BaseMsg->Decode($Msg);
}

Exemplo de envio de mensagem de DADOS para terminal

Javascript:
// Codifica mensagem de DADOS para terminal
TRXMsg.SetCheckType(0);        // utiliza checksum
TRXMsg.SetMsgType(1);          // mensagem de dados                
TRXMsg.SetReturnAck(1);        // solicita retorno de ACK
TRXMsg.SetDestination(100);    // envia para terminal 100
TRXMsg.SetData("MENSAGEM");    // campo de dados da mensagem
var Msg1 = TRXMsg.Encode();    // codifica mensagem

// Codifica mensagem para Base
BaseMsg.SetType(...);
BaseMsg.SetData(Msg1);
var Msg2 = BaseMsg.Encode();

// Transmite mensagem de dados e espera ACK da base
Base.TxMsg(Msg2);
Res = Base.EventWait();
if (Res) {
   Msg = Base.RxMsg();
   BaseMsg.Decode(Msg);
}

Perl:
# Codifica mensagem de DADOS para terminal
$TRXMsg->SetCheckType(0);        # utiliza checksum
$TRXMsg->SetMsgType(1);          # mensagem de dados                
$TRXMsg->SetReturnAck(1);        # solicita retorno de ACK
$TRXMsg->SetDestination(100);    # envia para terminal 100
$TRXMsg->SetData("MENSAGEM");    # campo de dados da mensagem
my $Msg1 = $TRXMsg->Encode();    # codifica mensagem

# Codifica mensagem para Base
$BaseMsg->SetType(...);
$BaseMsg->SetData(Msg1);
my $Msg2 = $BaseMsg->Encode();

# Transmite mensagem de dados e espera ACK da base
$Base->TxMsg(Msg2);
$Res = $Base->EventWait();
if ($Res) {
   $Msg = $Base->RxMsg();
   $BaseMsg->Decode($Msg);
}


A seguir estão descritos mais detalhadamente o processo de ativação e todas as funções disponíveis neste componente.

BaseCom / Ativação

Para o componente poder ser utilizado é necessário criar uma instância do mesmo. Este processo vária para cada linguagem utilizada mas consiste basicamente em passar o nome 'TRXCom.BaseMessage" para uma função que irá retornar uma referência para o objeto. Caso ocorra problema normalmente é gerada uma exceção pelo interpretador da linguagem ou retornada uma referência nula.

Javascript:
var BaseMsg;
BaseMsg = WScript.CreateObject("TRXCom.BaseMessage");


Perl:
my $BaseMsg;
$BaseMsg = Win32::OLE->new('TRXCom.BaseMessage');

BaseCom / Open - Abre canal para comunicação com Base TRXCom

Entrada
Tipo
Descrição
nChannel
Inteiro
Canal de comunicação a ser utilizado para comunicação com a Base TRXCom
Saída
Tipo
Descrição
nRes
Inteiro
Resultado da operação: 0 - se canal aberto com sucesso ou código de erro caso contrário.

Descrição

Esta função inicializa a comunicação com a Base TRXCom utilizando um canal de comunicação serial previamente aberto através da função TRXCom.Com.Open() . As outras funções deste componente só podem ser utilizadas após esta função ter sido executada e retornado indicação de sucesso.

Exemplos:

Javascript:
var Res = Com.Open(0, 9600, 8, 1, 0, 0, 0, 1000, 1000);
if (Res == 0) {
    Res = Base.Open(0);
    if (Res == 0) {

       WScript.Echo("Comunicacao inicializada com sucesso");

    }
}


Perl:
my $Res = $Com->Open(1, 9600, 8, 1, 0, 0, 0, 1000, 1000);
if ($Res == 0) {
    $Res = Base->Open(1);
    if (Res == 0) {

       printf("Comunicacao inicializada com sucesso");

    }
}

BaseCom / Close - Fecha canal de comunicação com Base TRXCom

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nRes
Inteiro
Resultado da operação: 0 - se canal fechado com sucesso ou código de erro caso contrário.

Descrição

Esta função finaliza a comunicação com a Base TRXCom e fecha o canal de comunicação serial associado.

Exemplos:

Javascript:
var Res = Base.Close();
if (Res != 0) {

   WScript.Echo("Erro:" + Res + " no fechamento do canal");

   }
}


Perl:
my $Res = $Base->Close();
if ($Res == 0) {

   printf("Comunicacao finalizada com sucesso");

   }
}

BaseCom / SetTimeoutRxChar - Estabelece timeout de recepcao de caractere

Entrada
Tipo
Descrição
dwTimeout
Inteiro
Tempo máximo em milisegundos de espera de caracteres durante recepção de mensagem enviada pela Base TRXCom.
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o o tempo máximo em milisegundos de espera de caracteres durante a recepção de mensagens enviadas pela  Base TRXCom. Se o tempo ultrapassar o valor estabelecido será considerado que a mensagem está truncada sendo gerado um evento de erro. O valor padrão deste parâmetro é 100 milisegundos.

Exemplos:

Javascript:
Base.SetTimeoutRxChar(20);     // timeout de caractere = 20ms

Perl:
$Base->SetTimeoutRxChar(50);   #  timeout de caractere = 50 ms

BaseCom / SetTimeoutRxResp - Estabelece timeout de recepção de resposta

Entrada
Tipo
Descrição
dwTimeout
Inteiro
Tempo máximo em milisegundos de espera de mensagem de resposta da Base TRXCom.
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o tempo máximo em milisegundos de espera de resposta de mensagem previamente enviada.
O valor padrão deste parâmetro é 1000 milisegundos. Se o tempo ultrapassar o valor estabelecido será considerado que ocorreu erro na transmissão/recepção da mensagem previamente enviada ou da resposta, sendo então retransmitida novamente a mensagem original. A mensagem original só será retransmitida se seu contador de retransmissões não ultrapassou limite que pode ser estabelecido pela função SetTxMaxRetries() . Se o número de retransmissões chegar ao limite será gerado um evento de erro.

Exemplos:

Javascript:
Base.SetTimeoutRxResp(2000);     // timeout de mensagem = 2s

Perl:
$Base->SetTimeoutRxResp(500);    #  timeout de caractere = 500 ms

BaseCom / SetTxMaxRetries - Estabelece número máximo de tentativas de transmissão

Entrada
Tipo
Descrição
dwRetries
Inteiro
Número máximo de tentativas de transmissão de mensagens para a Base TRXCom
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o número máximo de tentativas de transmissão de mensagem para a Base TRXCom. O valor padrão deste parâmetro é 1, ou seja, caso ocorra erro de timeout na recepção de resposta de mensagem, a mesma será retransmitida apenas mais uma vez e caso ocorra timeout novamente será gerado evento de erro.

Exemplos:

Javascript:
Base.SetTxMaxRetries(3);     // transmite uma mensagem até 4 vezes

Perl:
$Base->SetTxMaxRetries(0);    #  transmite apenas uma vez

BaseCom / EventNext - Retorna próximo evento

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Event
Inteiro
Código de próximo evento na fila

Descrição

Os principais eventos de comunicação que ocorrem, como recepção de mensagens e ocorrências de erros  são introduzidos numa fila e podem ser obtidos através desta função, que sempre retorna imeditamente com o código do próximo evento na fila. Caso não haja nenhum evento na fila a função retorna o valor 0. Se o valor retornado for positivo o evento corresponde a uma situação normal como recepção de mensagem. Se for negativo, representa um código erro.

Exemplos:

Javascript:
var Event;
while (true) {
    Event = Base.EventNext();
    if (Event == 0) {
       continue;
     }
    if (Event < 0) {
   
   WScript.Echo("Ocorreu erro: " + Event);
    }     
}


Perl:
my $Event;
while (1) {
    $Event = $Base->EventNext();
    if ($Event == 0) {
       last;
    }
    if ($Event > 0) {
       printf("Recebida mensagem\n");
    }
}

BaseCom / EventWait - Espera pelo próximo evento

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Event
Inteiro
Código de próximo evento na fila

Descrição

Esta função é semelhante a EventNext() porém só retorna após a ocorrência de um evento. Internamente esta função executa Process() continuamente para processar a comunicação e só retorna quando houver um evento na fila.

Exemplos:

Javascript:
var Event = Base.EventWait();
if (Event < 0) {
   WScript.Echo("Ocorreu erro: " + Event);
}


Perl:
my $Event = $Base->EventWait();
if ($Event > 0) {
   printf("Recebida mensagem\n");
}

BaseCom / EventClear - Limpa fila de eventos

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Nenhuma

                                                       

Descrição

Esta função limpa a fila de eventos. Pode ser utilizada em uma situação de erro quando os eventuais eventos que estão na fila podem não interessar mais.

Exemplos:

Javascript:
var Event = Base.EventWait();
if (Event < 0 ) {

   Base.EventClear();
}


Perl:
my $Event = $Base->EventWait();
if ($Event < 0) {
   $Base->EventClear();
}

BaseCom / Process - Processa comunicação

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Nenhuma

                                                       

Descrição

Esta função processa a comunicação com a base e deve ser chamada periodicamente pelo aplicativo de forma direta ou indireta. As funções EventNext() e EventWait() já chamam internamente esta função e caso sejam utilizadas estas funções no loop principal do aplicativo não é necessário utilizar Process() .

Exemplos:

Javascript:
var Res;
var Msg;
while (true) {
    Base.Process();
    Msg = Base.RxMsg();
    if (Msg.length() > 0) {
   
   WScript.Echo("Recebida mensagem");
    }     
}


Perl:
my $Res;
my $Msg;
while (1) {
   $Base->Process();
   $Msg = $Base->RxMsg();
   if (length($Msg)) {
      printf("Recebida mensagem\n");
   }
}

BaseCom / TxMsg - Insere mensagem no buffer de transmissão

Entrada
Tipo
Descrição
Msg
String
String com bytes da mensagem previamente codificada através de BaseMessage
Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se mensagem foi inserida no buffer com sucesso ou código de erro caso contrário.  

Descrição

Esta função permite transmitir mensagens de controle para a base e mensagens de dados para os terminais da rede sem fio através da base. Deve ser fornecido um string com uma mensagem previamente codificada através do componente BaseMessage e se for uma mensagem de dados através também do componente TRXMessage . A função insere a mensagem especificada no buffer de transmissão interno e a mesma será encaminhada para a base. Quando uma mensagem de controle do tipo: RESET, CONFIG, STATUS, PROTO e NOPROTO for enviada só será enviada uma próxima mensagem após o recebimento da resposta correspondente. Quando uma mensagem de DADOS for enviada poderão ser enviadas novas mensagens de DADOS enquanto houver espaço disponível nos buffers da Base e enquanto o número de mensagens de DADOS a espera de ACK não ultrapassar seu limite.

Exemplos:

Javascript:
var Msg;
var Res;
BaseMsg.SetType();           // mensagem de RESET               
Msg = BaseMsg.Encode();
Res = Base.TxMsg(Msg);
if (Res == 0) {
   WScript.Echo("Mensagem inserida no buffer");
}

Perl:
my $Msg;
my $Res;
$BaseMsg->SetType(...);      // mensagem de STATUS
$Msg = $BaseMsg->Encode();
$Res = $Base->TxMsg($Msg);

if ($Res == 0) {
   printf("Mensagem inserida no buffer");
}

BaseCom / RxCount - Retorna número de mensagens no buffer de recepção

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: Se for maior ou igual a 0 indica o número de mensagens no buffer de recepção, caso contrário é um código de erro.

Descrição

Esta função retorna o número de mensagens contidas no buffer de recepção que ainda não foram retiradas através de RxMsg() .

Exemplos:

Javascript:
var Res = Base.RxCount();
if (Res > 0) {
   WScript.Echo("Existem: " + Res + "mensagens no buffer de recepcao");
}
 

Perl:
my $Res = $Base->RxCount();
if ($Res == 0) {
   printf("buffer de recepcao esta vazio");
}

BaseCom / RxMsg - Retira mensagem de dados de terminal do buffer de recepção

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Msg
String
Resultado da função: String com tamanho maior que 0 contendo próxima mensagem no buffer de recepção de mensagens de terminais ou string vazio caso não haja mensagens no buffer.

Descrição

Esta função retorna string com os bytes da próxima mensagem de terminal contida no buffer de recepção. Se o buffer de recepção estiver vazio, a função retorna um string vazio ou nulo. Para processar a mensagem recebida é necessário decodificá-la através dos componente BaseMessage e TRXMessage . As mensagens de resposta da Base a comandos previamente enviadas são armazenadas em um buffer de recepção diferente e podem ser retiradas através da função RxResp() .

Exemplos:

Javascript:
var Res;
var Msg;
Msg = Base.RxMsg();
if (Msg.length() > 0) {
   BaseMsg.Decode(Msg);
   TRXMsg.Decode(Msg.GetMsg());   
  
WScript.Echo("Recebidos dados de terminal: " + TRXMsg.GetData());
}

Perl:
my $Res;
my $Msg;
$Msg = $Base->RxMsg();
if (length($Msg)) {
   $BaseMsg->Decode($Msg);
   $TRXMsg->Decode($Msg->GetMsg());

   printf("Recebidos dados de terminal: " . TRXMsg.GetData());
}

BaseCom / RxResp - Retira mensagem de resposta da Base do buffer de recepção

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Msg
String
Resultado da função: String com tamanho maior que 0 contendo próxima mensagem no buffer de recepção de mensagens de respostas da Base ou string vazio caso não haja mensagens no buffer.

Descrição

Esta função retorna string com os bytes da próxima mensagem de resposta da Base contida no buffer de recepção. Se o buffer de recepção estiver vazio, a função retorna um string vazio ou nulo. Para processar a mensagem recebida é necessário decodificá-la através dos componente BaseMessage . As mensagens de terminais recebidas pela Base são armazenadas em um buffer de recepção diferente e podem ser retiradas através da função RxMsg() .

Exemplos:

Javascript:
var Res;
var Msg;
Msg = Base.RxResp();
if (Msg.length() > 0) {
   BaseMsg.Decode(Msg);
   if (Msg.GetType() == 0x80) {
  
    WScript.Echo("Recebida resposta de RESET da Base");
   }

}

Perl:
my $Res;
my $Msg;
$Msg = $Base->RxResp();
if (length($Msg)) {
   $BaseMsg->Decode(Msg);
   if (BaseMsg.GetType() == 0x81) {

        printf("Recebida resposta de CONFIG da Base");
    }
}

BaseCom / Clear - Executa operação de inicialização

Entrada
Tipo
Descrição
dwOp
Inteiro
Tipo da inicialização a ser executada:
0 - Total: limpa todos os buffers de comunicação e inicializa estatísticas e estados
1 - Limpa buffers de transmissão e inicializa estados de transmissão
2 - Limpa buffers de recepção e inicializa estados de recepção
3 - Inicializa estatísticas de transmissão (zera contadores)
4 - Inicializa estatísticas de recepção (zera contadores)
5 - Inicializa sincronismo de transmissão
6 - Inicializa sincronismo de recepção
Saída
Tipo
Descrição
Nenhuma

                                                                 

Descrição

Esta função permite inicializar seletivamente diversas partes do protocolo de comunicação com a Base. O tipo de inicialização a ser executado é definido pelo seu parâmetro de entrada. 

Exemplos:

Javascript:
Base.Clear(0);

Perl:
$Base->Clear(0);

BaseCom / GetStats - Obtém estatísticas de comunicação

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Stats
String
String com valores dos contadores de estatísticas de comunicação com a base. Os valores são separados entre si por vírgula e são formatados na seguinte sequência:
1-
Número total de mensagens de controle ou dados que foram enviadas para a Base (TxMsg)
2-
Número total de bytes de mensagens de controle ou dados que foram enviados para a Base (TxBytes)
3-
Número total de mensagens de controle ou dados que foram retransmitidas por que não foi recebida mensagem de ACK correspondente (TxRetries)
4-
Número total de mensagens de controle ou dados que não foram transmitidas por que não foi recebida mensagem de ACK correspondente mesmo após o envio de eventuais retransmissões (TxErrors)
5-
Número total de mensagens de controle ou dados que foram recebidas da Base(RxMsg)
6-
Número total de bytes de mensagens de controle ou dados que foram recebidas da Base (RxBytes)
7-
Número total de mensagens de controle ou dados recebidas repetidas (RxRepeat)

Descrição

Esta função permite obter estatísticas de comunicação entre o computador e a Base. Retorna um string com valores formatados de diversos contadores. Estes contadores são inicializados com zero e são incrementados indefinidamente ao longo do processo de comunicação. Através da função Clear() é possível inicializar seletivamente as estatísticas de transmissão (contadores 1, 2, 3 e 4) e as estatísticas de recepção (contadores 5, 6 e 7).

Exemplos:

Javascript:
var Stats = Base.GetStats();
var Fields = Stats.split(",");
WScript.Echo("TxMsg: "     + Fields[0]);
WScript.Echo("TxBytes: "   + Fields[1]);
WScript.Echo("TxRetries: " + Fields[2]);
WScript.Echo("TxErrors: "  + Fields[3]);
WScript.Echo("RxMsg: "     + Fields[4]);
WScript.Echo("RxBytes: "   + Fields[5]);
WScript.Echo("RxRepeat: "  + Fields[6]);

Perl:
my $Stats = $Base->GetStats();
my @Fields = split(/,/, $Stats);
printf("TxMsg:     $Fields[0]\n")
printf("TxBytes:   $Fields[1]\n")
printf("TxRetries: $Fields[2]\n")
printf("TxErrors:  $Fields[3]\n")
printf("RxMsg:     $Fields[4]\n")
printf("RxBytes:   $Fields[5]\n")
printf("RxRepeat:  $Fields[6]\n")

BaseCom / SetSim - Estabelece modo de simulação

Entrada
Tipo
Descrição
bActive
Inteiro
Permite ativar/desativar a simulação da Base. Se for 1 (true) a simulação será ativada, Se for 0 (false) a simulação será desativada.
dwBufCount
Inteiro
Número máximo de buffers de recepção da base
dwBufSize
Inteiro
Tamanho dos buffers de recepção da base
dwTxTime
Inteiro
Tempo, em milisegundos, que a simulação da base deverá demorar para "transmitir" uma mensagem de dados para um terminal.
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função é utilizada apenas para testes internos e permite que o componente BaseCom simule parcialmente uma Base de comunicação recebendo comandos e enviandos respostas adequadas. Normalmente a simulação da base está desativada .

Exemplos:

Javascript:
Base.SetSim(1, 4, 128, 1000);

Perl:
$Base->SetSim(0, 0, 0, 0);

BaseCom / Códigos de erros retornados

Os códigos de erro retornados por este componente estão na faixa de -500 a -599:

Código do erro
Descrição
-501
Comunicação com base já está aberta
-502
Comunicação com base não está aberta
-503
Canal de comunicação serial não está aberto
-504
Mensagem a ser transmitida é inválida
-505
Buffer de recepção de mensagens está vazio
-506
Timeout de recepção de mensagem
-507
Timeout de recepção de caractere
-508
Recebida mensagem de resposta não solicitada
-509
Recebida mensagem de resposta diferente da solicitada
-510
Recebida mensagem de dados repetida
-511
Recebida mensagem inválida

BaseCom / Códigos de eventos retornados

Código do evento
Descrição
0
Não ocorreu nenhum evento
1
Recepção de resposta de comando enviado a Base
2
Recepção de mensagem de terminal
3
Recepção de ACK da Base
4
Recepção de comando (para simulação da base)

Componente TermCom

Este componente permite transmitir e receber mensagens de terminais da rede sem fio através da Base TRXCom.Utiliza internamente os componentes BaseCom , BaseMessage e TRXMessage .  Embora seja possível transmitir e receber mensagens dos terminais diretamente através do componente BaseCom, o componente TermCom adiciona uma série de recursos adicionais para facilitar este processo:

Exemplo de inicialização dos componentes e da comunicação serial

Javascript:
// Cria instancia de todos os componentes necessarios
var Com     = WScript.CreateObject("TRXCom.Com");
var TRXMsg  = WScript.CreateObject("TRXCom.TRXMessage");
var BaseMsg = WScript.CreateObject("TRXCom.BaseMessage");
var Base    =
WScript.CreateObject("TRXCom.BaseCom");
var Term    =
WScript.CreateObject("TRXCom.TermCom");
// Inicializa canal serial e comunicacao com a base
Com.Open(0, 9600, 8, 1, 0, 0, 0, 1000, 1000);
Base.Open(0);
Term.Open(0);


Perl:
# Cria instancia de todos os componentes necessarios
my $Com     = Win32::OLE->new("TRXCom.Com");
my $TRXMsg  =
Win32::OLE->new ("TRXCom.TRXMessage");
my $BaseMsg =
Win32::OLE->new ("TRXCom.BaseMessage");
my $Base    =
Win32::OLE->new ("TRXCom.BaseCom");
my $Term    = Win32::OLE->new ("TRXCom.TermCom");


# Inicializa canal serial e comunicacao com a base
$Com->Open(0, 9600, 8, 1, 0, 0, 0, 1000, 1000);
$Base->Open(0);
$Term->Open(0);

Exemplo de envio de mensagem de DADOS para terminal

Javascript:
// Codifica mensagem de DADOS para terminal
TRXMsg.SetCheckType(0);        // utiliza checksum
TRXMsg.SetMsgType(1);          // mensagem de dados                
TRXMsg.SetReturnAck(1);        // solicita retorno de ACK
TRXMsg.SetDestination(100);    // envia para terminal 100
TRXMsg.SetData("MENSAGEM");    // campo de dados da mensagem
var Msg = TRXMsg.Encode();     // codifica mensagem

// Transmite mensagem para terminal e espera ACK
Term.TxMsg(Msg);
Res = Term.EventWait();
if (Res == 101) {
   Msg = Term.RxMsg();
   TRXMsg.Decode(Msg);
}

Perl:
# Codifica mensagem de DADOS para terminal
$TRXMsg->SetCheckType(0);        # utiliza checksum
$TRXMsg->SetMsgType(1);          # mensagem de dados                
$TRXMsg->SetReturnAck(1);        # solicita retorno de ACK
$TRXMsg->SetDestination(100);    # envia para terminal 100
$TRXMsg->SetData("MENSAGEM");    # campo de dados da mensagem
my $Msg = $TRXMsg->Encode();     # codifica mensagem

# Transmite mensagem de dados e espera ACK da base
$Base->TxMsg(Msg);
$Res = $Term->EventWait();
if ($Res == 101) {
   $Msg = $Term->RxMsg();
   $TermMsg->Decode($Msg);
}


A seguir estão descritos mais detalhadamente o processo de ativação e todas as funções disponíveis neste componente.

TermCom / Ativação

Para o componente poder ser utilizado é necessário criar uma instância do mesmo. Este processo vária para cada linguagem utilizada mas consiste basicamente em passar o nome 'TRXCom.TermCom" para uma função que irá retornar uma referência para o objeto. Caso ocorra problema normalmente é gerada uma exceção pelo interpretador da linguagem ou retornada uma referência nula.

Javascript:
var Term;
Term = WScript.CreateObject("TRXCom.TermCom");


Perl:
my $Term;
$Term = Win32::OLE->new('TRXCom.TermCom');

TermCom  /  Open - Abre comunicação com BaseCom

Entrada
Tipo
Descrição
nChannel
Inteiro
Mesmo número do canal de comunicação sendo utilizado pelo componente BaseCom que está se comunicando com a Base
Saída
Tipo
Descrição
nRes
Inteiro
Resultado da operação: 0 - se comunicação com BaseCom aberta com sucesso ou código de erro caso contrário.

Descrição

Esta função abre a comunicação do TermCom com um componente BaseCom previamente criado. Deve ser fornecido o mesmo número do canal de comunicação utilizado pelo componente BaseCom correspondente. As outras funções deste componente só podem ser utilizadas após esta função ter sido executada e retornado indicação de sucesso.

Exemplos:

Javascript:
var Porta = 0;
Com.Open(Porta, 9600, 8, 1, 0, 0, 0, 1000, 1000);
Base.Open(Porta);
Term.Open(Porta);


Perl:
my $Porta = 0;
$Com->Open($Porta, 9600, 8, 1, 0, 0, 0, 1000, 1000);
$Base->Open($Porta);
$Term->Open($Porta);

TermCom / Close - Fecha comunicação com BaseCom

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nRes
Inteiro
Resultado da operação: 0 - se comunicação fechada com sucesso ou código de erro caso contrário.

Descrição

Esta função finaliza a comunicação com a Base TRXCom e fecha o canal de comunicação serial associado.

Exemplos:

Javascript:
Term.Close();
Base.Close();
Com.Close();


Perl:
$Term->Close();
$Base->Close();
$Com->Close();

TermCom / SetTxMaxRetries - Estabelece número máximo de tentativas de transmissão

Entrada
Tipo
Descrição
dwRetries
Inteiro
Número máximo de tentativas de transmissão de mensagem para terminal
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o número máximo de tentativas de transmissão de mensagem para termina. O valor padrão deste parâmetro é 1, ou seja, caso ocorra erro de timeout na recepção de ACK desta mensagem, a mesma será retransmitida apenas mais uma vez e caso ocorra timeout novamente será gerado evento de erro.

Exemplos:

Javascript:
Term.SetTxMaxRetries(3);     // transmite uma mensagem até 4 vezes

Perl:
$Term->SetTxMaxRetries(0);    #  transmite apenas uma vez 

TermCom / SetTimeoutRxAck - Estabelece timeout de recepcao de ACK de terminal

Entrada
Tipo
Descrição
dwTimeout
Inteiro
Tempo máximo em milisegundos de espera de mensagem de ACK de terminal.
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o tempo máximo em milisegundos de espera de ACK de mensagem previamente enviada para terminal.
O valor padrão deste parâmetro é 10.000 milisegundos. Se o tempo ultrapassar o valor estabelecido será considerado que ocorreu erro na transmissão/recepção da mensagem previamente enviada ou do ACK, sendo então retransmitida novamente a mensagem original. A mensagem original só será retransmitida se seu contador de retransmissões não ultrapassou limite que pode ser estabelecido pela função SetTxMaxRetries() . Se o número de retransmissões chegar ao limite será gerado um evento de erro. 

Exemplos:

Javascript:
Term.SetTimeoutRxAck(30000);     // timeout de ACK = 30s

Perl:
$Term->SetTimeoutRxAck(50000);   #  timeout de caractere = 50s

TermCom / SetTxAckDelay - Estabelece tempo para responder ACK para terminal

Entrada
Tipo
Descrição
dwDelay
Inteiro
Tempo de espera, em milisegundos, para transmissão automática de ACK para terminal. Caso o ACK não deva ser enviado automaticamente, este valor deverá ser 0xFFFFFFFF.
Saída
Tipo
Descrição
Nenhuma


Descrição

Esta função permite estabelecer o intervalo de tempo, em milisegundos, que será esperado desde o instante do recebimento de uma mensagem de dados de terminal até o instante em que deverá ser enviado automaticamente um ACK para o mesmo. O valor padrão deste parâmetro é 0xFFFFFFFF, ou seja está desabilitado o envio automático de ACKs. Nesta situação a aplicação é responsável pelo envio das mensagens de ACK para os terminais, utilizando o componente TRXMessage para formatar a mensagem e TxMsg() para enviá-la.

Exemplos:

Javascript:
Term.SetTxAckDelay(30000);         // delay de 30s

Perl:
$Term->SetTxAckDelay(0xFFFFFFFF);  # desabilita envio de ACK

TermCom / EventNext - Retorna próximo evento

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Event
Inteiro
Código de próximo evento na fila

Descrição

Os principais eventos de comunicação que ocorrem, como recepção de mensagens e ocorrências de erros  são introduzidos numa fila e podem ser obtidos através desta função, que sempre retorna imediatamente com o código do próximo evento na fila. Caso não haja nenhum evento na fila a função retorna o valor 0. Se o valor retornado for positivo o evento corresponde a uma situação normal como recepção de mensagem. Se for negativo, representa um código erro. Esta função retorna os eventos gerados pelo componente TermCom (tabela de eventos ) e pelo componente  BaseCom associado (tabela de eventos ).

Exemplos:

Javascript:
var Event;
while (true) {
    Event = Term.EventNext();
    if (Event == 0) {
       continue;
     }
    if (Event < 0) {
   
   WScript.Echo("Ocorreu erro: " + Event);
    }     
}


Perl:
my $Event;
while (1) {
    $Event = $Term->EventNext();
    if ($Event == 0) {
       last;
    }
    if ($Event > 0) {
       printf("Recebida mensagem\n");
    }
}

TermCom / EventWait - Espera pelo próximo evento

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Event
Inteiro
Código de próximo evento na fila

Descrição

Esta função é semelhante a EventNext() porém só retorna após a ocorrência de um evento. Internamente esta função executa Process() continuamente para processar a comunicação e só retorna quando houver um evento na fila.

Exemplos:

Javascript:
var Event = Term.EventWait();
if (Event < 0) {
   WScript.Echo("Ocorreu erro: " + Event);
}


Perl:
my $Event = $Term->EventWait();
if ($Event > 0) {
   printf("Recebida mensagem\n");
}

TermCom / EventClear - Limpa fila de eventos

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Nenhuma

                                                       

Descrição

Esta função limpa a fila de eventos do componente TermCom e do componente BaseCom associado. Pode ser utilizada em uma situação de erro quando os eventuais eventos que estão na fila podem não interessar mais.

Exemplos:

Javascript:
var Event = Term.EventWait();
if (Event < 0 ) {

   Term.EventClear();
}


Perl:
my $Event = $Term->EventWait();
if ($Event < 0) {
   $Term->EventClear();
}

TermCom / Process - Processa comunicação

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Nenhuma

                                                       

Descrição

Esta função processa a comunicação do TermCom e chama também função correspondente do componente BaseCom associado. Esta função deve ser ser chamada periodicamente pelo aplicativo de forma direta ou indireta. As funções EventNext() e EventWait() já chamam internamente esta função e caso sejam utilizadas estas funções no loop principal do aplicativo não é necessário utilizar Process() .

Exemplos:

Javascript:
var Res;
var Msg;
while (true) {
    Term.Process();
    Msg = Term.RxMsg();
    if (Term.length() > 0) {
   
   WScript.Echo("Recebida mensagem");
    }     
}


Perl:
my $Res;
my $Msg;
while (1) {
   $Term->Process();
   $Msg = $Term->RxMsg();
   if (length($Msg)) {
      printf("Recebida mensagem\n");
   }
}

TermCom / TxMsg - Insere mensagem para terminal no buffer de transmissão

Entrada
Tipo
Descrição
Msg
String
String com bytes de mensagem para terminal previamente codificada através de TRXMessage
Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: 0 - se mensagem foi inserida no buffer com sucesso ou código de erro caso contrário.  

Descrição

Esta função permite transmitir mensagens para os terminais da rede sem fio. Deve ser fornecido um string com uma mensagem previamente codificada através do componente TRXMessage . A função insere a mensagem especificada no buffer de transmissão interno e retorna imediatamente. Quando possível a mensagem será formatada e encaminhada para o componente BaseCom para transmissão através de Base. Caso a mensagem enviada solicite ACK, será feita supervisão de recepção do ACK, retransmitindo a mensagem previamente enviada se necessário.

Exemplos:

Javascript:
TRXMsg.SetCheckType(0);        // utiliza checksum
TRXMsg.SetMsgType(1);          // mensagem de dados                
TRXMsg.SetReturnAck(1);        // solicita retorno de ACK
TRXMsg.SetDestination(200);    // envia para terminal 200
TRXMsg.SetData("MENSAGEM");    // campo de dados da mensagem
var Msg = TRXMsg.Encode();     // codifica mensagem

Term.TxMsg(Msg);


Perl:
$TRXMsg->SetCheckType(0);        # utiliza checksum
$TRXMsg->SetMsgType(1);          # mensagem de dados                
$TRXMsg->SetReturnAck(1);        # solicita retorno de ACK
$TRXMsg->SetDestination(400);    # envia para terminal 400
$TRXMsg->SetData("MENSAGEM");    # campo de dados da mensagem
my $Msg = $TRXMsg->Encode();     # codifica mensagem

$Term->TxMsg(Msg);

TermCom / RxCount - Retorna número de mensagens nos buffers de recepção

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
nResult
Inteiro
Resultado da função: Se for maior ou igual a 0 indica o número de mensagens nos buffers de recepção, caso contrário é um código de erro.

Descrição

Esta função retorna o número de mensagens recebidas dos terminais contidas no buffers de recepção e que ainda não foram retiradas através de RxMsg()

Exemplos:

Javascript:
var Res = Term.RxCount();
if (Res > 0) {
   WScript.Echo("Existem: " + Res + "mensagens no buffer de recepcao");
}
 

Perl:
my $Res = $Term->RxCount();
if ($Res == 0) {
   printf("buffer de recepcao esta vazio");
}

TermCom / RxMsg - Retira mensagem de dados de terminal de buffer de recepção

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Msg
String
Resultado da função: String com tamanho maior que 0 contendo próxima mensagem nos buffers de recepção de mensagens de terminais ou string vazio caso não haja mensagens nos buffers.

Descrição

Esta função retorna string com os bytes da próxima mensagem de terminal contida no buffer de recepção. Se o buffer de recepção estiver vazio, a função retorna um string vazio ou nulo. Para processar a mensagem recebida é necessário decodificá-la através do componente TRXMessage

Exemplos:

Javascript:
var Res;
var Msg;
Msg = Term.RxMsg();
if (Msg.length() > 0) {
   TRXMsg.Decode(Msg);
  
WScript.Echo("Recebidos dados de terminal: " + TRXMsg.GetData());
}

Perl:
my $Res;
my $Msg;
$Msg = $Term->RxMsg();
if (length($Msg)) {
   $TRXMsg->Decode($Msg);

   printf("Recebidos dados de terminal: " . $TRXMsg->GetData());
}

TermCom / Clear - Executa operação de inicialização

Entrada
Tipo
Descrição
dwOp
Inteiro
Tipo da inicialização a ser executada:
0 - Total: limpa todos os buffers de comunicação e inicializa estatísticas e estados
1 - Limpa buffers de transmissão e inicializa estados de transmissão
2 - Limpa buffers de recepção e inicializa estados de recepção
3 - Inicializa estatísticas de transmissão (zera contadores)
4 - Inicializa estatísticas de recepção (zera contadores)
5 - Inicializa sincronismo de transmissão
6 - Inicializa sincronismo de recepção
Saída
Tipo
Descrição
Nenhuma

                                                                 

Descrição

Esta função permite inicializar seletivamente diversas partes do protocolo de comunicação com os terminais. O tipo de inicialização a ser executado é definido pelo seu parâmetro de entrada. 

Exemplos:

Javascript:
Term.Clear(0);

Perl:
$Term->Clear(3);
$Term->Clear(4);

TermCom / GetStats - Obtém estatísticas de comunicação

Entrada
Tipo
Descrição
Nenhuma


Saída
Tipo
Descrição
Stats
String
String com linhas terminadas por CR/LF sendo que cada linha contém os valores dos contadores de estatísticas de comunicação. A primeira linha contém contadores com a soma total dos contadores correspondentes para todos os terminais. As próximas linhas contém os contadores específicos para cada terminal. Os valores na linha são separados entre si por vírgulas e são formatados na seguinte sequência:
0-
Na primeira linha este campo contém o número de total de terminais com os quais já ocorreu comunicação. Nas outras linhas este campo contém o número do terminal ao qual corresponde os contadores da linha
1-
Número total de mensagens que a aplicação solicitou envio (total geral na primeira linha e por terminal nas linhas seguintes)
2-
Número total de bytes das mensagens que a aplicação solicitou envio (total geral na primeira linha e por terminal nas linhas seguintes)
3-
Número total de mensagens que foram retransmitidas para o terminal por que não foi recebida mensagem de ACK correspondente (total geral na primeira linha e por terminal nas linhas seguintes)
4-
Número total de mensagens consideradas perdidas por que não foram recebidas mensagem de ACK correspondentes mesmo após o envio de eventuais retransmissões (total geral na primeira linha e por terminal nas linhas seguintes)
5-
Número total de mensagens que foram recebidas (total geral na primeira linha e por terminal nas linhas seguintes)
6-
Número total de bytes das mensagens que foram recebidas (total geral na primeira linha e por terminal nas linhas seguintes)
7-
Número total de mensagens recebidas repetidas (total geral na primeira linha e por terminal nas linhas seguintes)

Descrição

Esta função permite obter estatísticas de comunicação entre o computador e os terminais da rede sem fio. Retorna um string constituído por linhas separadas entre si por CR/LF. A primeira linha é sempre retornada e contém os totais gerais de todos os contadores de todos os terminais. As linhas seguintes, caso existam, correspondem cada uma a um terminal com o qual já houve comunicação e contém valores dos contadores específicos para o terminal. Estes contadores são inicializados na primeira comunicação com o terminal e são incrementados indefinidamente ao longo do processo de comunicação. Através da função Clear() é possível inicializar seletivamente as estatísticas de transmissão (contadores 1, 2, 3 e 4) e as estatísticas de recepção (contadores 5, 6 e 7).

Exemplos:

Javascript:
var Stats = Term.GetStats();
var Lines = Stats.split("\r\n");
var nL;
for (nL = 1 ; nL < Lines.length ; nL++) {
    var Fields = Lines[nL].split(",");
    WScript.Echo("Terminal: "  + Fields[0]);
    WScript.Echo("TxMsg: "     + Fields[1]);
    WScript.Echo("TxBytes: "   + Fields[2]);
    WScript.Echo("TxRetries: " + Fields[3]);
    WScript.Echo("TxErrors: "  + Fields[4]);
    WScript.Echo("RxMsg: "     + Fields[5]);
    WScript.Echo("RxBytes: "   + Fields[6]);
    WScript.Echo("RxRepeat: "  + Fields[7]);
}

Perl:
my $Stats = $Base->GetStats();
my @Lines = split(/\r\n/, $Stats);
my $nL;
for ($nL = 1 ; $nL < @Lines ; $nL++) {
    my @Fields = split(/,/, $Lines[$nl]);
    printf("Terminal:  $Fields[0]\n")
    printf("TxMsg:     $Fields[1]\n")
    printf("TxBytes:   $Fields[2]\n")
    printf("TxRetries: $Fields[3]\n")
    printf("TxErrors:  $Fields[4]\n")
    printf("RxMsg:     $Fields[5]\n")
    printf("RxBytes:   $Fields[6]\n")
    printf("RxRepeat:  $Fields[7]\n")
}

TermCom / Códigos de erros retornados

Os códigos de erro retornados por este componente estão na faixa de -600 a -699:

Código do erro
Descrição
-601
Componente BaseCom associado não está aberto
-602
TermCom já está aberto
-603
TermCom não está aberto
-604
Buffers de recepção de mensagens estão vazios
-605
Recebida mensagem sem endereço de origem
-606
Recebida mensagem repetida
-607
Solicitada transmissão de mensagem sem endereço de destino
-608
Timeout de recepção de ACK
-609
Recebido ACK inválido

TermCom / Códigos de eventos retornados

Os códigos de evento retornados por este componente estão na faixa de 100 a 199:

Código do evento
Descrição
0
Não ocorreu nenhum evento
100
Recebida mensagem de terminal
101
Recebida mensagem de ACK de terminal