<< 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".