Segue um exemplo, eu liguei um Arduino em meu Notebook, onde a porta /dev/ttyUSB0 permite me comunicar com o mesmo.
Executei os seguintes comandos num terminal:
$ stty -F /dev/ttyUSB0 9600
$ stty 9600
$ mkfifo fila
$ (stty raw; cat > fila) < /dev/ttyUSB0 &
O primeiro comando ajusta a velocidade da porta serial para 9600, o segundo comando ajusta a velocidade do terminal para 9600, o terceiro comando cria um pipe no Linux, o terceiro comando redireciona os dados que chegam pela serial para o pipe.
Se eu executar o comando "cat fila", terei a reposta abaixo:
$ cat fila
1
2
3
4
5
6
7
8
9
10
11
12
No Arduino eu criei um programa que gera uma onda triangular e envia pela serial, a seguir:
//
// Programa rampa
//
// Gera uma onda triangular e envia pela porta serial
//
// Gil Pinheiro - Maio/2012
//
int n=0;
void setup() {
Serial.begin(9600);
}
void loop() {
while( n < 255 ) {
n++;
Serial.println(n);
delay(100);
}
while( n > 0 ) {
n--;
Serial.println(n);
delay(100);
}
}