reading 4 values from arduino
This commit is contained in:
parent
dd359c9f82
commit
0826568604
2
.gitignore
vendored
2
.gitignore
vendored
@ -15,6 +15,6 @@ doc/*.ind
|
|||||||
*/*.dat
|
*/*.dat
|
||||||
|
|
||||||
rrdb/*.png
|
rrdb/*.png
|
||||||
|
serial/*.png
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,10 +1,25 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
DEVICE="/dev/ttyACM0"
|
DEVICE="/dev/ttyACM0"
|
||||||
|
DATAFILE="foo.dat"
|
||||||
|
IMAGE="graphe.png"
|
||||||
|
NB_READ=1000
|
||||||
|
|
||||||
|
./t -n ${NB_READ} -d ${DEVICE} | tee -a ${DATAFILE}
|
||||||
|
|
||||||
|
gnuplot << __EOC__
|
||||||
|
set term png size 1024,512
|
||||||
|
set output "${IMAGE}"
|
||||||
|
set grid
|
||||||
|
set xdata time
|
||||||
|
set timefmt "%s"
|
||||||
|
set format x "%H:%M:S"
|
||||||
|
plot "${DATAFILE}" using 1:2 title "foo" with lines, \
|
||||||
|
"${DATAFILE}" using 1:3 title "bar" with lines, \
|
||||||
|
"${DATAFILE}" using 1:4 title "quux" with lines, \
|
||||||
|
"${DATAFILE}" using 1:5 title "booz" with lines
|
||||||
|
__EOC__
|
||||||
|
|
||||||
|
# display ${IMAGE}
|
||||||
|
|
||||||
|
|
||||||
for p in {0..15}
|
|
||||||
do
|
|
||||||
echo pass $p
|
|
||||||
./t ${DEVICE} | tee -a foo.dat
|
|
||||||
sleep 8
|
|
||||||
done
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
|
|
||||||
@ -15,7 +16,7 @@ value=0;
|
|||||||
|
|
||||||
if ( cflag != *line ) {
|
if ( cflag != *line ) {
|
||||||
if (verbosity) {
|
if (verbosity) {
|
||||||
fprintf(stderr, "%s line[0] 0x%x bad\n",
|
fprintf(stderr, "%s : line[0] 0x%x bad\n",
|
||||||
__func__, *line);
|
__func__, *line);
|
||||||
}
|
}
|
||||||
return -777;
|
return -777;
|
||||||
@ -36,8 +37,26 @@ return value;
|
|||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
int parse4values(char *line, char cflag, float array[4])
|
int parse4values(char *line, char cflag, float array[4])
|
||||||
{
|
{
|
||||||
|
float ftmp[4];
|
||||||
|
int foo;
|
||||||
|
|
||||||
|
if ( cflag != *line ) {
|
||||||
|
if (verbosity) {
|
||||||
|
fprintf(stderr, "%s : line[0] 0x%x bad\n",
|
||||||
|
__func__, *line);
|
||||||
|
}
|
||||||
return -777;
|
return -777;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foo = sscanf(line+1, "%f %f %f %f", ftmp, ftmp+1, ftmp+2, ftmp+3);
|
||||||
|
if (4 != foo) {
|
||||||
|
fprintf(stderr, "%s : sscanf -> %d\n", __func__, foo);
|
||||||
|
return -666;
|
||||||
|
}
|
||||||
|
// fprintf(stderr, "\tV %f\n", ftmp[0]);
|
||||||
|
|
||||||
|
memcpy(array, ftmp, 4*sizeof(float));
|
||||||
|
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
|
@ -41,7 +41,7 @@ int baudbits;
|
|||||||
struct termios options;
|
struct termios options;
|
||||||
|
|
||||||
#if DEBUG_LEVEL
|
#if DEBUG_LEVEL
|
||||||
fprintf(stderr, "%s ( %s %d )\n", __func__, port, baudrate);
|
fprintf(stderr, ">>> %s ( %s %d )\n", __func__, port, baudrate);
|
||||||
#endif
|
#endif
|
||||||
// OPEN THE UART
|
// OPEN THE UART
|
||||||
// The flags (defined in fcntl.h):
|
// The flags (defined in fcntl.h):
|
||||||
@ -103,6 +103,8 @@ options.c_cc[VMIN] = 1; /* ask for blocking read */
|
|||||||
tcflush(uart0, TCIFLUSH);
|
tcflush(uart0, TCIFLUSH);
|
||||||
tcsetattr(uart0, TCSANOW, &options);
|
tcsetattr(uart0, TCSANOW, &options);
|
||||||
|
|
||||||
|
tcflush(uart0, TCIFLUSH); /* do it again, sam */
|
||||||
|
|
||||||
return uart0;
|
return uart0;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------- */
|
||||||
|
@ -24,6 +24,7 @@ int loop(int sfd, int iters)
|
|||||||
int count, foo;
|
int count, foo;
|
||||||
long temps;
|
long temps;
|
||||||
char ligne[200];
|
char ligne[200];
|
||||||
|
float datas[4];
|
||||||
|
|
||||||
for (count=0; count<iters; count++) {
|
for (count=0; count<iters; count++) {
|
||||||
foo = getline_to(sfd, ligne, 100, 0);
|
foo = getline_to(sfd, ligne, 100, 0);
|
||||||
@ -32,16 +33,18 @@ for (count=0; count<iters; count++) {
|
|||||||
fprintf(stderr, "getline #%d -> %d\n", count, foo);
|
fprintf(stderr, "getline #%d -> %d\n", count, foo);
|
||||||
fprintf(stderr, "%s\n", ligne);
|
fprintf(stderr, "%s\n", ligne);
|
||||||
}
|
}
|
||||||
foo = parseXvalue(ligne, 'X');
|
foo = parse4values(ligne, 'X', datas);
|
||||||
//
|
//
|
||||||
if (foo >= 0) {
|
if (foo >= 0) {
|
||||||
temps = time(NULL);
|
temps = time(NULL);
|
||||||
printf("%ld %d\n", temps, foo);
|
printf("%ld %f %f %f %f\n", temps,
|
||||||
|
datas[0], datas[1], datas[2], datas[3]);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fprintf(stderr, "%s: parse -> %d\n", __func__, foo);
|
fprintf(stderr, "%s: parse -> %d\n", __func__, foo);
|
||||||
}
|
}
|
||||||
|
if (verbosity) fprintf(stderr, "\n");
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
/* -------------------------------------------------- */
|
/* -------------------------------------------------- */
|
||||||
|
|
||||||
#define NBVAL 4
|
#define NBVAL 4
|
||||||
|
#define DELAI 1664
|
||||||
|
|
||||||
int values[NBVAL];
|
int values[NBVAL];
|
||||||
|
|
||||||
@ -48,7 +49,7 @@ void sendvalues(void)
|
|||||||
void loop() {
|
void loop() {
|
||||||
updatevalues();
|
updatevalues();
|
||||||
sendvalues();
|
sendvalues();
|
||||||
delay(800);
|
delay(DELAI);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------------- */
|
/* -------------------------------------------------- */
|
||||||
|
Loading…
Reference in New Issue
Block a user