Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    156

    [C] Riconoscere e trattare con stringhe binarie

    Salve,
    per diletto vorrei cimentarmi nella lettura di stringhe binarie che un dispositivo simil domitica mi rilascia via seriale o via tcp.

    Ho già sviluppato la parte server che riceve in tcp la stringa ma ora vorrei capire come poterla riconoscere (ovvero capire se è nel formato sotto specificato) e come poter estrapolare i dati.

    Mi spiego meglio nel datasheet dell'oggetto è data una struttura di questo tipo qui:

    && + A + B + 0x9845 + DATA + 0x7C + C + 0x7C + D + E \r\n

    && -> fissi (2byte)
    A -> valore esadecimale rappresentante la lunghezza dell'intera stringa (2byte)
    B -> ID dell'apparecchio (7byte)
    DATA -> dati che mi trasmette l'oggetto (da 0byte a 100byte)
    C -> stato della batteria (3byte)
    D -> valore fisso non è specificata la funzione (2byte)
    E -> checksum CRC16 (0xfffff) 2byte

    Quello che vorrei fare io è riconoscere una stringa che mi arriva nel formato sopra specificato (potrebbero arrivarmi anche altre stringhe di altri dispositivi in futuro) e poter salvarmi ogni dato in una variabile apposita.

    Potete aiutarmi?

    Grazie
    Matteo

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    Ma dov'è il problema? Non ho capito cosa vuoi sapere..hai tutti gli elementi che ti servono

    Potresti approcciare il problema in una maniera simile

    codice:
    typedef struct
    {
    char header[2];
    char A [2];
    //eccetera
    } LaStringa;
    
    LaStringa tutte_le_stringhe[MAX_STRINGHE];
    Dopodichè ti leggi la stringa carattere per carattere (ti ricordo che un carattere ascii misura un byte) e salvi i valori nella struttura dati, es
    codice:
    strncpy(tutte_le_stringhe[i].header,"&&",2);
    strncpy(tutte_le_stringhe[i].A,il_valore_che_hai_letto,2);
    //...
    Infine, per ottenere la dimensione del campo DATA, se ho capito bene il protocollo, ti basterà una semplice sottrazione tra la lunghezza totale della stringa (campo A) meno una costante, che sarebbe la somma di tutti gli altri campi di lunghezza nota a priori

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 © 2024 vBulletin Solutions, Inc. All rights reserved.