Exemple #1
0
        static void LCD_thread()
        {
            byte[] oldlcdMessageLine1 = System.Text.Encoding.UTF8.GetBytes("0");
            byte[] oldlcdMessageLine2 = System.Text.Encoding.UTF8.GetBytes("0");

            // initialise the LCD display
            LCD lcd = new LCD("COM2");

            // Timer turns Backlight off after 30 seconds of inactivity
            Timer backlightTimer = new Timer(BacklightTimerOff, lcd, 30000, 0);

            Thread.Sleep(2000);

            // Turn on Backlight for LCD, flickers due to power when only running on USB
            lcd.backlightOn();
            lcd.clear();

            while (true)
            {
                // Check if LCD data needs to be updated
                if (System.Convert.ToBase64String(lcdMessageLine1) != System.Convert.ToBase64String(oldlcdMessageLine1) || System.Convert.ToBase64String(lcdMessageLine2) != System.Convert.ToBase64String(oldlcdMessageLine2))
                {
                    lcd.backlightOn();
                    backlightTimer.Change(30000, 0); // Reset backlight timer to 30 seconds after screen change
                    if ((lcdMessageLine1 != oldlcdMessageLine1) && (lcdMessageLine2 != oldlcdMessageLine2))
                    {
                        lcd.clear();
                    }
                    if (lcdMessageLine1 != oldlcdMessageLine1)
                    {
                        oldlcdMessageLine1 = lcdMessageLine1;
                        lcd.setCursor(0, 0);
                        lcd.print(lcdMessageLine1);
                    }
                    if (lcdMessageLine2 != oldlcdMessageLine2)
                    {
                        oldlcdMessageLine2 = lcdMessageLine2;
                        lcd.setCursor(0, 1);
                        lcd.print(lcdMessageLine2);
                    }
                }
                Thread.Sleep(200);
            }
        }