summaryrefslogtreecommitdiff
path: root/2004/i/nono
diff options
context:
space:
mode:
authorschodet2004-04-17 08:03:09 +0000
committerschodet2004-04-17 08:03:09 +0000
commit38309a2e4afecdd1546120019437a7093513944d (patch)
tree8cdaee9f43b42666f4c526678e79dba73520e22a /2004/i/nono
parent105698a1cc5bbfebe10b5219105b836a343b3c61 (diff)
SerialStdio testé (en écriture au moins).
Diffstat (limited to '2004/i/nono')
-rw-r--r--2004/i/nono/src/serial/Makefile.defs2
-rw-r--r--2004/i/nono/src/serial/serial.cc9
-rw-r--r--2004/i/nono/src/serial/serial_dev.cc3
-rw-r--r--2004/i/nono/src/serial/test_serial.cc11
4 files changed, 14 insertions, 11 deletions
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 <fcntl.h>
@@ -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 <iostream>
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;
}
}