From 38309a2e4afecdd1546120019437a7093513944d Mon Sep 17 00:00:00 2001 From: schodet Date: Sat, 17 Apr 2004 08:03:09 +0000 Subject: SerialStdio testé (en écriture au moins). --- 2004/i/nono/src/serial/Makefile.defs | 2 +- 2004/i/nono/src/serial/serial.cc | 9 +++------ 2004/i/nono/src/serial/serial_dev.cc | 3 ++- 2004/i/nono/src/serial/test_serial.cc | 11 ++++++++--- 4 files changed, 14 insertions(+), 11 deletions(-) (limited to '2004/i/nono/src') diff --git a/2004/i/nono/src/serial/Makefile.defs b/2004/i/nono/src/serial/Makefile.defs index 8259620..ca968f0 100644 --- a/2004/i/nono/src/serial/Makefile.defs +++ b/2004/i/nono/src/serial/Makefile.defs @@ -1,7 +1,7 @@ LIBS += serial.a TARGETS += test_serial test_serial_SOURCES = test_serial.cc serial.a erreur.a -serial_a_SOURCES = serial.cc serial_base.cc serial_dev.cc +serial_a_SOURCES = serial.cc serial_base.cc serial_dev.cc serial_stdio.cc serial.a: ${serial_a_SOURCES:%.cc=serial.a(%.o)} diff --git a/2004/i/nono/src/serial/serial.cc b/2004/i/nono/src/serial/serial.cc index c5f671e..861dccf 100644 --- a/2004/i/nono/src/serial/serial.cc +++ b/2004/i/nono/src/serial/serial.cc @@ -24,6 +24,7 @@ // }}} #include "serial.h" #include "serial_dev.h" +#include "serial_stdio.h" /// Constructeur. Serial::Serial (bool blocking) @@ -45,18 +46,14 @@ Serial::open (const char *ttyname, int speed/*0*/) { close (); if (ttyname[0] == '-' && ttyname[1] == '\0') - { - // TODO - } + sb_ = new SerialStdio (blocking_); else if (ttyname[0] == '|') { // TODO } else - { sb_ = new SerialDev (blocking_); - sb_->open (ttyname, speed); - } + sb_->open (ttyname, speed); } /// Ferme le port série, appellé automatiquement dans le destructeur. diff --git a/2004/i/nono/src/serial/serial_dev.cc b/2004/i/nono/src/serial/serial_dev.cc index 7baa9d8..e427050 100644 --- a/2004/i/nono/src/serial/serial_dev.cc +++ b/2004/i/nono/src/serial/serial_dev.cc @@ -24,6 +24,7 @@ // }}} #include "serial_dev.h" #include "erreur/erreur.h" +#include "utils/errno_exception.h" #include @@ -47,7 +48,7 @@ SerialDev::open (const char *ttyname, int speed/*0*/) // Ouvre le port série. fdIn_ = ::open (ttyname, O_RDWR | O_NOCTTY | O_NONBLOCK); if (fdIn_ < 0) - throw ErreurFatale ("Erreur d'ouverture du port série.\n"); + throw errno_exception (ttyname, errno); // Rendre le port série asynchrone. //fcntl (fd_, F_SETFL, FASYNC); // Sauver la configuration courante du port série. diff --git a/2004/i/nono/src/serial/test_serial.cc b/2004/i/nono/src/serial/test_serial.cc index 7404997..2395f0e 100644 --- a/2004/i/nono/src/serial/test_serial.cc +++ b/2004/i/nono/src/serial/test_serial.cc @@ -28,12 +28,17 @@ #include int -main (void) +main (int argc, char **argv) { try { + if (argc != 2) + { + std::cerr << argv[0] << " ttyname" << std::endl; + return 1; + } Serial s; - s.open ("/dev/tty00"); + s.open (argv[1]); s.write ("!g\r", 3); sleep (1); s.write ("!v0303\r", 7); @@ -42,7 +47,7 @@ main (void) } catch (Erreur &e) { - cerr << e.what (); + cerr << e.what () << std::endl; return 1; } } -- cgit v1.2.3