/* -------------------------------------------------------- colpos_demo.ino Demoprogramm fuer farbige Ausgabe auf einem seriellen Terminal MCU : ch32v003 12.11.2025 R. Seelig -------------------------------------------------------- */ #include "v003_colpos.h" #define cnt_speed 1000 // Verzoegerungszeit des Zaehlers in ms #define prog_speed 100 // Verzoegerungszeit des Fortschrittbalkens #define baud 115200 // Baudrate #define xofs 4 // x-Koordinate, ab der Textkoordinaten im Terminal erfolgen #define yofs 11 // dto. y-Koordinate // Erscheinungsbild des Fortschrittsbalkens struct progbarstruct { uint8_t x, y; uint16_t anz, percentage; uint8_t progcol, bkcol, txattr; uint8_t bkdraw; }; typedef struct progbarstruct pbar; /* ---------------------------------------------------------- my_putchar wird von my_printf aufgerufen. Hierauf gibt my_printf den Datenstream aus ---------------------------------------------------------- */ void my_putchar(char ch) { Serial.print(ch); } /* ---------------------------------------------------------- progressbar "Fortschrittsbalken" gibt einen Fortschrittsbalken mit dem Erscheinungs- bild in der Struktur progbarstruct aus ---------------------------------------------------------- */ void progressbar(pbar *pb) { int16_t i; uint8_t tmp; uint8_t steps; tmp= textattr; if (pb->bkdraw) { gotoxy(pb->x, pb->y); settextattr(pb->txattr); my_putchar('['); bkcolor(pb->bkcol); for (i= 0; i< pb->anz; i++) { my_putchar(' '); } settextattr(pb->txattr); my_putchar(']'); } steps= (pb->anz*pb->percentage) / 100; bkcolor(pb->progcol); gotoxy(pb->x + 1, pb->y); for (i= 0; i< steps; i++) { my_putchar(' '); } settextattr(tmp); } /* -------------------------------------------------------- setup -------------------------------------------------------- */ void setup() { Serial.begin(115200); } /* -------------------------------------------------------- loop -------------------------------------------------------- */ void loop() { int y, i; uint16_t counter; pbar progbar; settextattr(0x07); clrscr(); settextattr(0x2e); printf("\n\r --------------------------------------\n\r"); printf(" CH32V003: colpos - Demo \n\r"); printf(" \n\r"); printf(" Farbenausgabe und Textpositionierung \n\r"); printf(" in einem Terminal \n\r"); printf(" \n\r"); printf(" 12.11.2025 R. Seelig \n\r"); printf(" --------------------------------------\n\n\r"); textcolor(yellow); bkcolor(brown); counter= 0, gotoxy(xofs-1, yofs); printf(" Farbkombinationen "); for (y= 0; y< 8; y++) { gotoxy(xofs, y+yofs+2); for (i= 0; i< 16; i++) { settextattr((y << 4) | i); my_putchar('#'); } } counter= 0; textcolor(grey); bkcolor(black); progbar.x= xofs+13; progbar.y= yofs+11; progbar.anz= 26; progbar.percentage= 0; progbar.progcol= blue; progbar.bkcol= grey; progbar.txattr= 0x0f; progbar.bkdraw= 1; gotoxy(xofs, yofs+11); printf("Progressbar: "); progressbar(&progbar); progbar.bkdraw= 0; for (i= 0; i< 101; i++) { progbar.percentage= i; progressbar(&progbar); gotoxy(1, yofs); delay(prog_speed); } counter= 0; gotoxy(xofs, yofs+13); printf("Counter : "); while(1) { textcolor(blue); bkcolor(cyan); gotoxy(xofs+13, yofs+13); printf(" "); gotoxy(xofs+14, yofs+13); printf("%d", counter); settextattr(0); gotoxy(1, yofs); counter++; delay(cnt_speed); } }