Newsgroup: it.comp.os.linux.development
Titolo: Comunicare con la porta seriale

 cat "pippo" > /dev/ttyS0?
cat o echo?
E dall'altra parte come si fa a ricevere?
Grazie, Nicola.
-- 
______________________________
chi va pian va san e va lontan

Salve a tutti, qualcuno mi sa dire se esistono delle funzioni C per inviare
(e ricevere) dei caratteri dalla porta seriale, in linux o altro os?
(Sono sicuro che esistano, ma ho difficoltà a reperirle)
Grazie dell'aiuto
Ciao,
Luca

anni fą
io usavo le Greenlife
era una libreria per il compilatore MS o Borland
sotto DOS
avevano tuttoo
compreso kermit ,zmodem,terminale vt100
avevano API a basso medi alto livello
ottime per applicazioni industriali
prova a cercare su qualke motore
chissą forse esistono ancora

(e ricevere) dei caratteri dalla porta seriale, in linux o altro os?
fputc() 
fgetc()
non ti vanno bene?
O ti vuoi mettere a basso livello, e interagire con l'hardware?
-- 
           |Save our planet!
  Ciao     |Save wildlife;
  roberto  |For your E-MAIL use only recycled Bytes !!
           |roberto poggi  
rpo...@softhome.net

 
cat /dev/ttyS0 > 
cat /dev/ttyS0 > file
cat /dev/ttyS0 >> file
ciao, Andrea

 cat /dev/ttyS0 >> file
Grazie, funziona davvero :))
P.S. che facile !


 
Basta ricordarsi che in Unix/Linux tutto e` un file.
Per copiare file-1 su file-2 puoi fare
cat file-2 >file-2
Il fatto che uno dei due sia la porta seriale non fa
grosse differenze.
ciao, andrea

come fa il povero Pippo a settare
il baud rate
per quello che ci ha detto 
potrebbe volerci attaccare una 
fresa a controllo numerico
:c()

il baud rate
Con stty, ad esempio.


 wrote:

Basta prendere i sorgenti del pppd. La routine fondamentale e' veramente
banale:
---- SNIP HERE ------
    fp = open("/dev/ttyS0", O_RDONLY);
    if (fp == -1) {
        printf("Errore apertura seriale\n");
        exit(1);
    }
    tios.c_cflag     &= ~(CSIZE | CSTOPB | PARENB | CLOCAL);
    tios.c_cflag     |= CS8 | CREAD | HUPCL;
    tios.c_iflag      = IGNBRK | IGNPAR;
    tios.c_oflag      = 0;
    tios.c_lflag      = 0;
    tios.c_cc[VMIN]   = 1;
    tios.c_cc[VTIME]  = 0;
    switch (crtscts) {
    case 1:
        tios.c_cflag |= CRTSCTS;
        break;
    case -2:
        tios.c_iflag     |= IXON | IXOFF;
        tios.c_cc[VSTOP]  = 0x13;       /* DC3 = XOFF = ^S */
        tios.c_cc[VSTART] = 0x11;       /* DC1 = XON  = ^Q */
        break;
    case -1:
        tios.c_cflag &= ~CRTSCTS;
        break;
    default:
        break;
    }
    speed = B300;
    if (speed) {
        cfsetospeed (&tios, speed);
        cfsetispeed (&tios, speed);
    }
    else {
        speed = cfgetospeed(&tios);
        if (speed == B0)
            printf("Baud rate for ttyS0 is 0; need explicit baud rate");
    }
    if (tcsetattr(fp, TCSAFLUSH, &tios) < 0) {
        printf("Errore impostazione val\n");
        exit(1);
    }
---- SNIP HERE ------
Dopodiche' per usare la seriale (leggere e scrivere) si usano le normali
read e write.
bye
Gianluca


Era un discorso "filosofico".
Ho detto "non c'e` una grossa differenza" non "nessuna differenza".
Con cat pippo > /dev/ttyS0
tu copi il file pippo sulla porta seriale. Poi dall'altra parte
ci deve essere qualcosa in grado di riceverlo.
Il baud rate lo imposti con setserial.
Frese a controllo numerico non le ho mai maneggiate.
Apparecchietti personali per fare le glicemie, 
quelli che passa la mutua ai diabetici, si.
L'unica difficolta` e` trovare il cavetto di connessione.
ciao, andrea

Quando si approfondisce 
il NG
diventa proprio tosto 
complimenti a tutti 
;-)