Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    processare i singoli bit .c

    buona sera..cerco di realizzare un interfaccia midi con i pic.
    il software � in c e non ho trovato librerie per la gestione del midi.
    per ora mi basta ricevere e poi decodificare pochi comandi.
    il protocollo midi e costituito da 2 tipi di dati status e data.
    dopo il primo bit di start lo status adopera i 3 bit consecutivi per definire il tipo di comando a cui rivolgere il valore di data.
    Qualche suggerimento su come processare i byte con i bit che desidero?

  2. #2
    una soluzione puo essere shiftare i bit lasciando solo i primi 4??
    mannaggia sono a lavoro, come rientro a casa lo provo..

    #define MASCK 0b000011011/* MASCK i primi 4 bit gia shiftati di 4 bit per il confronto*/

    int status;/*dato da verificare */
    if(status>>4==MASCK)...

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Non ho ancora capito il problema e quindi non posso risponderti. Magari, se spieghi meglio...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Grazie..forse mi sono dilungato ☺
    in sintesi devo leggere solo i primi 4 bit di un byte

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quote Originariamente inviata da telluccio Visualizza il messaggio
    Grazie..forse mi sono dilungato ☺
    in sintesi devo leggere solo i primi 4 bit di un byte
    Esegui una AND tra la maschera 0F e il byte e quindi hai i tuoi 4 bit (un valore compreso tra 0 e 15) e ci fai quello che vuoi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    mi sta fuggendo qualcosa.. funzionerebbe se potessi fare l and solo sui primi 4 bit...invece l and agisce su tutto il byte.
    se sto sbagliando chiedo pazienza..sono autoditatta

  7. #7
    ho risolto.
    per verificare solo i primi 4 bit di un byte uso lo scorrimento di bit:
    if(status>>4==MASCK>>4) ...se i primi 4 bit sono uguali a MASCK processo il suo byte

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Forse non ci siamo capiti ... quando parli dei "primi" 4 bit, io intendo quelli più a destra, forse tu quelli più a sinistra.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    chiedo ancora pazienza..
    quindi se fossero i primi da destra con and potrei selezionare un byte solo dal valore dei suoi primi 4 bit?

  10. #10
    ps:
    if(status>>4==MASCK>>4)
    ho sbagliato perche sto provando il programma con windows e simulo l input in bit da tastiera

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.