void menu_exhaust(unsigned int mes)
{
//char s[128];
char i;
float f1;
float f2;
 
f1 = 4.56;
f2 = 93.19;
 
//teks_arial(180, 22, "Charge Air"); /* posisi kanan atas */
teks_arial(menu_kanan+menu_kiri+4, menu_besar_tinggi-18, "Exhaust");
 
 
for (i=1; i<9; i++)
{
sprintf(tek, "%d = %3.0f", i, titik[mes + OFFSET_EXHT1 + i - 1].data);
teks_arial(85, 4+(i*19), tek);
}
 
for (i=9; i<17; i++)
{
if (i==9)
sprintf(tek, "%d = %3.0f", i, titik[mes + OFFSET_EXHT9].data);
else
sprintf(tek, "%d = %3.0f", i, titik[mes + OFFSET_EXHT1 + i - 1].data);
 
teks_arial(207, 4+((i-8)*19), tek);
}
 
//sprintf(s, "T = %3.2f C", f2);
//teks_arial(100, 70, s);
}
void menu_pelumas(unsigned int mes)
{
//char s[128];
float f1;
float f2;
 
f1 = 4.56;
f2 = 93.19;
 
//teks_arial(180, 22, "Charge Air"); /* posisi kanan atas */
teks_arial(menu_kanan+menu_kiri+4, menu_besar_tinggi-18, "Pelumas");
 
teks_layar(92, 41, "Inlet");
 
sprintf(tek, "P = %3.2f bar", titik[mes + OFFSET_LOP_IN1].data);
teks_arial(100, 50, tek);
 
sprintf(tek, "T = %3.2f C", titik[mes + OFFSET_LOT_IN1].data);
teks_arial(100, 70, tek);
 
teks_layar(92, 91, "Outlet");
sprintf(tek, "P = %3.2f bar", titik[ mes + OFFSET_LOP_OUT1 ].data);
teks_arial(100, 100, tek);
 
sprintf(tek, "T = %3.2f C", titik[ mes + OFFSET_LOT_OUT1 ].data);
teks_arial(100, 120, tek);
 
}
void menu_charge(unsigned int mes)
{
//char s[128];
float f1;
float f2;
 
f1 = 0.21;
f2 = 43.19;
 
//teks_arial(180, 22, "Charge Air"); /* posisi kanan atas */
teks_arial(menu_kanan+menu_kiri+4, menu_besar_tinggi-18, "Charge Air");
 
sprintf(tek, "Pl = %3.2f bar", titik[mes + OFFSET_CAP_L].data);
teks_arial(100, 50, tek);
 
sprintf(tek, "Tl = %3.2f C", titik[mes + OFFSET_CAT_L].data);
teks_arial(100, 70, tek);
 
sprintf(tek, "Pr = %3.2f bar", titik[mes + OFFSET_CAP_R].data);
teks_arial(100, 100, tek);
 
sprintf(tek, "Tr = %3.2f C", titik[mes + OFFSET_CAT_R].data);
teks_arial(100, 120, tek);
 
}
void menu_bbakar(unsigned int mes, unsigned int nomer_mesin)
{
float f1=0;
float f2=0;
 
teks_arial(menu_kanan+menu_kiri+4, menu_besar_tinggi-18, "Bahan Bakar");
 
sprintf(tek, "In = %4.0f", titik[mes + OFFSET_BB_IN].data);
teks_arial(85, 50, tek);
 
sprintf(tek, "Out = %4.0f ", titik[mes + OFFSET_BB_OUT].data);
teks_arial(85, 70, tek);
 
teks_layar(77, 91, "Per menit");
sprintf(tek, "In = %4.0f", data_hitung[ nomer_mesin ].bb_in);
teks_arial(85, 100, tek);
 
sprintf(tek, "Out = %4.0f", data_hitung[ nomer_mesin ].bb_out);
teks_arial(85, 120, tek);
 
sprintf(tek, "kWh = %4.0f", data_hitung[ nomer_mesin ].kwh);
teks_arial(85, 140, tek);
 
sprintf(tek, "sfc = %4.0f", data_hitung[ nomer_mesin ].sfc);
teks_arial(85, 160, tek);
 
}
/*
p adalah group, misalnya charge air dll,
p ini berdasarkan tombol naik turun
mesin adalah unitnya, bedasarkan tombol kanan
flag : jika diakses dari menu lebih dalam
*/
void menu_pilih(unsigned char p, unsigned char mesin, unsigned char flag)
{
unsigned int ttk;
 
if (p < 6)
kotak_bolong(2, 40-menu_jarak_atas+(p*(menu_tinggi+menu_antara)), menu_kanan, 40+menu_tinggi+(p*(menu_tinggi+menu_antara)));
else
kotak_bolong(2, 40-menu_jarak_atas+(6*(menu_tinggi+menu_antara))+(p-6)*2, menu_kanan, 40+menu_tinggi+(6*(menu_tinggi+menu_antara))+(p-6)*2);
 
//kontak mesin
move_ke(menu_kanan, menu_besar_top);
line_ke(mesin_kiri-5 + (mesin_width*mesin), menu_besar_top); line_ke(mesin_kiri-5+(mesin_width*mesin), 2);
line_ke(mesin_kiri-5 + (mesin_width*(mesin+1)), 2);
line_ke(mesin_kiri-5 + (mesin_width*(mesin+1)), menu_besar_top);
line_ke(menu_besar_kanan, menu_besar_top);
 
if (mesin == 0 && p != 8)
teks_arial(menu_besar_kanan-22, menu_besar_tinggi-18, "#1");
if (mesin == 1 && p != 8)
teks_arial(menu_besar_kanan-22, menu_besar_tinggi-18, "#2");
if (mesin == 2 && p != 8)
teks_arial(menu_besar_kanan-22, menu_besar_tinggi-18, "#3");
if (mesin == 3 && p != 8)
teks_arial(menu_besar_kanan-22, menu_besar_tinggi-18, "#4");
if (mesin == 4 && p != 8)
teks_arial(menu_besar_kanan-22, menu_besar_tinggi-18, "#5");
 
ttk = TIAP_MESIN * mesin;
 
if (p == 0) menu_charge(ttk);
else if (p == 1) menu_jacket(ttk);
else if (p == 2) menu_pelumas(ttk);
else if (p == 3) menu_exhaust(ttk);
else if (p == 4) menu_generator(ttk);
else if (p == 5) menu_bbakar(ttk, mesin);
 
else if (p == 6) menu_setting(ttk);
else if (p == 7) menu_sumber(ttk);
else if (p == 8) menu_titik(ttk, flag);
else if (p == 9) menu_system();
else if (p == 10) menu_log();
 
}
Exemple #6
0
void menu_setting(unsigned int ttk)
{
	int i;
	int y;
	int tot;
	//char bb[32];

	
	//teks_layar(85, 40, "Sumber Data");
	teks_arial(menu_kanan+menu_kiri+4, menu_besar_tinggi-18, "Sumber Data");
	
	// printout sumber data berdasarkan nomer mesin
	tot = 0;
	
	#if 1
	for (i=0; i<JML_SUMBER; i++)
	{
		for (y= ttk ; y< ((ttk+1)+TIAP_MESIN) ; y++)
		{
			if (titik[y].ID_sumber == (i+1))
			{
				sprintf(tek, "%2d %s", (i+1), sumber[i].nama);
				teks_layar(70, 27 + (tot*9), tek);
		
				// print out IP
				sprintf(tek,"%d.%d.%d.%d", sumber[i].IP0, sumber[i].IP1, sumber[i].IP2, sumber[i].IP3);
				teks_layar(170, 27 + (tot*9), tek);	
				
				#ifdef BOARD_TAMPILAN
				// reply count
				sprintf(tek, "%d", status[i].reply);
				teks_layar(270, 27 + (tot*9), tek);
				#endif
				
				tot++;
				break;
			}	
		}
	}
	#endif
}
void menu_generator(unsigned int mes)
{
//char s[128];
float f1;
float f2;
 
f1 = 4.56;
f2 = 93.19;
 
//teks_arial(180, 22, "Charge Air"); /* posisi kanan atas */
teks_arial(menu_kanan+menu_kiri+4, menu_besar_tinggi-18, "Generator");
 
sprintf(tek, "kW = %3.2f", titik[mes + OFFSET_KW].data);
teks_arial(85, 50, tek);
 
//sprintf(s, "n = %3.2f rpm", masing[mes].rpm);
sprintf(tek, "kWh = %.0f ", titik[mes + OFFSET_KWH].data);
teks_arial(85, 70, tek);
 
sprintf(tek, "f = %3.2f Hz", titik[mes + OFFSET_FREK].data);
teks_arial(85, 90, tek);
 
//sprintf(s, "pf = %3.2f ", masing[mes].pf);
//teks_arial(85, 110, s);
 
sprintf(tek, "Amp = %3.2f ", titik[mes + OFFSET_AMP].data);
teks_arial(85, 130, tek);
 
sprintf(tek, "Volt= %3.2f ", titik[mes + OFFSET_VOLT].data);
teks_arial(85, 150, tek);
 
sprintf(tek, "rpm = %3.2f ", titik[mes + OFFSET_GEN_RPM].data);
teks_arial(85, 170, tek);
 
//titik[mes].data);
}
Exemple #8
0
portTASK_FUNCTION( tampilan_task, pvParameters )	{
	unsigned char key_press;

	int i;
	int loop;
	unsigned char jum_OK;
	char loop_key;
	int loop_per_menit=0;
	unsigned char dipencetdeh=0;
	
	// set PF14 & PF10 sebagai input interrupt keypad
	#ifdef TAMPILAN_LPC
	FIO1DIR = FIO1DIR  & ~(PF10 | PF14 | KEY_DAT);
	#endif
	
	#ifdef TAMPILAN_LPC_43
	FIO2DIR = FIO2DIR  & ~PF14;
	
	/* masking dengan 0 supaya bisa dibaca */
	FIO1DIR  = FIO1DIR  & ~(KEY_DAT);
	FIO1MASK = FIO1MASK & ~(KEY_DAT);
	
	/* masking dengan 0 supaya bisa dibaca */
	FIO2MASK = FIO2MASK & ~(PF14);	
	#endif
	
	
	// kasih delay dulu, supaya skeduler jalan
	vTaskDelay(100);
	printf("Starting Tampilan\n");
	teks_h(14, 20, "Daun Biru Engineering");
	teks_h(14, 29, "FreeRTOS 5.1.1 by Richard Barry");
	teks_h(14, 38, "uIP TCP/IP by Adam Dunkels");
	teks_h(14, 47, "NXP LPC2387, 60 MHz");
	
	sprintf(tek, "ARM-GCC %s : %s : %s", __VERSION__, __DATE__, __TIME__);
	teks_h(14, 56, tek);
	
	teks_arial(22, 70, "Monita");
	
	#if (PAKAI_FONT_KOMIK == 1)
	teks_komik(18, 87, "Online Monitoring System");
	#else
	teks_arial(18, 87, "Performance Monitoring");
	#endif
	
	update_lcd();
	vTaskDelay(100);
	teks_h(14, 110, "Loading setting ...");
	
	//set_awal_mesin();
	//set_awal_sumber();
	//set_awal_titik();
	
	#if 0
	for (;;)
	{
		vTaskDelay(201);
		
		cls_layar();
		
		
		loop++;
		//sprintf(tek, "loop tampilan = %d", loop);
		//teks_layar(10, 20, tek);
		
		update_lcd();	
	}
	#endif
	
	
	read_sumber();
	//read_mesin();
	//read_titik();
	
	cls_layar();
	vTaskDelay(500);
	update_lcd();
	vTaskDelay(100);
	update_lcd_layer2();
	vTaskDelay(10);
/*	
	teks_h(14, 20, "Data Mesin :");
	for (i=0; i<10; i++)
	{
		sprintf(tek, "%2d     %s", (i+1), mesin[i].nama);
		teks_h(20, 30 + (i*9), tek);
	}

	cls_layar();
	vTaskDelay(800);
	update_lcd();
	vTaskDelay(100);
	update_lcd_layer2();
	vTaskDelay(10);
//*/	
	/*
	teks_h(14, 20, "Data Sumber Data :");
	for (i=0; i<JML_SUMBER; i++)
	{
		sprintf(tek, "%2d   %s", (i+1), sumber[i].nama);
		teks_h(20, 30 + (i*9), tek);
		
		// print out IP
		sprintf(tek,"%d.%d.%d.%d", sumber[i].IP0, sumber[i].IP1, sumber[i].IP2, sumber[i].IP3);
		teks_h(120, 30 + (i*9), tek);
		
		// status
		if (sumber[i].status == 0)
			teks_h(220, 30 + (i*9), "Tdk Aktif");
		if (sumber[i].status == 1)
			teks_h(220, 30 + (i*9), "Normal");
		if (sumber[i].status == 2)
			teks_h(220, 30 + (i*9), "TimeOut");
		if (sumber[i].status == 5)
			teks_h(220, 30 + (i*9), "Daytime");	
		// init data float
		for(loop = 0; loop < 20; loop++)
		{
			s_data[i].data[loop] = 0.00;	
		}	
	}
	*/
	
	cls_layar();
	// test depth
	//fill_layar(0x0F);
	vTaskDelay(100);		// 800
	update_lcd_layer2();
	
	//cls_layar();
	//kotak(10, 10, 300, 220);
	//update_lcd_layer3();
	
	loop = 0;
	#if 0
	for (;;)
	{
		vTaskDelay(201);
		
		cls_layar();
		
		
		loop++;
		//sprintf(tek, "loop tampilan = %d", loop);
		//teks_layar(10, 20, tek);
		
		update_lcd();	
	}
	#endif
	
	#if 1	
	
	key_index = 0;
	mesin_index = 0;
	cls_layar();
	menu_monita();
	menu_pilih(key_index, mesin_index, 0);
	update_lcd();	
	loop = 0;
	jum_OK = 0;
	i = loop_key = 0;
	/*
	vSemaphoreCreateBinary( keypad_sem );
    xSemaphoreTake( keypad_sem, 0 );		
	*/
	for (;;)
	{
		#ifdef PAKAI_TSC
		if (key_press = baca_tsc())
		#else
		if (cek_keypad())
		#endif
		/* jika 1 detik tidak ada keypad, maka force untuk update lcd */
		//if ( xSemaphoreTake( keypad_sem, 1000 ) == pdTRUE )
		{	
			loop_key++;
			
			//if (loop_key > 1)
			{
				loop_key = 0;
			
				cls_layar();
				// cek tombol apa yang ditekan
				#ifndef PAKAI_TSC 
				key_press = (FIO1PIN & KEY_DAT);
				#else
				switch (key_press) {
					case 1:
						key_press = CANCEL;
						break;
					case 2:
						key_press = OK;
						break;
					#ifdef PAKAI_TSC
					case 4:
						key_press = TANYA;
						break;
					case 8:
						key_press = KIRI;
						break;
					#endif
					case 16:
						key_press = ATAS;
						break;
					case 32:
						key_press = KANAN;
						break;
					case 64:
						key_press = BAWAH;
						break;
				}
				#endif
				//printf("tombol ditekan = %d\n", key_press);	
			
				if (key_press == ATAS)
				{
					if (dipencetdeh>0)	{
						key_index--;
						dipencetdeh=5;
					}
					if (key_index == 255) {
						key_index = kursor_vert()-1;
						//key_index = 10;	// 9
					}
				}
				else if ( key_press == BAWAH )
				{
					if (dipencetdeh>0)	{
						key_index++;
						dipencetdeh=5;
					}
					if (key_index > kursor_vert()) 
						key_index = 0;		// 9
				}
				else if ( key_press == KANAN )
				{
					mesin_index++;
					if (mesin_index > 9) mesin_index = 0;
				}
				#ifdef PAKAI_TSC
				else if ( key_press == KIRI )
				{
					mesin_index--;
					if (mesin_index == 255) mesin_index = 9;
				}
				else if ( key_press == TANYA )
				{
					#ifdef PAKAI_ALARM
					ACK = 0;
					#endif
				}
				#endif
				else if ( key_press == OK)
				{
					jum_OK++;
					#ifdef PAKAI_ALARM
					//printf("m: %d, k: %d\r\n", mesin_index, key_index);
					ack_invert(mesin_index, key_index);
					#endif
				}
				else if ( key_press == CANCEL)
				{
					if (dipencetdeh==0) {
						dipencetdeh = lama_kursor;
					} else {
						//dipencetdeh = 0;
					}
					//printf("dipencet deh: %d\r\n", dipencetdeh);
					//vTaskDelay(300);
				}
				//menu_OK(key_index, mesin_index, jum_OK);
				jum_OK = 0;

				//printf("key index: %d, mesin_index: %d\r\n", key_index, mesin_index);
				
				//menu_monita(key_index);
				cls_layar();
				menu_pilih(key_index, mesin_index, 0);
				menu_group(key_index, mesin_index);		
				menu_tunjuk(key_index, dipencetdeh);
				
				update_lcd();
				loop = 0;
			}	
		}	
		else
		{
			loop_key = 0;	
			if (dipencetdeh>0) {
				dipencetdeh--;
				if (dipencetdeh==0)
					key_index = 0;
			}
		}
		
		if (loop > 2)
		{
			
			if (key_index != 10)
			{
				/* force untuk update layar */
				cls_layar();
				//menu_monita(key_index);		
				menu_pilih(key_index, mesin_index, 0);
				menu_group(key_index, mesin_index);
				menu_tunjuk(key_index, dipencetdeh);
				//menu_OK(key_index, mesin_index);
							
				update_lcd();
			}
			
			loop = 0;
			
			loop_per_menit++;
			if (loop_per_menit > 20)
			{
				//printf("hitung \r\n");
				loop_per_menit = 0;
				//hitung_data_hitung();
			}	
		}
		vTaskDelay(300);
		loop++;	
	}
	#endif
}
Exemple #9
0
void menu_pilih(unsigned char pilih, unsigned char grop, unsigned char flag)
{
	int lebar;
	int len;
	int i;
	
	/*
	if (grop == 0)
		sprintf(tek, "Kompresor");
	if (grop == 1)
		sprintf(tek, "Turbin");
	if (grop == 2)
		sprintf(tek, "Sel Surya");
	if (grop == 4)
		sprintf(tek, "Penduduk");
	if (grop == 5)
		sprintf(tek, "Baterai");
	//*/
	struct t_group *pg;
	pg = (char *) ALMT_GROUP;
	len = strlen( pg[ grop ].nama );
	
	if ((len <= 0) || ( len > 10 ))
	{
		sprintf(tek, "Default !");
	}
	else
		sprintf(tek, "%s", pg[ grop ].nama);
	
	if (len <= 0) len = 1;
	lebar = (len+1) * 14;	// 12 adalah lebar font 
	lebar = 150;
	
	/* print keterangan di bagian bawah */
	teks_layar(menu_kiri + 3, menu_besar_bot - 9, pg[ grop ].ket);
	
	// garis2 tebal 2 pixel
	move_ke(menu_besar_kanan, menu_besar_top);
	line_ke(menu_besar_kanan, menu_besar_bot);
	
	move_ke(menu_besar_kanan+1, menu_besar_top);
	line_ke(menu_besar_kanan+1, menu_besar_bot);
	
	line_ke(menu_kiri, menu_besar_bot);
	move_ke(menu_kiri, menu_besar_bot+1);
	line_ke(menu_besar_kanan+1, menu_besar_bot+1);
	
	move_ke(menu_kiri, menu_besar_bot);
	line_ke(menu_kiri, menu_besar_top);
	move_ke(menu_kiri-1, menu_besar_bot+1);
	line_ke(menu_kiri-1, menu_besar_top);
	
	/* penutup nama group yang berpindah2 sesuai pencetan */
	line_ke(mesin_kiri + ( MWID * grop ), menu_besar_top );
	move_ke(menu_kiri-1, menu_besar_top - 1);
	line_ke(mesin_kiri + ( MWID * grop ), menu_besar_top - 1);
			
	line_ke(mesin_kiri + ( MWID * grop ), 2);
	move_ke(mesin_kiri + ( MWID * grop ) - 1, menu_besar_top - 1);
	line_ke(mesin_kiri + ( MWID * grop ) - 1, 2);
	
	line_ke(mesin_kiri + ( MWID * grop) + lebar, 2);
	move_ke(mesin_kiri + ( MWID * grop) - 1, 1);
	line_ke(mesin_kiri + ( MWID * grop) + lebar, 1);
	
	line_ke(mesin_kiri + ( MWID * grop) + lebar, menu_besar_top);
	move_ke(mesin_kiri + ( MWID * grop) + lebar - 1, 1);
	line_ke(mesin_kiri + ( MWID * grop) + lebar - 1, menu_besar_top);
	
	line_ke(menu_besar_kanan, menu_besar_top);
	move_ke(mesin_kiri + ( MWID * grop) + lebar - 1, menu_besar_top - 1);
	line_ke(menu_besar_kanan, menu_besar_top - 1);
	
	/* tutup nama group yang bawah */
	move_ke(mesin_kiri + ( MWID * grop ), menu_besar_top );
	line_ke(mesin_kiri + ( MWID * grop ), menu_besar_top + 7);
	move_ke(mesin_kiri + ( MWID * grop ) - 1, menu_besar_top );
	line_ke(mesin_kiri + ( MWID * grop ) - 1, menu_besar_top + 7);
	
	line_ke(mesin_kiri + ( MWID * grop ) + lebar, menu_besar_top + 7);
	move_ke(mesin_kiri + ( MWID * grop ) - 1, menu_besar_top + 6);
	line_ke(mesin_kiri + ( MWID * grop ) + lebar, menu_besar_top + 6);
	
	line_ke(mesin_kiri + ( MWID * grop ) + lebar, menu_besar_top );
	move_ke(mesin_kiri + ( MWID * grop ) + lebar - 1, menu_besar_top );
	line_ke(mesin_kiri + ( MWID * grop ) + lebar - 1, menu_besar_top + 7);
	
	/* bikin semacam tab book kanan */
	for (i = grop ; i<9; i++)
	{
		move_ke(mesin_kiri + ( MWID * i ) + lebar + 3, 2 );
		line_ke(mesin_kiri + ( MWID * (i + 1)) + lebar, 2 );
		line_ke(mesin_kiri + ( MWID * (i + 1)) + lebar, menu_besar_top - 4 );
	}
	/* tab book kiri */
	for (i = 0; i< grop ; i ++)
	{
		move_ke(mesin_kiri + ( MWID * (i+1) ) - 3, 2 );
		line_ke(mesin_kiri + ( MWID * i), 2 );
		line_ke(mesin_kiri + ( MWID * i), menu_besar_top - 4 );
	}
	
	teks_arial(mesin_kiri + 16 + ( MWID * grop ), judul_top, tek);
	
	
	/* JAM ditampilkan */
	#ifdef PAKAI_RTC
	RTCTime wt;
	
	p_rtc_get_time( &wt );
	sprintf(tek," %02d:%02d  %02d-%02d-%d", wt.RTC_Hour, wt.RTC_Min, \
		wt.RTC_Mday, wt.RTC_Mon, wt.RTC_Year);
		
	teks_layar(menu_kiri + 197, menu_besar_bot - 9, tek);
	
	#endif
}