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(); }
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); }
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 }
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 }