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

📄 menuprocess_dopt.c

📁 pdh控制程序
💻 C
📖 第 1 页 / 共 4 页
字号:

/*
BYTE menu_2_als_set( BYTE FlashLcd )
{
    SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
    BYTE xdata buffer[2][LCD_MAX_CASE];
    BYTE list_char = 7;

    KeyPro.keyEnter = key_go_next;
    KeyPro.keyLeft = menu_set_left;
    KeyPro.keyRight = menu_set_rigth;
    KeyPro.keyCanncel = menu_1_preview;

    memcpy( &buffer[0][0], rownull, LCD_LAST_CASE );
    memcpy( &buffer[1][0], rownull, LCD_LAST_CASE );
    memcpy( &buffer[0][0], " Local ALS set ", LCD_LAST_CASE );

    if( FlashLcd == FLASH_SCREEN )
		LcdDisplay_length( ROW_2, CHAR_0, rownull, LCD_MAX_CASE );
	else
    {
        if( psys->set_value )
            list_char = 14;
    }

    get_als_status(  &buffer[1][0] );

    LcdDisplay_length( ROW_1, CHAR_0, &buffer[0][0], LCD_LAST_CASE );
    LcdDisplay_length( ROW_2, CHAR_0, &buffer[1][0], 7 );
    LcdDisplay_length( ROW_2, CHAR_8, &buffer[1][8], 6 );

    diaplay_char( ROW_2, list_char, LCD_PRINT_TRIANGLE );
	if( list_char == 7 )
	    LcdDisplay_length( ROW_2, CHAR_14, &buffer[1][14], 1 );
	else
	    LcdDisplay_length( ROW_2, CHAR_7, &buffer[1][7], 1 );
    return key_process_status( &KeyPro );
}
*/

BYTE menu_1_Protect( BYTE FlashLcd )
{
    SYSTEM_INFOMATION xdata *psys = &gSystemInfo;

    psys->set_value = 0;
    return menu_main_show( " 1+1 protection ", FlashLcd );
}

void get_protect_status( BYTE *pbuffer )
{
    BYTE flash_status;
	SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;

    flash_status = flash_time(  );

    switch( psdev->local.protect_mode )
    {
    case IDB_FIBER_AUTO:
        flash_char_status( &pbuffer[2], "Auto", flash_status, 4 );
        flash_char_status( &pbuffer[8], "force", SHOW_CHAR_STATUS, 5 );

        break;

    case IDB_FIBER_MASTER:
    case IDB_FIBER_SLAVE:
        flash_char_status( &pbuffer[2], "Auto", SHOW_CHAR_STATUS, 4 );
        flash_char_status( &pbuffer[8], "force", flash_status, 5 );
        break;
    }
}

BYTE menu_auto_yes_no( void )
{
	SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
    SYSTEM_INFOMATION xdata *psys = &gSystemInfo;

    if( psys->yes_no == SET_YES )
    {
		SetSystemProtectMode( IDB_FIBER_AUTO );
		save_protect_mode( IDB_FIBER_AUTO );
    }
    return PREVIEW_MENU;
}

void show_protect_force( BYTE *pbuffer, BYTE FlashLcd, SYSTEM_INFOMATION *psys )
{
    BYTE xdata flash_status;
    BYTE xdata list_char = 9;
	SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;

    if( FlashLcd == FLASH_SCREEN )
	{
        LcdDisplay_length( ROW_2, CHAR_0, rownull, LCD_MAX_CASE );
	}
    if( psys->set_protect_value )
        list_char = 13;

    flash_status = flash_time(  );

    memcpy( pbuffer, "  Force:        ", LCD_LAST_CASE );

    switch( psdev->local.protect_mode )
    {
    case IDB_FIBER_AUTO:
        flash_char_status( &pbuffer[8], "M   S", SHOW_CHAR_STATUS, 5 );
        break;

    case IDB_FIBER_MASTER:
        flash_char_status( &pbuffer[8], "M", flash_status, 1 );
        flash_char_status( &pbuffer[12], "S", SHOW_CHAR_STATUS, 1 );
        break;

    case IDB_FIBER_SLAVE:
        flash_char_status( &pbuffer[8], "M", SHOW_CHAR_STATUS, 1 );
        flash_char_status( &pbuffer[12], "S", flash_status, 1 );
        break;
    }

    LcdDisplay_length( ROW_2, CHAR_0, pbuffer, 9 );
    LcdDisplay_length( ROW_2, CHAR_10, &pbuffer[10], 3 );
    diaplay_char( ROW_2, list_char, LCD_PRINT_TRIANGLE );
	if( list_char == 9 )
	    LcdDisplay_length( ROW_2, CHAR_13, rownull, 1 );
	else
	    LcdDisplay_length( ROW_2, CHAR_9, rownull, 1 );

}

BYTE menu_force_yes_no( void )
{
    SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
	SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
	BYTE mode;

    if( psys->yes_no == SET_YES )
    {
        if( gSystemInfo.set_protect_value == 0 )
			mode = IDB_FIBER_MASTER;
        else
			mode = IDB_FIBER_SLAVE;
		SetSystemProtectMode( mode );
		save_protect_mode( mode );
    }
    return PREVIEW_MENU;
}
BYTE menu_4_protect_set( BYTE FlashLcd )
{
    BYTE xdata buffer[2][LCD_MAX_CASE];
    SYSTEM_INFOMATION xdata *psys = &gSystemInfo;

    KeyPro.keyEnter = menu_force_yes_no;
    KeyPro.keyLeft = menu_yes_no_left;
    KeyPro.keyRight = menu_yes_no_rigth;
    KeyPro.keyCanncel = menu_1_preview;
    memcpy( &buffer[0], rownull, LCD_MAX_CASE );
    memcpy( &buffer[1], rownull, LCD_MAX_CASE );

    if( gSystemInfo.set_protect_value == 0 )
    {
        LcdDisplay_length( ROW_1, CHAR_0, "  Force master  ", LCD_MAX_CASE );
    }
    else
    {
        LcdDisplay_length( ROW_1, CHAR_0, "  Force slave   ", LCD_MAX_CASE );
    }
    yes_no_display( FlashLcd, psys );

    return key_process_status( &KeyPro );
}

BYTE menu_protect_set_left( void )
{
     if( gSystemInfo.set_protect_value )
          gSystemInfo.set_protect_value = 0;
    return NOCHANGE_MENU;
}

BYTE menu_protect_set_rigth( void )
{
     if( gSystemInfo.set_protect_value == 0 )
          gSystemInfo.set_protect_value = 1;
    return NOCHANGE_MENU;
}

BYTE menu_3_protect_set( BYTE FlashLcd )
{
    BYTE xdata buffer[2][LCD_MAX_CASE];
    SYSTEM_INFOMATION xdata *psys = &gSystemInfo;

    if( gSystemInfo.set_value == 0 )
    {
        KeyPro.keyEnter = menu_auto_yes_no;
        KeyPro.keyLeft = menu_yes_no_left;
        KeyPro.keyRight = menu_yes_no_rigth;
        KeyPro.keyCanncel = menu_1_preview;
        memcpy( &buffer[0], " Auto protection ", LCD_MAX_CASE );
        LcdDisplay_length( ROW_1, CHAR_0, &buffer[0][0], LCD_MAX_CASE );
        yes_no_display( FlashLcd, psys );
    }
    else
    {
        KeyPro.keyEnter = key_go_next;
        KeyPro.keyLeft = menu_protect_set_left;
        KeyPro.keyRight = menu_protect_set_rigth;
        KeyPro.keyCanncel = menu_1_preview;
        memcpy( &buffer[0], "Force protection", LCD_MAX_CASE );
        LcdDisplay_length( ROW_1, CHAR_0, &buffer[0][0], LCD_MAX_CASE );
        show_protect_force( &buffer[1], FlashLcd, psys );
    }

    return key_process_status( &KeyPro );
}

BYTE menu_2_protect_set( BYTE FlashLcd )
{
    SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
    BYTE xdata buffer[2][LCD_MAX_CASE];
    BYTE list_char = 6;

	psys->set_protect_value = 0;
    KeyPro.keyEnter = key_go_next;
    KeyPro.keyLeft = menu_set_left;
    KeyPro.keyRight = menu_set_rigth;
    KeyPro.keyCanncel = menu_1_preview;

    memcpy( &buffer[0][0], rownull, LCD_LAST_CASE );
    memcpy( &buffer[1][0], rownull, LCD_LAST_CASE );
    memcpy( &buffer[0][0], " 1+1 protection ", LCD_MAX_CASE );

    get_protect_status( &buffer[1][0] );

    if( FlashLcd == FLASH_SCREEN )
	{
	    LcdDisplay_length( ROW_2, CHAR_0, rownull, LCD_LAST_CASE );
	}
    if( psys->set_value )
        list_char = 13;
    LcdDisplay_length( ROW_1, CHAR_0, &buffer[0][0], LCD_MAX_CASE );
    LcdDisplay_length( ROW_2, CHAR_0, &buffer[1][0], 6 );
    LcdDisplay_length( ROW_2, CHAR_7, &buffer[1][7], 6 );
    diaplay_char( ROW_2, list_char, LCD_PRINT_TRIANGLE );
	if( list_char == 6 )
	    LcdDisplay_length( ROW_2, CHAR_13, rownull, 1 );
	else
	    LcdDisplay_length( ROW_2, CHAR_6, rownull, 1 );

    return key_process_status( &KeyPro );
}

BYTE menu_1_loop_set( BYTE FlashLcd )
{
    SYSTEM_INFOMATION xdata *psys = &gSystemInfo;

    if( FlashLcd == FLASH_SCREEN )
    {
        psys->yes_no = SET_YES;
	}
    return menu_main_show( "   Loop set    ", FlashLcd );
}

BYTE menu_e1_loop_yes_no( void )
{
    SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
	SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
	BYTE status;

    if( psys->yes_no == SET_YES )
    {
		status = (psdev->remote.e1_status[psys->e1_number-1]&(~E1_NOLOOP))>>2;
        if( status == IDB_E1_NOLOOP )
		{
	        psys->setbuffer[0] |= BIT0<<(psys->e1_number-1);
    		psdev->remote.e1_status[psys->e1_number-1] |= E1_LOOP;
		}
        else
		{
    		psdev->remote.e1_status[psys->e1_number-1] &= E1_NOLOOP;
			psys->setbuffer[0] &= ~( BIT0<<(psys->e1_number-1) );
		}
	    WriteChip( SOFTLOOP_ADDR, psys->setbuffer[0] );
	    psys->sendrc7017 = SETCMDSERIAL;
	    psys->SetCommandCounter = 0;
    }
    return PREVIEW_MENU;
}

BYTE menu_e1_loop_left( void )
{
   if( gSystemInfo.e1_number > 1  )
        gSystemInfo.e1_number --;

    return NOCHANGE_MENU;
}

BYTE menu_e1_loop_rigth( void )
{
   if( gSystemInfo.e1_number < gSystemInfo.max_system_e1  )
        gSystemInfo.e1_number ++;
    return NOCHANGE_MENU;
}

BYTE menu_4_e1_loop( BYTE FlashLcd )
{
	SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
    SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
    BYTE xdata buffer[2][LCD_MAX_CASE];
	BYTE status;

    KeyPro.keyEnter = menu_e1_loop_yes_no;
    KeyPro.keyLeft = menu_yes_no_left;
    KeyPro.keyRight = menu_yes_no_rigth;
    KeyPro.keyCanncel = menu_1_preview;

    memcpy( &buffer[0][0], rownull, LCD_LAST_CASE );
    memcpy( &buffer[1][0], rownull, LCD_LAST_CASE );

	status = (psdev->remote.e1_status[psys->e1_number-1]&(~E1_NOLOOP))>>2;
    switch( status )
    {
    case IDB_E1_LOOP:
		memcpy( &buffer[0][0], " E1-  loop DIS  ", LCD_MAX_CASE);
        break;
    
    case IDB_E1_NOLOOP:
		memcpy( &buffer[0][0], " E1-  loop EN   ", LCD_MAX_CASE);
        break;
    }
	buffer[0][4] = NUMBER_CHAR_ADDRESS + psys->e1_number;
    LcdDisplay_length( ROW_1, CHAR_0, &buffer[0][0], LCD_LAST_CASE );

    yes_no_display( FlashLcd, psys );

     return key_process_status( &KeyPro );
}



BYTE menu_3_e1_loop( BYTE FlashLcd )
{
	SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
    SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
    BYTE xdata buffer[2][LCD_MAX_CASE], lbuffer[5];
    BYTE xdata e1counter;
    BYTE xdata flash_status = flash_time(  );
	BYTE *pe1, status;

    KeyPro.keyEnter = key_go_next;
    KeyPro.keyLeft = menu_e1_loop_left;
    KeyPro.keyRight = menu_e1_loop_rigth;
    KeyPro.keyCanncel = menu_1_preview;

    memcpy( &buffer[0][0], rownull, LCD_LAST_CASE );
    memcpy( &buffer[1][0], rownull, LCD_MAX_CASE );

    if( FlashLcd == FLASH_SCREEN )
    {
		LcdDisplay_length( ROW_2, CHAR_0, rownull, LCD_MAX_CASE );
    }

    if(  psys->set_value == 0 )
    {
		pe1 = psdev->remote.e1_status;
        memcpy( &buffer[0][0], " L:E1 loop O-O) ", LCD_LAST_CASE );
        if( (check_remote_status() == ALARM) )
            KeyPro.keyEnter = key_do_nothing;
        else
            KeyPro.keyEnter = key_go_next;
        KeyPro.keyLeft = menu_e1_loop_left;
        KeyPro.keyRight = menu_e1_loop_rigth;
    }
    else
    {
		pe1 = psdev->local.e1_status;
        memcpy( &buffer[0][0], " R:E1 loop (O-O  ", LCD_LAST_CASE );
        KeyPro.keyEnter = key_do_nothing;
        KeyPro.keyLeft = key_do_nothing;
        KeyPro.keyRight = key_do_nothing;
    }
    KeyPro.keyCanncel = menu_1_preview;
    LcdDisplay_length( ROW_1, CHAR_0, &buffer[0][0], LCD_LAST_CASE );

    if( (check_remote_status() == ALARM) && (psys->set_value == 1) )
    {
        memcpy( &buffer[1][0], rownull, LCD_MAX_CASE );
        flash_char_status( &buffer[1][4], "unknown", flash_status, 7 );
		LcdDisplay_length( ROW_2, CHAR_0, &buffer[1][0], LCD_LAST_CASE );
    }
	else
	{
	    for( e1counter=0; e1counter<psys->max_system_e1; e1counter++ )
	    {
			status = (pe1[e1counter]&(~E1_NOLOOP))>>2;
	        switch( status )
	        {
	        case IDB_E1_LOOP:
				lbuffer[0] = NUMBER_CHAR_ADDRESS + e1counter+1;
	            if( (check_remote_status() == ALARM) )
	                flash_status = SHOW_CHAR_STATUS;
	            flash_char_status( &buffer[1][e1counter*2], lbuffer, flash_status, 1 );
	            break;
	    
	        case IDB_E1_NOLOOP:
				lbuffer[0] = NUMBER_CHAR_ADDRESS + e1counter+1;
	            flash_char_status( &buffer[1][e1counter*2], lbuffer, SHOW_CHAR_STATUS, 1 );
	            break;
	        }
			LcdDisplay_length( ROW_2, e1counter*2, &buffer[1][e1counter*2], 1 );
			if( (psys->e1_number-1) != e1counter )
				LcdDisplay_length( ROW_2, e1counter*2+1, rownull, 1 );
	    }
	}
    if(  psys->set_value == 0 )
        diaplay_char( ROW_2, psys->e1_number*2-1, LCD_PRINT_TRIANGLE );
    return key_process_status( &KeyPro );
}

void get_loop_status( BYTE *pbuffer, SYSTEM_INFOMATION *psys )
{
	SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
    BYTE xdata flash_status, last_status;
    BYTE xdata endcouter, e1counter;
    BYTE xdata loop[2] = {IDB_E1_NOLOOP, IDB_E1_NOLOOP};
    BYTE xdata list_char = 6;
    BYTE xdata status;

⌨️ 快捷键说明

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