Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di taba93
    Registrato dal
    Oct 2007
    Messaggi
    83

    [C] Inviare e ricevere dati da porta usb

    ciao a tutti,
    ho un problema nell'invio e nella ricezione dei dati tramite protocollo usb in ambiente linux (precisamente ubuntu) con un microcontrollore.
    in pratica ho trovato e poi leggermente modificato questo codice in rete:

    codice:
        #include <stdio.h>   /* Standard input/output definitions */
        #include <string.h>  /* String function definitions */
        #include <unistd.h>  /* UNIX standard function definitions */
        #include <fcntl.h>   /* File control definitions */
        #include <errno.h>   /* Error number definitions */
        #include <termios.h> /* POSIX terminal control definitions */
    
    int main()
    {
          int fd; /* File descriptor for the port */
          fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);
          if (fd == -1)
          {
           /*
    	* Could not open the port.
    	*/
    
    	perror("open_port: Unable to open /dev/ttyUSB0 - ");
          }
          else
    	fcntl(fd, F_SETFL, 0);
    
        struct termios options;
    
        /*
         * Get the current options for the port...
         */
    
        tcgetattr(fd, &options);
    
        /*
         * Set the baud rates to 9600...
         */
    
        cfsetispeed(&options, B115200);
        cfsetospeed(&options, B115200);
        options.c_cflag &= ~CSIZE;
        options.c_cflag |= CS8;
        options.c_oflag &= ~OPOST; //raw output
    
        /*
         * Enable the receiver and set local mode...
         */
    
        options.c_cflag |= (CLOCAL | CREAD);
    
        /*
         * Set the new options for the port...
         */
    
        tcsetattr(fd, TCSANOW, &options);
    
        int n = write(fd, "f", 1);
        if (n < 0)
          fputs("write() of 1 byte failed!\n", stderr);
    
        close(fd);
    
    }
    il problema è molto probabilmente nel codice perchè se gli invio dei caratteri da hyperterminal su windows funziona perfettamente (e riesco anche a leggere le cose che mi interessano dalla porta)...qualcuno ha qualche idea? grazie

  2. #2
    La vedi come una seriale? Prova semplicemente a mandagli dei byte come fosse un file.

  3. #3
    Utente di HTML.it L'avatar di taba93
    Registrato dal
    Oct 2007
    Messaggi
    83
    e come dovrei modificare il mio codice? hai un'idea?
    grazie mille e buon anno!!!

    ciao

  4. #4
    Esistono dispositivi che si chiamano ttyUSB0??

  5. #5
    sì...se collego il mio microcontrollore col cavo usb al mio pc il nome del device che trovo è ttyUSB0!

  6. #6
    Dunque si tratta di una normale porta seriale e quindi si usa un normale protocollo seriale.
    Normalmente sotto linux sviluppo in freepascal e non in C. Per imparare a gestire una seriale potresti usare il programma cutecom (simile ad hyperteminal) e magari scaricarti i sorgenti in modo da vedere come si usa la seriale in C.

    Ciao ciao.

  7. #7
    Utente di HTML.it L'avatar di taba93
    Registrato dal
    Oct 2007
    Messaggi
    83
    il codice è troppo complesso per me e se lo utilizzo in modalità grafica mi permette di aprire solo /dev/ttyS0 /S1/S2/S3 e non ttyUSB0
    non so proprio cosa fare...

  8. #8
    Che genere di dispositivo devi controllare?

  9. #9
    Secondo me sarebbe meglio se consultassi un libro di device driver programming per linux..
    "Linux Device Drivers 3ed"
    "Essential Linux Device Drivers"
    "Writing Linux Device Drivers"

    In particolare la sezione Usb..
    Ciao..

  10. #10
    Originariamente inviato da denis76
    Che genere di dispositivo devi controllare?
    un microcontrollore! grazie anche a simo_us...proverò a controllare poi vi faccio sapere!

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