add bar for rpm and float for eff

This commit is contained in:
smayzy 2025-12-29 14:32:18 +01:00
parent f5aac64907
commit 27b17a39dc

View File

@ -18,13 +18,13 @@ const int digit_bitmaps[10][5][3] = {
{{1,1,1},{1,0,1},{1,1,1},{0,0,1},{1,1,1}} // 9
};
void get_fake_data(int *speed, int *power, int *bat, float *tq, int *rpm, int *eff, float *bat_temp, float *var_temp, float *mot_temp) {
void get_fake_data(int *speed, int *power, int *bat, float *tq, int *rpm, float *eff, float *bat_temp, float *var_temp, float *mot_temp) {
*speed = rand() % 201;
*power = rand() % 1251;
*bat = rand() % 101;
*tq = 1.8f + ((float)rand() / (float)RAND_MAX) * (3.5f - 1.8f);
*rpm = rand() % 6000;
*eff = rand() % 100;
*eff = (float)rand() / (float)RAND_MAX * 300.0f;
*bat_temp = (float)rand() / (float)RAND_MAX * 150.0f;
*var_temp = (float)rand() / (float)RAND_MAX * 150.0f;
*mot_temp = (float)rand() / (float)RAND_MAX * 150.0f;
@ -143,6 +143,31 @@ void win_float(WINDOW *lwin, float data, int digits) {
wrefresh(lwin);
}
void win_bar(WINDOW *lwin, int data, int data_max) {
int lwiny, lwinx;
getmaxyx(lwin, lwiny, lwinx);
win_clear(lwin);
int bar_width = lwinx - 4;
int bar_height = lwiny - 2;
int filled = (data * bar_width) / data_max;
for (int y = 1; y <= bar_height; y++) {
for (int x = 0; x < bar_width; x++) {
if (x < filled)
mvwaddch(lwin, y, 2 + x, ACS_CKBOARD);
}
}
char buf[16];
snprintf(buf, sizeof(buf), "%d rpm", data);
mvwprintw(lwin, lwiny / 2 - 1, 3, "%s", buf);
wrefresh(lwin);
}
int main(int argc, char **argv) {
int option;
int delay = 1;
@ -217,8 +242,8 @@ int main(int argc, char **argv) {
wrefresh(win[i]);
}
int speed = 0, power = 0, bat = 0, rpm = 0, eff = 0;
float tq = 0.0f, bat_temp = 0.0f, var_temp = 0.0f, mot_temp = 0.0f;
int speed = 0, power = 0, bat = 0, rpm = 0;
float tq = 0.0f, eff = 0.0f, bat_temp = 0.0f, var_temp = 0.0f, mot_temp = 0.0f;
long t100 = 0, t1000 = 0;
int ch = ERR;
while(ch == ERR) {
@ -234,8 +259,8 @@ int main(int argc, char **argv) {
win_int(win[0], speed, 3);
win_int(win[1], power, 4);
win_float(win[3], tq, 3);
//win[4]
//win[5]
win_bar(win[4], rpm, 6000);
win_float(win[5], eff, 5);
t100 = now;
}
if (now - t1000 >= 1000 * delay) {