User:Jenerps

Protocolo de Programação XVM


Todos os pacotes enviados para e pelo dispositivo começam com o caractere> (Maior) e terminam com a string <[CR] [LF] (Menor e Enter (caracteres com valor ASCII 13 e 10)).

As mensagens do protocolo XVM são compostas de quatro partes que são delimitadas por uma ";" (Ponto e vírgula), são as seguintes partes:

  1. Mensagem;
  2. ID = número do ID do dispositivo;
  3. # ID da mensagem;
  4. * Checksum;

Mensagens


As mensagens comummente começam com as letras S, Q, R ou C dependendo da ação a ser tomada e seguida das letras do comando. Em seguida segue uma série de caracteres variáveis que são os parâmetros do comando.
A primeira letra pode ser:

S = Set; é usado para gravar parâmetros no dispositivo.
Q = Query; Ele é usado para perguntar o valor dos parâmetros para o dispositivo.
C = clear; é usado para gravar variáveis em zero.
R = Response; indica a resposta do dispositivo a um comando S, Q ou C.


ID do dispositivo


O Equipamento sai de fábrica com um ID; que por default é os últimos 4 dígitos do seu numero serial.

  • O ID que é um identificador que pode ser modificado pelo usuário.
  • Ele é um número hexadecimal de 4 dígitos responsavel por permitir que você a reconheça o equipamento dentro da sua platafroma.
  • Alguns recursos especiais do equipamento, são acessados incluindo uma carácter apos o número de identificação.


Número da mensagem


O protocolo dos equipamentos Virloc sao baseados em pergunta e resposta, as mensagens são numeradas para identificar que a resposta pertence a uma determinada pergunta enviada. Quando o Virloc envia uma reporte gerado por um evento, a mensagem carrega um número identificador de 0x0001 a 0x7FFF e a plataforma em resposta a essa mensagem deve enviar uma confirmação (ACK) com o mesmo número de mensagem. Se a plataforma enviar um comando para o Virloc, a mensagem enviada deverá ter um número de 0x8000 para o 0xFFFF e o Virloc responderá a essa mensagem conforme apropriado, mas terá o mesmo número de mensagem que a gerou.

Check SUM


Em formato hexadecimal que é calculado por um XOR OR exclusivo com todos os códigos ASCII de caracteres que compõem a mensagem começando com ">" e terminando no último ";" incluído, mas não incluindo, o indicador "*" de Check SUM.

Cálculo de Check SUM


Exemplo em C:

/* get chksum */
 int r;<br>
 unsigned char chksum;
 
 chksum = 0;

 for (r = 0; r < strlen(modem.rxbuff); r++)
 {
 if ((modem.rxbuff[r] == '*') &&(modem.rxbuff[r-1] == ';'))
 break;
 else
 chksum = chksum ^ modem.rxbuff[r];
 }


Exemplo em C #:

public static string calculateChecksum(string data)
{
     int r;
     int calc = 0;
     byte caracter;
     string calculated_checksum;
 
     for (r = 0; r < data.Length; r++)
     {
       if ((data[r] == '*') && (data[r-1] == ';'))
         break;
     caracter = (byte)data[r];
     calc = calc ^ (byte)caracter;
     }
     calculated_checksum = calc.ToString("X");
     return calculated_checksum;
}


Se o check Sum calculado corresponder à recebida e não for uma mensagem de resposta, você deverá confirmar a recepção correta respondendo à seguinte mensagem:
> ACK; ID = 1017; # 0093; * 52 <[CR] [LF]

Onde:

> ACK Identificador de tipo de mensagem 
;
ID = 1017 ID do equipamento
; 
# 0093 Número da mensagem (o mesmo que foi recebido)
; 
* 52 check Sum desta mensagem
< Fim da mensagem
[CR] [LF] Fim da cadeia


Para determinar que não é uma mensagem de resposta, basta comparar que o número da mensagem recebida é menor que 0x8000. Isso ocorre porque as mensagens geradas pelo Virlocs têm um intervalo de 0x0000 a 0x7FFF e as geradas a partir do PC devem ter um intervalo de valores de 0x8000 a 0xFFFF. Se a recepção não for confirmada, o Virloc enviará a mensagem até XX vezes para cada tentativa de sessão de comunicação telefônica, ou seja, todas as mensagens devem ser respondidas.
Este protocolo é aquele usado por qualquer uma das mídias, com as quais todas as mensagens enviadas a ele serão respondidas com o número da mensagem correspondente, se as receberem bem. O dispositivo analisa a mensagem recebida, se for uma mensagem com resposta, responde com a mensagem correspondente e o número da mensagem igual ao recebido. Se a mensagem não tiver resposta, responda com> ACK; ID = 0003; # ABC0; * 2C <[CR] [LF].

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.