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);
	}
}
Пример #2
0
// ##################################### 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();
}
Пример #3
0
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));
Пример #4
0
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();
}
Пример #5
0
Файл: main.c Проект: fcq1129/dsp
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);
	}

    
      


}
Пример #6
0
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;
}