Pergunta

Eu estou comunicando com um dispositivo via serial através da classe SerialPort de .NET e com base de terceiros requisitos da especificação do dispositivo que eu preciso para calcular um "caráter de controle do bloco". A única informação que me disseram é que ele é um OU exclusivo operação (XOR) e deve ser realizada ao longo de todos os personagens.

Então, se eu tiver a string "Bob, 001" como seria um calcular a BCC?

Foi útil?

Solução

O mais provável é personagem baseado XOR. Você vai precisar de obter amostras de-los para verificar, mas a maioria das somas de verificação geralmente acabam em 0.

Assim, por uma soma de verificação XOR, você teria o pacote:

Bob,001X

onde X é a soma de verificação e, quando XOR todos os personagens juntos, você tinha mais provável obter 0.

Assim, para trabalho fora X, você apenas XOR todos os personagens em "Bob, 001". Isso é em virtude do fato de que N xor N é sempre 0, para qualquer N.

Agora, pode ser que X será de dois caracteres hexadecimais se tudo que você está autorizado a ter é alfanuméricos. É por isso que você precisa de dados tanto de amostra (para que possamos trabalhar com isso) ou uma especificação adequada (que deve ser fornecido pelo fabricante do dispositivo).

O é o dispositivo real que você está se referindo? Pode ser há informações na web que mostra como fazê-lo.

com base na atualização:

É uma Amadeus dispositivo PMS hospitalidade. Não todos eles dizem é que deve ser realizada sobre todos os caracteres. excluindo a STX e ETX.

Você vai precisar de alguns dados de exemplo para confirmar, mas é provável que um fluxo de dados algo como:

        Running
Data     ChkSum
======  =======
STX 02
B   42     42
o   6f     2d
b   62     4f
,   2c     63
0   30     53
0   30     63
1   31     52
4   52     00
ETX 03

A posição da soma de verificação pode variar e, de fato, é o cálculo pode variar muito embora isso seja muito menos provável. Eu não acho que muito mais pode ser feito sem dados de amostra ou mais informações do fornecedor. Uma busca rápida do Internet transformou-se há detalhes técnicos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top