How to use Console app in IDE2

I want to use Akkoyun Arduino based VT100 comparable library, but I got the following compilation error:
no matching function for call to 'Console::Text(int, int, uint8_t, const arduino::__FlashStringHelper*)'
1085 | Text(8, 59, WHITE, F("VC_MIN......[ V]"));
etc.
Probably the Console.h has some mismatch

Welcome to the forum. Please take a few moments and read this: How to get the best out of this forum - Using Arduino / Installation & Troubleshooting - Arduino Forum

Then, edit your post to include your code (in code tags) as well as the exact & complete error message (again in code tags) and you will dramatically increase the chances of having someone able to help you.

1 Like

The example program is PowerStat:

// Include Libraries
#include <Console.h>

// Define Object
Console Terminal(Serial);

void setup() {

	// Start Serial Stream
    Serial.begin(115200);

	// Start Terminal
    Terminal.Begin();

	// Draw Terminal Base
	Terminal.PowerStat();

}

void loop() {

	// Print Terminal Text
	Terminal.Text(2, 13, RED, String(millis()));
	
}

The header file is Console.h:

#ifndef __Console__
#define __Console__

// Define Arduino Library
#ifndef __Arduino__
	#include <Arduino.h>
#endif

// Include Definitions
#include "Console_Definitions.h"

class Console {

	private:

		/**
		 * @brief Stream Variable.
		 */
		Stream * Console_Serial;

		/**
		 * @brief Clear Terminal Function.
		 * @version 01.00.00
		 * @param _Type Clear Type.
		 */
		void Clear(uint8_t _Type) {

			// Clear Line After Cursor
			if (_Type == LINE_AFTER_CURSOR) Console_Serial->print(F("\e[K"));

			// Clear Line to Cursor
			if (_Type == LINE_TO_CURSOR) Console_Serial->print(F("\e[1K"));
			
			// Clear Line
			if (_Type == LINE) Console_Serial->print(F("\e[2K"));
			
			// Clear Screen
			if (_Type == SCREEN) Console_Serial->print(F("\e[2J"));
			
			// Clear All
			if (_Type == ALL) Console_Serial->print(F("\e[1;1H\e[2J"));

		}

		/**
		 * @brief Change Cursor Visibility Function.
		 * @version 01.00.00
		 * @param _State Cursor State.
		 */
		void Cursor(bool _State) {

			// Cursor On
			if (_State) Console_Serial->print(F("\e[?25h"));	

			// Cursor Off
			if (!_State) Console_Serial->print(F("\e[?25l"));	

		}

		/**
		 * @brief Draw Box Function.
		 * @version 01.00.00
		 * @param _X1 Upper Left Corner X.
		 * @param _Y1 Upper Left Corner Y.
		 * @param _X2 Lower Right Corner X.
		 * @param _Y2 Lower Right Corner Y.
		 * @param _Text Header Text.
		 * @param _Number Box Number.
		 * @param _Header Box Header.
		 * @param _Footer Box Footer.
		 */
		void Draw_Box(uint8_t _X1, uint8_t _Y1, uint8_t _X2, uint8_t _Y2, String _Text, uint8_t _Number, bool _Header, bool _Footer) {

			// Set Text Color
			Text_Color(WHITE);

			// Set Text Format
			Console_Serial->print(F("\e["));
			Console_Serial->print(DIM);
			Console_Serial->write('m');

			// Print Corners
			Set_Cursor(_X1, _Y1); Console_Serial->println(F("┌"));
			Set_Cursor(_X2, _Y1); Console_Serial->println(F("└"));
			Set_Cursor(_X1, _Y2); Console_Serial->println(F("┐"));
			Set_Cursor(_X2, _Y2); Console_Serial->println(F("┘"));

			// Print Lines
			for (uint8_t i = _X1 + 1; i <= _X2 - 1; i++) {
				
				Set_Cursor(i, _Y1); Console_Serial->println(F("│"));
				Set_Cursor(i, _Y2); Console_Serial->println(F("│"));

			}
			for (uint8_t i = _Y1 + 1; i <= _Y2 - 1; i++) {
				
				Set_Cursor(_X1, i); Console_Serial->println(F("─"));
				Set_Cursor(_X2, i); Console_Serial->println(F("─"));
				
			}

			// Print Header
			Text_Color(YELLOW); Set_Cursor(_X1, _Y1 + 2); Console_Serial->println(_Text);

			// Print Header Number
			if (_Number != 0) {
				Text_Color(WHITE); Set_Cursor(_X1, _Y2 - 4); Console_Serial->println(F("[ ]"));
				Text_Color(YELLOW); Set_Cursor(_X1, _Y2 - 3); Console_Serial->println(_Number);
			}

			// Draw Header
			if (_Header) {

				// Set Text Color
				Text_Color(WHITE);

				// Print Corners
				Set_Cursor(_X1 + 2, _Y1); Console_Serial->println(F("├"));
				Set_Cursor(_X1 + 2, _Y2); Console_Serial->println(F("┤"));

				// Print Lines
				for (uint8_t i = _Y1 + 1; i <= _Y2 - 1; i++) {
					
					Set_Cursor(_X1 + 2, i); Console_Serial->println(F("─"));
					
				}

			}
			
			// Draw Footer			
			if (_Footer) {

			// Set Text Color
			Text_Color(WHITE);

				// Print Corners
				Set_Cursor(_X2 - 2, _Y1); Console_Serial->println(F("├"));
				Set_Cursor(_X2 - 2, _Y2); Console_Serial->println(F("┤"));

				// Print Lines
				for (uint8_t i = _Y1 + 1; i <= _Y2 - 1; i++) {
					
					Set_Cursor(_X2 - 2, i); Console_Serial->println(F("─"));
					
				}

			}
			
		}

		/**
		 * @brief Dot Print Function.
		 * @version 01.00.00
		 * @param _X Cursor X Position
		 * @param _Y Cursor Y Position
		 * @param _Count Dot Length
		 */
		void Dot(uint8_t _X, uint8_t _Y, uint8_t _Count) {

			for (uint8_t i = 0; i < _Count; i++) {

				Text(_X, _Y + i, WHITE, F("."));

			}

		}

		/**
		 * @brief Bracket Place Holder Function.
		 * @version 01.00.00
		 * @param _X Cursor X Position.
		 * @param _Y Cursor Y Position.
		 * @param _Space Bracket Size.
		 */
		void Bracket(uint8_t _X, uint8_t _Y, uint8_t _Space) {

			// Print Bracket Start
			Text(_X, _Y, WHITE, F("["));

			// Print Bracket Left
			Text(_X, _Y + _Space, WHITE, F("]"));

		}

		/**
		 * @brief Horizontal Line Divider Function.
		 * @version 01.00.00
		 * @param _X1 Start Cursor X
		 * @param _Y1 Start Cursor Y
		 * @param _Length Length
		 * @param _End End Symbol
		 */
		void Horizontal_Divider(uint8_t _X1, uint8_t _Y1, uint8_t _Length, bool _End) {

			//Set Color
			Text_Color(WHITE);

			// Print Corners
			if (_End) {

				Set_Cursor(_X1, _Y1); Serial.println(F("├"));
				Set_Cursor(_X1, _Y1 + _Length); Serial.println(F("┤"));

			}

			// Print Lines
			for (uint8_t i = _Y1 + 1; i <= _Y1 + _Length - 1; i++) {

				Set_Cursor(_X1, i); Serial.println(F("─"));

			}
	
		}

		/**
		 * @brief Vertical Line Divider Function.
		 * @version 01.00.00
		 * @param _X1 Start Cursor X
		 * @param _Y1 Start Cursor Y
		 * @param _Length Length
		 * @param _End End Symbol
		 */
		void Vertical_Divider(uint8_t _X1, uint8_t _Y1, uint8_t _Length) {

			//Set Color
			Text_Color(WHITE);

			// Print Corners
			Set_Cursor(_X1, _Y1); Console_Serial->println(F("┬"));
			Set_Cursor(_X1 + _Length, _Y1); Console_Serial->println(F("┴"));

			// Print Lines
			for (uint8_t i = _X1 + 1; i <= _X1 + _Length - 1; i++) {Set_Cursor(i, _Y1); Console_Serial->println(F("│"));}

		}

		/**
		 * @brief Hardware Diagnostic Box Print Function.
		 * @version 01.00.00
		 * @param _X1 Left Upper Cursor X Position
		 * @param _Y1 Left Upper Cursor Y Position
		 * @param _X2 Right Lower Cursor X Position
		 * @param _Y2 Right Lower Cursor Y Position
		 */
		void Print_Diagnostic(uint8_t _X1, uint8_t _Y1, uint8_t _X2, uint8_t _Y2) {

			// Draw Hardware Diagnostic Box
			Draw_Box(_X1, _Y1, _X2, _Y2, "Hardware Diagnostic", 1, false, false);

			// Print Text
			Text(_X1 + 1, _Y1 + 2, WHITE, F("I2C Multiplexer (0x70)")); 	Dot(_X1 + 1, _Y1 + 24, (_Y2 - 7) - (_Y1 + 24));		Bracket(_X1 + 1, _Y2 - 7, 5);
			Text(_X1 + 2, _Y1 + 2, WHITE, F("I2C RTC (0x52)")); 			Dot(_X1 + 2, _Y1 + 16, (_Y2 - 7) - (_Y1 + 16)); 	Bracket(_X1 + 2, _Y2 - 7, 5);
			Text(_X1 + 3, _Y1 + 2, WHITE, F("I2C Serial ID (0x50)")); 		Dot(_X1 + 3, _Y1 + 22, (_Y2 - 7) - (_Y1 + 22));		Bracket(_X1 + 3, _Y2 - 7, 5);
			Text(_X1 + 4, _Y1 + 2, WHITE, F("I2C Temperature (0x40)")); 	Dot(_X1 + 4, _Y1 + 24, (_Y2 - 7) - (_Y1 + 24));		Bracket(_X1 + 4, _Y2 - 7, 5);
			Text(_X1 + 5, _Y1 + 2, WHITE, F("I2C Battery Gauge (0x36)")); 	Dot(_X1 + 5, _Y1 + 26, (_Y2 - 7) - (_Y1 + 26));		Bracket(_X1 + 5, _Y2 - 7, 5);
			Text(_X1 + 6, _Y1 + 2, WHITE, F("I2C Battery Charger (0x6B)")); Dot(_X1 + 6, _Y1 + 28, (_Y2 - 7) - (_Y1 + 28));		Bracket(_X1 + 6, _Y2 - 7, 5);
			Text(_X1 + 7, _Y1 + 2, WHITE, F("SD Card Connection")); 		Dot(_X1 + 7, _Y1 + 20, (_Y2 - 7) - (_Y1 + 20)); 	Bracket(_X1 + 7, _Y2 - 7, 5);

		}

		/**
		 * @brief Detail Box Print Function.
		 * @version 01.00.00
		 * @param _X1 Left Upper Cursor X Position
		 * @param _Y1 Left Upper Cursor Y Position
		 * @param _X2 Right Lower Cursor X Position
		 * @param _Y2 Right Lower Cursor Y Position
		 */
		void Print_Detail(uint8_t _X1, uint8_t _Y1, uint8_t _X2, uint8_t _Y2) {

			// Draw Hardware Diagnostic Box
			Draw_Box(_X1, _Y1, _X2, _Y2, "Detail", 2, false, false);

			// Print Text
			Text(_X1 + 1, _Y1 + 2, WHITE, F("Serial ID")); 			Dot(_X1 + 1, _Y1 + 11, (_Y2 - 19) - (_Y1 + 11)); 	Bracket(_X1 + 1, _Y2 - 19, 17);
			Text(_X1 + 2, _Y1 + 2, WHITE, F("Firmware Version")); 	Dot(_X1 + 2, _Y1 + 18, (_Y2 - 11) - (_Y1 + 18)); 	Bracket(_X1 + 2, _Y2 - 11, 9);
			Text(_X1 + 3, _Y1 + 2, WHITE, F("Hardware Version")); 	Dot(_X1 + 3, _Y1 + 18, (_Y2 - 11) - (_Y1 + 18)); 	Bracket(_X1 + 3, _Y2 - 11, 9);
			Text(_X1 + 4, _Y1 + 2, WHITE, F("Module Temperature")); Dot(_X1 + 4, _Y1 + 20, (_Y2 - 6) - (_Y1 + 20)); 	Bracket(_X1 + 4, _Y2 - 10, 8);	Text(_X1 + 4, _Y2 - 3, WHITE, F("C"));
			Text(_X1 + 5, _Y1 + 2, WHITE, F("Module Humidity")); 	Dot(_X1 + 5, _Y1 + 17, (_Y2 - 6) - (_Y1 + 17)); 	Bracket(_X1 + 5, _Y2 - 10, 8);	Text(_X1 + 5, _Y2 - 3, WHITE, F("%"));
			Text(_X1 + 6, _Y1 + 2, WHITE, F("Device State")); 		Dot(_X1 + 6, _Y1 + 14, (_Y2 - 6) - (_Y1 + 14)); 	Bracket(_X1 + 6, _Y2 - 6, 4);
			Text(_X1 + 7, _Y1 + 2, WHITE, F("Fault State")); 		Dot(_X1 + 7, _Y1 + 13, (_Y2 - 6) - (_Y1 + 13)); 	Bracket(_X1 + 7, _Y2 - 6, 4);

		}

		/**
		 * @brief Battery Print Function.
		 * @version 01.00.00
		 * @param _X1 Left Upper Cursor X Position
		 * @param _Y1 Left Upper Cursor Y Position
		 * @param _X2 Right Lower Cursor X Position
		 * @param _Y2 Right Lower Cursor Y Position
		 */
		void Print_Battery(uint8_t _X1, uint8_t _Y1, uint8_t _X2, uint8_t _Y2) {

			// Draw Hardware Diagnostic Box
			Draw_Box(_X1, _Y1, _X2, _Y2, "Battery", 3, false, false);

			// Print Text
			Text(_X1 + 1, _Y1 + 2, WHITE, F("Instant Voltage")); 			Dot(_X1 + 1, _Y1 + 17, (_Y2 - 9) - (_Y1 + 17)); 	Bracket(_X1 + 1, _Y2 - 9, 7);	Text(_X1 + 1, _Y2 - 3, WHITE, F("V"));
			Text(_X1 + 2, _Y1 + 2, WHITE, F("Temperature")); 				Dot(_X1 + 2, _Y1 + 13, (_Y2 - 8) - (_Y1 + 13)); 	Bracket(_X1 + 2, _Y2 - 10, 8);	Text(_X1 + 2, _Y2 - 3, WHITE, F("C"));
			Text(_X1 + 3, _Y1 + 2, WHITE, F("Average Current")); 			Dot(_X1 + 3, _Y1 + 17, (_Y2 - 13) - (_Y1 + 17)); 	Bracket(_X1 + 3, _Y2 - 13, 11);	Text(_X1 + 3, _Y2 - 4, WHITE, F("mA"));
			Text(_X1 + 4, _Y1 + 2, WHITE, F("State of Charge")); 			Dot(_X1 + 4, _Y1 + 17, (_Y2 - 10) - (_Y1 + 17)); 	Bracket(_X1 + 4, _Y2 - 10, 8);	Text(_X1 + 4, _Y2 - 3, WHITE, F("%"));
			Text(_X1 + 5, _Y1 + 2, WHITE, F("Full Battery Capacity")); 		Dot(_X1 + 5, _Y1 + 23, (_Y2 - 10) - (_Y1 + 23)); 	Bracket(_X1 + 5, _Y2 - 10, 8);	Text(_X1 + 5, _Y2 - 4, WHITE, F("mA"));
			Text(_X1 + 6, _Y1 + 2, WHITE, F("Instant Battery Capacity")); 	Dot(_X1 + 6, _Y1 + 26, (_Y2 - 10) - (_Y1 + 26)); 	Bracket(_X1 + 6, _Y2 - 10, 8);	Text(_X1 + 6, _Y2 - 4, WHITE, F("mA"));
			Text(_X1 + 7, _Y1 + 2, WHITE, F("Cycle Count")); 				Dot(_X1 + 7, _Y1 + 11, (_Y2 - 7) - (_Y1 + 11)); 	Bracket(_X1 + 7, _Y2 - 7, 5);

		}

		/**
		 * @brief Battery GSM Initialize Function.
		 * @version 01.00.00
		 * @param _X1 Left Upper Cursor X Position
		 * @param _Y1 Left Upper Cursor Y Position
		 * @param _X2 Right Lower Cursor X Position
		 * @param _Y2 Right Lower Cursor Y Position
		 */
		void Print_GSM_Setup(uint8_t _X1, uint8_t _Y1, uint8_t _X2, uint8_t _Y2) {

			// Draw GSM Setup Diagnostic Box
			Draw_Box(_X1, _Y1, _X2, _Y2, "GSM Setup", 4, false, false);

			// Print Text	
			Text(_X1 + 1, _Y1 + 2, WHITE, F("ATE=0"));			Dot(_X1 + 1, _Y1 + 7, (_Y2 - 7) - (_Y1 + 7)); 		Bracket(_X1 + 1, _Y2 - 7, 5);
			Text(_X1 + 2, _Y1 + 2, WHITE, F("AT+CMEE=1"));		Dot(_X1 + 2, _Y1 + 11, (_Y2 - 7) - (_Y1 + 11)); 	Bracket(_X1 + 2, _Y2 - 7, 5);
			Text(_X1 + 3, _Y1 + 2, WHITE, F("AT+FCLASS=0"));	Dot(_X1 + 3, _Y1 + 13, (_Y2 - 7) - (_Y1 + 13)); 	Bracket(_X1 + 3, _Y2 - 7, 5);
			Text(_X1 + 4, _Y1 + 2, WHITE, F("AT&K0"));			Dot(_X1 + 4, _Y1 + 7, (_Y2 - 7) - (_Y1 + 7)); 		Bracket(_X1 + 4, _Y2 - 7, 5);
			Text(_X1 + 5, _Y1 + 2, WHITE, F("AT+CPIN?"));		Dot(_X1 + 5, _Y1 + 10, (_Y2 - 7) - (_Y1 + 10)); 	Bracket(_X1 + 5, _Y2 - 7, 5);
			Text(_X1 + 6, _Y1 + 2, WHITE, F("AT+CGSN"));		Dot(_X1 + 6, _Y1 + 9, (_Y2 - 7) - (_Y1 + 9)); 		Bracket(_X1 + 6, _Y2 - 7, 5);
			Text(_X1 + 7, _Y1 + 2, WHITE, F("AT+GSN"));			Dot(_X1 + 7, _Y1 + 8, (_Y2 - 7) - (_Y1 + 8)); 		Bracket(_X1 + 7, _Y2 - 7, 5);
			Text(_X1 + 8, _Y1 + 2, WHITE, F("AT+CCID"));		Dot(_X1 + 8, _Y1 + 9, (_Y2 - 7) - (_Y1 + 9)); 		Bracket(_X1 + 8, _Y2 - 7, 5);
			Text(_X1 + 9, _Y1 + 2, WHITE, F("AT+GMI"));			Dot(_X1 + 9, _Y1 + 8, (_Y2 - 7) - (_Y1 + 8)); 		Bracket(_X1 + 9, _Y2 - 7, 5);
			Text(_X1 + 10, _Y1 + 2, WHITE, F("AT+GMM"));		Dot(_X1 + 10, _Y1 + 8, (_Y2 - 7) - (_Y1 + 8));	 	Bracket(_X1 + 10, _Y2 - 7, 5);
			Text(_X1 + 11, _Y1 + 2, WHITE, F("AT+GMR"));		Dot(_X1 + 11, _Y1 + 8, (_Y2 - 7) - (_Y1 + 8));	 	Bracket(_X1 + 11, _Y2 - 7, 5);
			Text(_X1 + 12, _Y1 + 2, WHITE, F("AT+SLED=2"));		Dot(_X1 + 12, _Y1 + 11, (_Y2 - 7) - (_Y1 + 11)); 	Bracket(_X1 + 12, _Y2 - 7, 5);
			Text(_X1 + 13, _Y1 + 2, WHITE, F("AT#E2SLRI=50"));	Dot(_X1 + 13, _Y1 + 14, (_Y2 - 7) - (_Y1 + 14)); 	Bracket(_X1 + 13, _Y2 - 7, 5);

		}

		/**
		 * @brief Battery GSM Connection Function.
		 * @version 01.00.00
		 * @param _X1 Left Upper Cursor X Position
		 * @param _Y1 Left Upper Cursor Y Position
		 * @param _X2 Right Lower Cursor X Position
		 * @param _Y2 Right Lower Cursor Y Position
		 */
		void Print_GSM_Connection(uint8_t _X1, uint8_t _Y1, uint8_t _X2, uint8_t _Y2) {

			// Draw GSM Connection Diagnostic Box
			Draw_Box(_X1, _Y1, _X2, _Y2, "GSM Connection", 5, false, false);

			// Print Text	
			Text(_X1 + 1, _Y1 + 2, WHITE, F("AT#REGMODE=1"));					Dot(_X1 + 1, _Y1 + 14, (_Y2 - 7) - (_Y1 + 14)); 	Bracket(_X1 + 1, _Y2 - 7, 5);
			Text(_X1 + 2, _Y1 + 2, WHITE, F("AT#TXMONMODE=1"));					Dot(_X1 + 2, _Y1 + 15, (_Y2 - 7) - (_Y1 + 15)); 	Bracket(_X1 + 2, _Y2 - 7, 5);
			Text(_X1 + 3, _Y1 + 2, WHITE, F("AT+CREG=0"));						Dot(_X1 + 3, _Y1 + 11, (_Y2 - 7) - (_Y1 + 11)); 	Bracket(_X1 + 3, _Y2 - 7, 5);
			Text(_X1 + 4, _Y1 + 2, WHITE, F("AT+CGREG=0"));						Dot(_X1 + 4, _Y1 + 12, (_Y2 - 7) - (_Y1 + 12)); 	Bracket(_X1 + 4, _Y2 - 7, 5);
			Text(_X1 + 5, _Y1 + 2, WHITE, F("AT#SCFG=1,1,1500,90,600,50"));		Dot(_X1 + 5, _Y1 + 28, (_Y2 - 7) - (_Y1 + 28)); 	Bracket(_X1 + 5, _Y2 - 7, 5);
			Text(_X1 + 6, _Y1 + 2, WHITE, F("AT#SCFG=2,1,1500,90,300,50"));		Dot(_X1 + 6, _Y1 + 28, (_Y2 - 7) - (_Y1 + 28)); 	Bracket(_X1 + 6, _Y2 - 7, 5);
			Text(_X1 + 7, _Y1 + 2, WHITE, F("AT#SCFGEXT=2,1,0,1,0,0"));			Dot(_X1 + 7, _Y1 + 24, (_Y2 - 7) - (_Y1 + 24)); 	Bracket(_X1 + 7, _Y2 - 7, 5);
			Text(_X1 + 8, _Y1 + 2, WHITE, F("AT+CGDCONT=1,\"IP\",\"mgbs\""));	Dot(_X1 + 8, _Y1 + 26, (_Y2 - 7) - (_Y1 + 26)); 	Bracket(_X1 + 8, _Y2 - 7, 5);
			Text(_X1 + 9, _Y1 + 2, WHITE, F("AT#SERVIFO"));						Dot(_X1 + 9, _Y1 + 12, (_Y2 - 7) - (_Y1 + 12)); 	Bracket(_X1 + 9, _Y2 - 7, 5);
			Text(_X1 + 10, _Y1 + 2, WHITE, F("AT+CGACT=1,1"));					Dot(_X1 + 10, _Y1 + 14, (_Y2 - 7) - (_Y1 + 14));	Bracket(_X1 + 10, _Y2 - 7, 5);
			Text(_X1 + 11, _Y1 + 2, WHITE, F("AT+CGPADDR=1"));					Dot(_X1 + 11, _Y1 + 14, (_Y2 - 7) - (_Y1 + 14));	Bracket(_X1 + 11, _Y2 - 7, 5);
			Text(_X1 + 12, _Y1 + 2, WHITE, F("AT#HTTPCFG=1,\"*****\",80,0"));	Dot(_X1 + 12, _Y1 + 27, (_Y2 - 7) - (_Y1 + 27)); 	Bracket(_X1 + 12, _Y2 - 7, 5);
			Text(_X1 + 13, _Y1 + 2, WHITE, F("AT#ICMP=1"));						Dot(_X1 + 13, _Y1 + 11, (_Y2 - 7) - (_Y1 + 11)); 	Bracket(_X1 + 13, _Y2 - 7, 5);

		}

		/**
		 * @brief Battery GSM Detail Function.
		 * @version 01.00.00
		 * @param _X1 Left Upper Cursor X Position
		 * @param _Y1 Left Upper Cursor Y Position
		 * @param _X2 Right Lower Cursor X Position
		 * @param _Y2 Right Lower Cursor Y Position
		 */
		void Print_GSM_Detail(uint8_t _X1, uint8_t _Y1, uint8_t _X2, uint8_t _Y2) {

			// Draw GSM Connection Diagnostic Box
			Draw_Box(_X1, _Y1, _X2, _Y2, "GSM Detail", 6, false, false);

			// Print Text	
			Text(_X1 + 1, _Y1 + 2, WHITE, F("Manufacturer"));	Dot(_X1 + 1, _Y1 + 14, (_Y2 - 4) - (_Y1 + 14)); 	Bracket(_X1 + 1, _Y2 - 4, 2);
			Text(_X1 + 2, _Y1 + 2, WHITE, F("Model"));			Dot(_X1 + 2, _Y1 + 7, (_Y2 - 4) - (_Y1 + 7)); 		Bracket(_X1 + 2, _Y2 - 4, 2);
			Text(_X1 + 3, _Y1 + 2, WHITE, F("Firmware"));		Dot(_X1 + 3, _Y1 + 11, (_Y2 - 12) - (_Y1 + 11)); 	Bracket(_X1 + 3, _Y2 - 12, 10);
			Text(_X1 + 4, _Y1 + 2, WHITE, F("IMEI"));			Dot(_X1 + 4, _Y1 + 6, (_Y2 - 18) - (_Y1 + 6)); 		Bracket(_X1 + 4, _Y2 - 18, 16);
			Text(_X1 + 5, _Y1 + 2, WHITE, F("Serial ID"));		Dot(_X1 + 5, _Y1 + 11, (_Y2 - 13) - (_Y1 + 11)); 	Bracket(_X1 + 5, _Y2 - 13, 11);
			Text(_X1 + 6, _Y1 + 2, WHITE, F("ICCID"));			Dot(_X1 + 6, _Y1 + 7, (_Y2 - 22) - (_Y1 + 7)); 		Bracket(_X1 + 6, _Y2 - 22, 20);

		}

		/**
		 * @brief GSM Connection Detail Function.
		 * @version 01.00.00
		 * @param _X1 Left Upper Cursor X Position
		 * @param _Y1 Left Upper Cursor Y Position
		 * @param _X2 Right Lower Cursor X Position
		 * @param _Y2 Right Lower Cursor Y Position
		 */
		void Print_GSM_Connection_Detail(uint8_t _X1, uint8_t _Y1, uint8_t _X2, uint8_t _Y2) {

			// Draw GSM Connection Diagnostic Box
			Draw_Box(_X1, _Y1, _X2, _Y2, "Connection", 7, false, false);

			// Print Text	
			Text(_X1 + 1, _Y1 + 2, WHITE, F("GSM Connection Time"));	Dot(_X1 + 1, _Y1 + 21, (_Y2 - 7) - (_Y1 + 21)); 	Bracket(_X1 + 1, _Y2 - 7, 5);
			Text(_X1 + 2, _Y1 + 2, WHITE, F("RSSI Level"));				Dot(_X1 + 2, _Y1 + 12, (_Y2 - 5) - (_Y1 + 12)); 	Bracket(_X1 + 2, _Y2 - 5, 3);
			Text(_X1 + 3, _Y1 + 2, WHITE, F("GSM Operator"));			Dot(_X1 + 3, _Y1 + 14, (_Y2 - 8) - (_Y1 + 14)); 	Bracket(_X1 + 3, _Y2 - 8, 6);
			Text(_X1 + 4, _Y1 + 2, WHITE, F("IP Address"));				Dot(_X1 + 4, _Y1 + 12, (_Y2 - 18) - (_Y1 + 12)); 	Bracket(_X1 + 4, _Y2 - 18, 16);
			Text(_X1 + 5, _Y1 + 2, WHITE, F("Socket Status"));			Dot(_X1 + 5, _Y1 + 15, (_Y2 - 13) - (_Y1 + 15)); 	Bracket(_X1 + 5, _Y2 - 12, 10);

		}

		/**
		 * @brief Power Detail Function.
		 * @version 01.00.00
		 * @param _X1 Left Upper Cursor X Position
		 * @param _Y1 Left Upper Cursor Y Position
		 * @param _X2 Right Lower Cursor X Position
		 * @param _Y2 Right Lower Cursor Y Position
		 */
		void Print_Power_Detail(uint8_t _X1, uint8_t _Y1, uint8_t _X2, uint8_t _Y2) {

			// Draw State Box
			this->Draw_Box(_X1, _Y1, _X2, _Y2, "Power", 0, false, false);

			// Draw Horizontal Lines
			Horizontal_Divider(_X1 + 2, _Y1 + 4, 49, false);
			Horizontal_Divider(_X1 + 6, _Y1 + 4, 49, false);

			// Draw Vertical Lines
			Vertical_Divider(_X1 + 2, _Y1 + 13, 4);
			Vertical_Divider(_X1 + 2, _Y1 + 23, 4);
			Vertical_Divider(_X1 + 2, _Y1 + 33, 4);
			Vertical_Divider(_X1 + 2, _Y1 + 43, 4);

			// Print Text
			Text(_X1 + 1, _Y1 + 15, WHITE, F("Voltage"));
			Text(_X1 + 1, _Y1 + 25, WHITE, F("Current"));
			Text(_X1 + 1, _Y1 + 36, WHITE, F("Freq"));
			Text(_X1 + 1, _Y1 + 46, WHITE, F("Cos Fi"));
			Text(_X1 + 3, _Y1 + 5, WHITE, F("Phase R"));
			Text(_X1 + 4, _Y1 + 5, WHITE, F("Phase S"));
			Text(_X1 + 5, _Y1 + 5, WHITE, F("Phase T"));

		}

		/**
		 * @brief Power Fault Detail Function.
		 * @version 01.00.00
		 * @param _X1 Left Upper Cursor X Position
		 * @param _Y1 Left Upper Cursor Y Position
		 * @param _X2 Right Lower Cursor X Position
		 * @param _Y2 Right Lower Cursor Y Position
		 */
		void Print_Power_Fault_Detail(uint8_t _X1, uint8_t _Y1, uint8_t _X2, uint8_t _Y2) {

			// Draw State Box
			this->Draw_Box(_X1, _Y1, _X2, _Y2, "Power Fault", 0, false, false);

			Horizontal_Divider(_X1 + 2, _Y1 + 2, 54, false);
			Horizontal_Divider(_X1 + 6, _Y1 + 2, 54, false);

			Vertical_Divider(_X1 + 2, _Y1 + 11, 4);
			Vertical_Divider(_X1 + 2, _Y1 + 18, 4);
			Vertical_Divider(_X1 + 2, _Y1 + 25, 4);
			Vertical_Divider(_X1 + 2, _Y1 + 33, 4);
			Vertical_Divider(_X1 + 2, _Y1 + 41, 4);
			Vertical_Divider(_X1 + 2, _Y1 + 49, 4);

			Text(_X1 + 1, _Y1 + 14, WHITE, F("LV"));
			Text(_X1 + 1, _Y1 + 21, WHITE, F("HV"));
			Text(_X1 + 1, _Y1 + 28, WHITE, F("LFQ"));
			Text(_X1 + 1, _Y1 + 36, WHITE, F("HFQ"));
			Text(_X1 + 1, _Y1 + 44, WHITE, F("VIM"));
			Text(_X1 + 1, _Y1 + 52, WHITE, F("IIM"));

			Text(_X1 + 3, _Y1 + 3, WHITE, F("Max"));
			Text(_X1 + 4, _Y1 + 3, WHITE, F("Fault"));
			Text(_X1 + 5, _Y1 + 3, WHITE, F("Min"));

			Text(_X1 + 4, _Y1 + 14, WHITE, F("[ ]"));
			Text(_X1 + 4, _Y1 + 21, WHITE, F("[ ]"));
			Text(_X1 + 4, _Y1 + 28, WHITE, F("[ ]"));
			Text(_X1 + 4, _Y1 + 36, WHITE, F("[ ]"));
			Text(_X1 + 4, _Y1 + 44, WHITE, F("[ ]"));
			Text(_X1 + 4, _Y1 + 52, WHITE, F("[ ]"));
			
		}

		/**
		 * @brief State Detail Function.
		 * @version 01.00.00
		 * @param _X1 Left Upper Cursor X Position
		 * @param _Y1 Left Upper Cursor Y Position
		 * @param _X2 Right Lower Cursor X Position
		 * @param _Y2 Right Lower Cursor Y Position
		 */
		void Print_State_Detail(uint8_t _X1, uint8_t _Y1, uint8_t _X2, uint8_t _Y2) {

			// Draw State Box
			Draw_Box(_X1, _Y1, _X2, _Y2, "", 0, false, false);
			Vertical_Divider(_X1, _Y1 + 105, 2);

			// Print Text	
			Text(_X1 + 1, _Y1 + 2, WHITE, F("R [ ] -"));
			Text(_X1 + 1, _Y1 + 10, WHITE, F("S [ ] -"));
			Text(_X1 + 1, _Y1 + 18, WHITE, F("T [ ] -"));
			Text(_X1 + 1, _Y1 + 26, WHITE, F("M1 [ ] -"));
			Text(_X1 + 1, _Y1 + 35, WHITE, F("M2 [ ] -"));
			Text(_X1 + 1, _Y1 + 44, WHITE, F("M3 [ ] -"));
			Text(_X1 + 1, _Y1 + 53, WHITE, F("Th [ ] -"));
			Text(_X1 + 1, _Y1 + 62, WHITE, F("Mp [ ]"));

			// Print Instant Value
			Text(_X1 + 1, _Y1 + 113, WHITE, F("Bar"));

		}

	public:

		/**
		 * @brief Construct a new Console object
		 * @version 01.00.00
		 */
		Console(Stream &_Serial) {

			//Set serial port
			this->Console_Serial = &_Serial;

		}

		/**
		 * @brief Begin Serial VT100 Console.
		 * @version 01.00.00
		 * @param _Serial Terminal UART Channel.
		 */
		void Begin(void) {

			// Cursor Off
			this->Cursor(false);

			// Clear Screen
			this->Clear(SCREEN);

			// Reset Delay
			delay(5);

		}

		/**
		 * @brief Set Cursor Position Function.
		 * @version 01.00.00
		 * @param _X Cursor X Position.
		 * @param _Y Cursor Y Position.
		 */
		void Set_Cursor(uint8_t _X, uint8_t _Y) {

			// Set Cursor Position
			Console_Serial->print(F("\e["));
			Console_Serial->print(_X);
			Console_Serial->print(F(";"));
			Console_Serial->print(_Y);
			Console_Serial->print(F("H"));

		}

		/**
		 * @brief Terminal Beep Sound Function.
		 * @version 01.00.00
		 */
		void Beep(void) {

			// Beep Terminal.
			Console_Serial->print(F("\x07"));

		}

		/**
		 * @brief Print Text to Specified Position and Color.
		 * @version 01.00.00
		 * @param _X X Position.
		 * @param _Y Y Position.
		 * @param _Color Color.
		 * @param _Value Text Value.
		 */
		void Text(uint8_t _X, uint8_t _Y, uint8_t _Color, String _Value) {

			// Set Text Cursor Position
			Set_Cursor(_X, _Y); 

			// Set Text Color
			Text_Color(_Color); 

			// Print Text			
			Console_Serial->println(String(_Value));

		}

		/**
		 * @brief Set Text Color Function.
		 * @version 01.00.00
		 * @param _Color Color
		 */
		void Text_Color(uint8_t _Color) {

			// Set Text Color.
			Console_Serial->print(F("\e["));
			Console_Serial->print(_Color);
			Console_Serial->write('m');

		}

		/**
		 * @brief Set Back Ground Color Function.
		 * @version 01.00.00
		 * @param _Color Color.
		 */
		void Background_Color(uint8_t _Color) {

			// Set Back Ground Color.
			Console_Serial->print(F("\e["));
			Console_Serial->print(_Color + 10);
			Console_Serial->write('m');

		}

		/**
		 * @brief OK Decide Function.
		 * @version 01.00.00
		 * @param _Result Result Input
		 * @param _X Cursor X
		 * @param _Y Cursor Y
		 */
		void OK_Decide(bool _Result, uint8_t _X, uint8_t _Y) {

			// Print Command State
			if (_Result) {

				Text(_X, _Y, GREEN, F(" OK "));

			} else {

				Text(_X, _Y, RED, F("FAIL"));

			}
	
		}

		/**
		 * @brief I2C Scanner Terminal Batch
		 * @version 01.00.00
		 */
		void I2C_Scanner_Table(void) {

			// Draw Console Table Grid
			for (uint8_t i = 1; i <= 23; i = i + 2) Horizontal_Divider(i, 1, 120, false);
			Vertical_Divider(1, 1, 22);
			for (uint8_t i = 9; i <= 120; i = i + 7) Vertical_Divider(3, i, 18);
			Vertical_Divider(1, 121, 22);

			// Draw Corners
			this->Text(1, 1, WHITE, F("┌"));
			this->Text(1, 121, WHITE, F("┐"));
			this->Text(23, 1, WHITE, F("└"));
			this->Text(23, 121, WHITE, F("┘"));

			// Draw T
			for (uint8_t i = 3; i <= 21; i = i + 2) {Set_Cursor(i,1); Serial.print(F("├"));}
			for (uint8_t i = 3; i <= 21; i = i + 2) {Set_Cursor(i,121); Serial.print(F("┤"));}
			
			// Draw Cross Section
			for (uint8_t i = 5; i <= 19; i = i + 2) {for (uint8_t j = 9; j <= 120; j = j + 7) {Set_Cursor(i,j); Serial.print(F("┼"));}}
			
			// Write Text
			this->Text(1, 60, WHITE, F("I2C Device Explorer"));
			this->Text(22, 3, WHITE, F("Total connected device :"));
			this->Text(22, 86, WHITE, F("Current Mux Channel [0-8] :"));
			this->Text(24, 100, WHITE, F("github.com/akkoyun"));

			// Print Colum Headers
			uint8_t _C = 0;
			for (uint8_t i = 6; i <= 21; i = i + 2) {
				this->Text(i, 3, WHITE, F("0x"));
				this->Text(i, 5, WHITE, String(_C));
				this->Text(i, 6, WHITE, F("_"));
				_C++;
			}

			// Print Row Headers
			uint8_t _R = 0;
			for (uint8_t i = 11; i <= 121; i = i + 7) {
				this->Text(4, i, WHITE, F("0x_"));
				this->Text(4, i + 3, WHITE, String(_R, HEX));
				_R++;
			}

		}

		/**
		 * @brief MAX78630 Terminal Batch
		 * @version 01.00.00
		 */
		void MAX78630(void) {

			// Draw Main Box
			this->Draw_Box(1, 1, 40, 80, "", 0, true, true);

			// Print Header 
			this->Text(1, 40, WHITE, F("MAX78630 Energy Meter"));




			// Draw Voltage
			Draw_Box(4, 2, 27, 32, "Voltage", 1, false, false);
			Text(6, 4, WHITE, F("VScale")); Dot(6, 10, 11); Bracket(6, 21, 9); Text(6, 29, WHITE, F(""));
			Text(7, 4, WHITE, F("VA_GAIN")); Dot(7, 11, 10); Bracket(7, 21, 9); Text(7, 29, WHITE, F(""));
			Text(8, 4, WHITE, F("VB_GAIN")); Dot(8, 11, 10); Bracket(8, 21, 9); Text(8, 29, WHITE, F(""));
			Text(9, 4, WHITE, F("VC_GAIN")); Dot(9, 11, 10); Bracket(9, 21, 9); Text(9, 29, WHITE, F(""));
			Text(10, 4, WHITE, F("VA_OFFS")); Dot(10, 11, 10); Bracket(10, 21, 9); Text(10, 29, WHITE, F(""));
			Text(11, 4, WHITE, F("VB_OFFS")); Dot(11, 11, 10); Bracket(11, 21, 9); Text(11, 29, WHITE, F(""));
			Text(12, 4, WHITE, F("VC_OFFS")); Dot(12, 11, 10); Bracket(12, 21, 9); Text(12, 29, WHITE, F(""));
			Text(13, 4, WHITE, F("HPF_COEF_V")); Dot(13, 14, 7); Bracket(13, 21, 9); Text(13, 29, WHITE, F(""));
			Text(14, 4, WHITE, F("VA_RMS")); Dot(14, 10, 11); Bracket(14, 21, 9); Text(14, 29, WHITE, F("V"));
			Text(15, 4, WHITE, F("VB_RMS")); Dot(15, 10, 11); Bracket(15, 21, 9); Text(15, 29, WHITE, F("V"));
			Text(16, 4, WHITE, F("VC_RMS")); Dot(16, 10, 11); Bracket(16, 21, 9); Text(16, 29, WHITE, F("V"));
			Text(17, 4, WHITE, F("VT_RMS")); Dot(17, 10, 11); Bracket(17, 21, 9); Text(17, 29, WHITE, F("V"));
			Text(18, 4, WHITE, F("VA")); Dot(18, 6, 15); Bracket(18, 21, 9); Text(18, 29, WHITE, F("V"));
			Text(19, 4, WHITE, F("VB")); Dot(19, 6, 15); Bracket(19, 21, 9); Text(19, 29, WHITE, F("V"));
			Text(20, 4, WHITE, F("VC")); Dot(20, 6, 15); Bracket(20, 21, 9); Text(20, 29, WHITE, F("V"));
			Text(21, 4, WHITE, F("VA_FUND")); Dot(21, 11, 10); Bracket(21, 21, 9); Text(21, 29, WHITE, F("V"));
			Text(22, 4, WHITE, F("VB_FUND")); Dot(22, 11, 10); Bracket(22, 21, 9); Text(22, 29, WHITE, F("V"));
			Text(23, 4, WHITE, F("VC_FUND")); Dot(23, 11, 10); Bracket(23, 21, 9); Text(23, 29, WHITE, F("V"));
			Text(24, 4, WHITE, F("VA_HARM")); Dot(24, 11, 10); Bracket(24, 21, 9); Text(24, 29, WHITE, F("V"));
			Text(25, 4, WHITE, F("VB_HARM")); Dot(25, 11, 10); Bracket(25, 21, 9); Text(25, 29, WHITE, F("V"));
			Text(26, 4, WHITE, F("VC_HARM")); Dot(26, 11, 10); Bracket(26, 21, 9); Text(26, 29, WHITE, F("V"));

			// Draw Voltage
			Draw_Box(4, 33, 27, 63, "Current", 1, false, false);
			Text(6, 35, WHITE, F("IScale")); Dot(6, 41, 11); Bracket(6, 52, 9); Text(6, 60, WHITE, F(""));
			Text(7, 35, WHITE, F("IA_GAIN")); Dot(7, 42, 10); Bracket(7, 52, 9); Text(7, 60, WHITE, F(""));
			Text(8, 35, WHITE, F("IB_GAIN")); Dot(8, 42, 10); Bracket(8, 52, 9); Text(8, 60, WHITE, F(""));
			Text(9, 35, WHITE, F("IC_GAIN")); Dot(9, 42, 10); Bracket(9, 52, 9); Text(9, 60, WHITE, F(""));
			Text(10, 35, WHITE, F("IA_OFFS")); Dot(10, 42, 10); Bracket(10, 52, 9); Text(10, 60, WHITE, F(""));
			Text(11, 35, WHITE, F("IB_OFFS")); Dot(11, 42, 10); Bracket(11, 52, 9); Text(11, 60, WHITE, F(""));
			Text(12, 35, WHITE, F("IC_OFFS")); Dot(12, 42, 10); Bracket(12, 52, 9); Text(12, 60, WHITE, F(""));
			Text(13, 35, WHITE, F("HPF_COEF_I")); Dot(13, 45, 7); Bracket(13, 52, 9); Text(13, 29, WHITE, F(""));
			Text(14, 35, WHITE, F("IA_RMS")); Dot(14, 41, 11); Bracket(14, 52, 9); Text(14, 60, WHITE, F("A"));
			Text(15, 35, WHITE, F("IB_RMS")); Dot(15, 41, 11); Bracket(15, 52, 9); Text(15, 60, WHITE, F("A"));
			Text(16, 35, WHITE, F("IC_RMS")); Dot(16, 41, 11); Bracket(16, 52, 9); Text(16, 60, WHITE, F("A"));
			Text(17, 35, WHITE, F("IT_RMS")); Dot(17, 41, 11); Bracket(17, 52, 9); Text(17, 60, WHITE, F("A"));
			Text(18, 35, WHITE, F("IA")); Dot(18, 37, 15); Bracket(18, 52, 9); Text(18, 60, WHITE, F("A"));
			Text(19, 35, WHITE, F("IB")); Dot(19, 37, 15); Bracket(19, 52, 9); Text(19, 60, WHITE, F("A"));
			Text(20, 35, WHITE, F("IC")); Dot(20, 37, 15); Bracket(20, 52, 9); Text(20, 60, WHITE, F("A"));
			Text(21, 35, WHITE, F("IA_FUND")); Dot(21, 42, 10); Bracket(21, 52, 9); Text(21, 60, WHITE, F("A"));
			Text(22, 35, WHITE, F("IB_FUND")); Dot(22, 42, 10); Bracket(22, 52, 9); Text(22, 60, WHITE, F("A"));
			Text(23, 35, WHITE, F("IC_FUND")); Dot(23, 42, 10); Bracket(23, 52, 9); Text(23, 60, WHITE, F("A"));
			Text(24, 35, WHITE, F("IA_HARM")); Dot(24, 42, 10); Bracket(24, 52, 9); Text(24, 60, WHITE, F("A"));
			Text(25, 35, WHITE, F("IB_HARM")); Dot(25, 42, 10); Bracket(25, 52, 9); Text(25, 60, WHITE, F("A"));
			Text(26, 35, WHITE, F("IC_HARM")); Dot(26, 42, 10); Bracket(26, 52, 9); Text(26, 60, WHITE, F("A"));

			// Draw Frequency
			Draw_Box(28, 2, 33, 32, "Frequency", 1, false, false);
			Text(30, 4, WHITE, F("Frequency")); Dot(30, 13, 8); Bracket(30, 21, 9); Text(30, 28, WHITE, F("Hz"));
			Text(31, 4, WHITE, F("F_MIN")); Dot(31, 9, 12); Bracket(31, 21, 9); Text(31, 28, WHITE, F("Hz"));
			Text(32, 4, WHITE, F("F_MAX")); Dot(32, 9, 12); Bracket(32, 21, 9); Text(32, 28, WHITE, F("Hz"));

		}

		/**
		 * @brief PowerStat Terminal Batch
		 * @version 01.00.00
		 */
		void PowerStat(uint8_t _X = 1, uint8_t _Y = 1) {

			// _X = 1
			// _Y = 1

			// Draw Main Box
			Draw_Box(_X, _Y, _X + 51, _Y + 119, "", 0, true, true);

			// Print Main Header Text
			this->Text(_X + 1, _Y + 52, WHITE, F("PowerStat V3"));

			// Header Titles
			Text(_X + 1, _Y + 2, WHITE, F("Up Time : "));

			// Draw Hardware Diagnostic
			this->Print_Diagnostic(_X + 3, _Y + 1, _X + 11, _Y + 38);

			// Draw Detail Box
			this->Print_Detail(_X + 3, _Y + 39, _X + 11, _Y + 78);

			// Draw Battery Box
			this->Print_Battery(_X + 3, _Y + 79, _X + 11, _Y + 118);

			// Draw GSM Setup Box
			this->Print_GSM_Setup(_X + 12, _Y + 1, _X + 26, _Y + 38);

			// Draw GSM Connection Box
			this->Print_GSM_Connection(_X + 12, _Y + 39, _X + 26, _Y + 78);

			// Draw GSM Detail Box
			this->Print_GSM_Detail(_X + 12, _Y + 79, _X + 19, _Y + 118);

			// Draw GSM Connection Detail Box
			this->Print_GSM_Connection_Detail(_X + 20, _Y + 79, _X + 26, _Y + 118);

			// GSM Power Box
			this->Draw_Box(_X + 27, _Y + 1, _X + 29, _Y + 118, "", 0, false, false);

			// Power Box
			this->Print_Power_Detail(_X + 30, _Y + 1, _X + 37, _Y + 59);

			// Power Check
			this->Print_Power_Fault_Detail(_X + 30, _Y + 60, _X + 37, _Y + 118);

			// State Detail Box
			this->Print_State_Detail(_X + 38, _Y + 1, _X + 40, _Y + 118);

			// Data Box
			this->Draw_Box(_X + 41, _Y + 1, _X + 48, _Y + 118, "JSON", 0, false, false);
			
		}

		/**
		 * @brief FilterStat Terminal Batch
		 * @version 01.00.00
		 */

		void FilterStat(void) {

			// Draw Main Screen
			Draw_Box(1, 1, 49, 120, "", 0, true, 1);
			//Print_Box_Title(1,1,59,F("FilterStat V3"));

			// Header Titles
			Text(2, 3, WHITE, F("Up Time : "));

			// Draw Hardware Diagnostic
			Draw_Box(4, 2, 12, 39, "Hardware Diagnostic", 1, false, false);
			Text(5, 4, WHITE, F("I2C Multiplexer (0x70)")); Dot(5, 26, 6); Bracket(5, 32, 5);
			Text(6, 4, WHITE, F("I2C RTC (0x52)")); Dot(6, 18, 14); Bracket(6, 32, 5);
			Text(7, 4, WHITE, F("I2C Serial ID (0x50)")); Dot(7, 24, 8); Bracket(7, 32, 5);
			Text(8, 4, WHITE, F("I2C Temperature (0x40)")); Dot(8, 26, 6); Bracket(8, 32, 5);
			Text(9, 4, WHITE, F("I2C Battery Gauge (0x36)")); Dot(9, 28, 4); Bracket(9, 32, 5);
			Text(10, 4, WHITE, F("I2C Battery Charger (0x6B)")); Dot(10, 30, 2); Bracket(10, 32, 5);
			Text(11, 4, WHITE, F("SD Card Connection")); Dot(11, 22, 10); Bracket(11, 32, 5);

			// Draw Detail Box
			Draw_Box(4, 40, 12, 79, "Detail", 2, false, false);
			Text(5, 42, WHITE, F("Serial ID")); Dot(5, 51, 9); Bracket(5, 60, 17);
			Text(6, 42, WHITE, F("Firmware Version")); Dot(6, 58, 10); Bracket(6, 68, 9);
			Text(7, 42, WHITE, F("Hardware Version")); Dot(7, 58, 10); Bracket(7, 68, 9);
			Text(8, 42, WHITE, F("Module Temperature")); Dot(8, 60, 9); Bracket(8, 69, 8); Text(8, 76, WHITE, F("C"));
			Text(9, 42, WHITE, F("Module Humidity")); Dot(9, 57, 12); Bracket(9, 69, 8); Text(9, 76, WHITE, F("%"));

			// Draw Battery Box
			Draw_Box(4, 80, 12, 119, "Battery", 3, false, false);
			Text(5, 82, WHITE, F("Instant Voltage")); Dot(5, 97, 13); Bracket(5, 110, 7);  Text(5, 116, WHITE, F("V"));
			Text(6, 82, WHITE, F("Temperature")); Dot(6, 93, 16); Bracket(6, 109, 8); Text(6, 116, WHITE, F("C"));
			Text(7, 82, WHITE, F("Average Current")); Dot(7, 97, 10); Bracket(7, 107, 10); Text(7, 115, WHITE, F("mA"));
			Text(8, 82, WHITE, F("State of Charge")); Dot(8, 97, 14); Bracket(8, 111, 6); Text(8, 116, WHITE, F("%"));
			Text(9, 82, WHITE, F("Full Battery Capacity")); Dot(9, 103, 6); Bracket(9, 109, 8); Text(9, 115, WHITE, F("mA"));
			Text(10, 82, WHITE, F("Instant Battery Capacity")); Dot(10, 106, 3); Bracket(10, 109, 8); Text(10, 115, WHITE, F("mA"));
			Text(11, 82, WHITE, F("Cycle Count")); Dot(11, 93, 19); Bracket(11, 112, 5);

			// Draw GSM Setup Box
			Draw_Box(13, 2, 27, 39, "GSM Setup", 4, false, false);
			Text(14, 4, WHITE, F("ATE=0")); Dot(14, 9, 23); Bracket(14, 32, 5); Text(14, 33, YELLOW, F(" ** "));
			Text(15, 4, WHITE, F("AT+CMEE=1")); Dot(15, 13, 19); Bracket(15, 32, 5); Text(15, 33, YELLOW, F(" ** "));
			Text(16, 4, WHITE, F("AT+FCLASS=0")); Dot(16, 15, 17); Bracket(16, 32, 5); Text(16, 33, YELLOW, F(" ** "));
			Text(17, 4, WHITE, F("AT&K0")); Dot(17, 9, 23); Bracket(17, 32, 5); Text(17, 33, YELLOW, F(" ** "));
			Text(18, 4, WHITE, F("AT+CPIN?")); Dot(18, 12, 20); Bracket(18, 32, 5); Text(18, 33, YELLOW, F(" ** "));
			Text(19, 4, WHITE, F("AT+CGSN")); Dot(19, 11, 21); Bracket(19, 32, 5); Text(19, 33, YELLOW, F(" ** "));
			Text(20, 4, WHITE, F("AT+GSN")); Dot(20, 10, 22); Bracket(20, 32, 5); Text(20, 33, YELLOW, F(" ** "));
			Text(21, 4, WHITE, F("AT+CCID")); Dot(21, 11, 21); Bracket(21, 32, 5); Text(21, 33, YELLOW, F(" ** "));
			Text(22, 4, WHITE, F("AT+GMI")); Dot(22, 10, 22); Bracket(22, 32, 5); Text(22, 33, YELLOW, F(" ** "));
			Text(23, 4, WHITE, F("AT+GMM")); Dot(23, 10, 22); Bracket(23, 32, 5); Text(23, 33, YELLOW, F(" ** "));
			Text(24, 4, WHITE, F("AT+GMR")); Dot(24, 10, 22); Bracket(24, 32, 5); Text(24, 33, YELLOW, F(" ** "));
			Text(25, 4, WHITE, F("AT+SLED=2")); Dot(25, 13, 19); Bracket(25, 32, 5); Text(25, 33, YELLOW, F(" ** "));
			Text(26, 4, WHITE, F("AT#E2SLRI=50")); Dot(26, 16, 16); Bracket(26, 32, 5); Text(26, 33, YELLOW, F(" ** "));

			// GSM Connection Box
			Draw_Box(13, 40, 27, 79, "GSM Connection", 5, false, false);
			Text(14, 42, WHITE, F("AT#REGMODE=1")); Dot(14, 54, 18); Bracket(14, 72, 5); Text(14, 73, YELLOW, F(" ** "));
			Text(15, 42, WHITE, F("AT#TXMONMODE=1")); Dot(15, 56, 16); Bracket(15, 72, 5); Text(15, 73, YELLOW, F(" ** "));
			Text(16, 42, WHITE, F("AT+CREG=0")); Dot(16, 51, 21); Bracket(16, 72, 5); Text(16, 73, YELLOW, F(" ** "));
			Text(17, 42, WHITE, F("AT+CGREG=0")); Dot(17, 52, 20); Bracket(17, 72, 5); Text(17, 73, YELLOW, F(" ** "));
			Text(18, 42, WHITE, F("AT#SCFG=1,1,1500,90,600,50")); Dot(18, 68, 4); Bracket(18, 72, 5); Text(18, 73, YELLOW, F(" ** "));
			Text(19, 42, WHITE, F("AT#SCFG=2,1,1500,90,300,50")); Dot(19, 68, 4); Bracket(19, 72, 5); Text(19, 73, YELLOW, F(" ** "));
			Text(20, 42, WHITE, F("AT#SCFGEXT=2,1,0,1,0,0")); Dot(20, 64, 8); Bracket(20, 72, 5); Text(20, 73, YELLOW, F(" ** "));
			Text(21, 42, WHITE, F("AT+CGDCONT=1,\"IP\",\"mgbs\"")); Dot(21, 66, 6); Bracket(21, 72, 5); Text(21, 73, YELLOW, F(" ** "));
			Text(22, 42, WHITE, F("AT#SERVIFO")); Dot(22, 52, 20); Bracket(22, 72, 5); Text(22, 73, YELLOW, F(" ** "));
			Text(23, 42, WHITE, F("AT+CGACT=1,1")); Dot(23, 54, 18); Bracket(23, 72, 5); Text(23, 73, YELLOW, F(" ** "));
			Text(24, 42, WHITE, F("AT+CGPADDR=1")); Dot(24, 54, 18); Bracket(24, 72, 5); Text(24, 73, YELLOW, F(" ** "));
			Text(25, 42, WHITE, F("AT#HTTPCFG=1,\"*****\",80,0")); Dot(25, 67, 5); Bracket(25, 72, 5); Text(25, 73, YELLOW, F(" ** "));
			Text(26, 42, WHITE, F("AT#ICMP=1")); Dot(26, 51, 21); Bracket(26, 72, 5); Text(26, 73, YELLOW, F(" ** "));

			// GSM Detail Box
			Draw_Box(13, 80, 20, 119, "GSM Detail", 6, false, false);
			Text(14, 82, WHITE, F("Manufacturer")); Dot(14, 94, 21); Bracket(14, 115, 2);
			Text(15, 82, WHITE, F("Model")); Dot(15, 87, 28); Bracket(15, 115, 2);
			Text(16, 82, WHITE, F("Firmware")); Dot(16, 90, 16); Bracket(16, 106, 11);
			Text(17, 82, WHITE, F("IMEI")); Dot(17, 86, 15); Bracket(17, 101, 16);
			Text(18, 82, WHITE, F("Serial ID")); Dot(18, 91, 15); Bracket(18, 106, 11);
			Text(19, 82, WHITE, F("SIM ICCID")); Dot(19, 91, 6); Bracket(19, 97, 20);

			// Connection Box
			Draw_Box(21, 80, 27, 119, "Connection", 7, false, false);
			Text(22, 82, WHITE, F("GSM Connection Time")); Dot(22, 101, 11); Bracket(22, 112, 5);
			Text(23, 82, WHITE, F("RSSI Level")); Dot(23, 92, 22); Bracket(23, 114, 3);
			Text(24, 82, WHITE, F("GSM Operator")); Dot(24, 94, 17); Bracket(24, 111, 6);
			Text(25, 82, WHITE, F("IP Address")); Dot(25, 92, 9); Bracket(25, 101, 16);
			Text(26, 82, WHITE, F("Socket Listen Status")); Dot(26, 102, 5); Bracket(26, 107, 10);

			// Solenoid Box
			Draw_Box(31, 2, 36, 98, "", 0, false, false);
			Draw_Box(31, 99, 36, 119, "", 0, false, false);
			Horizontal_Divider(33,2,96,true);
			Horizontal_Divider(33,99,20,true);
			Vertical_Divider(33,8,3);
			Vertical_Divider(33,14,3);
			Vertical_Divider(33,20,3);
			Vertical_Divider(33,26,3);
			Vertical_Divider(33,32,3);
			Vertical_Divider(33,38,3);
			Vertical_Divider(33,44,3);
			Vertical_Divider(33,50,3);
			Vertical_Divider(33,56,3);
			Vertical_Divider(33,62,3);
			Vertical_Divider(33,68,3);
			Vertical_Divider(33,74,3);
			Vertical_Divider(33,80,3);
			Vertical_Divider(33,86,3);
			Vertical_Divider(33,92,3);

			Vertical_Divider(31,26,2);
			Vertical_Divider(31,50,2);
			Vertical_Divider(31,74,2);

			Text(32, 6, WHITE, F("Expander A [    ]"));
			Text(32, 30, WHITE, F("Expander B [    ]"));
			Text(32, 54, WHITE, F("Expander C [    ]"));
			Text(32, 77, WHITE, F("Expander D [    ]"));
			Text(34, 4, WHITE, F("S01"));
			Text(34, 10, WHITE, F("S02"));
			Text(34, 16, WHITE, F("S03"));
			Text(34, 22, WHITE, F("S04"));
			Text(34, 28, WHITE, F("S05"));
			Text(34, 34, WHITE, F("S06"));
			Text(34, 40, WHITE, F("S07"));
			Text(34, 46, WHITE, F("S08"));
			Text(34, 52, WHITE, F("S09"));
			Text(34, 58, WHITE, F("S10"));
			Text(34, 64, WHITE, F("S11"));
			Text(34, 70, WHITE, F("S12"));
			Text(34, 76, WHITE, F("S13"));
			Text(34, 82, WHITE, F("S14"));
			Text(34, 88, WHITE, F("S15"));
			Text(34, 94, WHITE, F("S16"));
			Text(32, 101, WHITE, F("P-Delta       Bar"));
			Text(34, 101, WHITE, F("P-In          Bar"));
			Text(35, 101, WHITE, F("P-Out         Bar"));

			// JSON Data Box
			Draw_Box(28, 2, 30, 119, "", 8, false, false);

			// Setting Detail
			Draw_Box(37, 2, 46, 98, "Data", 0, false, false);


			// Setting Section
			Draw_Box(37, 99, 46, 119, "Setting", 0, false, false);
			Text(39, 101, WHITE, F("Filter Count.[  ]"));
			Text(40, 101, WHITE, F("State.......[   ]"));
			Text(41, 101, WHITE, F("Stabilizer....[ ]"));
			Text(42, 101, WHITE, F("HydroCyclone..[ ]"));
			Text(43, 101, WHITE, F("Irrigation....[ ]"));
			//Text(44, 101, WHITE, F("IDLE..........[ ]"));

			Vertical_Divider(47,99,2);
			
		}

		/**
		 * @brief Telit xE910 Terminal Batch
		 * @version 01.00.00
		 */
		void Telit_xE910(void) {

			// Draw Main Screen
			Draw_Box(1, 1, 24, 120, "", 0, true, true);
			//Print_Box_Title(1,1,60,F("GSM Test Procedure"));

			// Draw GSM Setup Box
			Draw_Box(4, 2, 18, 39, "GSM Setup", 1, false, false);
			Text(5, 4, WHITE, F("ATE=0")); Dot(5, 9, 23); Bracket(5, 32, 5); Text(5, 33, YELLOW, F(" ** "));
			Text(6, 4, WHITE, F("AT+CMEE=1")); Dot(6, 13, 19); Bracket(6, 32, 5); Text(6, 33, YELLOW, F(" ** "));
			Text(7, 4, WHITE, F("AT+FCLASS=0")); Dot(7, 15, 17); Bracket(7, 32, 5); Text(7, 33, YELLOW, F(" ** "));
			Text(8, 4, WHITE, F("AT&K0")); Dot(8, 9, 23); Bracket(8, 32, 5); Text(8, 33, YELLOW, F(" ** "));
			Text(9, 4, WHITE, F("AT+CPIN?")); Dot(9, 12, 20); Bracket(9, 32, 5); Text(9, 33, YELLOW, F(" ** "));
			Text(10, 4, WHITE, F("AT+CGSN")); Dot(10, 11, 21); Bracket(10, 32, 5); Text(10, 33, YELLOW, F(" ** "));
			Text(11, 4, WHITE, F("AT+GSN")); Dot(11, 10, 22); Bracket(11, 32, 5); Text(11, 33, YELLOW, F(" ** "));
			Text(12, 4, WHITE, F("AT+CCID")); Dot(12, 11, 21); Bracket(12, 32, 5); Text(12, 33, YELLOW, F(" ** "));
			Text(13, 4, WHITE, F("AT+GMI")); Dot(13, 10, 22); Bracket(13, 32, 5); Text(13, 33, YELLOW, F(" ** "));
			Text(14, 4, WHITE, F("AT+GMM")); Dot(14, 10, 22); Bracket(14, 32, 5); Text(14, 33, YELLOW, F(" ** "));
			Text(15, 4, WHITE, F("AT+GMR")); Dot(15, 10, 22); Bracket(15, 32, 5); Text(15, 33, YELLOW, F(" ** "));
			Text(16, 4, WHITE, F("AT+SLED=2")); Dot(16, 13, 19); Bracket(16, 32, 5); Text(16, 33, YELLOW, F(" ** "));
			Text(17, 4, WHITE, F("AT#E2SLRI=50")); Dot(17, 16, 16); Bracket(17, 32, 5); Text(17, 33, YELLOW, F(" ** "));

			// GSM Connection Box
			Draw_Box(4, 40, 18, 79, "GSM Connection", 2, false, false);
			Text(5, 42, WHITE, F("AT#REGMODE=1")); Dot(5, 54, 18); Bracket(5, 72, 5); Text(5, 73, YELLOW, F(" ** "));
			Text(6, 42, WHITE, F("AT#TXMONMODE=1")); Dot(6, 56, 16); Bracket(6, 72, 5); Text(6, 73, YELLOW, F(" ** "));
			Text(7, 42, WHITE, F("AT+CREG=0")); Dot(7, 51, 21); Bracket(7, 72, 5); Text(7, 73, YELLOW, F(" ** "));
			Text(8, 42, WHITE, F("AT+CGREG=0")); Dot(8, 52, 20); Bracket(8, 72, 5); Text(8, 73, YELLOW, F(" ** "));
			Text(9, 42, WHITE, F("AT#SCFG=1,1,1500,90,600,50")); Dot(9, 68, 4); Bracket(9, 72, 5); Text(9, 73, YELLOW, F(" ** "));
			Text(10, 42, WHITE, F("AT#SCFG=2,1,1500,90,300,50")); Dot(10, 68, 4); Bracket(10, 72, 5); Text(10, 73, YELLOW, F(" ** "));
			Text(11, 42, WHITE, F("AT#SCFGEXT=2,1,0,1,0,0")); Dot(11, 64, 8); Bracket(11, 72, 5); Text(11, 73, YELLOW, F(" ** "));
			Text(12, 42, WHITE, F("AT+CGDCONT=1,\"IP\",\"mgbs\"")); Dot(12, 66, 6); Bracket(12, 72, 5); Text(12, 73, YELLOW, F(" ** "));
			Text(13, 42, WHITE, F("AT#SERVIFO")); Dot(13, 52, 20); Bracket(13, 72, 5); Text(13, 73, YELLOW, F(" ** "));
			Text(14, 42, WHITE, F("AT+SGACT=1,1")); Dot(14, 54, 18); Bracket(14, 72, 5); Text(14, 73, YELLOW, F(" ** "));
			Text(15, 42, WHITE, F("AT#HTTPCFG=1,\"*****\",80,0")); Dot(15, 67, 5); Bracket(15, 72, 5); Text(15, 73, YELLOW, F(" ** "));
			Text(16, 42, WHITE, F("AT#ICMP=1")); Dot(16, 51, 21); Bracket(16, 72, 5); Text(16, 73, YELLOW, F(" ** "));
			Text(17, 42, WHITE, F("AT#FRWL..")); Dot(17, 51, 21); Bracket(17, 72, 5); Text(17, 73, YELLOW, F(" ** "));

		//	Text(14, 42, WHITE, F("AT+CGACT=1,1")); Dot(14, 54, 18); Bracket(14, 72, 5); Text(14, 73, YELLOW, F(" ** "));
		//	Text(15, 42, WHITE, F("AT+CGPADDR=1")); Dot(15, 54, 18); Bracket(15, 72, 5); Text(15, 73, YELLOW, F(" ** "));
		//	Text(16, 42, WHITE, F("AT#HTTPCFG=1,\"*****\",80,0")); Dot(16, 67, 5); Bracket(16, 72, 5); Text(16, 73, YELLOW, F(" ** "));
		//	Text(17, 42, WHITE, F("AT#ICMP=1")); Dot(17, 51, 21); Bracket(17, 72, 5); Text(17, 73, YELLOW, F(" ** "));

			// GSM Detail Box
			Draw_Box(4, 80, 11, 119, "GSM Detail", 3, false, false);
			Text(5, 82, WHITE, F("Manufacturer")); Dot(5, 94, 21); Bracket(5, 115, 2);
			Text(6, 82, WHITE, F("Model")); Dot(6, 87, 28); Bracket(6, 115, 2);
			Text(7, 82, WHITE, F("Firmware")); Dot(7, 90, 7); Bracket(7, 106, 11);
			Text(8, 82, WHITE, F("IMEI")); Dot(8, 86, 15); Bracket(8, 101, 16);
			Text(9, 82, WHITE, F("Serial ID")); Dot(9, 91, 15); Bracket(9, 106, 11);
			Text(10, 82, WHITE, F("SIM ICCID")); Dot(10, 91, 6); Bracket(10, 97, 20);

			// Connection Box
			Draw_Box(12, 80, 18, 119, "Connection", 4, false, false);
			Text(13, 82, WHITE, F("GSM Connection Time")); Dot(13, 101, 11); Bracket(13, 112, 5);
			Text(14, 82, WHITE, F("RSSI Level")); Dot(14, 92, 22); Bracket(14, 114, 3);
			Text(15, 82, WHITE, F("GSM Operator")); Dot(15, 94, 17); Bracket(15, 111, 6);
			Text(16, 82, WHITE, F("IP Address")); Dot(16, 92, 9); Bracket(16, 101, 16);
			Text(17, 82, WHITE, F("Socket Listen Status")); Dot(17, 102, 5); Bracket(17, 107, 10);

			// JSON Data Box
			Draw_Box(19, 2, 21, 119, "", 8, false, false);

			Text(23, 3, WHITE, F("[1] Initialize Modem"));
			Text(23, 25, WHITE, F("[2] Connect"));
			Text(23, 38, WHITE, F("[3] Time Update"));
			Text(23, 55, WHITE, F("[4] Send HTTP Pack"));
			
		}

		/**
		 * @brief MAX78630 Voltmeter Terminal Batch
		 * @version 01.00.00
		 */
		void MAX78630_Voltmeter(void) {

			// Draw Main Screen
			Draw_Box(1, 1, 14, 84, "", 0, true, true);
			//Print_Box_Title(1,1,42,F("MAX78630 Volt Meter"));

			// Draw Voltage
			Draw_Box(5, 3, 10, 28, "Phase R", 1, false, false);
			Draw_Box(5, 30, 10, 55, "Phase S", 2, false, false);
			Draw_Box(5, 57, 10, 82, "Phase T", 3, false, false);

			Text(7, 5, WHITE, F("VA_RMS......[       V]"));
			Text(8, 5, WHITE, F("VA_MIN......[       V]"));
			Text(9, 5, WHITE, F("VA_MAX......[       V]"));

			Text(7, 32, WHITE, F("VB_RMS......[       V]"));
			Text(8, 32, WHITE, F("VB_MIN......[       V]"));
			Text(9, 32, WHITE, F("VB_MAX......[       V]"));

			Text(7, 59, WHITE, F("VC_RMS......[       V]"));
			Text(8, 59, WHITE, F("VC_MIN......[       V]"));
			Text(9, 59, WHITE, F("VC_MAX......[       V]"));
			
		}

};

#endif /* defined(__Console__) */

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.