⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 osdpub900.c

📁 LCD Monitor 部分源码
💻 C
📖 第 1 页 / 共 3 页
字号:
    COsdFxDrawWindow(XSTART(0), YSTART(10), XEND(w), YEND(45), tOSD_WINDOW0_STYLE1);
    COsdFxChangeWindowColor(COLOR00(4), tOSD_WINDOW0_STYLE1);

	/********************** Add By bhxu Begin **********************/
//	 CScalerLoadFont(Fnt_CopyRight, 0xa0,20,_COMPRESS_FONT);	
//	 Gotoxy(1,3,BYTE_DISPLAY);
//	 Textout((unsigned char code *)sDeptName);
	/********************** Add By bhxu End **********************/	 //做样板时可以打开注释

    COsdFxEnableOsd();
//    CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
    CTimerReactiveTimerEvent(SEC(2),COsdDispOsdTimerEvent);

}
//---------------------------------------------------------------------------------------------------------------------
void ShowHint()
{
     LoadLanguageFont1();
     InitDialog();

     CLR_READYFORDISPLAY();
     CModeSetFreeRun();
     CAdjustBackgroundColor(0x00, 0x00, 0x00);
     CPowerPanelOn();

     OSDPosition(DIALOG_OSD_WIDTH,DIALOG_OSD_HEIGHT,50,50,0x01);
     COsdFxEnableOsd();   
     switch(ucOsdEventMsg)
     {
         case _SHOW_NOSIGNAL_MSG:
              CenterTextout((unsigned char code *)sNoSignal[GET_LANGUAGE],13,3);
              break;
         case _SHOW_NOCABLE_MSG:
              CenterTextout((unsigned char code *)sNoCable[GET_LANGUAGE],13,3);
              break;
         case _SHOW_NOSUPPORT_MSG:
              CenterTextout((unsigned char code *)sNotSupport[GET_LANGUAGE],13,3);
			  CScalerLoadFont(Fnt_CopyRight, 0xa0,20,_COMPRESS_FONT);
   		      CenterTextout((unsigned char code *)sRecommendedMode[GET_LANGUAGE],13,4);

              Gotoxy(6,5,0x50);
              OutputRecommendedMode();
              OutputChar(0x00);
              Textout((unsigned char code *)sRMode_Eng); //60HZ     hsl add 05/09/06
//			  CenterTextout((unsigned char code *)sRMode_Eng,13,5);
              CTimerCancelTimerEvent(COsdDispOsdTimerEvent);
              break;
     }
}
void OutputRecommendedMode()
{
     if(_DISP_WID / 1000)    pData[3] = '1';
     else                             pData[3] = 0;
     pData[4] = (unsigned char)((_DISP_WID / 100) % 10) + '0';
     pData[5] = (unsigned char)((_DISP_WID / 10) % 10) + '0';
     pData[6] = (unsigned char)( _DISP_WID % 10) + '0';
     pData[7] = ' ';
     pData[8] = 0x5b;  // x 
     pData[9]  = ' ';
     if(_DISP_LEN / 1000)
     {
         pData[10] = '1';
         pData[11] = (unsigned char)((_DISP_LEN / 100) % 10) + '0';
         pData[12] = (unsigned char)((_DISP_LEN / 10) % 10) + '0';
         pData[13] = (unsigned char)(_DISP_LEN % 10) + '0';
         pData[14] = 0;
         pData[0]  = 14;
     }
     else
     {
         pData[10] = (unsigned char)((_DISP_LEN / 100) % 10) + '0';
         pData[11] = (unsigned char)((_DISP_LEN / 10) % 10) + '0';
         pData[12] = (unsigned char)(_DISP_LEN % 10) + '0';
         pData[13] = 0;
         pData[0]  = 13;
     }
     CScalerWrite(_OSD_DATA_PORT_92,pData[0] - 3,&pData[3],_NON_AUTOINC);
}

#if(_IR_ENABLE)   
//----------------------------------------------------------------------------------------------------
void CShowFiveNumber(const WORD ucNumber, BYTE ucUserDefLong)
{
    unsigned char O_Data[5];
    
    O_Data[4] = (ucNumber / 10000) % 10;
    O_Data[3] = (ucNumber / 1000) % 10;
    O_Data[2] = (ucNumber / 100) % 10;
    O_Data[1] = (ucNumber / 10) % 10;
    O_Data[0] = ucNumber  % 10;
    
    if (ucUserDefLong)
        ucUserDefLong -= 1;     
    else    
    {
        for(pData[15] = 4; pData[15]>0;pData[15]--)
        {
            if(O_Data[pData[15]] != 0)
                break;          
        }
        
        ucUserDefLong = pData[15];
    }
    
    CScalerSendAddr(_OSD_DATA_PORT_92, _WRITE, _NON_AUTOINC);
    do
    {
        CScalerSendByte(O_Data[ucUserDefLong]+'0');
    }
    while(ucUserDefLong--);
    CScalerSendWriteStop();
}     
//----------- Shortcut key proc ---------------------------
#define _INPUT_NO_NUMBER       0
#define _INPUT_ONE_NUMBER      1
#define _INPUT_TWO_NUMBER      2
#define _INPUT_THREE_NUMBER    3
void STVInputCHEnter(void)
{
    BYTE ucInputState    = GET_INPUTCH_STATE()+1;
    
    // Reset input number and state
    ucCurrentInputNumber = 0;
    ucCurrentInputState  = _INPUT_NO_NUMBER;  // 0: no input number   1: input one number     2: input two number    3: input three number
    
    if (ucInputState > 3)
    {   // Input state err reset input state to input one channel -
        ucInputState = 1;
        SET_INPUTCH_STATE(0);
        CEepromSaveOsdUserData();
    }
    
    COsdFxDisableOsd();
    SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
    SetOSDDouble(OSD_DOUBLE_HEIGHT_ENABLE | OSD_DOUBLE_WIDTH_ENABLE);
    SetRowCmds(ROW_COUNT,COL_WIDTH);
    COsdFxCodeWrite(ucCloseAllWindow);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x8C, THE_BYTE0);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x00, THE_BYTE1);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x20, THE_BYTE2);
    OSDPosition(30,30,38,1,0x01);
    
    Gotoxy(5, 1, BYTE_DISPLAY);         
    for(;ucInputState > 0;ucInputState--)
        OutputChar(0x2d);  // Show "-"
    
    COsdFxEnableOsd();
    CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
    ucOsdState = ITEM_SHORTCUT_INPUTCH_NUM;
}

//---------------------------------------------------------
void SInputCHNumber(void)
{
    BYTE ucInputState = GET_INPUTCH_STATE() + 1;
    
    switch(ucKeyMessage)
    {
    case VK_IR_NUM0:
    case VK_IR_NUM1:
    case VK_IR_NUM2:
    case VK_IR_NUM3:
    case VK_IR_NUM4:
    case VK_IR_NUM5:
    case VK_IR_NUM6:
    case VK_IR_NUM7:
    case VK_IR_NUM8:
    case VK_IR_NUM9:
        SInceptNumber(ucKeyMessage & 0x0f);
        break;
        
    case VK_IR_INPUTCH:
        ucInputState = ValueInRangeChange(1, 3, ucInputState, 1, 1);
        SET_INPUTCH_STATE(ucInputState-1);
        CEepromSaveOsdUserData();
        
        // Reset input number and state
        ucCurrentInputNumber = 0;
        ucCurrentInputState  = 0;  // 0: no input number   1: input one number     2: input two number    3: input three number
        break;
    }
    
    SShowCurrentInputState(ucInputState);
    
    if (ucInputState == ucCurrentInputState)
    {
        BYTE ucMaxChannel = CLoadMaxChannelNumber();
        
        ucOsdState = _MENU_NONE;
        CTimerDelayXms(200);
        
        ucPrevChannel =  stVDCColor.CurrentChannel;
        stVDCColor.CurrentChannel = (ucCurrentInputNumber > ucMaxChannel) ? ucMaxChannel : ucCurrentInputNumber;
        CSetTVChannel(stVDCColor.CurrentChannel);
        CShowTVNumber(stVDCColor.CurrentChannel,SHOW_CH_TV_NUMBER | SHOW_CH_TV_TYPE | SHOW_CH_SOUND_TYPE);
        
        ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
    }
}

//---------------------------------------------------------
void SInceptNumber(const BYTE ucNumber)
{
    switch(ucCurrentInputState)
    { 
    case _INPUT_NO_NUMBER: // not input number
        ucCurrentInputNumber = ucNumber;
        ucCurrentInputState  = _INPUT_ONE_NUMBER;
        break;
        
    case _INPUT_ONE_NUMBER: // Input on number alrady
    case _INPUT_TWO_NUMBER: // Input two number alrady
        ucCurrentInputNumber = (ucCurrentInputNumber*10) + ucNumber;
        ucCurrentInputState  = (ucCurrentInputState == _INPUT_TWO_NUMBER) ? _INPUT_THREE_NUMBER : _INPUT_TWO_NUMBER;
        break;
        /*
        case _INPUT_TWO_NUMBER: // Input two number alrady
        ucCurrentInputNumber = (ucCurrentInputNumber*10) + ucNumber;
        ucCurrentInputState  = _INPUT_THREE_NUMBER;
        break;*/
    }
}

//---------------------------------------------------------
void SShowCurrentInputState(BYTE ucInputState)
{
    Gotoxy(5, 1, BYTE_DISPLAY); 
    
    switch(ucCurrentInputState)
    {
    case _INPUT_NO_NUMBER: // not input number
        for(;ucInputState > 0;ucInputState--)
            OutputChar(0x2d);  // Show "-"
        OutputChar(0x00);  // Show " "
        OutputChar(0x00);  // Show " "
        break;
        
    case _INPUT_ONE_NUMBER: // Input on number alrady
        CShowFiveNumber(ucCurrentInputNumber,1);
        break;
        
    case _INPUT_TWO_NUMBER: // Input two number alrady
        CShowFiveNumber(ucCurrentInputNumber,2);
        break;
        
    case _INPUT_THREE_NUMBER: // Input three number alrady
        CShowFiveNumber(ucCurrentInputNumber,3);
        break;
    }
}

//---------------------------------------------------------
void STVInputCHNumber(void)
{
    STVInputCHEnter();
    ucOsdState = ITEM_SHORTCUT_INPUTCH_NUM;
    SInputCHNumber();
}

//---------------------------------------------------------
void STVReturnCH(void)
{
    pData[0]                  = stVDCColor.CurrentChannel;
    stVDCColor.CurrentChannel = ucPrevChannel;
    ucPrevChannel             = pData[0];
    
    CSetTVChannel(stVDCColor.CurrentChannel);
    CShowTVNumber(stVDCColor.CurrentChannel,SHOW_CH_TV_NUMBER | SHOW_CH_TV_TYPE | SHOW_CH_SOUND_TYPE);
    ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
}
#endif
//---------------------------------------------------------

void NotUseFunc()
{
    //SetOSDRamAddress(0,0,0);
    //DirectWOSDRam(0,0,0,0);
    //SetRowCmds(0,0);
    //Gotoxy(0,0,0);
    //OutputChar(0);
    //Textout(0);
    //PrintfDec(0);
    PrintfHex(0);
    //OSDPosition(0,0,0,0,0);
    //OSDLine(0,0,0,0,0);
    //OSDClear(0,0,0, 0,0,0);
    //OutputDisplaySize();       //在当前的位置输出显示尺寸
    //OutputRefrushRate();       //在当前的位置输出刷新频率
    OutputHSync();             //在当前的位置输出HSync
    //COsdFxCodeWrite(0);
    //COsdFxDisableOsd();
    //COsdFxDrawWindow(0,0,0,0,0);
    //COsdFxChangeWindowColor(0,0);
    //StrLen(0);
    //ValueInRangeChange(0,0,0,0,0);
    SetRTDPWM(0,0);
    //CAutoDoAutoConfig();
    //CAutoDoWhiteBalance();
    //CEepromSaveOsdUserData();
    //CEepromSaveBriConData();
    //CEepromSaveColorTempData();
    //CScalerLoadFont(0, 0, 0, 0);
    //ShowMode();
    //OSDSlider(0, 0, 0, 0, 0,0);   
    //GetLanguegeCount();
    //GetNextLanguage(0);
    GetPrevLanguage(0);
    //CheckLanguage();
    //FirstLanguage();
    LastLanguage();
    PrintfInt(0);
    //COsdFxEnableOsd();
    //DoReset();
    //VPosGuage();
    //HPosGuage();
    //ClockGuage();
    //CenterTextout(0,0,0);
    RightAlignTextOut(0,0,0);
    //ChangeSource();
    //SetOSDDouble(0);
    GetCurrLanguagePos();
    IndexofLanuguage(0);

    #if(_VIDEO_TV_SUPPORT)
    CEepromSaveVedioColor();
    #endif

    #if(_VIDEO_TV_SUPPORT && _TV_CHIP != _TV_NONE)
    CSaveChannelFreq(0,0);
    CSaveChannelColorType(0,0);
    CSaveChannelSkip(0,0);
    CSaveChannelSoundType(0, 0);
    CPrevChannel();
    CNextChannel();
    CTvAutoSearch();
    CManualSearch(0,0);
    CTuningCurrentChannel(0, 0);        
    MChannelProc();
    MSystemProc();
    MTuningProc();
    MSwapProc();
    MManualSearchProc();
    #endif 
}
//----------------------------------------------------------------------------------------------------
void LoadPalette()
{
     switch(GET_OSDCOLOR())
     {
          case 0:
               CAdjustColorPalette(tPALETTE_0);
               break;
          case 1:
               CAdjustColorPalette(tPALETTE_1);
               break;
          case 2:
               CAdjustColorPalette(tPALETTE_2);
               break;
          case 3:
               CAdjustColorPalette(tPALETTE_3);
               break;
          case 4:
               CAdjustColorPalette(tPALETTE_4);
               break;
     }

}
//----------------------------------------------------------------------------------------------------
void CFirstInitOsd(void)
{

}
//----------------------------------------------------------------------------------------------------


#endif        //#if(OSD_TYPE == OSD01)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -