diff options
Diffstat (limited to 'tools/solarmeter/solarmeter.c')
-rw-r--r-- | tools/solarmeter/solarmeter.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/tools/solarmeter/solarmeter.c b/tools/solarmeter/solarmeter.c index c4cb486..64bca8f 100644 --- a/tools/solarmeter/solarmeter.c +++ b/tools/solarmeter/solarmeter.c @@ -1,5 +1,7 @@ #include <stdio.h> #include <unistd.h> +#include <fcntl.h> +#include <stdlib.h> // data via stdin // begin = 255 followed by 9 byte 8 mal i + 1 mal u @@ -15,8 +17,15 @@ int main (int argc, char* argv[]) float pow; float pow_sum; int i; + int n=0; + unsigned char *outbuffer; + int outfile_fd = -1; + + if (argc > 1) + { + outfile_fd = open(argv[1], O_WRONLY | O_CREAT | O_APPEND, 0666); + } - // printf ("blah\n"); while (read (STDIN_FILENO, &tmp, 1) == 1) { if (tmp == 255) @@ -33,11 +42,21 @@ int main (int argc, char* argv[]) pow = (buffer[i] / 2.099f) * (buffer[8] * UFAC); printf (" %6.2fmW", pow); pow_sum += pow; + if (outfile_fd > 0) + { + n = asprintf(&outbuffer, "%d %6.2f %6.2f\n", i, buffer[8]*UFAC, buffer[i]/2.099f); + write(outfile_fd, outbuffer , n); + free(outbuffer); + } } + if (outfile_fd > 0) + write(outfile_fd, "\n" , 1); printf (" %6.2fmW", pow_sum); printf ("\r"); } } printf ("\n"); + if (outfile_fd > 0) + close(outfile_fd); return 0; } |