From b47e467d21cec6ee688b4407d3ec54fa33e67ba6 Mon Sep 17 00:00:00 2001 From: phyto Date: Thu, 28 Mar 2019 12:04:40 +0100 Subject: [PATCH] first real run on the phytotron --- Makefile | 4 ++- essai.c | 50 +++++++++++++++++++++++++++++-------- serial/Makefile | 8 ++++-- serial/essai.sh | 2 +- simulator/rdtemp/rdtemp.ino | 4 +-- 5 files changed, 51 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index 8f8bf2d..fd68c20 100644 --- a/Makefile +++ b/Makefile @@ -10,8 +10,10 @@ all: essai fake-values # --------------------------------------------- +O = serial/serial.o serial/funcs.o + essai: essai.c Makefile $(CLIB) - $(CC) ${CCOPT} $< $(CLIB) -lncurses -o $@ + $(CC) ${CCOPT} $< $(CLIB) ${O} -lncurses -o $@ fake-values: fake-values.c Makefile $(CLIB) $(CC) ${CCOPT} $< $(CLIB) -o $@ diff --git a/essai.c b/essai.c index 4f1e175..4ccb172 100644 --- a/essai.c +++ b/essai.c @@ -11,26 +11,36 @@ #include "core/utils.h" #include "core/sysmetrics.h" +#include "serial/serial.h" #include "viz/curses/ecran.h" int verbosity; /* --------------------------------------------------------------- */ -int affiche_loadavg(int nbloops, int k) +int affiche_valeurs(int sfd, int nbloops) { int idx, foo; -float lds[3]; +char ligne[200], buff[200]; +float datas[4]; for (idx=0; idx %d\n", foo); + foo = getline_to(sfd, ligne, 100, 0); +#if DEBUG_LEVEL + if (foo) fprintf(stderr, "get values -> %d\n", foo); +#endif - foo = aff7segs_float(stdscr, 4, 9, lds[0]); - foo = aff7segs_float(stdscr, 14, 9, lds[1]); - foo = aff7segs_float(stdscr, 24, 9, lds[2]); + foo = parse4values(ligne, 'T', datas); +#if DEBUG_LEVEL + if (foo) fprintf(stderr, "parse -> %d\n", foo); +#endif + + values2temperature(datas); + + foo = aff7segs_float(stdscr, 3, 5, datas[0]); + foo = aff7segs_float(stdscr, 14, 5, datas[1]); + foo = aff7segs_float(stdscr, 25, 5, datas[2]); - usleep(200*1000); } return 0; } @@ -42,25 +52,45 @@ fprintf(stderr, "end of pid %d\n", getpid()); exit(0); } /* --------------------------------------------------------------- */ +void help(int k) +{ +puts("options : "); +puts("\t-d\tserial device to read."); +puts("\t-v\tincrease verbosity."); +exit(0); +} +/* --------------------------------------------------------------- */ int main(int argc, char *argv[]) { int opt, foo; +int serial_in; +char *device = "/dev/ttyACM0"; -while ((opt = getopt(argc, argv, "v")) != -1) { +while ((opt = getopt(argc, argv, "d:hv")) != -1) { switch (opt) { + case 'd': device = optarg; break; + case 'h': help(0); break; case 'v': verbosity++; break; default: break; } } +serial_in = prepare_UART(device, 9600); +if (serial_in < 0) { + fprintf(stderr, "%s : open device : error %d on %s\n", + argv[0], serial_in, device); + exit(1); + } + + initscr(); nonl(); cbreak(); noecho(); keypad(stdscr, TRUE); /* acces aux touches 'curseur' */ fond_ecran(" Demonstrator "); -affiche_loadavg(10000, 0); +affiche_valeurs(serial_in, 10000); /* * plop, on a fini, il faut restaurer la console diff --git a/serial/Makefile b/serial/Makefile index 6448e47..8ceb6ee 100644 --- a/serial/Makefile +++ b/serial/Makefile @@ -1,5 +1,7 @@ OPT = -Wall -DDEBUG_LEVEL=0 +OBJS = serial.o funcs.o +# --------------------------------------------------- serial.o: serial.c serial.h Makefile gcc ${OPT} -c $< @@ -7,6 +9,8 @@ serial.o: serial.c serial.h Makefile funcs.o: funcs.c serial.h Makefile gcc ${OPT} -c $< -t: t.c serial.o funcs.o Makefile - gcc ${OPT} $< serial.o funcs.o -o $@ +# --------------------------------------------------- + +t: t.c Makefile ${OBJS} + gcc ${OPT} $< ${OBJS} -o $@ diff --git a/serial/essai.sh b/serial/essai.sh index 7ad73b6..f40b101 100755 --- a/serial/essai.sh +++ b/serial/essai.sh @@ -5,7 +5,7 @@ DATAFILE="foo.dat" TMPFILE="/tmp/dd2data" IMAGE="graphe.png" -NB_READ=100 +NB_READ=10 ./t -n ${NB_READ} -d ${DEVICE} | tee -a ${DATAFILE} diff --git a/simulator/rdtemp/rdtemp.ino b/simulator/rdtemp/rdtemp.ino index d5ebe76..81695d7 100644 --- a/simulator/rdtemp/rdtemp.ino +++ b/simulator/rdtemp/rdtemp.ino @@ -4,7 +4,7 @@ /* -------------------------------------------------- */ #define NBVAL 4 -#define DELAI 2000 +#define DELAI 5000 /* -------------------------------------------------- */ void setup() { @@ -32,9 +32,7 @@ void updatevalues(short *ptr) int foo; digitalWrite(LED_BUILTIN, HIGH); for (foo=0; foo