Com = WScript.CreateObject("TRXCom.Com");
$Com = Win32::OLE->new('TRXCom.Com');
|
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. |
Res = Com.Open(0, 9600, 8, 1, 0, 0, 0, 1000,
1000);
if (Res) {
WScript.Echo("Erro na abertura do canal");
}$Result = $Com->Open(0, 9600, 8,
1, 0, 0, 0, 1000, 1000);
if ($Result) {
printf("Erro na abertura do canal");
}|
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 |
Res = Com.Close();
if (Res) {
WScript.Echo("Erro: " + Res + " no fechamento
do canal");
}$Result = $Com->Close();
if ($Result) {
printf("Erro:
$Result no fechamento do canal");
}
|
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. |
Res = Com.Config(9600, 8, 1, 0, 0, 0);if (Res) {
WScript.Echo("Erro: " + Res + " no fechamento
do canal");
}$Result = $Com->Config(9600,
8, 1, 0, 0, 0);
if ($Result == 0) {
printf("Canal
reinicializado com sucesso");
}
|
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. |
var Taxa = Com.GetConfig(2);
WScript.Echo("Canal configurado
com taxa" + Taxa);
$Taxa = $Com->GetConfig(2);
printf("Canal configurado
com taxa: $Taxa");|
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 |
var Res = Com.TxChar(65);
if (Res) {
WScript.Echo("Erro na transmissao de caractere");
}$Result = $Com->TxChar(chr(0x01));
if ($Result) {
printf("Erro
na transmissao de caractere");
}|
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 |
var sMsg = "Teste do TRXCom";
Result = Com.TxData(sMsg,
sMsg.length);
if (Result) {
WScript.Echo("Erro
na transmissao");
my $sMsg = "Teste do TRXCom";
$Result = $Com->TxData($sMsg,
length($sMsg)));
if ($Result) {
printf("Erro
na transmissao");
}
|
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. |
var Result;
Result = Com.GetnTx();
if (Result == 0) {
WScript.Echo("Buffer
de transmissao vazio");
my $Result;
$Result = $Com->GetnTx();
if (!$Result) {
printf("Buffer
de transmissao vazio");
}
|
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. |
var Result;
Result = Com.RxChar();
if (Result >= 0) {
WScript.Echo("Recebido
caractere");
my $Result;
$Result = $Com->RxChar();
if ($Result >= 0) {
printf("Recebido
caractere");
}
|
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. |
var Result;
Result = Com.RxData(10);
if (Result.length() == 0)
{
WScript.Echo("mensagem
nao foi recebida");
my $Result;
$Result = $Com->RxData(10);
if (length($Result) == 0)
{
printf("mensagem
nao foi recebida");
}
|
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. |
var Result;
Result = Com.GetnRx();
if (Result == 0) {
WScript.Echo("Buffer
de recepcao vazio");
my $Result;
$Result = $Com->GetnRx();
if (!$Result) {
printf("Buffer
de recepcao vazio");
}|
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 |
var Result;
Result = Com.ClearTxBuffer();
if (Result == 0) {
WScript.Echo("Buffer
de transmissao esvaziado");
my $Result;
$Result = $Com->ClearTxBuffer();
if (!$Result) {
printf("Buffer
de transmissao esvaziado");
}|
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 |
var Result;
Result = Com.ClearRxBuffer();
if (Result == 0) {
WScript.Echo("Buffer
de recepcao esvaziado");
my $Result;
$Result = $Com->ClearRxBuffer();
if (!$Result) {
printf("Buffer
de transmissao esvaziado");
}|
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 |
var Result;
Result = Com.ClearTxRx();
if (Result == 0) {
WScript.Echo("Buffers
esvaziados");
my $Result;
$Result = $Com->ClearTxRx();
if (!$Result) {
printf("Buffers
esvaziados");
}|
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:
|
var Result;
Result = Com.GetErrors();
if (Result > 0 and (Result
....)) {
WScript.Echo("Buffers
esvaziados");
my $Result;
$Result = $Com->GetErrors();
if ($Result > 0 and ($Result
....)) {
printf("Ocorreu
erro de overrun");
}
|
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 |
var Result;
Result = Com.ClearErrors();
if (Result == 0) {
WScript.Echo("Erros
de comunicacao zerados");
my $Result;
$Result = $Com->ClearErrors();
if (!$Result) {
printf("Erros
de comunicacao zerados");
}|
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 |
var Result;
Result = Com.GetCTS();
if (Result == 1) {
WScript.Echo("CTS
ATIVO");
my $Result;
$Result = $Com->GetCTS();
if ($Result == 1) {
printf("CTS
ATIVO");
}|
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 |
var Result;
Result = Com.GetDCD)();
if (Result == 0) {
WScript.Echo("DCD
DESATIVO");
my $Result;
$Result = $Com->GetDCD();
if ($Result == 0) {
printf("DCD
DESATIVO");
}|
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 |
var Result;
Result = Com.GetDSR();
if (Result == 1) {
WScript.Echo("DSR
ATIVO");
my $Result;
$Result = $Com->GetDSR();
if ($Result == 0) {
printf("DSR
ATIVO");
}|
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 |
var Result;
Result = Com.GetRI();
if (Result == 1) {
WScript.Echo("RI
ATIVO");
my $Result;
$Result = $Com->GetRI();
if ($Result == 1) {
printf("RI
ATIVO");
}|
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 |
var Result;
Result = Com.SetDTR(1);
if (Result == 0) {
WScript.Echo("DTR
Ativado");
my $Result;
$Result = $Com->SetDTR(1);
if ($Result == 1) {
printf("DTR
Ativado");
}|
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 |
var Result;
Result = Com.SetRTS(0);
if (Result == 0) {
WScript.Echo("RTS
Desativado");
my $Result;
$Result = $Com->SetRTS(0);
if ($Result == 1) {
printf("RTS
Desativado");
}|
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 |
var Result;
Result = Com.SetBREAK(1);
if (Result == 0) {
WScript.Echo("BREAK
ativado");
my $Result;
$Result = $Com->SetBREAK(1);
if ($Result == 1) {
printf("BREAK
ativado");
}|
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 |
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
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
}
var TRXMsg;
TRXMsg = WScript.CreateObject("TRXCom.TRXMessage");my $TRXMsg;
$TRXMsg = Win32::OLE->new('TRXCom.TRXMessage');
| 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 |
TRXMsg.SetCheckType(0);
// utiliza checksum
Perl:$TRXMsg->SetCheckType(1);
# Utiliza CRC-16
| 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 |
if (TRXMsg.GetCheckType() == 0) {
WScript.Echo("Mensagem
utiliza checksum");
}
Perl:if ($TRXMsg->GetCheckType() == 1) {
printf("Mensagem utiliza CRC16");
}
| Entrada |
Tipo |
Descrição |
| bState |
Inteiro |
Tipo da mensagem: 0 (falso)
- para DADOS, 1 (verdadeiro) - para ACK |
| Saída |
Tipo |
Descrição |
| Nenhuma |
TRXMsg.SetMsgType(1);
// mensagem de ACK
Perl:$TRXMsg->SetMsgType(0);
# mensagem de DADOS
| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| bState |
Inteiro |
Tipo da mensagem: 0 (falso)
- para DADOS, 1 (verdadeiro) - para ACK |
if (TRXMsg.GetMsgType() == 0) {
if (TRXMsg.GetReturnAck())
{
...
}
}
Perl:if ($TRXMsg->GetMsgType() == 1) {
printf("Terminal recebeu mensagem");
}
| 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 |
TRXMsg.SetReturnAck(1);
// solicita retorno de ACK
Perl:$TRXMsg->SetReturnAck(0);
# mensagem de DADOS
| 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 |
if (TRXMsg.GetMsgType() == 0) {
if (TRXMsg.GetReturnAck())
{
...
}
}
Perl:if ($TRXMsg->GetReturnAck() == 0) {
printf("Nao precisa enviar
ACK pare terminal");
}| 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 |
TRXMsg.SetMsgApplication(1);
// solicita retorno de ACK
Perl:$TRXMsg->SetReturnAck(0);
# mensagem de DADOS
| 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 |
if (TRXMsg.GetMsgApplication()) {
WScript.Echo("Mensagem
de aplicacao");
}
Perl:if (! $TRXMsg->GetMsgApplication()) {
printf("Mensagem de protocolo");
}
| 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 |
TRXMsg.SetSource(0xFFFFFFFF);
// mensagem sem endereço de origem
Perl:$TRXMsg->SetSource(48345);
# endereco de origem = 48345
| 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. |
if (TRXMsg.GetSource() == 0xFFFFFFFF) {
WScript.Echo("Mensagem
nao contem origem");
}
Perl:$Source = TRXMsg->GetSource();
if ($Source != 0xFFFFFFFF) {
printf("Endereco de origem: $Source");
}
| 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 |
TRXMsg.SetDestination(100);
// mensagem para terminal 100
Perl:$TRXMsg->SetDestination(0xFFFFFFFF);
# mensagem sem endereco de destino
| 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. |
if (TRXMsg.GetDestination() == 0xFFFFFFFF)
{
WScript.Echo("Mensagem
nao contem destino");
}
Perl:$Dest = TRXMsg->GetDestination();
if ($Dest != 0xFFFFFFFF) {
printf("Endereco de destino: $Dest");
}
| Entrada |
Tipo |
Descrição |
| Data |
String |
String com dados da mensagem.
|
| Saída |
Tipo |
Descrição |
| Nenhuma |
TRXMsg.SetData("OK");
Perl:$TRXMsg->SetData("ERRO. TENTE
DE NOVO");
| 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. |
var Data = TRXMsg.GetData();
WScript.Echo("Dados
recebidos: " + Data);
Perl:my $Data = TRXMsg->GetData();
if (length($Data) == 0) {
printf("Mensagem nao contem dados");
}| Entrada |
Tipo |
Descrição |
| Nenhuma |
|
|
| Saída |
Tipo |
Descrição |
| Message |
String |
String com bytes codificados
da mensagem. |
var Msg = TRXMsg.Encode();
Perl:my $Msg = $TRXMsg->Encode();
| 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. |
var Res = TRXMsg.Decode(Data);
if (Res = 0) {
WScript.Echo("Mensagem decodificada corretamente");
}
Perl:my $Res = TRXMsg->Decode($Data);
if ($Res) {
printf("Mensagem invalida");
}
| 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. |
XX XX XX XX ... XX <LF>
XX XX XX XX ... XX <LF>
var Dump = TRXMsg.DumpHex(Data); WScript.Echo("Dados recebidos:"
+ Dump);
Perl:my $Dump = TRXMsg->DumpHex($Data);
printf("Dados recebidos:\n$Data");
| 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 |
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
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'
...
...
var BaseMsg;
BaseMsg = WScript.CreateObject("TRXCom.BaseMessage");my $BaseMsg;
$BaseMsg = Win32::OLE->new('TRXCom.BaseMessage');
| Entrada |
Tipo |
Descrição |
| dwType |
Inteiro |
Tipo da mensagem. Veja tabela de tipos de mensagens
. |
| Saída |
Tipo |
Descrição |
| Nenhuma |
|
BaseMsg.SetType(0x00);
Perl:$BaseMsg->SetType(0x01);
| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| dwType |
Inteiro |
Tipo da mensagem
|
var Type = BaseMsg.GetType();
Perl:my $Type = $BaseMsg->GetType();
| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| dwID |
Inteiro |
ID da Base
|
var ID = BaseMsg.GetBaseID();WScript.Echo("ID da Base: " + ID);
Perl:my $ID = $BaseMsg->GetBaseID();
printf("ID da Base: $ID\n");
| 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.
|
var TX = BaseMsg.GetTxStatus();WScript.Echo("TxStatus: " + TX);
Perl:my $TX = $BaseMsg->GetTxStatus();
printf("TxStatus: $TX\n");
| 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. |
var RX = BaseMsg.GetRxStatus();WScript.Echo("RxStatus: " + TX);
Perl:my $RX = $BaseMsg->GetRxStatus();
printf("RxStatus: $RX\n");
| 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. |
var Colision = BaseMsg.GetColision();
if (Colision) {
WScript.Echo("Colisão
na recepcao");
}
Perl:my $Colision = $BaseMsg->GetColision();
if (Colision) {
printf("Colisão na recepcao");
}
| 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 |
var Buffers = BaseMsg.GetBuffers();
WScript.Echo("Numero de buffers livres=" + Buffers);
Perl:
my $Buffers = BaseMsg.GetBuffers();
printf("Numero de buffers livres=$Buffers\n");
| 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 |
var Size = BaseMsg.GetBuffersSize();
WScript.Echo("Tamanho de buffer=" + Size);
Perl:my $Size = $BaseMsg->GetBuffersSize();
printf("Tamanho de buffer=$Size\n");
| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| Model |
String |
String com descrição
do modelo da base
|
var Model = BaseMsg.GetModel();
WScript.Echo("Modelo da base=" + Model);
Perl:my $Model = $BaseMsg->GetModel();
printf("Modelo da base=$Model\n");
| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| Version |
String |
String com versão da base
|
var Version = BaseMsg.GetVersion();
WScript.Echo("Versao da base=" + Version);
Perl:my $Version = $BaseMsg->GetVersion();
printf("Versao da base=$Version\n");
| Entrada |
Tipo |
Descrição |
| dwID |
Inteiro |
ID da Base Local
|
| Saída |
Tipo |
Descrição |
| Nenhuma |
BaseMsg.SetType(0x03);
BaseMsg.SetLocalBaseID(10);
var Msg = BaseMsg.Encode();
Perl:$BaseMsg->SetType(0x03);
$BaseMsg->SetLocalBaseID(10);
my $Msg = $BaseMsg->Encode();
| 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 |
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();
| Entrada |
Tipo |
Descrição |
| Saída |
Tipo |
Descrição |
| Msg |
String |
String com bytes codificados de mensagem
TRXMessage recebida de terminal |
BaseMsg.Decode(Msg);
Data = BaseMsg.GetMsg()
TRXMsg.Decode(Data);Perl:$BaseMsg->Decode(Msg);
Data = BaseMsg->GetMsg();
TRXMsg.Decode(Data); | Entrada |
Tipo |
Descrição |
| dwNetwork |
Inteiro |
Número da rede de 0 a 63
|
| Saída |
Tipo |
Descrição |
| Nenhuma |
BaseMsg.SetType(0x04);
BaseMsg.SetNetwork(1);
var Msg = BaseMsg.Encode();
Perl:$BaseMsg->SetType(0x04);
$BaseMsg->SetNetwork(1);
my $Msg = $BaseMsg->Encode();
| Entrada |
Tipo |
Descrição |
| Saída |
Tipo |
Descrição |
| dwNetwork |
Inteiro | Número da rede de 0 a 63
|
BaseMsg.Decode(Msg);
Net = BaseMsg.GetNetwork()
Perl:$BaseMsg->Decode(Msg);
Net = BaseMsg->GetNetwork();
| 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 |
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();
| 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 |
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();
| 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 |
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();
| 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 |
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();
| 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 |
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();
| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| Msg |
String |
String com bytes codificados de mensagem
para Base
|
var Msg = BaseMsg.Encode();
Base.TxMsg(Msg);Perl:my $Msg = $BaseMsg->Encode();
$Base->TxMsg($Msg);
| 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. |
var Msg = BaseCom.RxMsg();
if (Msg.length()) {
BaseMsg.Decode(Msg);}
}Perl:my $Msg = $BaseCom->RxMsg();
if (length($Msg)) {
$BaseMsg->Decode($Msg);
}
| 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. |
XX XX XX XX ... XX <LF>
XX XX XX XX ... XX <LF>
var Dump = BaseMsg.DumpHex(Data); WScript.Echo("Dados recebidos:"
+ Dump);
Perl:my $Dump = BaseMsg->DumpHex($Data);
printf("Dados recebidos:\n$Data");
| 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 |
| 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()
|
// 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);# 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);
// 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);
}
// 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
BaseBaseMsg.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);
}
# 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);
}
var BaseMsg;
BaseMsg = WScript.CreateObject("TRXCom.BaseMessage");my $BaseMsg;
$BaseMsg = Win32::OLE->new('TRXCom.BaseMessage');
| 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. |
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");
}
}
| 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. |
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");
}
}
| 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 |
Base.SetTimeoutRxChar(20); //
timeout de caractere = 20ms
Perl:$Base->SetTimeoutRxChar(50); # timeout
de caractere = 50 ms
| 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 |
Base.SetTimeoutRxResp(2000); //
timeout de mensagem = 2s
Perl:$Base->SetTimeoutRxResp(500); #
timeout de caractere = 500 ms
| 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 |
Base.SetTxMaxRetries(3); // transmite
uma mensagem até 4 vezes
Perl:$Base->SetTxMaxRetries(0); # transmite
apenas uma vez
| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| Event |
Inteiro |
Código de próximo
evento na fila |
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");
}
}
| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| Event |
Inteiro |
Código de próximo
evento na fila |
var Event = Base.EventWait();
if (Event < 0) {
WScript.Echo("Ocorreu
erro: " + Event);
}
Perl:my $Event = $Base->EventWait();
if ($Event > 0) {
printf("Recebida mensagem\n");
}| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| Nenhuma |
|
var Event = Base.EventWait();
if (Event < 0 ) {
Base.EventClear();
}
Perl:my $Event = $Base->EventWait();
if ($Event < 0) {
$Base->EventClear();
}
| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| Nenhuma |
|
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");
}
}
| 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. |
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");
} my $Msg;
my $Res;
$BaseMsg->SetType(...); //
mensagem de STATUS
$Msg = $BaseMsg->Encode();
$Res = $Base->TxMsg($Msg);
if ($Res == 0) {
printf("Mensagem inserida no buffer");
}
| 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. |
var Res = Base.RxCount();
if (Res > 0) {
WScript.Echo("Existem:
" + Res + "mensagens no buffer de recepcao");
}
my $Res = $Base->RxCount();
if ($Res == 0) {
printf("buffer de recepcao
esta vazio");
}
| 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. |
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());
}
my $Res;
my $Msg;
$Msg = $Base->RxMsg();
if (length($Msg)) {
$BaseMsg->Decode($Msg);
$TRXMsg->Decode($Msg->GetMsg());
printf("Recebidos dados de terminal: " . TRXMsg.GetData());
}
| 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. |
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");
}
}
my $Res;
my $Msg;
$Msg = $Base->RxResp();
if (length($Msg)) {
$BaseMsg->Decode(Msg);
if (BaseMsg.GetType() == 0x81) {
printf("Recebida resposta
de CONFIG da Base");
}
}| 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 |
|
Base.Clear(0);
$Base->Clear(0);
| 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:
|
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]);
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")
| 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 |
Base.SetSim(1, 4, 128, 1000);
$Base->SetSim(0, 0, 0, 0);
| 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 |
| 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) |
// 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);# 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);
// 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);
}
# 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);
}
var Term;
Term = WScript.CreateObject("TRXCom.TermCom");my $Term;
$Term = Win32::OLE->new('TRXCom.TermCom');
| 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. |
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);
| 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. |
Term.Close();
Base.Close();
Com.Close();
Perl:$Term->Close();
$Base->Close();
$Com->Close();
| 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 |
Term.SetTxMaxRetries(3); // transmite uma
mensagem até 4 vezes
Perl:$Term->SetTxMaxRetries(0); # transmite
apenas uma vez
| 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 |
Term.SetTimeoutRxAck(30000); // timeout de
ACK = 30s
Perl:$Term->SetTimeoutRxAck(50000); # timeout de caractere
= 50s
| 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 |
Term.SetTxAckDelay(30000); // delay de 30s
Perl:$Term->SetTxAckDelay(0xFFFFFFFF); # desabilita envio de
ACK
| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| Event |
Inteiro |
Código de próximo evento na fila
|
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");
}
}
| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| Event |
Inteiro |
Código de próximo evento na fila
|
var Event = Term.EventWait();
if (Event < 0) {
WScript.Echo("Ocorreu erro: " + Event);
}
Perl:my $Event = $Term->EventWait();
if ($Event > 0) {
printf("Recebida mensagem\n");
}| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| Nenhuma |
|
var Event = Term.EventWait();
if (Event < 0 ) {
Term.EventClear();
}
Perl:my $Event = $Term->EventWait();
if ($Event < 0) {
$Term->EventClear();
}
| Entrada |
Tipo |
Descrição |
| Nenhuma |
||
| Saída |
Tipo |
Descrição |
| Nenhuma |
|
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");
}
}
| 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.
|
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);
$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);| 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. |
var Res = Term.RxCount();
if (Res > 0) {
WScript.Echo("Existem: " + Res + "mensagens
no buffer de recepcao");
}
my $Res = $Term->RxCount();
if ($Res == 0) {
printf("buffer de recepcao esta vazio");
}
| 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. |
var Res;
var Msg;
Msg = Term.RxMsg();
if (Msg.length() > 0) {
TRXMsg.Decode(Msg);
WScript.Echo("Recebidos dados de terminal:
" + TRXMsg.GetData());
}
my $Res;
my $Msg;
$Msg = $Term->RxMsg();
if (length($Msg)) {
$TRXMsg->Decode($Msg);
printf("Recebidos dados de terminal: " . $TRXMsg->GetData());
}
| 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 |
|
Term.Clear(0);
$Term->Clear(3);
$Term->Clear(4);
| 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:
|
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]);}
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")
}
| 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 |
| Código do evento |
Descrição |
| 0 |
Não ocorreu nenhum evento |
| 100 |
Recebida mensagem de terminal |
| 101 |
Recebida mensagem de ACK de terminal |