void KeyAction(unsigned char key) { static long number = 0; static long result = 0; static char op = '\0'; if (key >= '0' && key <= '9') { //number number = 10*number + key - '0'; ShowNumber(number); } else if (key == 0x0D) { //enter if (op == '+') { result += number; } else if (op == '-') { result -= number; } else if (op == '\0') { result = number; } number = 0; ShowNumber(result); } else if (key == 0x1B) { //esc result = number = 0; op = '\0'; ShowNumber(0); } else if (key == 0x26) { //plus if (op == '+') { result += number; } else if (op == '-') { result -= number; } else if (op == '\0') { result = number; } op = '+'; number = 0; ShowNumber(result); } else if (key == 0x28) { //minus if (op == '+') { result += number; } else if (op == '-') { result -= number; } else if (op == '\0') { result = number; } op = '-'; number = 0; ShowNumber(result); } }
// ##################################### endif !HAVE_DUCKBOX_HARDWARE ########################################### void CVFD::showServicename(const std::string & name, int number) // UTF-8 { //j00zekDBG(DEBUG_DEBUG,"j00zek>%s:%s >>>\n", "CVFD::", __func__); if (name.length() > 1) servicename = name; if (number > 0) service_number = number; if (mode != MODE_TVRADIO) { j00zekDBG(J00ZEK_DBG,"CVFD::showServicename: not in MODE_TVRADIO\n"); return; } j00zekDBG(J00ZEK_DBG,"CVFD::showServicename: support_text=%d, g_settings.lcd_info_line=%d\n",support_text, g_settings.lcd_info_line); if (support_text && g_settings.lcd_info_line != 2) //show all, clock, current event { //int aqq = name.length(); if ( name.length()<1) { j00zekDBG(J00ZEK_DBG,"CVFD::showServicename: empty string, end.\n"); return; } ShowText(name.c_str()); } else ShowNumber(service_number); wake_up(); }
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static BOOL bNewNumber = TRUE; static int iOperation = '='; static UINT iNumber, iFirstNum; HWND hButton; switch(message) { case WM_KEYDOWN: if(wParam != VK_LEFT) break; wParam = VK_BACK; case WM_CHAR: if((wParam = (WPARAM) CharUpper((TCHAR *) wParam)) == VK_RETURN) wParam = '='; if(hButton = GetDlgItem(hwnd, wParam)) { SendMessage(hButton, BM_SETSTATE, 1, 0); Sleep(100); SendMessage(hButton, BM_SETSTATE, 0, 0); } else { MessageBeep(0); break; } case WM_COMMAND: SetFocus(hwnd); if(LOWORD(wParam) == VK_BACK) ShowNumber(hwnd, iNumber /= 16); else if(LOWORD(wParam) == VK_ESCAPE) ShowNumber(hwnd, iNumber = 0); else if(isxdigit(LOWORD(wParam))) { if(bNewNumber) { iFirstNum = iNumber; iNumber = 0; } bNewNumber = FALSE; if(iNumber <= MAXDWORD >> 4) ShowNumber(hwnd, iNumber = 16 * iNumber + wParam - (isdigit(wParam) ? '0' : 'A'-10)); else MessageBeep(0); } else { if(!bNewNumber) ShowNumber(hwnd, iNumber = CalcIt(iFirstNum, iOperation, iNumber));
void CVFD::showServicename(const std::string & name, int number) // UTF-8 { if(fd < 0) return; printf("CVFD::showServicename: %s\n", name.c_str()); servicename = name; service_number = number; if (mode != MODE_TVRADIO) return; if (support_text) ShowText(name.c_str()); else ShowNumber(service_number); wake_up(); }
void main() { InitSysCtrl(); //初始化系统 DINT; //关中断 IER = 0x0000; IFR = 0x0000; InitPieCtrl(); //初始化PIE InitPieVectTable(); //初始化PIE中断向量表 InitPeripherals(); //初始化外设 PieCtrl.PIEIER1.bit.INTx7 = 1; //使能PIE模块中的CPU定时器0的中断 IER|=M_INT1; //开CPU中断1; EINT; //使能全局中断 ConfigCpuTimer(&CpuTimer0,150,900000); //CpuTimer0中断时间1s StartCpuTimer0(); //启动CPU定时器0 GpioDataRegs.GPDDAT.bit.GPIOD5 = 0; //输出为低 GpioDataRegs.GPDDAT.bit.GPIOD6 = 0; WriteLcdCom(0x01);////清屏 WriteLcdCom(0x0c);////整体显示开,游标开 WriteLcdCom(0x90); //第二行显示信息 WriteLcdDat(0xb7); WriteLcdDat(0xeb); WriteLcdDat(0xb3); WriteLcdDat(0xa4); WriteLcdDat(0xc7); WriteLcdDat(0xe0); for(;;) { WriteLcdCom(0x80); //第一行第一个字节地址 // ShowNumber(9); ShowNumber(Clock.hours/10); //显示小时 ShowNumber(Clock.hours%10); WriteLcdDat(0xa1); //在小时和分钟之间加:分隔 WriteLcdDat(0xc3); ShowNumber(Clock.mins/10); //显示分钟 ShowNumber(Clock.mins%10); WriteLcdDat(0xa1); //在分钟和秒之间加:分隔 WriteLcdDat(0xc3); ShowNumber(Clock.secs/10); //显示秒 ShowNumber(Clock.secs%10); WriteLcdCom(0x90); //第二行显示信息 WriteLcdDat(0xb7); WriteLcdDat(0xeb); WriteLcdDat(0xb3); WriteLcdDat(0xa4); WriteLcdDat(0xc7); WriteLcdDat(0xe0); } }
void CVFD::showTime(bool force) { //unsigned int system_rev = cs_get_revision(); static int recstatus = 0; #if 0 if(!has_lcd) return; #endif if(fd >= 0 && mode == MODE_SHUTDOWN) { ShowIcon(FP_ICON_CAM1, false); return; } if (fd >= 0 && showclock) { if (mode == MODE_STANDBY || ( g_settings.lcd_info_line && (MODE_TVRADIO == mode))) { char timestr[21]; struct timeb tm; struct tm * t; static int hour = 0, minute = 0; ftime(&tm); t = localtime(&tm.time); if(force || ( switch_name_time_cnt == 0 && ((hour != t->tm_hour) || (minute != t->tm_min))) ) { hour = t->tm_hour; minute = t->tm_min; #if !defined (BOXMODEL_HS7810A) && !defined (BOXMODEL_HS7819) #if defined (BOXMODEL_OCTAGON1008) ShowIcon(ICON_COLON2, true); #elif defined (BOXMODEL_OCTAGON1008) || defined (BOXMODEL_HS7119) || defined (BOXMODEL_CUBEREVO_250HD) strftime(timestr, 5, "%H%M", t); #else strftime(timestr, 6, "%H:%M", t); #endif ShowText(timestr); #else //HS7810A or HS7819, string should not scroll strftime(timestr, 6, "%H:%M", t); struct vfd_ioctl_data data; memset(data.data, ' ', 6); memcpy (data.data, timestr, 6); data.start = 0; data.length = 5; write_to_vfd(VFDDISPLAYCHARS, &data); #endif if (support_text) { strftime(timestr, 20, "%H:%M", t); ShowText(timestr); } else if (support_numbers && has_led_segment) { ShowNumber((t->tm_hour*100) + t->tm_min); #ifdef BOXMODEL_APOLLO ioctl(fd, IOC_FP_SET_COLON, 0x01); #endif } } } } int tmp_recstatus = CNeutrinoApp::getInstance()->recordingstatus; if (tmp_recstatus) { if(clearClock) { clearClock = 0; if(has_lcd) ShowIcon(FP_ICON_CAM1, false); #if !HAVE_DUCKBOX_HARDWARE setled(false);//off #endif } else { clearClock = 1; if(has_lcd) ShowIcon(FP_ICON_CAM1, true); #if !HAVE_DUCKBOX_HARDWARE setled(true);//on #endif } } else if(clearClock || (recstatus != tmp_recstatus)) { // in case icon ON after record stopped clearClock = 0; if(has_lcd) ShowIcon(FP_ICON_CAM1, false); #if !HAVE_DUCKBOX_HARDWARE setled(); #endif } recstatus = tmp_recstatus; }