From 9379253d1635b32dbaf2a6f842d02bfc76c4b141 Mon Sep 17 00:00:00 2001 From: phyto Date: Wed, 3 Apr 2019 16:25:38 +0200 Subject: [PATCH] more debug --- essai.c | 21 +++++++++++++-------- serial/essai.sh | 6 +++--- serial/funcs.c | 30 +++++++++++++++++++++++++++--- serial/serial.h | 5 +++-- simulator/rdtemp/rdtemp.ino | 2 +- viz/curses/ecran.h | 1 + viz/curses/minidigits.c | 16 ++++++++++++++-- viz/curses/t.c | 7 ++++++- 8 files changed, 68 insertions(+), 20 deletions(-) diff --git a/essai.c b/essai.c index 4ccb172..2737aa3 100644 --- a/essai.c +++ b/essai.c @@ -20,27 +20,32 @@ int verbosity; int affiche_valeurs(int sfd, int nbloops) { int idx, foo; -char ligne[200], buff[200]; -float datas[4]; +char ligne[200]; +int Idatas[4]; +float Fdatas[4]; for (idx=0; idx %d\n", foo); #endif - foo = parse4values(ligne, 'T', datas); + foo = parse4_Ivalues(ligne, 'T', Idatas); #if DEBUG_LEVEL - if (foo) fprintf(stderr, "parse -> %d\n", foo); + if (foo) fprintf(stderr, "parse I val -> %d\n", foo); #endif - values2temperature(datas); + values2temperature(Idatas, Fdatas); - foo = aff7segs_float(stdscr, 3, 5, datas[0]); - foo = aff7segs_float(stdscr, 14, 5, datas[1]); - foo = aff7segs_float(stdscr, 25, 5, datas[2]); + for (foo=0; foo<3; foo++) { + sprintf(ligne, "%4d", Idatas[foo]); + minidigit_affstr(stdscr, 3+(12*foo), 4, ligne); + aff7segs_float(stdscr, 3+(12*foo), 55, Fdatas[foo]); + } } return 0; } diff --git a/serial/essai.sh b/serial/essai.sh index f40b101..8c5fa5f 100755 --- a/serial/essai.sh +++ b/serial/essai.sh @@ -1,16 +1,16 @@ #!/bin/bash -DEVICE="/dev/ttyACM0" +DEVICE="/dev/ttyACM1" DATAFILE="foo.dat" TMPFILE="/tmp/dd2data" IMAGE="graphe.png" -NB_READ=10 +NB_READ=500 ./t -n ${NB_READ} -d ${DEVICE} | tee -a ${DATAFILE} gnuplot << __EOC__ -set term png size 1600,640 +set term png size 3200,640 set output "${IMAGE}" set grid set title "Temperature dans le Double Dragon 2" diff --git a/serial/funcs.c b/serial/funcs.c index d670534..00fcf43 100644 --- a/serial/funcs.c +++ b/serial/funcs.c @@ -52,16 +52,40 @@ return value; * Arduino ! * */ -int values2temperature(float array[4]) +int values2temperature(int raw[4], float array[4]) { int foo; for (foo=0; foo<4; foo++) { - array[foo] *= (1.1 / 1023.0 * 100.0); + array[foo] = (float)raw[foo] * (1.1 / 1023.0 * 100.0); } return 0; } /* ---------------------------------------------------------------- */ -int parse4values(char *line, char cflag, float array[4]) +int parse4_Ivalues(char *line, char cflag, int array[4]) +{ +int foo, raw[4]; + +if ( cflag != *line ) { + if (verbosity) { + fprintf(stderr, "%s : line[0] 0x%x bad\n", + __func__, *line); + } + return -776; + } + +foo = sscanf(line+1, "%d %d %d %d", raw, raw+1, raw+2, raw+3); +if (4 != foo) { + fprintf(stderr, "%s : sscanf -> %d\n", __func__, foo); + return -665; + } + +memcpy(array, raw, 4*sizeof(int)); + +return 4; +} +/* ---------------------------------------------------------------- */ + +int parse4_Fvalues(char *line, char cflag, float array[4]) { float ftmp[4]; int foo; diff --git a/serial/serial.h b/serial/serial.h index bf6977c..2e68924 100644 --- a/serial/serial.h +++ b/serial/serial.h @@ -17,8 +17,9 @@ int getline_to(int fd, char *where, int szm, int to_ms); /* auxiliary and test functions */ int parseXvalue(char *asciidatas, char id); -int values2temperature(float array[4]); +int values2temperature(int raw[4], float array[4]); -int parse4values(char *line, char cflag, float array[4]); +int parse4_Ivalues(char *line, char cflag, int array[4]); +int parse4_Fvalues(char *line, char cflag, float array[4]); diff --git a/simulator/rdtemp/rdtemp.ino b/simulator/rdtemp/rdtemp.ino index 81695d7..cf22f55 100644 --- a/simulator/rdtemp/rdtemp.ino +++ b/simulator/rdtemp/rdtemp.ino @@ -33,7 +33,7 @@ void updatevalues(short *ptr) digitalWrite(LED_BUILTIN, HIGH); for (foo=0; foo