From 8855ec007be456ef56c8b7b1211017ab87dd26bc Mon Sep 17 00:00:00 2001 From: Florian Loeffler Date: Tue, 3 May 2022 17:00:00 +0200 Subject: [PATCH] working on adding database query to retrieve display data --- .gitignore | 2 +- Makefile | 8 ++++++-- fbdash | Bin 29244 -> 0 bytes fbdash.c | 43 ++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 49 insertions(+), 4 deletions(-) delete mode 100755 fbdash diff --git a/.gitignore b/.gitignore index 87e8251..8db3ac8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -fb_dash +fbdash *.o *.swp diff --git a/Makefile b/Makefile index 88b1f46..5630eaa 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,11 @@ -CFLAGS=-g -Wall -lm +# Prerequisites: +# # sudo apt-get install libmariadb-dev +# # mariadb_config --libs +# +CFLAGS=-g -Wall -lm -L/usr/lib/arm-linux-gnueabihf -lmariadb -I/usr/include/mariadb fbdash: fbdash.c fblib fbfont - gcc fblib.o fbfont.o -o $@ $(CFLAGS) $< + gcc -o $@ fblib.o fbfont.o $< $(CFLAGS) fblib: fblib.o gcc -c fblib.c diff --git a/fbdash b/fbdash deleted file mode 100755 index 6dac5f169ba6cc6ebddbed6dd06d6adbee4b143d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29244 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 l0-pR_@a(&$?BdC!5PX+tIP#)f4R5B~fq{f?m #include #include #include +#include + #include "fblib.h" #define WIDTH 240 @@ -53,16 +56,54 @@ void draw() { - +/* char *text = "Hell O_o!"; render_string(fbp, ubuntu_mono_48, text, 15, 0, 255, 255, 255); render_string(fbp, ubuntu_mono_24, text, 15, 50, 255, 255, 255); render_string(fbp, basic_8, text, 15, 100, 255, 255, 255); +*/ +} + +void finish_with_error(MYSQL *con) +{ + fprintf(stderr, "%s\n", mysql_error(con)); + mysql_close(con); + exit(1); } // application entry point int main(int argc, char* argv[]) { + + printf("MySQL client version: %s\n", mysql_get_client_info()); + MYSQL *con = mysql_init(NULL); + if (con == NULL) { + fprintf(stderr, "%s\n", mysql_error(con)); + exit(1); + } + if (mysql_real_connect(con, "web-pi", "root", "root_passwd", NULL, 0, NULL, 0) == NULL) { + fprintf(stderr, "%s\n", mysql_error(con)); + mysql_close(con); + exit(1); + } + if (mysql_query(con, "SELECT * FROM grafanaData.readings ORDER BY time DESC LIMIT 1")) { + finish_with_error(con); + } + MYSQL_RES *result = mysql_store_result(con); + if (result == NULL) { + finish_with_error(con); + } + int num_fields = mysql_num_fields(result); + MYSQL_ROW row; + while ((row = mysql_fetch_row(result))) { + for(int i = 0; i < num_fields; i++) { + printf("%s ", row[i] ? row[i] : "NULL"); + } + printf("\n"); + } + mysql_free_result(result); + mysql_close(con); + int fbfd = 0; long int screensize = 0;