Domanda

sto comunicando con un dispositivo via seriale tramite la classe SerialPort di .NET e basata su requisiti di specifica dispositivo di terze parti ho bisogno di calcolare un "carattere di controllo blocco". L'unica informazione che è stato detto è che si tratta di un OR esclusivo (XOR) e deve essere eseguita su tutti i caratteri.

Quindi, se ho la stringa "Bob, 001" come si potrebbe calcolare la BCC?

È stato utile?

Soluzione

Molto probabilmente è XOR a carattere. Avrete bisogno di ottenere campioni di loro di verificare ma la maggior parte checksum di solito finiscono a 0.

Quindi, per un checksum XOR, si avrebbe il pacchetto:

Bob,001X

dove X è il checksum e, quando si XOR tutti quei personaggi insieme, si sarebbe più probabile ottenere 0.

Quindi, per lavorare fuori X, basta XOR tutti i personaggi di "Bob, 001". Questo è in virtù del fatto che N xor N è sempre 0, per ogni N.

Ora può essere che X sarà di due caratteri esadecimali se tutto ciò che è permesso di avere è alfanumerici. Ecco perché è necessario sia i dati di esempio (in modo che possiamo lavorare fuori), o una specifica adeguata (che dovrebbe essere fornito dal produttore del dispositivo).

Cosa è il dispositivo reale ti riferisci? Può essere c'è informazioni sul web che mostra come farlo.

sulla base degli:

  

Si tratta di un dispositivo di ospitalità PMS Amadeus. Non tutto quello che dicono è che deve essere eseguita su tutti i caratteri. escludendo la STX e ETX.

È necessario ottenere alcuni dati di esempio per confermare, ma è probabile che un flusso di dati qualcosa come:

        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

La posizione del checksum può variare e, in effetti, è il calcolo può variare anche se questo è molto meno probabile. Non credo molto di più può essere fatto senza dati di esempio o ulteriori informazioni da parte del fornitore. Una ricerca sommaria di Internet alzato nessun dettaglio tecnico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top