Beispiel #1
0
//----------------------------------------------------------------------------------------------------
void InitMainMenu(void)
{
    InitOsdFrame();

	// Set 2bit sub menu select flag,color & Attrib
    OSDClear(5, 12, 2, 2, 0xFA, BYTE_ATTRIB);
    OSDClear(5, 12, 2, 2, 0x37, BYTE_COLOR);

	// Draw ----------- ·Ö¸ô --------------
    OSDLine(ROW(3), COL(1), LENGTH(23), 0x5c, BYTE_DISPLAY);
    
    // Set Menu Title color
	OSDLine(ROW(4), COL(0), LENGTH(31), 0x40, BYTE_COLOR);

    // Draw Main Window
    COsdFxDrawWindow(8,0,												//WORD usXStart,WORD usYStart,  
    				 _MAINMENU_WIDTH * 12 + 8,_MAINMENU_HEIGHT * 18,	//WORD usXEnd,WORD usYEnd,  
    				 tMainWindowStyle);									//BYTE *pStyle)

    // Draw Adjust Window
    COsdFxDrawWindow(28,		306,									//WORD usXStart,WORD usYStart,  
    				 288,		372,									//WORD usXEnd,WORD usYEnd,  
    				 tAdjustWindowStyle);								//BYTE *pStyle)
    				 
    ShowMode();
}
Beispiel #2
0
Datei: prog.c Projekt: gke/UAVP
// main program for transmitter controlled setup
void DoProgMode(void)
{
	uns8 i;
	int size1 *p;

	ALL_LEDS_OFF;
	InitArrays();
	LedBlue_ON;	// signal prog mode set #1
	if( IK5 > _Neutral )
		LedRed_ON;	// set #2

	Delaysec(50);	// time to put throttle back to neutral

	p = &FirstProgReg;
	for(i = 1; p<=&LastProgReg; i++)
	{
		ShowMode(i, p);
		p++;
	}

	ALL_LEDS_OFF;
// signal prog mode: 5 seconds blue flashing
	for(i=0; i<50; i++)
	{
		Delaysec(1);	// time 1/10 sec
		LedBlue_TOG;	// toggle LED
		if( IK5 > _Neutral )
			LedRed_TOG;	// set #2
	}

	if( IGas > _ThresStart )
	{
		ALL_LEDS_ON;	//  = white color
		Delaysec(10);
// prog values into data flash
		EEPGD = 0;		// access data eeprom
		WREN = 1;		// enable eeprom writes
		EEADR = _EESet1;		// start with address 0
		if( IK5 > _Neutral )
			EEADR = _EESet2;	// set #2
		for(p = &FirstProgReg; p <= &LastProgReg; p++)
		{
			EEDATA = *p;	// the data byte
			GIE = 0;
			EECON2 = 0x55;	// fix prog sequence (see 16F628A datasheet)
			EECON2 = 0xAA;
			WR = 1;			// start write cycle
			GIE = 1;
			while( WR == 1 );	// wait to complete
			EEADR++;
		}
		WREN = 0;		// disable eeprom writes
	}
	ALL_LEDS_OFF;
}
Beispiel #3
0
/**
 * RegLineEdit
 */
RegLineEdit::RegLineEdit(QWidget *parent)
    :QWidget(parent)
{
    m_layout = new QHBoxLayout(this);
    m_button = new QToolButton(this);
    m_button->setCursor(Qt::ArrowCursor);
    m_button->setStyleSheet("QToolButton { font-weight: bold; color: white; background: black; }");
    m_button->setPopupMode(QToolButton::InstantPopup);
    m_edit = new QLineEdit(this);
    m_layout->addWidget(m_button);
    m_layout->addWidget(m_edit);
    m_menu = new QMenu(this);
    connect(m_menu->addAction("Write"), SIGNAL(triggered()), this, SLOT(OnWriteAct()));
    connect(m_menu->addAction("Set"), SIGNAL(triggered()), this, SLOT(OnSetAct()));
    connect(m_menu->addAction("Clear"), SIGNAL(triggered()), this, SLOT(OnClearAct()));
    connect(m_menu->addAction("Toggle"), SIGNAL(triggered()), this, SLOT(OnToggleAct()));
    EnableSCT(false);
    SetReadOnly(false);
    ShowMode(true);
    SetMode(Write);
}
Beispiel #4
0
void RegLineEdit::SetReadOnly(bool ro)
{
    m_edit->setReadOnly(ro);
    m_readonly = ro;
    ShowMode(!ro);
}
Beispiel #5
0
//菜单滚动,返回新的序号值
//	旋转编码器中断时调用该函数
//		snMGSeq:	当前菜单组的序号(gMG数组下标)
//		nInc:		当前增量————  左旋=-1,右旋=1,不动(下级菜单返回时)=0
short MenuScroll(short snMGSeq,int nInc)
{
  int nOLine,nCur,nFirst;
  char Temp[2];
  unsigned char Index;
  TMenu *pMenu;
  unsigned char MenuLang;

  ByteDataGet(VAL_MENU_LANG,&MenuLang);
  if(gMG[snMGSeq].Type == ST_TMN_SEL)
  {
    Index = gMG[snMGSeq].Count;
    pMenu = gMG[Index].FirstItem + gMG[Index].Position;
    if(pMenu->fpMenuDo!=NULL)
    {
      pMenu->fpMenuDo(nInc);
    }    
  }
  if(gMG[snMGSeq].Type == ST_MODE)
  {
    gMG[snMGSeq].Position += nInc;
		if(gMG[snMGSeq].Position > gMG[snMGSeq].ss.mm.Max)
			gMG[snMGSeq].Position = gMG[snMGSeq].ss.mm.Max;
		else if(gMG[snMGSeq].Position < gMG[snMGSeq].ss.mm.Min)
			gMG[snMGSeq].Position = gMG[snMGSeq].ss.mm.Min;
//    Index = gMG[snMGSeq].Count;
//    pMenu = gMG[Index].FirstItem + gMG[Index].Position;
//    if(pMenu->fpMenuDo!=NULL)
//    {
//      pMenu->fpMenuDo(gMG[snMGSeq].Position);
//    }    
    ShowMode(gMG[snMGSeq].Position);
//    DisplayOneState(0,gMG[snMGSeq].Position);
  }
	else if(gMG[snMGSeq].Type == ST_VALUE)		//显示值
    {
        gMG[snMGSeq].Position += nInc;
        if(gMG[snMGSeq].Position > gMG[snMGSeq].ss.mm.Max)
            gMG[snMGSeq].Position = gMG[snMGSeq].ss.mm.Max;
        else if(gMG[snMGSeq].Position < gMG[snMGSeq].ss.mm.Min)
            gMG[snMGSeq].Position = gMG[snMGSeq].ss.mm.Min;
        Index = gMG[snMGSeq].Count;
        pMenu = gMG[Index].FirstItem + gMG[Index].Position;
        if(pMenu->fpMenuDo!=NULL)
        {
            pMenu->fpMenuDo(gMG[snMGSeq].Position);
        }
        DisplayVal(snMGSeq, gMG[snMGSeq].ss.mm.Max-gMG[snMGSeq].ss.mm.Min+1,gMG[snMGSeq].Position,SB_HORZ);
    }
    else if(gMG[snMGSeq].Type == ST_CMN)		//显示菜单内容
    {
        nOLine = gMG[snMGSeq].Position;
        gMG[snMGSeq].Position = (nOLine+gMG[snMGSeq].Count+nInc)% gMG[snMGSeq].Count;
        if((nOLine / MI_LINES)!=(gMG[snMGSeq].Position / MI_LINES)		//不同屏
                ||(nOLine == gMG[snMGSeq].Position))					//从下级返回
        {																//整屏刷新
            nFirst = (gMG[snMGSeq].Position / MI_LINES)*MI_LINES;
            for(nCur = 0; nCur < MI_LINES; nCur++)
            {
                if(nFirst+nCur >= gMG[snMGSeq].Count)
                    DisplayMItem(gMG+snMGSeq,nCur,nFirst+nCur,MD_NULL);	//显示空行
                else
                {
                    if(nFirst+nCur == gMG[snMGSeq].Position)
                        DisplayMItem(gMG+snMGSeq,nCur,nFirst+nCur,MD_REVERSE);	//反显(当前行)
                    else
                        DisplayMItem(gMG+snMGSeq,nCur,nFirst+nCur,MD_NORMAL);	//正常显示
                }
            }
        }
        else		//只刷新相关的两行
        {
            DisplayMItem(gMG+snMGSeq,nOLine%MI_LINES,nOLine,MD_NORMAL);
            DisplayMItem(gMG+snMGSeq,gMG[snMGSeq].Position%MI_LINES,gMG[snMGSeq].Position,MD_REVERSE);
        }
        DisplaySBar(gMG[snMGSeq].Count,gMG[snMGSeq].Position,SB_VERT);
    }
    else if(gMG[snMGSeq].Type == ST_LR)		//左右
    {
        if(nInc==-1)
        {
            memcpy(Temp,"←",2);
        }
        else
        {
            memcpy(Temp,"→",2);
        }
        if(ENGLISH==MenuLang)
        {
          send_hz16x16(90,16,(unsigned char *)&Temp, 2, 0);
          update_disp_data(90,16,114,31);
        }
        else
        {
          send_hz16x16(52,32,(unsigned char *)&Temp, 2, 0);
          update_disp_data(52,32,67,47);
        }
        Index = gMG[snMGSeq].Count;
        pMenu = gMG[Index].FirstItem + gMG[Index].Position;
        if(pMenu->fpMenuDo!=NULL)
        {
            pMenu->fpMenuDo((nInc==-1)?0:1);
        }
    }
    else if(gMG[snMGSeq].Type == ST_UD)		//上下
    {
        if(nInc==-1)
        {
            memcpy(Temp,"↑",2);
        }
        else
        {
            memcpy(Temp,"↓",2);
        }
        if(ENGLISH==MenuLang)
        {
          send_hz16x16(90,16,(unsigned char *)&Temp, 2, 0);
          update_disp_data(90,16,114,31);
        }
        else
        {
          send_hz16x16(52,32,(unsigned char *)&Temp, 2, 0);
          update_disp_data(52,32,67,47);
        }
        Index = gMG[snMGSeq].Count;
        pMenu = gMG[Index].FirstItem + gMG[Index].Position;
        if(pMenu->fpMenuDo!=NULL)
        {
            pMenu->fpMenuDo((nInc==-1)?0:1);
        }
    }
    else
    {
		
    }
    return gMG[snMGSeq].Position;
}