Configuração dos Comandos ASCII

<< Clique para Mostrar o Sumário >>

 

Configuração dos Comandos ASCII

Os comandos ASCII são montados com o objetivo de enviar ou extrair dados dos pacotes de comunicação em conformidade com o protocolo de um equipamento. Para cada formato de envio e de recepção, associa-se um índice, ou ID. No comando podem existir quaisquer números ou letras em formato ASCII, fixos ou com campos variáveis. Para criar campos variáveis, a regra geral é utilizar o formato %Nt, conforme descrito na tabela a seguir.

Formatos disponíveis para comandos ASCII

Formato

Descrição

%

Símbolo identificador de campo variável. Caso a mensagem precise enviar um caractere % (porcentagem), utilize o valor "%%"

N (opcional)

Número de caracteres ou formatador. Se o campo é um número real, N pode ser um número real, como por exemplo 5.2, indicando cinco ou mais algarismos na parte inteira e mais dois algarismos na parte fracionária

t

Tipo de dados. Os valores possíveis são d: Decimal com sinal, u: Decimal sem sinal, x: Hexadecimal, f: Número real, b: Binário (valor binário do caractere), s: String (caracteres de qualquer tipo), t: Texto (somente caracteres que podem ser impressos, ou seja, cujo código ASCII é maior ou igual a 32 ou 20h) ou n: Interpreta o valor decimal no formato BCD

 

NOTA

Para os tipos de dados s (String) e t (texto) existem os subtipos @ e #, que podem ser utilizados quando se deseja extrair somente uma porção de uma String ou de um texto:

Utilize o símbolo @ para identificar um caractere especial como delimitador inicial da String

Utilize o símbolo # para identificar um caractere especial como delimitador final da String. Também é possível definir este caractere especial com notação hexadecimal, utilizando o símbolo h seguido de mais dois caracteres que representam o código ASCII em hexadecimal

Utilize o formato %s para extrair uma String completa

Utilize o formato %@g#;s para extrair uma substring do caractere g até o caractere ; (ponto e vírgula)

Utilize o formato %@h02#h03s para extrair uma substring do caractere 0x02 até o caractere 0x03

Os caracteres delimitadores dos símbolos @ e # não são parte da extração dos dados que representam a substring do formato %s

 

Podem ser inseridos ou verificados também os caracteres especiais /r (carriage return), /n (line feed) e qualquer outro caractere especial no formato /hXX, inserindo os caracteres / (barra) ou \ (barra invertida) seguidos de r, n ou h diretamente na mensagem TX ou RX. A inserção ou comparação é realizada diretamente com os caracteres especiais /r (13), /n (10) ou /hXX, onde XX representa um caractere especial em formato hexadecimal de dois dígitos.

Também é possível definir qual é o byte inicializador da recepção dos dados, qual é o byte terminador da recepção dos dados e se estes bytes devem ou não ser parte da extração dos dados, conforme as opções listadas a seguir:

[xx: Define qual é o byte que inicializa a recepção dos dados, em que xx está em notação hexadecimal e está incluído na extração dos dados

]xx: Define qual é o byte que termina a recepção dos dados, em que xx está em notação hexadecimal e está incluído na extração dos dados

(xx: Define qual é o byte que inicializa a recepção dos dados, em que xx está em notação hexadecimal e não está incluído na extração dos dados

)xx: Define qual é o byte que termina a recepção dos dados, em que xx está em notação hexadecimal e não está incluído na extração dos dados

 

Adicionalmente, para as respostas RX que utilizem os bytes terminadores ]xx ou )xx e se houver a necessidade de descartar alguns bytes que vêm logo a seguir, é possível acrescentar um parâmetro para indicar a quantidade de bytes que devem ser descartados por este Driver após ter recebido este byte terminador, com o objetivo prático de efetuar uma limpeza do buffer de recepção dos dados.

Para utilizar o parâmetro de descartar os últimos n bytes, utilize a expressão "*nn" logo após o parâmetro que define o byte terminador de recepção de dados, ou seja, ]xx*nn ou )xx*nn, em que nn está em notação decimal e representa a quantidade de bytes que são recebidos e descartados por este Driver.

As tabelas a seguir contêm exemplos de utilização de comandos ASCII.

Exemplo de utilização

Protocolo

Objetivo

Configuração

TX: <STX>query<ETX>

RX: <STX>1200<ETX>

Enviar o comando query a um equipamento e extrair o valor numérico da resposta

ID: 1 (um)

TX: /h02query/h03

RX: (02%u)03

N1/B1: 0 (zero, envia e recebe comando)

N2/B2: 1 (um, ID do comando)

Read Tag: 1200

 

O pacote TX é montado para enviar o comando query conforme a estrutura do protocolo de um equipamento, ou seja, utilizando "/h02" (byte STX 0x02) + "query" + "/h03" (byte ETX 0x03).

O pacote RX é montado com o formato "(02" (inicializador não incluso STX 0x02) + "%u" + ")03" (terminador não incluso ETX 0x03), em que o parâmetro %u extrai os dados no formato numérico sem sinal.

Exemplo de utilização

Protocolo

Objetivo

Configuração

TX: $memory13<CR><LF>

RX: $34.45<CR><LF>

Enviar o comando memory mais a posição de memória a um equipamento e extrair o valor numérico da resposta

ID: 1 (um)

TX: $memory%u/r/n

RX: (24%f)0D*1

N1/B1: 1 (um, valores TX)

N2/B2: 1 (um, ID do comando)

Write Tag: 13

N1/B1: 0 (zero, envia e recebe comando)

N2/B2: 1 (um, ID do comando)

Read Tag: 34.45

 

O pacote TX requer a configuração de uma posição de memória. Para isto é montado o pacote TX com a inserção de um campo variável %u, a ser definido via escrita do Tag com o parâmetro N1/B1 igual a 1 (um, valores TX). Após preencher o campo variável %u com um valor numérico, neste exemplo o valor 13, pode-se finalmente transmitir o pacote TX ao equipamento no formato "$" + "memory" + "13" + /r (byte CR 0x0D) + /n (byte LF 0x0A).

O pacote RX é montado com o formato "(24" (inicializador não incluso "$") + "%f" + ")0D*1" (terminador não incluso CR 0x0D + descarte do byte LF 0x0A que vem a seguir), em que o parâmetro %f extrai os dados no formato numérico real.

Exemplo de utilização

Protocolo

Objetivo

Configuração

TX: #GetData<CR><LF>

RX: #12;452;75<CR><LF>

Enviar o comando #GetData a um equipamento e extrair três valores numéricos da resposta

ID: 1 (um)

TX: #GetData/r/n

RX: (23%u;%u;%u)0D*1

N1/B1: 0 (zero, envia e recebe comando)

N2/B2: 1 (um, ID do comando)

Read TagBloco:

Elemento 1: 12

Elemento 2: 452

Elemento 3: 75

 

O pacote TX é montado para enviar o comando GetData conforme a estrutura do protocolo de um equipamento, ou seja, utilizando "#" + "GetData" + /r (byte CR 0x0D) + /n (byte LF 0x0A).

O pacote RX é montado com o formato "(23" (inicializador não incluso "#") + "%u" + ";" + "%u" + ";" + "%u" + ")0D*1" (terminador não incluso CR 0x0D + descarte do byte LF 0x0A que vem a seguir), em que são extraídos os três formatos %u através de um Tag Bloco com três Elementos, um para cada formato %u.

Exemplo de utilização

Protocolo

Objetivo

Configuração

TX: <STX>DeviceName<ETX>

RX: <STX>Personal Computer

<ETX>

Enviar o comando DeviceName a um equipamento e extrair o valor no formato String da resposta

ID: 1 (um)

TX: /h02DeviceName/h03

RX: (02%s)03

N1/B1: 0 (zero, envia e recebe comando)

N2/B2: 1 (um, ID do comando)

Read Tag: "Personal Computer"

 

O pacote TX é montado para enviar o comando DeviceName conforme a estrutura do protocolo de um equipamento, ou seja, utilizando /h02 (byte STX 0x02) + "DeviceName" + /h03 (byte ETX 0x03).

O pacote RX é montado com o formato "(02" (inicializador não incluso STX 0x02) + "%s" + ")03" (terminador não incluso ETX 0x03), em que o parâmetro %s extrai os dados no formato String.

Exemplo de utilização

Protocolo

Objetivo

Configuração

TX: <STX>DeviceName<ETX>

RX: <STX>Personal Computer

<ETX>

Enviar o comando DeviceName a um equipamento e extrair uma substring do valor da resposta

ID: 1 (um)

TX: /h02DeviceName/h03

RX: (02%@r#as)03

N1/B1: 0 (zero, envia e recebe comando)

N2/B2: 1 (um, ID do comando)

Read Tag: "son"

O pacote TX é montado para enviar o comando DeviceName conforme a estrutura do protocolo de um equipamento, ou seja, utilizando /h02 (byte STX 0x02) + "DeviceName" + /h03 (byte ETX 0x03).

O pacote RX é montado com o formato "(02" (inicializador não incluso STX 0x02) + "%@r#as" + ")03" (terminador não incluso ETX 0x03), em que o parâmetro %@r#as extrai uma substring entre o caractere inicial "r" e o caractere final "a" do valor "Personal Computer", resultando na substring "son".

Esta página foi útil?