/dev/ttyACM0 mon amour

This commit is contained in:
tth 2018-12-29 02:43:12 +01:00
parent 73348c2339
commit c7053d9c30
3 changed files with 26 additions and 9 deletions

View File

@ -1,5 +1,20 @@
# Round Robin Database # Round Robin Database
Un grand classique du genre. Délicat à comprendre au début. Un grand classique du genre. Délicat à comprendre au début.
Les principes sous-jacents sont assez pointus, et leur mise en oeuvre
loin d'être évidente pour les newbies.
La lecture de la manpage `rrdtutorial` est indispensable.
## premier exemple
## et après ?

View File

@ -27,6 +27,10 @@ Il faut dire que les `serial devices` ont toujours étés un peu le
domaine de la magie noire. Mais quand même, coincer sur un `read` qui domaine de la magie noire. Mais quand même, coincer sur un `read` qui
ne bloque pas, c'est un peu ironique. ne bloque pas, c'est un peu ironique.
Après un peu plus d'investigation, j'en arrive à conclure qu'il y a
plein de subtilités entre les diverses variantes d'Arduino.

View File

@ -21,7 +21,7 @@ uart = open(dev, O_RDONLY | O_NOCTTY);
if (uart < 0) if (uart < 0)
{ {
perror("unable to open uart"); perror("unable to open uart");
return -1; exit(1);
} }
return uart; return uart;
} }
@ -33,24 +33,22 @@ int serial_in, foo;
unsigned char byte; unsigned char byte;
if (2 != argc) { if (2 != argc) {
fprintf(stderr, "device name ?\n"); fprintf(stderr, "give me a device name, please.\n");
return 2; return 2;
} }
serial_in = openserial(argv[1]); serial_in = openserial(argv[1]);
fprintf(stderr, "prepare uart -> %d\n", serial_in); fprintf(stderr, "openserial -> %d\n", serial_in);
if (serial_in < 0) {
exit(1);
}
for (;;) { for (;;) {
foo = read(serial_in, &byte, 1); foo = read(serial_in, &byte, 1);
if (1 != foo) { if (1 != foo) {
fprintf(stderr, "get byte : err is %d\n", errno); fprintf(stderr, "get byte : got %d, err is %d\n", foo, errno);
} }
else { else {
printf("%9ld %02x/%d\n", time(NULL), byte, byte); printf("%9ld $%02x ", time(NULL), byte);
if (isprint(byte)) putchar(byte);
puts("");
} }
} }