Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Calcolo OR esclusivo (XOR) di una stringa - pacchetto dati in VB

    Buongiorno a tutti e grazie in anticipo a chi mi possa aiutare, in pratica come dal titolo devo calcolare lo xor di una serie di caratteri al fine di trovare il CHK della stringa stessa, Il linguaggio di programmazione di un registraore di cassa RCH cita la seguetne frase:

    --<CHK> = ww -> checksum messaggio (alfa numerico)
    Significato:
    Calcolato come OR ESCLUSIVO (XOR) di tutto il pacchetto ad eccezione
    del campo ETX ma includendo il campo STX. Il risultato viene
    convertito in due caratteri ascii standard rappresentanti il checksum
    in formato esadecimale.
    Es. Checksum calcolato = 5E hex ----> <CHK> = ‘5’ + ‘E’
    in pratica ho la seguuente stringa :
    STX 01003N=C1203 ETX il CHK è 203 ma come ci arrivo ? devo realizzare una funzione
    in VB ma non trovo nulla che mi posssa aiutare, ho contattato RCH, ma non rispondono.
    Grazie a chiunque mi possa aiutare.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,886
    Quote Originariamente inviata da devil1518 Visualizza il messaggio
    in VB ma non trovo nulla che mi posssa aiutare.
    Parliamo di VB6 o di VB.NET?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Altri link...

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    235
    A parte che non hai detto con che linguaggio devi lavorare (come ti ha detto Marco Alka), ma l'esempio che hai proposto è riportato nella documentazione ??
    STX 01003N=C1203 ETX il CHK è 203
    quel 203 è decimale ? cioè 0xCB ??
    Facendo uno XOR sulla stringa di esempio a me il checksum risulta zero (stx incluso ed etx escluso), per cui non capisco quel 203 dove lo hai preso, io sul manuale non l'ho trovato.
    Ultima modifica di SirJo; 01-04-2021 a 14:15

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    235
    Ok, ora ho capito, hai fatto una confusione bestiale.
    Facciamo finta che il comando che tu devi inviare sia 01003N=C12
    Inizializza un variabile (di tipo intero) a 2 (che è il codice del STX)
    Per ogni carattere della tua stringa ti devi ricavare il codice ascii
    (nel nostro esempio quindi 48 49 48 48 51 78 61 67 49 50)
    Partendo quindi dal valore 2 fai un XOR con tutti i codici ascii ricavati, troverai alla fine il valore 3
    A questo punto devi trasformare il valore 3 in una stringa esadecimale composta da due caratteri, cioè 03 che andrai ad aggiungere alla tua stringa da inviare, seguita poi dal ETX, ed ecco che per magia ti uscirà la stringa STX 01003N=C1203 ETX

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,347
    Concordo SirJo, una confusione enorme ...

    codice:
        Dim s As String
        Dim crc As Integer
        Dim i As Integer
        
        crc = 2
        s = "01003N=C12"
        For i = 1 To Len(s)
            crc = crc Xor Asc(Mid(s, i, 1))
        Next i
        s = s & Right("0" & Hex(crc), 2)
        
        MsgBox s
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved.