Programma C per leggere periferica USB

di il
13 risposte

Programma C per leggere periferica USB

Buonasera a tutti, innanzitutto complimenti per il forum, lo trovo molto ricco e completo purtroppo però non ho trovato una soluzione al mio problema su nessuna discussione: devo scrivere un programma per leggere dei dati ricevuti da un'antenna collegata al pc tramite usb. Leggendo un po' in giro mi pare di aver capito che questa periferica non può essere letta come una normale chiavetta perché i dati vengono aggiornati continuamente (mi sembra si chiamino report giusto?) Ho cercato delle funzioni apposite per leggere questi report ma non ho trovato niente di utile, e oltre tutto non ho capito come bene come fare per accedere all'antenna tramite il programma..Sapete darmi una mano?? Grazie in anticipo e buona serata!

13 Risposte

  • Re: Programma C per leggere periferica USB

    No, i report non c'entrano nulla ...

    In ogni caso, dipende dalla periferica in questione. Se si collega via USB emulando una seriale devi semplicemente aprire la porta COM corrispondente e comunicare come per un qualsiasi device seriale.
  • Re: Programma C per leggere periferica USB

    Perfetto..
    Sì esatto si collega emulando una seriale, però devo essere sincero che non ho mai fatto una cosa del genere e non so dove mettere le mani. Sapevo che i device quali chiavette possono essere aperti come fossero dei file, ma una periferica di questo genere no per il fatto che non ha dei file statici. Io so che protocollo usa per comunicare ma non so come leggerla. Gentilmente potresti spiegarmi? Come apro la porta COM dal programma e come faccio a leggere questi dati?
    Ah non so se serve dirtelo ma devo farlo su un windows
  • Re: Programma C per leggere periferica USB

    Quale protocollo usa?
    Per usare la seriale in win32 puoi usare le api, esistono migliaia di esempi con google
  • Re: Programma C per leggere periferica USB

    Usa il protocollo mavlink..
    in realtà ho cercato parecchio ieri sera e ho trovato esempi solo per Unix, mi puoi spiegare per favore come usare le api e dove trovo quelle che mi servono?
  • Re: Programma C per leggere periferica USB

    Le api soni CreateFile WriteFile ReadFile CloseHandle.
  • Re: Programma C per leggere periferica USB

    Allora la cosa è un po' più complessa ...

    Devi usare una libreria per Windows in cui è implementato il protocollo che vuoi urare (MAVLink) e solo dopo puoi cominciare a scrivere codice, richiamando le funzioni della libreria.
  • Re: Programma C per leggere periferica USB

    Ok e queste librerie dove posso trovarle? Le devo creare?
  • Re: Programma C per leggere periferica USB

    Non le devi creare ... devi cercarle già pronte per Windows. E' un protocollo fatto appositamente da un tizio che ha scritto tutto. Quindi devi informarti in giro su internet e contattare chi l'ha usato.
  • Re: Programma C per leggere periferica USB

    Non ne capisco di Windows,ma studiando i sistemi operativi ho letto che Windows ha una moltitudine di chiamate di sistema rispetto alle 100 circa dei SO conformi allo standard POSIX. Possibile che non ne esiste qualcuna volta ad interagire con le USB?
  • Re: Programma C per leggere periferica USB

    Non ne capisco di Windows,ma studiando i sistemi operativi ho letto che Windows ha una moltitudine di chiamate di sistema rispetto alle 100 circa dei SO conformi allo standard POSIX. Possibile che non ne esiste qualcuna volta ad interagire con le USB?
    Prima di tutto non credo che nello standard POSIX ci siano delle chiamate di sistema per accedere all'USB e quindi neanche Windows ce le ha.
    Il problema qui non è l'USB: il dispositivo lavora con un'emulazione seriale quindi sarebbe sufficiente aprire la seriale con CreateFile, spedire e ricevere con WriteFile e ReadFile e infine chiudere con CloseHandle.
    Il problema è il protocollo, ovvero cosa spedire e ricevere, in quale formato!
  • Re: Programma C per leggere periferica USB

    Infatti ... la questione USB/seriale era superata ... Il problema è il protocollo MAVLink citato da chi ha aperto il thread.
  • Re: Programma C per leggere periferica USB

    Non volevo dire che POSIX è migliore di Windows. Pensavo che tra WIN32 ci fosse qualcosa per gestire le usb,tutto qui. Non so aiutarti sul protocollo in Windows,quindi mi faccio indietro.
  • Re: Programma C per leggere periferica USB

    Il protocollo MAVLink riguarda i droni ed è stato creato da un tizio (Lorenz Meier). E' un semplice scambio di dati strutturati e le specifiche con degli esempi sono disponibili per Linux e probabilmente anche per Windows.

    http://qgroundcontrol.org/mavlink/star

    Da XP SP2 in poi, con Windows è possibile accedere alle funzioni WinUSB per le periferiche che utilizzano il driver winusb.sys

    WinUSB


    ma non è quello che serve nel caso in questione che, ripeto, riguarda solo l'applicazione di un protocollo "applicativo" per lo scambio di dati/comandi tra l'applicazione C e il dispositivo seriale.
Devi accedere o registrarti per scrivere nel forum
13 risposte