找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3792|回复: 6
打印 上一主题 下一主题
收起左侧

STC单片机做的视频监控测试工程宝原理图及PCB与源码资料

  [复制链接]
跳转到指定楼层
楼主
视频监控测试工程宝原理图及PCB资料,有兴趣的可以拿去研究下


单片机源程序如下:
  1. //******************************************************************************************************                             
  2. //
  3. //                              (c) Copyright 2009-2010, ZCQ
  4. //                                   All Rights Reserved
  5. //                                         V2.00.0
  6. //
  7. //-----------------------------------------文件信息-----------------------------------------------------
  8. //
  9. //文   件   名: F:\shoup\程序\New\AgeTwoV1.21\main.c(KEIL C  V2.38a)
  10. //创   建   人: ZCQ
  11. //最后修改日期: 2010年02月05日
  12. //描        述:
  13. //
  14. //-----------------------------------------历史版本信息-------------------------------------------------
  15. //
  16. // 创建人: ZCQ
  17. // 版  本: V1.20.0
  18. // 日 期: 2009年11月14日
  19. // 描 述:
  20. //
  21. //-----------------------------------------当前版本修订-------------------------------------------------
  22. //
  23. // 修改人: ZCQ V1.21.0
  24. // 日 期: 2010年01月07日
  25. // 描 述: 对应硬件 工程宝2代原理图.sch
  26. //         cpu  STC12C5A60S-37I-LQFP48   osc = 18.432MHZ
  27. //------------------------------------------------------------------------------------------------------
  28. //******************************************************************************************************/
  29. #include "headers\STC12C5A60S2.h"
  30. #include "headers\define.h"
  31. #include <stdio.h>
  32. #include <intrins.h>
  33. #include <math.h>
  34. #include <string.h>
  35. #include <MC51.h>

  36. //#include "headers\Eeprom.h"
  37. #include "headers\Serial.h"
  38. #include "headers\AD.h"
  39. #include "headers\74HC164.h"
  40. #include "headers\Key.h"

  41. #include "headers\Head.h"

  42. //chen++
  43. extern unsigned char  Wipper_state;
  44. extern unsigned char  Light_state;
  45. extern unsigned char  Power_state;
  46. extern unsigned char  Cruise_state;
  47. extern unsigned char  ScanStop_Interface;
  48. extern void PtzFunction5(unsigned char uNumData, unsigned char uPresetAddrNum);//预置位设置
  49. extern void PtzFunction6(unsigned char uNumData);        //预置位调用
  50. extern void PtzFunction7(unsigned char uNumData);        //预置位清除
  51. /*******************************主程序*****************************/
  52. /*函数原型:main(void)
  53. /*函数功能:主程序
  54. /*输入参数:无
  55. /*输出参数:无
  56. /*调用模块:无
  57. /*建立时间:2009/10/14
  58. /*作者:zcq
  59. /******************************************************************/
  60. void main(void)
  61. {
  62.                      unsigned char uTemp = 0x00;        
  63.                         bit           bFlag = FALSE;

  64.                         PowerOn(); //开机函数
  65.                         STATUS_LED = 1;
  66.                         EA =1;             //初始化完成后打开总中断   
  67.                         WDT_CONTR = 0x3D;  //1.3653S =  12*64(Pre-scale)*32768/18.43200000(OSC) /*0011 1100 EN_WDT = 1; CLR_WDT; IDLE_WDT = 1; PS2=1 PS1 = 0 PS0 =1*/
  68.                         while(1)
  69.                         {
  70.                                         _nop_();
  71.                                         _nop_();
  72.                                         if(bPowerOnFlag)
  73.                                         {
  74.                                                  PowerOff();//关机函数
  75.                                         }
  76.                    if(!bPowerOnOffFlag)
  77.                    {
  78.                                    WDT_CONTR = 0x3E;
  79. //LED闪烁
  80.                                    if(gWorkLedTimes >= 200)   //5ms中断一次 200*5 = 1000ms  用示波器测试查看是否是1秒
  81.                                    {
  82.                                                    gWorkLedTimes = 0;
  83.                                                    STATUS_LED = ~STATUS_LED;  //1秒闪烁一下
  84.                                                    if(!bKeyNoPressFlag)  // = FALSE  表示有按键按下
  85.                                                    {
  86.                                                                    uMinutesNum = 0;
  87.                                                                    uMinutesTime = 0;
  88.                                                    }
  89.                                                    ////////////////////////////////////////////以下是计时关机判断/////////////////////////////////////////////
  90.                                                    if( uStandbyTime != 0 && bKeyNoPressFlag && !bAutoScanStartFlag)  //关机时间为0 并且没有按键按下
  91.                                                    {
  92.                                                                                         TimePowerOff(); //计时关机
  93.                                                    }
  94.                                         }                 
  95. ///按键检测
  96.                                           if(uKeyDelay >= 3)  //大概3*5ms*15检测一次按键  大概0.5秒
  97.                                           {         
  98.                                                    uTemp = KeyScan();
  99.                                                    uKeyDelay = 0;
  100.                                                    if(uTemp == 0xAA || uTemp == 0x55 )  //按键按下或者弹起
  101.                                                    {
  102.                                                            // SendBufferOne(uKey_Data);
  103.                                                            //        SendBufferOne(uTemp);
  104.                                                            KeyDealwith(uKey_Data,uTemp);

  105.                                                            WDT_CONTR = 0x3D; //chen++
  106.                                                            Delay100ms(5);   //chen++
  107.                                                            WDT_CONTR = 0x3D; //chen++
  108.                                                            SOUND = 0;                 //chen++

  109.                                                            bKeyFlag = FALSE;
  110.                                                            uKey_Data = 0;
  111.                                                    }  
  112.                                           }
  113. //网线运行测试
  114.                                           if(gNetSendRunTimes >= 200/uNetSpeed)
  115.                                           {
  116.                                                    gNetSendRunTimes = 0;
  117.                                                    if(bNetSendRunFlag)
  118.                                                    {
  119.                                                            uTemp = 128/(pow(2,uNetSendRunLoop-1));
  120.                                                            SendOneData(uTemp);  //74HC164
  121.                                                            uNetSendRunLoop = uNetSendRunLoop - 1;
  122.                                                            if(uNetSendRunLoop == 0)
  123.                                                            {
  124.                                                                            uNetSendRunLoop = 8;
  125.                                                            }
  126.                                                            NetLineSendMode(TRUE, uNetMcuLedLoop);
  127.                                                            uNetMcuLedLoop = uNetMcuLedLoop + 1;
  128.                                                            if(uNetMcuLedLoop == 9)
  129.                                                            {
  130.                                                                            uNetMcuLedLoop = 1;
  131.                                                            }
  132.                                                     }
  133.                                           }
  134. //电池检测
  135.    //bPresetSet_Flag
  136. if(!bPresetSet_Flag)                          
  137. {
  138. if(!bPresetVideo_Flag)
  139. {
  140.            if(gBatFlagTimes >= 150)   //5ms中断一次 200*5 = 1000ms
  141.                                           {
  142.                                                    if(BAT_FLAG)      //假设P3.2为高电平 表示有充电信号
  143.                                                    {
  144.                                                                    DelayX1ms(2);  //延时去抖
  145.                                                                    if(BAT_FLAG)
  146.                                                                    {
  147.                                                                                    bBatChargeFlag = TRUE;
  148.                                                                                    if(uInterfaceNum != 1 && uInterfaceNum != 10 && uInterfaceNum != 11 && !bLogoFlag && !bVideoGenerationFlag)   //假设P3.2为高电平 表示有充电信号
  149.                                                                                    {
  150.                                                                                                    //SendBufferOne(0x32);
  151.                                                                                                    //显示电池格数
  152.                                                                                                    if(uBatGridNumTemp == 5)
  153.                                                                                                    {
  154.                                                                                                            uBatGridNumTemp = 0;
  155.                                                                                                    }
  156.                                                                                                    else
  157.                                                                                                    {
  158.                                                                                                            uBatGridNumTemp = uBatGridNumTemp+1;
  159.                                                                                                    }
  160.                                                                                                    TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, uBatGridNumTemp); //充电显示
  161.                                                                                    }
  162.                                                                    }
  163.                                                           }
  164.                                                    else
  165.                                                    {
  166.                                                                    bBatChargeFlag = FALSE;
  167.                                                    }
  168.                                                    if(bBatEmptyFlag && !bBatChargeFlag)  //电池为空 并且没有在充电 要求闪烁空电池图标
  169.                                                    {
  170.                                                                    if(!bFlashFlag)
  171.                                                                    {
  172.                                                                                    bFlashFlag = TRUE;
  173.                                                                                    if(!bAlarmSoundFlag && !bKeyLockFlag)   //当长按模式键时关闭报警声音
  174.                                                                                    {
  175.                                                                                                    SOUND = 1;
  176.                                                                                    }
  177.                                                                                    if(uInterfaceNum != 1 && !bLogoFlag && !bVideoGenerationFlag)
  178.                                                                                    {
  179.                                                                                                    TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, 0); //空
  180.                                                                                    }
  181.                                                                    }
  182.                                                                    else
  183.                                                                    {
  184.                                                                                    bFlashFlag = FALSE;
  185.                                                                                    SOUND = 0;
  186.                                                                                    if(uInterfaceNum != 1 && !bLogoFlag && !bVideoGenerationFlag)
  187.                                                                                    {
  188.                                                                                                    TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, 6); // 6表示 下画线 空
  189.                                                                                    }
  190.                                                                    }
  191.                                                    }
  192.                                                   gBatFlagTimes = 0;
  193.                                           }

  194. //电压检测
  195.                                    if(uVolAdChangeTimes >= 100 )      //100*5ms执行一次AD采样。
  196.                                           {
  197.                                            VolAdChangeOpen(); //得到电压
  198.                                            DealWithVolAdDispBat(FALSE);   //处理电压报警 并显示对于电池格数
  199.                                            uVolAdChangeTimes = 0;
  200.                                           }
  201.         }
  202. }

  203. //串口数据接收显示LED
  204.                                           if(uGetComDataTimes >= 10 && bComuRecLedFlashFlag)
  205.                                           {
  206.                                            //显示LED
  207.                                            if(bLedStartFlag)
  208.                                            {
  209.                                                    ComuRecLedFlash(uDataLedLoop);
  210.                                                    uDataLedLoop = uDataLedLoop + 1;
  211.                                                    if(uDataLedLoop == 9)
  212.                                                    {
  213.                                                             uDataLedLoop = 1;
  214.                                                    }
  215.                                            }
  216.                                            bLedStartFlag = FALSE;
  217.                                            uGetComDataTimes = 0;
  218.                                           }

  219. //球机地址自动停止命令
  220.                                    if(bAutoScanFlag && bAutoScanStartFlag && !bAutoScanEndFlag)  //当TRUE时发送命令
  221.                                    {
  222.                                                    // uComSereialItem = 1;  //测试
  223.                                                    if(!bAutoFirstFlag)
  224.                                                    {
  225.                                                            uAutoSendTempAddr = uAutoStartAddr;
  226.                                                            uAutoScanSendData1Time = 0;
  227.                                                            uAutoScanSendData1Time = 0;
  228.                                                            bAutoFirstFlag = TRUE;
  229.                                                    }
  230.                                            //分4次发送命令  上  停止下 停止  时间/2  500ms为一单位发送 uAutoSpaceTime
  231.                                            if(uAutoSendTempAddr<= uAutoEndAddr && !bAutoFullExitFlag)
  232.                                            {
  233.                                                                    if(uAutoRunTimes == 1)
  234.                                                                    {
  235.                                                                                            DE = 1;
  236.                                                                                            AutoPtzUp(uAutoControlRuleItem);
  237.                                                                                            DE = 0;
  238.                                                                                            uAutoRunTimes = 2;
  239.                                                                                            uAutoScanSend1Times = 0;
  240.                                                                                            uAutoScanSendData1Time = 0;
  241.                                                                    }
  242.                                                                    if(uAutoRunTimes == 2)
  243.                                                                    {
  244.                                                                                                         if(uAutoScanSendData1Time>=100) //500ms
  245.                                                                                                         {
  246.                                                                                                                         uAutoScanSendData1Time = 0;
  247.                                                                                                                         uAutoScanSend1Times = uAutoScanSend1Times+1;
  248.                                                                                                         }
  249.                                                                                                         if(uAutoScanSend1Times >= uAutoSpaceTime)
  250.                                                                                                         {
  251.                                                                                                                         DE = 1;
  252.                                                                                                                         AutoStopPtzRunFun();
  253.                                                                                                                         Delay100ms(1);
  254.                                                                                                                         DE = 0;
  255.                                                                                                                         uAutoRunTimes = 3;
  256.                                                                                                                         uAutoScanSend2Times = 0;
  257.                                                                                                         }
  258.                                                                                  }
  259.                                                      if(uAutoRunTimes == 3)
  260.                                                                    {
  261.                                                                                    DE = 1;
  262.                                                                                    AutoPtzDown(uAutoControlRuleItem);
  263.                                                                                    DE = 0;
  264.                                                                                    uAutoRunTimes = 4;
  265.                                                                                    uAutoScanSend2Times = 0;
  266.                                                                                    uAutoScanSendData2Time = 0;
  267.                                                                    }
  268.                                                                    if(uAutoRunTimes == 4)
  269.                                                                    {
  270.                                                                                    if(uAutoScanSendData2Time>=100) //500ms
  271.                                                                                    {
  272.                                                                                            uAutoScanSendData2Time = 0;
  273.                                                                                            uAutoScanSend2Times = uAutoScanSend2Times+1;
  274.                                                                                    }
  275.                                                                                    if(uAutoScanSend2Times >= uAutoSpaceTime)
  276.                                                                                    {
  277.                                                                                            DE = 1;
  278.                                                                                            AutoStopPtzRunFun();
  279.                                                                                            Delay100ms(1);
  280.                                                                                            DE = 0;
  281.                                                                                            uAutoRunTimes = 1;
  282.                                                                                            uAutoScanSend1Times = 0;
  283.                                                                                            if(uAutoSendTempAddr < 255)
  284.                                                                                            {
  285.                                                                                                    uAutoSendTempAddr = uAutoSendTempAddr +1;
  286.                                                                                            }
  287.                                                                                            else
  288.                                                                                            {
  289.                                                                                                    uAutoSendTempAddr = 255;
  290.                                                                                                    bAutoFullExitFlag = TRUE;
  291.                                                                                            }
  292.                                                                                    }
  293.                                                      }        
  294.                                            }
  295.                                     else
  296.                                     {
  297.                                                            bAutoFirstFlag = FALSE;
  298.                                                            bAutoScanStartFlag = FALSE;
  299.                                                            bAutoScanEndFlag = FALSE;
  300.                                                            uAutoScanSend1Times = 0;
  301.                                                            uAutoScanSend2Times = 0;
  302.                                                            uAutoScanSendData1Time = 0;
  303.                                                            uAutoScanSendData2Time = 0;
  304.                                                            
  305.                                                            if(bAutoFullExitFlag)
  306.                                                            {
  307.                                                                    uAutoSendTempAddr = 255;
  308.                                                            }
  309.                                                            else
  310.                                                            {
  311.                                                                    uAutoSendTempAddr = uAutoSendTempAddr-1;  //地址退出时要求减一
  312.                                                            }
  313.                                                            
  314.                                                            DE = 1;
  315.                                                            AutoStopPtzRunFun();
  316.                                                            DE = 0;
  317.                                                            bAutoFullExitFlag = FALSE;
  318.                                                            
  319.                                                            CD4053_A = 0;  //chen++
  320.                                                            CD4053_B = 0;  //视频信号输入
  321.                                                            CD4053_C = 0;
  322.                                                            
  323.                                                            //显示相关信息  比方 地址 波特率等
  324.                                                            TopLeftNew(2,8);      //球机地址自动烧描
  325.                                                            BottomLeft(0,0x073);  //空
  326.                                                            BottomRight(2,0x076); //返回      
  327.                                                            AutoScanStopDisplay(1, uAutoSendTempAddr,uAutoBaudRateItem,uAutoControlRuleItem);//自动扫描 结束
  328.                                                            bAutoScanStopFlag = TRUE;
  329.          
  330.           uInterfaceNum = 7;
  331.           bManualStopFlag = TRUE;  //手动停止自动扫描
  332.                                     }
  333.                                                  }

  334. //球机地址自动扫描的手动停止命令
  335.                                                  if(bAutoScanFlag && bAutoScanEndFlag && !bAutoScanStartFlag)//停止命令
  336.                                                  {
  337.                                                                         bAutoFirstFlag = FALSE;
  338.                                                                         bAutoScanStartFlag = FALSE;
  339.                                                                         bAutoScanEndFlag = FALSE;
  340.                                                                         uAutoScanSend1Times = 0;
  341.                                                                         uAutoScanSend2Times = 0;
  342.                                                                         uAutoScanSendData1Time = 0;
  343.                                                                         uAutoScanSendData2Time = 0;
  344.                                                                         bAutoFullExitFlag = FALSE;
  345.                                                                         DE = 1;
  346.                                                                         AutoStopPtzRunFun();
  347.                                                                         DE = 0;
  348.                                                                         //显示相关信息  比方 地址 波特率等
  349.                                                                         TopLeftNew(2,8);      //球机地址自动烧描
  350.                                                                         BottomLeft(0,0x073);  //空
  351.                                                                         BottomRight(2,0x076); //返回
  352.          if(!bManualStopFlag)
  353.          {
  354.                                                                           AutoScanStopDisplay(0, uAutoSendTempAddr,uAutoBaudRateItem,uAutoControlRuleItem);
  355.            bManualStopFlag = FALSE;  //手动停止自动扫描
  356.          }
  357.          else
  358.          {
  359.            AutoScanStopDisplay(1, uAutoSendTempAddr,uAutoBaudRateItem,uAutoControlRuleItem);
  360.            bManualStopFlag = TRUE;  //手动停止自动扫描
  361.          }
  362.                                                                         bAutoScanStopFlag = TRUE;
  363.          uInterfaceNum = 7;
  364.                                                  }
  365.                                         }//end if (!bPowerOnOffFlag)
  366.                                         _nop_();
  367.                                         _nop_();
  368.                                         WDT_CONTR = 0x3D;
  369.                                         _nop_();
  370.                                         _nop_();
  371.                                 WDT_CONTR = 0x3D;}  
  372.                 ////////////////////////////////////////////////////////////////////////////////////////////////////
  373. }

  374. /****************************初始化函数****************************/
  375. /*函数原型:MainInit(void)
  376. /*函数功能:对CPU各IO口及变量做初始化
  377. /*输入参数:无
  378. /*输出参数:无
  379. /*调用模块:无
  380. /*建立时间:2009/06/20
  381. /*作者:zcq
  382. /*****************************************************************/
  383. void MainInit(void)
  384. {  
  385. //CPU IO口配置
  386.                         P4SW = 0x70;      //设置P4.4为IO口 P4.5为IO口 P4.6为IO口
  387.                         
  388.                         P0M0 = 0x00;      //原来是F0
  389.                         P0M1 = 0x00;      //P0为准双向口,用于4X4键盘检测  
  390.                         
  391. // P1口设置在AD.C中 设置
  392.                         
  393.                         P2M0 = 0x0A;      // P2.0 = BAT_FLAG 设置为高阻输入 (充电检测)
  394.                         P2M1 = 0x01;      // P2.1 = LCD_ON (LCD电源开关)
  395.                                                           // P2.3 = OPEN  推挽输出 (MCU电源维持开关)
  396.                         
  397.                         P3M0 = 0xB8;      // P3.3 = LCD_KEY2 开始为推挽输出(未用)
  398.                                                           // P3.4 = DE 开始为推挽输出(RS485)
  399.                         P3M1 = 0x40;      // P3.5 = STATUS 开始为推挽输出(运行状态指示)  
  400.                                           // P3.6 = KEY_FLAG 设置为高阻输入(PowerOn按键检测)
  401.                                                           // P3.7 = IN_OUT 开始为推挽输出(继电器控制)
  402.                                                          
  403.                         P4M0 = 0x84;      // P4.2 = CS              推挽输出(片选MB90092)   
  404.                         P4M1 = 0x00;      // P4.7 = LCD_KYE1   推挽输出(RST)量产要改成P4.3  P4M0 = 0xC0;
  405.                         
  406.                         P5M0 = 0x02;      // P5.2 = DAT_164; P5.1 = SOUND   推挽输出
  407.                         P5M1 = 0x00;      // P5.3 = CLK_164;
  408.                         
  409.                         IN_OUT = 0;      //关闭继电器
  410.                         LCD_ON = 0;      //先关闭LCD电源
  411.                         OPEN   = 0;      //先关闭电源
  412.                         SOUND = 0;       //关闭BUZZ
  413.                         CLK  = 1;        //MB90092 CLK先置高
  414. /*
  415.         //DelayX1ms(10);
  416.                         CLK  = 1;        //MB90092 CLK先置高
  417.                         MainScreen_Init (B_COLOR_WHITE);    //MB90092初始化
  418.                         MB90092_ClearScreen (); //
  419.         //DelayX1ms(10);
  420.                         MainLogo();  //测试LCD显示               
  421. */
  422.         //CD4053_A = 0;  //该程序已经跳过线 登量产时改过来
  423.         
  424.             CD4053_A = 0;  //chen++
  425.                         CD4053_C = 0;
  426.                         CD4053_B = 0;
  427. /*
  428.                         Init74HC164();  
  429.                         
  430.                         AUXR  = 0x00;
  431.                         InitTimer();
  432.                         InitAdRegister();
  433.                         uBaudRateItem = 3;
  434.                         SerialPortOneInitial(uBaudRateItem);  //开始为2400  uBaudRateItem= 3
  435.                         SerialPortTwoInitial(uBaudRateItem);  //开始为2400
  436.                         InitKeyData();    //初始化按键数据
  437. */
  438.         //中断优先级设置  暂时省略
  439.                         ET1 =0;               //关闭Timer1中断
  440.                         
  441.         //EADC = 1;
  442.         //EADC_SPI = 1;   
  443.         //IT1 = 0;              //外部中断1为边沿触发 = 1  = 0电平触发  TCON 复位 =0x00        
  444.         //EX1 = 0;              //关外部中断1        
  445.         //IT0 = 1;              //外部中断0  下降沿触发 = 1  = 0电平触发
  446.         //EX0 = 0;              //开外部中断0        
  447.                         RS1=0;
  448.                         RS0=0;
  449.                         
  450.         //设置优先级
  451.         //串口2中断最高
  452.                         IP2  = 0x01;  //PS2H = 1;   
  453.                         IPH2 = 0x01;  //PS2  = 1;
  454.                         
  455.                         IE2  = 0x00; //关闭串口2中断
  456.                         ES   = 0;    //关闭串口1中断
  457.                         
  458.                         return;
  459. }
  460. /***************************************用户运行环境设置函数******************************************/
  461. /*函数原型:void UserSetup(void)
  462. /*函数功能:用户数据相关变量初始化
  463. /*输入参数:无
  464. /*输出参数:无
  465. /*调用模块:无
  466. /*建立时间:2009/06/20
  467. /*作者:zcq
  468. //*****************************************************************************************************/
  469. void UserSetup(void)
  470. {
  471.                         uPowerKeyTime = 0;      //电源按键长按时间
  472.                         
  473.                         uInterfaceNum = 0;
  474.                         
  475.                         gPowerOnOffTimes = 0;
  476.                         gKeyNoPressTimes = 0;
  477.                         bPowerOnOffFlag = TRUE;
  478.                         bPowerOnFlag = FALSE;  //开机标志 = TRUE 表示开机
  479.                         bPowerOffFlag= FALSE;
  480.                         
  481.                         uRcTimes = 0;
  482.                         gWorkLedTimes = 0;  //初始化
  483.                         gBatFlagTimes = 0;
  484.                         bBatChargeFlag= FALSE;
  485.                         
  486. //        uBatFullRunTimes = 0;  //满电池状态下的充电图标循环次数
  487. // bBatFullFlag = FALSE;  //电池满标志
  488.                         bBatEmptyFlag= FALSE;
  489.                         bFlashFlag   = FALSE;
  490.                         
  491.                         uVolAdChangeTimes = 0;
  492.                         uKeyDelay = 0;
  493.                         bKeyFlag  = FALSE;
  494.                         uLoop164 = 0;
  495.                         DE = 0;
  496.                         STATUS_LED = 0;    //关闭状态灯
  497.                         IN_OUT = 0;        //关闭继电器
  498.                         
  499.                         //菜单相关
  500.                         bLogoFlag  = TRUE;
  501.                         bPowerOffMMIFlag = FALSE;
  502.                         bMainMenuFlag = FALSE;
  503.                         bSysSetupFlag = FALSE;

  504.                         bPreset_Page = 0;
  505.                         bPresetVideo_Flag = 0;
  506.                         bPresetSet_Flag = 0;
  507.                         uPtzOtherFunNum_Preset = 0;
  508.                         
  509.                         //2 PTZ云台合视频输入控制
  510.                         bModeKeyVideoFlag = FALSE;
  511.                         
  512.                         bPtzVideoFlag = FALSE; //主控制口
  513.                         
  514.                         bVideoSignInFlag = FALSE;
  515.                         bVideoSignInGenFlag = FALSE; //已经有视频信号 标志
  516.                         
  517.                         bOtherFunFlag = FALSE;
  518.                         
  519.                         bAutoScanFlag = FALSE;
  520.                         bAutoScanStartFlag= FALSE;
  521.                         bAutoScanEndFlag  = FALSE;
  522.                         bAutoFirstFlag = FALSE;
  523.                         bAutoFullExitFlag = FALSE;
  524.                         bAutoScanStopFlag = FALSE;

  525.    bManualStopFlag = FALSE;  //手动停止自动扫描
  526.                         
  527.                         bNetSendBarFlag  = FALSE;
  528.                         bNetSendRunFlag  = FALSE;
  529.                         bVideoGenerationFlag = FALSE;
  530.                         
  531.                         bComuDataBarFlag   = FALSE;   //通信数据测试功能界面标志
  532.                         bComuStartRecFlag = FALSE;
  533.                         bComuStopRecFlag = FALSE;
  534.                         bComuDispDataFlag = FALSE;
  535.                         
  536.                         uDataLedLoop = 0;
  537.                         bComuRecLedFlashFlag = FALSE;
  538.                         bLedStartFlag   = FALSE;
  539.                         
  540.                         bComuRunFlag = FALSE; //通信数据开始分析标志
  541.                         bPowerManageBarFlag = FALSE;
  542.                         
  543.                         bAboutHelpBarFlag = FALSE;
  544.                         
  545.                         uPowerManageBarTimes = 1;//默认为电源输入方式
  546.                         
  547.                         uMainMenuTimes = 1;  //表示进入主菜单后是第几条bar
  548.                         uSysSetupTimes = 1;  //表示进入系统参数设置后是第几条bar
  549.                         uControlRuleItem = 1;
  550.                         uComSereialItem = 2; //2表示485
  551.                         uBaudRateItem = 3;   //默认2400bps
  552.                         uRunSpeedData = 0x30;  //运行速度  0-3F
  553.                         uStandbyTime =  2;   //待机时间  0到 30分钟  0表示不关机  2*5 = 10分钟
  554.                         uNetSpeed =  3;      //网线速度   1到5   1表示慢  5表示快
  555.                         uLcdBright   =  10;  //屏幕亮度   1到15
  556.                         uVideoGenTimes = 0;  //开始为0
  557.                         
  558.                         uPtzMainBarNum = 1;  //云台球机和视频输入控制 界面的第几
  559.                         uPresetAddr    = 0;  //预置位地址
  560.                         uPtzOtherFunNum = 1;
  561.                         
  562.                         uAutoScanSetupTimes = 1;   //表示进入AUTOSCAN菜单后是第几条bar
  563.                         uAutoBaudRateItem = 3;     //自动扫描波特率  默认2400bps
  564.                         uAutoControlRuleItem = 1;  //自动扫描控制协议是第几个
  565.                         uAutoStartAddr = 0;        //开始地址
  566.                         uAutoEndAddr   = 255;      //结束地址
  567.                         uAutoSpaceTime = 3;        //间隔时间
  568.                         uAutoScanSendData1Time = 0;
  569.                         uAutoScanSend1Times = 0;
  570.                         uAutoScanSendData2Time = 0;
  571.                         uAutoScanSend2Times = 0;
  572.                         uAutoSendTempAddr = 0;
  573.                         uAutoRunTimes = 1;         //共4部执行  1 UP  STOP DOWN STOP
  574.                         
  575.                         
  576.                         uVideoSignInAddr = 0x00;  //视频输入时的 云台地址
  577.                         uVideoSignInType = 1;     //视频格式  = 1 AUTO  =2  PAL =3 NTSC
  578.                         uVideoSignInBarNum = 1;   //选中的是数字  默认为0
  579.                         gNetSendRunTimes = 0;     //网线发送测试时间基数 计数
  580.                         uNetSendRunLoop = 8;
  581.                         uNetMcuLedLoop  = 1;
  582.                         
  583.                         bPowerInOutFlag = FALSE;     //接口图标
  584.                         bKeyLockFlag    = FALSE;     //键盘锁图标  表示未锁
  585.                         bKeyIconFlag    = FALSE;
  586.                         bAlarmSoundFlag = FALSE;
  587.                         bAlarmIconFlag  = FALSE;
  588.                         
  589.                         // bSoundFindLineFlag = FALSE;  //声音图标
  590.                         uBatGridNum  = 0;  //电池格式
  591.                         uBatGridNumTemp = 0; //电池格式零时存放
  592.                         
  593.                         uGetSerialDataNum = 0;
  594.                         uGetComDataTimes  = 0;
  595.                         uComuPageNum      = 0; //显示当前页数                ES
  596.                         
  597.                         uMinutesTime = 0;
  598.                         uMinutesNum  = 0;
  599.                         bKeyNoPressFlag = TRUE;
  600.                         
  601.                         //键盘上锁标志
  602.                         bLockDisplayFlag = FALSE; //键盘上锁标志
  603.                         bLockTimeFlag    = FALSE;
  604.                         uLockDisplayTime = 0;
  605.                         uLockDisplayTimes = 0;
  606.         
  607. }
  608. /***************************************初始化定时器1函数*********************************************/
  609. /*函数原型:void InitTimer(void)
  610. /*函数功能:用户数据相关变量初始化
  611. /*输入参数:无
  612. /*输出参数:无
  613. /*调用模块:无
  614. /*建立时间:2009/10/20
  615. /*作者:zcq
  616. //*****************************************************************************************************/
  617. void InitTimer(void)
  618. {
  619.                         AUXR &= T0_12_DIV_AND;  //TIME0's clock : fosc dived by 12.
  620. //        AUXR |= T0_01_DIV_OR;        //TIME0's clock : fosc dived by 1.  1T模式
  621.                         
  622.                         TMOD = 0x21;        //time1 is mode 2(auto reload) timer0 is mode 1(16bits)
  623.                         
  624.                         TL0 = 0x00;     //12/FOSC = 机器周期  TC= 5ms = 5000/0.65104166666666666666666666666667 = 7680 2^16 - 7680 =
  625.                         TH0 = 0xE2;     //57856 = 0xE200;
  626.                         
  627.                         ET0 = 1;        //打开定时器0中断
  628.                         TR0 = 1;        //启动Timer0开始计数
  629.                         return;
  630. }
  631. //开机函数
  632. void PowerOn(void)
  633. {
  634.    EA = 0;          //初始化完成前,先关闭总中断
  635.                         IN_OUT = 0;      //先关闭继电器
  636.                         LCD_ON = 0;      //先关闭LCD电源
  637.                         OPEN   = 0;      //先关闭电源
  638.                         SOUND = 0;       //关闭BUZZ
  639.                         STATUS_LED = 0;  //关闭状态灯        
  640.                         MainInit();      //相关寄存器初始化
  641.                         UserSetup();     //用户参数初始化
  642.                         EA = 0;          //初始化完成前,先关闭总中断
  643.                         Delay100ms(10);  //等等电源稳定
  644.                         CLK  = 1;        //MB90092 CLK先置高
  645.                         Delay100ms(10);  //等等电源稳定
  646.                         WDT_CONTR = 0x3D;
  647.                         bPowerOnOffFlag = TRUE;
  648.                         EA = 0;          //初始化完成前,先关闭总中断
  649.                         LCD_ON = 0;      //先关闭LCD电源
  650.                         OPEN   = 0;      //先关闭电源
  651.                         LCD_ON = 0;      //先关闭LCD电源
  652.                         WDT_CONTR = 0x3D;
  653.         //检测是否有按键    //by zcq  2010 02 03
  654.                         do
  655.                         {
  656.                                   _nop_();
  657.                                                 _nop_();
  658.                                                 Delay100ms(5);  //等等电源稳定
  659.                                                 _nop_();
  660.                                                 if(KEY_FLAG)
  661.                                                 {
  662.                                                         Delay100ms(5);  //等等电源稳定
  663.                                                         if(KEY_FLAG)
  664.                                                         {   
  665.                                                                 OPEN = 1;
  666.                                                                 LCD_ON = 1;      //打开LCD电源
  667.                                                                
  668.                                                                 Init74HC164();                          
  669.                                                                 AUXR  = 0x00;
  670.                                                                 InitTimer();
  671.                                                                 InitAdRegister();
  672.                                                                 uBaudRateItem = 3;
  673.                                                                 SerialPortOneInitial(uBaudRateItem);  //开始为2400  uBaudRateItem= 3
  674.                                                                 SerialPortTwoInitial(uBaudRateItem);  //开始为2400
  675.                                                                 InitKeyData();    //初始化按键数据
  676.                                                 //DelayX1ms(10);
  677.                                                                 CLK  = 1;        //MB90092 CLK先置高
  678.                                                                 MainScreen_Init (B_COLOR_WHITE);    //MB90092初始化

  679.                                                                 MB90092_ClearScreen (); //
  680.                                                 //DelayX1ms(10);
  681.                                                                 MainLogo();  //显示LOGO               
  682.                                                                 SOUND = SOUND_ON;
  683.                                                                 uInterfaceNum = 1;  //公司标志界面为1
  684.                                                                 bPowerOffMMIFlag = FALSE;
  685.                                                                 bLogoFlag = TRUE;
  686.                                                                 bMainMenuFlag = FALSE;
  687.                                                                 bSysSetupFlag = FALSE;
  688.                                                                 bPtzVideoFlag = FALSE;
  689.                                                                 bVideoSignInFlag  = FALSE;      //视频信号输入模式
  690.                                                                 bVideoSignInGenFlag = FALSE;   //已经有视频信号 标志
  691.                                                                 bAutoScanFlag = FALSE;
  692.                                                                 bOtherFunFlag = FALSE;
  693.                                                                 bNetSendBarFlag = FALSE;
  694.                                                                 bNetSendRunFlag = FALSE;
  695.                                                                 bVideoGenerationFlag = FALSE;
  696.                                                                 bComuDataBarFlag   = FALSE;
  697.                                                                 bPowerManageBarFlag = FALSE;
  698.                                                                 bAboutHelpBarFlag = FALSE;
  699.                                                                
  700.                                                                 bAutoScanStopFlag = FALSE;
  701.         
  702.                                                                
  703.                                                                 VolAdChangeOpen(); //得到电压
  704.                                                                 DealWithVolAdDispBat(TRUE);
  705.                                                                
  706.                                                                 uPowerKeyTime = 0;
  707.                                                                 gPowerOnOffTimes = 0;
  708.                                                                 gKeyNoPressTimes = 0;
  709.                                                                
  710.                                                                 bPowerOnFlag  = TRUE;
  711.                                                                 bPowerOffFlag = TRUE;
  712.                                                                 bPowerOnOffFlag = FALSE;
  713.                                                                
  714.                                                                 LCD_ON = 1;      //打开LCD电源
  715.                                                                 Delay100ms(5);
  716.                                                                 WDT_CONTR = 0x3D;
  717.                                                                 OPEN = 1;
  718.                                                                 LCD_ON = 1;
  719.                                                                 Delay100ms(5);
  720.                                                                 WDT_CONTR = 0x3D;
  721.                                                                 OPEN = 1;
  722.                                                                 LCD_ON = 1;
  723.                                                                 Delay100ms(5);
  724.                                                                 WDT_CONTR = 0x3D;
  725.                                                                 OPEN = 1;
  726.                                                                 LCD_ON = 1;
  727.                                                                 Delay100ms(5);
  728.                                                                 WDT_CONTR = 0x3D;
  729.                                                                 SOUND = SOUND_OFF;
  730.                                                         //chen++1        自动从公司标识页进入主菜单页。

  731.                                                            Delay100ms(50);
  732.                                                            WDT_CONTR = 0x3D;
  733.                                                             Delay100ms(50);                                                        
  734.                                                            WDT_CONTR = 0x3D;
  735.                                                            RightSoftKeyFun();
  736.                                                         //chen++2

  737.                                                                 _nop_();
  738.                                                                 _nop_();
  739.                                                         }
  740.                                  }
  741.                                         _nop_();
  742.                                         _nop_();
  743.                                         WDT_CONTR = 0x3D;
  744.                                         _nop_();
  745.                                         _nop_();
  746.                         }
  747.                         while(bPowerOnOffFlag);
  748.    return;
  749. }

  750. //关机函数
  751. void PowerOff(void)
  752. {
  753.    bit bFlag;

  754.                         if(KEY_FLAG)
  755.                         {
  756.                                         gKeyNoPressTimes = 0;
  757.                         }
  758.                         if(!KEY_FLAG && gKeyNoPressTimes >= 150)   //表示弹起按键最少 100*5 = 500ms
  759.                         {
  760.                                         bPowerOffFlag = FALSE;
  761.                                         bPowerOnOffFlag = FALSE;
  762.                                         gPowerOnOffTimes = 0;
  763.                                         uPowerKeyTime    = 0;
  764.                                         gKeyNoPressTimes = 0;
  765.                         }
  766.                         if(!bPowerOffFlag && !bPowerOffMMIFlag)
  767.                         {
  768.                                         if(gPowerOnOffTimes >= 50 && KEY_FLAG)  //1秒  检测  当KEY_FLAG = 1  表示有按键按下
  769.                                         {
  770.                                                         uPowerKeyTime = uPowerKeyTime+1;
  771.                                                         gPowerOnOffTimes = 0;
  772.                                         }
  773.                                         if(uPowerKeyTime >= 5 )  //3秒  长按
  774.                                         {
  775.                                                 //切换到关机界面
  776.                                                 SOUND = SOUND_ON;
  777.                                                 
  778.                                                 CD4053_A = 0;  //chen++
  779.                                                 CD4053_C = 0;
  780.                                                 CD4053_B = 0;
  781.                                                 
  782.                                                 if(uInterfaceNum != 1 && uInterfaceNum != 10 && uInterfaceNum != 11)
  783.                                                 {
  784.                                 //        TopLeft(0,0);
  785.                                                         bFlag = FALSE;
  786.                                                 }
  787.                                                 else
  788.                                                 {
  789.                                                         bFlag = TRUE;
  790.                                                 }
  791.                                                 BottomLeft(2,0x140);  //确定
  792.                                                 BottomRight(2,0x076); //返回
  793.                                                 PowerOffMMI(bFlag);
  794.         /*                        if(uMainMenuTimes == 4 && bVideoGenerationFlag)
  795.                                                 {
  796.                                                                 TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, uBatGridNumTemp); //1格电池
  797.                                                 }
  798. */
  799.                                                 bPowerOffMMIFlag = TRUE;
  800.                                                 bLogoFlag = FALSE;
  801.                                                 bMainMenuFlag = FALSE;
  802.                                                 bSysSetupFlag = FALSE;
  803.                                                 bPtzVideoFlag = FALSE;
  804.                                                 
  805.                                                 bModeKeyVideoFlag = FALSE;
  806.                                                 
  807.                                                 bVideoSignInFlag  = FALSE;      //视频信号输入模式
  808.                                                 bVideoSignInGenFlag = FALSE;   //已经有视频信号 标志
  809.                                                 
  810.                                                 if(bAutoScanStopFlag)  //有
  811.                                                 {
  812.                                                                 bAutoScanFlag  = bAutoScanFlag;
  813.                                                 }
  814.                                                 else
  815.                                                 {
  816.                                                                 bAutoScanFlag = FALSE;
  817.                                                 }
  818.                                                 bOtherFunFlag = FALSE;
  819.                                                 bNetSendBarFlag = FALSE;
  820.                                                 bNetSendRunFlag = FALSE;
  821.                                                 bVideoGenerationFlag = FALSE;
  822.                                                 bComuDataBarFlag   = FALSE;
  823.                                                 bPowerManageBarFlag = FALSE;
  824.                                                 bAboutHelpBarFlag = FALSE;
  825.                                                 bAutoScanStopFlag = FALSE;
  826.                                                 Delay100ms(5);
  827.                                                 WDT_CONTR = 0x3D;
  828.                                                 OPEN = 1;
  829.                                                 LCD_ON = 1;
  830.                                                 Delay100ms(5);
  831.                                                 WDT_CONTR = 0x3D;
  832.                                                 OPEN = 1;
  833.                                                 LCD_ON = 1;
  834.                                                 Delay100ms(5);
  835.                                                 WDT_CONTR = 0x3D;
  836.                                                 OPEN = 1;
  837.                                                 SOUND = SOUND_OFF;
  838.                                 }
  839.                         }
  840.                         return;
  841. }
  842. //计时关机  函数
  843. void TimePowerOff(void)
  844. {
  845.                         uMinutesTime = uMinutesTime +1;
  846.                         if(uMinutesTime>= 60)
  847.                         {
  848.                                 uMinutesNum = uMinutesNum +1;
  849.                                 uMinutesTime = 0;
  850.                         }
  851.                         if(uMinutesNum >= uStandbyTime*5)
  852.                         {
  853.                                         EA = 0;
  854.                                         SOUND = SOUND_ON;
  855.                                         uMinutesNum = 0;
  856.                                         uMinutesNum = 0;
  857.                                         uPowerKeyTime = 0;
  858.                                         bPowerOnFlag  = TRUE;
  859.                                         bPowerOffFlag = FALSE;
  860.                                         bPowerOnOffFlag = TRUE;
  861.                                         WDT_CONTR = 0x3D;
  862.                                         WDT_CONTR = 0x3D;
  863.                                         Delay100ms(20);
  864.                                         WDT_CONTR = 0x3D;
  865.                                         Delay100ms(20);
  866.                                         WDT_CONTR = 0x3D;
  867.                                         Delay100ms(20);
  868.                                         WDT_CONTR = 0x3D;
  869.                                         LCD_ON = 0;
  870.                                         Delay100ms(5);
  871.                                         OPEN = 0;
  872.                                         WDT_CONTR = 0x3D;
  873.                                         Delay100ms(10);
  874.                                         WDT_CONTR = 0x3D;
  875.                                         SOUND = SOUND_OFF;
  876.                                         OPEN = 0;
  877.                                         LCD_ON = 0;
  878.                                         OPEN = 0;
  879.                                         while(1)
  880.                                         {
  881.                                                 _nop_();
  882.                                                 _nop_();
  883.                                                 WDT_CONTR = 0x3D;
  884.                                                 _nop_();
  885.                                                 _nop_();
  886.                                                 OPEN = 0;
  887.                                                 LCD_ON = 0;
  888.                                                 OPEN = 0;
  889.                                         }
  890.                                         EA = 1;
  891.                         }
  892. }
  893. //处理电压 并显示电池格数
  894. void DealWithVolAdDispBat(bit bDispBar)
  895. {
  896.                         unsigned int  iTemp   = 0;
  897.                         unsigned int  iResult = 0;
  898.                         float         fResult = 0.0;
  899.                         unsigned char result[7];
  900.                         
  901.                         
  902.                         //计算并报警
  903.                         iTemp = 0;
  904.                         iTemp = (unsigned int)(AD_channel_result[0]-0x30)*1000;
  905.                         iTemp+= (unsigned int)(AD_channel_result[1]-0x30)*100;
  906.                         iTemp+= (unsigned int)(AD_channel_result[2]-0x30)*10;
  907.                         iTemp+= (unsigned int)(AD_channel_result[3]-0x30)*1;
  908.                         iTemp = iTemp;
  909.                         fResult = (float)(iTemp);
  910.                         iResult = (unsigned int)(fResult*2.681);
  911.                         
  912.                         /*
  913.                         SendBufferOne('*');
  914.                         SendBufferOne(AD_channel_result[0]);
  915.                         SendBufferOne(AD_channel_result[1]);
  916.                         SendBufferOne(AD_channel_result[2]);
  917.                         SendBufferOne(AD_channel_result[3]);
  918.                         SendBufferOne('*');
  919.                         */

  920.                         iResult = iResult + 700;  //chen++ 修正,计入串联二极管的管压降 2013-01-30
  921.                            
  922.                            //转化成能识别的电压 0.373  (分压比) 当为 4.525时。12.13  3.333 是关闭 3.400为低电
  923.                         if(iResult<9800) //9V多
  924.                         {
  925.                                 uBatGridNum = 0;
  926.                                 bBatEmptyFlag = TRUE;
  927.                                 //          bBatFullFlag = FALSE;
  928.                         }
  929.                         if(iResult >= 9800 && iResult < 10800)
  930.                         {
  931.                                 uBatGridNum = 1;
  932.                                 bBatEmptyFlag = FALSE;
  933.                                 //          bBatFullFlag = FALSE;
  934.                                 
  935.                         }
  936.                         if(iResult >= 10800 && iResult < 11200)
  937.                         {
  938.                                 uBatGridNum = 2;
  939.                                 bBatEmptyFlag = FALSE;
  940.                                 //        bBatFullFlag = FALSE;
  941.                         }
  942.                         if(iResult >= 11200 && iResult < 11500)
  943.                         {
  944.                                 uBatGridNum = 3;
  945.                                 bBatEmptyFlag = FALSE;
  946.                                 //        bBatFullFlag = FALSE;
  947.                         }
  948.                         if(iResult >= 11500 && iResult < 11800)
  949.                         {
  950.                                 uBatGridNum = 4;
  951.                                 bBatEmptyFlag = FALSE;
  952.                                 //          bBatFullFlag = FALSE;
  953.                         }
  954.                         if(iResult>= 11800)//>11800  表示电压满格
  955.                         {
  956.                                 uBatGridNum = 5;
  957.                                 bBatEmptyFlag = FALSE;
  958.                                 //          bBatFullFlag = TRUE;//电池满标志
  959.                         }
  960.                         if(uInterfaceNum != 1 && uInterfaceNum != 10 && uInterfaceNum != 11 && !BAT_FLAG && !bDispBar && !bLogoFlag && !bVideoGenerationFlag)  
  961.                         {
  962. //chen++
  963.                                 if(!bPreset_Page)
  964.                                 {
  965.                                         TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, uBatGridNum); //?格电池
  966.                                 }
  967.                         }
  968.                         //把采样值转化为有用电压信号
  969.                         uVolData = 0;
  970.                         result[0] = iResult/10000+0x30;
  971.                         result[1] = iResult%10000/1000+0x30;
  972.                         result[2] = iResult%1000/100+0x30;
  973.                         result[3] = iResult%100/10+0x30;
  974.                         result[4] = iResult%10+0x30;
  975.                         result[5] = '\m';
  976.                         result[6] = '\V';
  977.                         result[7] = '\0';
  978.                         uVolData = result;
  979.                         
  980.                         //如果在电源管理界面  刷新电池电压显示值
  981.                         if(uMainMenuTimes == 6 && !bMainMenuFlag && bPowerManageBarFlag)
  982.                         {
  983.                                 PowerManageBarFun(uPowerManageBarTimes, uVolData);  //网线连接测试功能 选择   
  984.                         }
  985.                         return;
  986. }

  987. //按键处理函数
  988. void KeyDealwith(unsigned char uDealData, unsigned char uKeyType)
  989. {   
  990.                         if(uKeyType == 0xAA)
  991.                         {
  992.                                 bKeyNoPressFlag = FALSE;
  993.                             uMinutesNum = 0;
  994.                                 uMinutesTime = 0;
  995.                                 if(!bKeyLockFlag && uDealData != 0x81)
  996.                             {
  997.                                         SOUND = 1;
  998.                                 }
  999.                                 
  1000.                                 switch (uDealData)
  1001.                                 {
  1002.                                         case  0x11://焦距近
  1003.                                                 {  
  1004.                                                         if(bVideoSignInGenFlag || bPresetVideo_Flag)
  1005.                                                         {
  1006.                                                                 DE = 1;
  1007.                                                                 PtzFocusNear(uControlRuleItem);
  1008.                                                                 DE = 0;
  1009.                                                         }
  1010.                                                         break;
  1011.                                                 }
  1012.                                         case  0x12://光圈开
  1013.                                                 {
  1014.                                                         if(bVideoSignInGenFlag || bPresetVideo_Flag)
  1015.                                                         {
  1016.                                                                 DE = 1;
  1017.                                                 PtzIrisOpen(uControlRuleItem);
  1018.                                                                 DE = 0;
  1019.                                                         }
  1020.                                                         break;
  1021.                                                 }
  1022.                                         case  0x14://左软键盘
  1023.                                                 {
  1024.                                                         LeftSoftKeyFun();
  1025.                                                         break;
  1026.                                                 }
  1027.                                         case  0x18://向上
  1028.                                                 {
  1029.                                                         if(bVideoSignInGenFlag || bPresetVideo_Flag)
  1030.                                                         {
  1031.                                                                 DE = 1;
  1032.                                                               PtzUp(uControlRuleItem);
  1033.                                                                 DE = 0;
  1034.                                                         }
  1035.                                                         else
  1036.                                                         {
  1037.                                                               DownUpItem(FALSE);                                                               
  1038.                                                         }
  1039.                                                         break;
  1040.                                                 }
  1041.                                         case  0x21://焦距远
  1042.                                                 {
  1043.                                                         if(bVideoSignInGenFlag || bPresetVideo_Flag)
  1044.                                                         {
  1045.                                                                 DE = 1;
  1046.                                                                 PtzFocusFar(uControlRuleItem);
  1047.                                                                 DE = 0;
  1048.                                                         }
  1049.                                                         break;
  1050.                                                 }
  1051.                                         case  0x22://光圈关
  1052.                                                 {
  1053.                                                         if(bVideoSignInGenFlag || bPresetVideo_Flag)
  1054.                                                         {
  1055.                                                                 DE = 1;
  1056.                                                                 PtzIrisClose(uControlRuleItem);
  1057.                                                                 DE = 0;
  1058.                                                         }
  1059.                                                         break;
  1060.                                                 }
  1061.                                         case  0x24://主菜单
  1062.                                                 {
  1063.                                                         MainMenuKeyFun();
  1064.                                                         break;
  1065.                                                 }
  1066.                                         case  0x28://向左键
  1067.                                                 {
  1068.                                                         if(bVideoSignInGenFlag || bPresetVideo_Flag)
  1069.                                                         {
  1070.                                                                 DE = 1;
  1071.                                                                 PtzLeft(uControlRuleItem);
  1072.                                                                 DE = 0;
  1073.                                                         }
  1074.                                                         else
  1075.                                                         {
  1076.                                                             LeftRightItem(FALSE);
  1077.                                                         }
  1078.                                                         break;
  1079.                                                 }
  1080.                                         case  0x41://模式键  主要切换视频显示方式  
  1081.                                                 {
  1082.                                                 if(bPreset_Page != 1)
  1083.                                                         {                                                        
  1084.                                                                 ModeKeyFun();
  1085.                                                         /*
  1086.                                                         if(uInterfaceNum != 1 && !bLogoFlag && !bVideoGenerationFlag)
  1087.                                                         {
  1088.                                                         SOUND = 1;
  1089.                                                         if(!bAlarmIconFlag)
  1090.                                                         {
  1091.                                                         bAlarmSoundFlag = TRUE;
  1092.                                                         bAlarmIconFlag = TRUE;
  1093.                                                         }
  1094.                                                         else
  1095.                                                         {
  1096.                                                         bAlarmSoundFlag = FALSE;
  1097.                                                         bAlarmIconFlag = FALSE;
  1098.                                                         }
  1099.                                                         TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, uBatGridNum);
  1100.                                                         }
  1101.                                                         */
  1102.                                                         }        
  1103.                                                         break;
  1104.                                                 }
  1105.                                         case  0x42://放大  镜头近
  1106.                                                 {
  1107.                                                         if(bVideoSignInGenFlag || bPresetVideo_Flag)
  1108.                                                         {
  1109.                                                                 DE = 1;
  1110.                                                                 PtzZoomWide(uControlRuleItem);
  1111.                                                                 DE = 0;
  1112.                                                         }
  1113.                                                         break;
  1114.                                                 }
  1115.                                         case  0x44://向下键
  1116.                                                 {
  1117.                                                         //chen--g
  1118.                                                         if(bVideoSignInGenFlag || bPresetVideo_Flag)        //在视频输入或 预设值视频 界面下
  1119.                                                         {
  1120.                                                                 DE = 1;
  1121.                                                                 PtzDown(uControlRuleItem);
  1122.                                                                 DE = 0;
  1123.                                                         }
  1124.                                                         else
  1125.                                                         {
  1126.                                                                 DownUpItem(TRUE);
  1127.                                                         }
  1128.                                                         break;
  1129.                                                 }
  1130.                                         case  0x48://确定键
  1131.                                                 {
  1132.                                                         LeftSoftKeyFun(); //确定键 有多个功能
  1133.                                                         break;
  1134.                                                 }
  1135.                                         case  0x81://锁定键  用于锁定键盘 或者关闭报警声音
  1136.                                                 {
  1137.                                                         SOUND = 1;
  1138.                                                         if(!bKeyIconFlag)
  1139.                                                         {
  1140.                                                                 bKeyLockFlag = TRUE;
  1141.                                                                 bKeyIconFlag = TRUE;
  1142.                                                         }
  1143.                                                         else
  1144.                                                         {
  1145.                                                                 bKeyLockFlag = FALSE;
  1146.                                                                 bKeyIconFlag = FALSE;
  1147.                                                         }
  1148.                                                         if(uInterfaceNum != 1 && !bLogoFlag && !bVideoGenerationFlag)
  1149.                                                         {
  1150.                                                                 TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, uBatGridNum); //1格电池
  1151.                                                         }
  1152.                                                         break;
  1153.                                                 }
  1154.                                         case  0x82://缩小   镜头远
  1155.                                                 {
  1156.                                                         
  1157.                                                         if(bVideoSignInGenFlag || bPresetVideo_Flag)
  1158.                                                         {
  1159.                                                                 DE = 1;
  1160.                                                                 PtzZoomTele(uControlRuleItem);
  1161.                                                                 DE = 0;
  1162.                                                         }
  1163.                                                         break;
  1164.                                                 }
  1165.                                         case  0x84://向右键
  1166.                                                 {
  1167.                                                         
  1168.                                                         if(bVideoSignInGenFlag || bPresetVideo_Flag)
  1169.                                                         {
  1170.                                                                 DE = 1;
  1171.                                                                 PtzRight(uControlRuleItem);
  1172.                                                                 DE = 0;
  1173.                                                         }
  1174.                                                         else
  1175.                                                         {
  1176.                                                    LeftRightItem(TRUE);
  1177.                                                         }
  1178.                                                         break;
  1179.                                                 }
  1180.                                         case  0x88://右软键盘 返回键
  1181.                                                 {
  1182.                                                         RightSoftKeyFun();
  1183.                                                         break;
  1184.                                                 }
  1185.                                         default: //无按键 或者同时按键无效
  1186.                                                 break;
  1187.                                 }
  1188.                         }
  1189.                         else if(uKeyType == 0x55)
  1190.                         {
  1191.                                 bKeyNoPressFlag = TRUE;  //按键弹起后,球机工作停止
  1192.                                 uMinutesNum = 0;
  1193.                                 uMinutesTime = 0;
  1194.                          switch (uDealData)
  1195.                                 {
  1196.                                         case  0x18://上
  1197.                                         case  0x44://下
  1198.                                         case  0x28://左
  1199.                                         case  0x84://右
  1200.                                         case  0x12://光圈开
  1201.                                         case  0x22://光圈关
  1202.                                         case  0x42://镜头近
  1203.                                         case  0x82://镜头远
  1204.                                         case  0x11://聚焦近
  1205.                                         case  0x21://聚焦远
  1206.                                                   {
  1207.                                                            if(bVideoSignInGenFlag || bPresetVideo_Flag)
  1208.                                                                 {
  1209.                                                                         DE = 1;
  1210.                                                                         StopPtzRunFun();     //停止PTZ命令
  1211.                                                                         DE = 0;
  1212.                                                                 }
  1213.                                                                 SOUND = 0;
  1214.                                                                 break;
  1215.                                                   }
  1216.                                         case  0x14://左软键
  1217.                                         case  0x88://右软键
  1218.                                         case  0x48://确定
  1219.                                         case  0x24://主菜单
  1220.                                         case  0x41://模式键
  1221.                                                 {
  1222.                                                         SOUND = 0;
  1223.                                                         break;
  1224.                                                 }
  1225.                                         case  0x81://锁定键
  1226.                                                 {
  1227.                                                         SOUND = 0;
  1228.                                                         break;
  1229.                                                 }
  1230.                                         default: //无按键 或者同时按键无效
  1231.                                                 break;
  1232.                                 }
  1233.                         }
  1234.                         else
  1235.                         {
  1236.                                 _nop_();
  1237.                         }
  1238.                         return;
  1239. }

  1240. //模式按键函数
  1241. void ModeKeyFun(void)
  1242. {
  1243.                                 CD4053_A = 0;  //chen++
  1244.                                 CD4053_B = 0;  //OSD - LCD
  1245.                                 CD4053_C = 0;

  1246.                         if(bAutoScanStartFlag)  //球机地址自动扫描,跳出
  1247.                         {
  1248.                                         return;
  1249.                         }
  1250.                         if(!bModeKeyVideoFlag)
  1251.                         {
  1252.                                         TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, uBatGridNumTemp);
  1253.                                         uInterfaceNum = 5;
  1254.                                         MMI_DisplayFun(7);
  1255.                                         uMainMenuTimes = 2;
  1256.                                         uPtzMainBarNum = 1;
  1257.                                         return;
  1258.                         }
  1259.                         if(uMainMenuTimes == 2 && uPtzMainBarNum == 1 && bVideoSignInGenFlag && !bVideoSignInFlag)
  1260.                         {
  1261.                                         CD4053_B = 0;  //OSD - LCD
  1262.                                         AddressSave = uVideoSignInAddr;          //保存485 的发送地址
  1263.                                        
  1264.                                         bVideoSignInGenFlag = FALSE;   //已经有视频信号
  1265.                                         bVideoSignInFlag = TRUE;
  1266.                                         return;
  1267.                         }
  1268.                         if(uMainMenuTimes == 2 && uPtzMainBarNum == 1 && !bVideoSignInGenFlag && bVideoSignInFlag)
  1269.                         {
  1270.                                         CD4053_B = 1;  //视频信号输入
  1271.                                         //保存485 的发送地址
  1272.                                         AddressSave = uVideoSignInAddr;
  1273.                                        
  1274.                                         bVideoSignInGenFlag = TRUE;   //已经有视频信号
  1275.                                         bVideoSignInFlag = FALSE;
  1276.                                         return;
  1277.                         }  
  1278. }
  1279. //主菜单
  1280. void MainMenuKeyFun(void)
  1281. {
  1282.                         if(!bMainMenuFlag && !bAutoScanStartFlag && !bVideoSignInGenFlag)
  1283.                         {
  1284.                                 MB90092_ClearScreen();
  1285.                                 
  1286.                                 CD4053_A = 0;  //chen++
  1287.                                 CD4053_B = 0;  //OSD - LCD
  1288.                                 CD4053_C = 0;
  1289.                                 
  1290.                                 TopLeft(3, 0x070);  //主菜单
  1291.                                 TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, uBatGridNum); //1格电池        
  1292.                                 //chen--g BottomLeft(2,0x074);   //选择
  1293.                                 BottomLeft(2,0x140);   //确定
  1294.                                 //chen--g BottomRight(2,0x076);  //返回
  1295.                                  BottomRight(0,0x078);  //chen++ ---                                

  1296.                                 MainMenu(uMainMenuTimes);
  1297.                                 bPowerOffMMIFlag = FALSE;
  1298.                                 bLogoFlag = FALSE;
  1299.                                 bMainMenuFlag = TRUE;
  1300.                                 bSysSetupFlag = FALSE;
  1301.                                 bPtzVideoFlag = FALSE;
  1302.                                 bVideoSignInFlag  = FALSE;      //视频信号输入模式
  1303.                                 bVideoSignInGenFlag = FALSE;   //已经有视频信号 标志
  1304.                                 bAutoScanFlag = FALSE;
  1305.                                 bOtherFunFlag = FALSE;
  1306.                                 bNetSendBarFlag = FALSE;
  1307.                                 bNetSendRunFlag = FALSE;
  1308.                                 bVideoGenerationFlag = FALSE;
  1309.                                 
  1310.                                 bComuDataBarFlag = FALSE;   //通信数据测试功能
  1311.                                 bComuStartRecFlag= FALSE;
  1312.                                 bComuStopRecFlag = FALSE;
  1313.                                 bComuDispDataFlag= FALSE;
  1314.                                 
  1315.                                 bPowerManageBarFlag = FALSE;
  1316.                                 bAboutHelpBarFlag = FALSE;
  1317.                                 
  1318.                                 //其他参数设置
  1319.                                 uNetSendRunLoop = 8;
  1320.                                 uNetMcuLedLoop  = 1;
  1321.                                 
  1322.                                 uVideoGenTimes = 1;
  1323.                                 
  1324.                                 uInterfaceNum = 2;
  1325.                         }
  1326. }
  1327. //右软件功能函数
  1328. void RightSoftKeyFun(void)
  1329. {
  1330. //chen++  预置界面 返回

  1331.                         if(bPreset_Page == 1)
  1332.                         {

  1333.                                 if(bPresetVideo_Flag ==1)
  1334.                                 {
  1335.                                                 bPreset_Page = 0;
  1336.                                                 bPresetVideo_Flag = 0;
  1337.                                                 bPresetSet_Flag = 0;

  1338.                                                 MB90092_WriteByte(0xA2|0);//command 4,内、外同步选择        SYN_INTERNAL = 0、4
  1339.                                                 MB90092_WriteByte(0x2B);
  1340.                                                 CD4053_A = 0;
  1341.                                                 CD4053_B = 0;
  1342.                                                 CD4053_C = 0;
  1343.                                                 MB90092_ClearScreen();
  1344.                                 
  1345.                                                 uInterfaceNum = 6;
  1346.                                                 uPtzOtherFunNum = 13;
  1347.                                                 MMI_DisplayFun(9);

  1348. //chen test                                                MB90092_DisChar (7,2,RingForm_adr,2,B_COLOR_CYAN,0,0);        
  1349.                                 }
  1350.                                 else
  1351.                                 {
  1352.                                 
  1353.                                                 bPreset_Page = 1;
  1354.                                                 bPresetVideo_Flag = 1;
  1355.                                                 bPresetSet_Flag = 0;

  1356.                                                 MB90092_WriteByte(0xA2|4);//command 4,内、外同步选择        SYN_INTERNAL = 0内、4外
  1357.                                                 MB90092_WriteByte(0x2B);
  1358.                                                 CD4053_A = 0;
  1359.                                                 CD4053_B = 0;
  1360.                                                 CD4053_C = 1;
  1361.                                                 MB90092_ClearScreen();
  1362.                                                 uPtzOtherFunNum = 13;
  1363. //chen test                                                MB90092_DisChar (7,3,RoundForm_adr,2,B_COLOR_CYAN,0,0);        
  1364.                                                                                        
  1365.                                 }
  1366.                                 return;
  1367.                         }

  1368.                         //bit  bFlag;
  1369.                         if(uPtzMainBarNum == 3 && bAutoScanFlag && !bAutoScanEndFlag && bAutoScanStartFlag)
  1370.                         {
  1371.                                  return;
  1372.                         }

  1373. //;从其他多个界面返回到主菜单
  1374.                         if((bPowerOffMMIFlag && uInterfaceNum == 2 && !bPowerManageBarFlag) || bLogoFlag || bSysSetupFlag || bPtzVideoFlag || bVideoGenerationFlag || bComuDataBarFlag || bPowerManageBarFlag ||bAboutHelpBarFlag)
  1375.                         {
  1376.                                         uInterfaceNum = 2;
  1377.                                         MMI_DisplayFun(2);  //主菜单
  1378.                                         return;
  1379.                         }
  1380. //chen++ 从网线测试功能各界面返回到主菜单
  1381. //chen++ bNetSendBarFlag 标志,=1代表返回到主菜单。 =0,不返回
  1382. if(bNetSendBarFlag)
  1383. {                                
  1384.                                 uNetSendRunLoop = 8;
  1385.                                 uNetMcuLedLoop  = 1;

  1386.                                 SendOneData(0x00);  //74HC164
  1387.                                 NetLineSendMode(0, uNetMcuLedLoop);  //先静止
  1388.                                 
  1389.                                 MMI_EnableFlag();
  1390.                                                 
  1391.                                 bNetSendBarFlag = TRUE;
  1392.                                         uInterfaceNum = 2;
  1393.                                         MMI_DisplayFun(2);  //主菜单
  1394.                                         return;
  1395. }
  1396. //Logo
  1397.                         //chen--g if((bPowerOffMMIFlag && uInterfaceNum == 1)|| bMainMenuFlag)
  1398.                         //chen++1
  1399.                         if(bPowerOffMMIFlag && uInterfaceNum == 1)
  1400.                         //chen++2
  1401.                         {
  1402.                                         uInterfaceNum = 1;
  1403.                                         MMI_DisplayFun(1);  //Logo
  1404.                                         return;
  1405.                         }

  1406. //2 云台球机和视频输入控制
  1407.                         if(bVideoSignInFlag || (!bPowerOffMMIFlag && bAutoScanFlag && !bAutoScanStopFlag) || bOtherFunFlag)
  1408.                         {
  1409.                                         uInterfaceNum = 4;
  1410. //chen--g                                        MMI_DisplayFun(4);        //4 视频二级菜单 (三行)
  1411.                                         MMI_DisplayFun(2);  //2 主菜单
  1412.                                         return;
  1413.                         }

  1414. //球机地址自动停止
  1415.    if(bPowerOffMMIFlag && uInterfaceNum == 7)
  1416.                         {
  1417.                                         uInterfaceNum = 7;
  1418.                                         MMI_DisplayFun(10);
  1419.                                         return;
  1420.                         }

  1421. //球机地址自动扫描
  1422.                  if((bPowerOffMMIFlag && uInterfaceNum == 8) || (bAutoScanStopFlag && bAutoScanFlag))
  1423.                         {
  1424.                                         uInterfaceNum = 8;
  1425.                                         MMI_DisplayFun(12);

  1426.                                      bManualStopFlag = FALSE;  //手动停止自动扫描标志
  1427.                                         return;
  1428.                         }
  1429.    
  1430.                         if(bPowerOffMMIFlag && uInterfaceNum == 3)
  1431.                         {
  1432.                                         uInterfaceNum = 3;
  1433.                                         MMI_DisplayFun(3);
  1434.                                         return;
  1435.                         }
  1436.                         if(bPowerOffMMIFlag && uInterfaceNum == 4)
  1437.                         {
  1438.                                         uInterfaceNum = 4;
  1439.                                         MMI_DisplayFun(4);
  1440.                                         return;
  1441.                         }
  1442.                         if(bPowerOffMMIFlag && uInterfaceNum == 5)
  1443.                         {
  1444.                                         uInterfaceNum = 5;
  1445.                                         MMI_DisplayFun(7);
  1446.                                         return;
  1447.                         }
  1448.                         if(bPowerOffMMIFlag && uInterfaceNum == 6)
  1449.                         {
  1450.                                         uInterfaceNum = 6;
  1451.                                         MMI_DisplayFun(9);
  1452.                                         return;
  1453.                         }
  1454. //chen--??
  1455.                         if(bPowerOffMMIFlag && uInterfaceNum == 9)
  1456.                         {
  1457.                                         uInterfaceNum = 9;
  1458.                                         MMI_DisplayFun(14);
  1459.                                         return;
  1460.                         }
  1461.                         if(bPowerOffMMIFlag && uInterfaceNum == 10)  //视频信号发生器
  1462.                         {
  1463.                                         //TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, uBatGridNumTemp); //1格电池               
  1464.                                         uVideoGenTimes = uVideoGenTimes -1;
  1465.                                         uInterfaceNum = 10;
  1466.                                         MMI_DisplayFun(15);
  1467.                                         return;
  1468.                         }
  1469.                         if(bPowerOffMMIFlag && uInterfaceNum == 11)
  1470.                         {
  1471.                                         //TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, uBatGridNumTemp); //1格电池
  1472.                                         uInterfaceNum = 11;
  1473.                                         MMI_DisplayFun(16);
  1474.                                         return;
  1475.                         }
  1476.                         if(bPowerOffMMIFlag && uInterfaceNum == 12)
  1477.                         {
  1478.                                         uInterfaceNum = 12;
  1479.                                         MMI_DisplayFun(17);
  1480.                                         return;
  1481.                         }
  1482.                         if(bPowerOffMMIFlag && uInterfaceNum == 13)
  1483.                         {
  1484.                                         bComuStartRecFlag = ~bComuStartRecFlag;
  1485.                                         uInterfaceNum = 13;
  1486.                                         MMI_DisplayFun(18);
  1487.                                         return;
  1488.                         }
  1489.                         if(bPowerOffMMIFlag && uInterfaceNum == 14)
  1490.                         {
  1491.                                         uInterfaceNum = 14;
  1492.                                         MMI_DisplayFun(19);
  1493.                                         return;
  1494.                         }
  1495.                         if(bPowerOffMMIFlag && uInterfaceNum == 15)
  1496.                         {
  1497.                                         uInterfaceNum = 15;
  1498.                                         MMI_DisplayFun(20);
  1499.                                         return;
  1500.                         }
  1501.           if(bPowerOffMMIFlag && uInterfaceNum == 16)
  1502.                         {
  1503.                                         uInterfaceNum = 16;
  1504.                                         MMI_DisplayFun(21);
  1505.                                         return;
  1506.                         }
  1507.                         if(bPowerOffMMIFlag && uInterfaceNum == 17)
  1508.                         {
  1509.                                         uInterfaceNum = 17;
  1510.                                         MMI_DisplayFun(22);
  1511.                                         return;
  1512.                         }

  1513. //chen++  自动巡航 界面显示                        
  1514.                         if(bPowerOffMMIFlag && uInterfaceNum == 19)
  1515.                         {
  1516.                                 uInterfaceNum = 1;
  1517.                                 MMI_DisplayFun(1);
  1518.                                 return;
  1519.                         }

  1520. }
  1521. //左软件功能函数 确认键功能
  1522. void LeftSoftKeyFun(void)
  1523. {
  1524.    unsigned char uPowerOffTimes = 0;

  1525.                         if(bAutoScanStopFlag && !bPowerOffMMIFlag) //球机地址自动扫描 停止 后只有 右软件有用
  1526.                                 return;
  1527.                         //关机实现功能
  1528.                         if(bPowerOffMMIFlag && !bPowerOnOffFlag)
  1529.                         {
  1530.                                 EA = 0;
  1531.                                 SOUND = SOUND_ON;
  1532.                                 STATUS_LED = 0;
  1533.                                 OPEN = 0;
  1534.                                 LCD_ON = 0;
  1535.                                 uPowerKeyTime = 0;
  1536.                                 gPowerOnOffTimes = 0;
  1537.                                 bPowerOnFlag  = TRUE;
  1538.                                 bPowerOffFlag = TRUE;
  1539.                                 bPowerOnOffFlag = TRUE;  //为下面执行运行其他程序作准备
  1540.                                 do
  1541.                                 {
  1542.                                         WDT_CONTR = 0x3D;
  1543.                                         DelayX1ms(25);
  1544.      uPowerOffTimes = uPowerOffTimes+1;
  1545.      if(uPowerOffTimes>=200)
  1546.      {
  1547.        SOUND = SOUND_OFF;
  1548.      }
  1549.                                         OPEN = 0;
  1550.                                         LCD_ON = 0;
  1551.                                 }
  1552.                                 while(1);                  
  1553.                         }  
  1554.                         //主菜单
  1555.                         if(uMainMenuTimes == 1 && !bMainMenuFlag && bSysSetupFlag)
  1556.                         {
  1557.                                         uInterfaceNum = 2;
  1558.                                         MMI_DisplayFun(2);  //主菜单 显示
  1559.                                         return;
  1560.                         }
  1561.                         //1 系统参数设置
  1562.                         if(uMainMenuTimes == 1 && bMainMenuFlag && !bSysSetupFlag)
  1563.                         {
  1564.                                         uInterfaceNum = 3;
  1565.                                         MMI_DisplayFun(3);        //
  1566.                                         return;
  1567.                         }
  1568.                         //2  云台球机和视频输入控制
  1569.          
  1570. /* chen--
  1571.                         if(uMainMenuTimes == 2 && bMainMenuFlag && !bPtzVideoFlag)///
  1572.                         {
  1573.                                         uInterfaceNum = 5;
  1574.                                         MMI_DisplayFun(5); //4 云台球机和视频输入控制 显示
  1575.                                         uPtzMainBarNum = 1;
  1576.                                         return;
  1577.                         }
  1578. */                                                
  1579.                         //>1:视频输入和云台控制
  1580.                         if(uPtzMainBarNum == 1 && !bVideoSignInFlag && bVideoSignInGenFlag)  //该语句一定在  AAAAA语句前
  1581.                         {
  1582.                                         uInterfaceNum = 5;
  1583.                                         MMI_DisplayFun(5);
  1584.                                         return;
  1585.                         }
  1586.                         if( uPtzMainBarNum == 1 && bVideoSignInFlag && !bVideoSignInGenFlag)   //该语句一定在  AAAAA语句前
  1587.                         {
  1588.                                 uInterfaceNum = 5;
  1589.                                 MMI_DisplayFun(6);
  1590.                                 return;
  1591.                         }
  1592.                         if(uPtzMainBarNum == 1 && bPtzVideoFlag && !bVideoSignInFlag)  //AAAAA
  1593.                         {
  1594.                                 uInterfaceNum = 5;
  1595.                                 MMI_DisplayFun(7);
  1596.                                 return;
  1597.                         }

  1598. //chen++ 7 云台球机和视频输入控制 显
  1599.                         if(uMainMenuTimes == 2 && bMainMenuFlag && !bPtzVideoFlag)///
  1600.                         {
  1601.                                         uInterfaceNum = 5;
  1602.                                         MMI_DisplayFun(7); //7 云台球机和视频输入控制 显示
  1603.                                         uPtzMainBarNum = 1;
  1604.                                         return;
  1605.                         }

  1606.                         //>2云台其他功能操作
  1607.                         if(uPtzMainBarNum == 2 && !bPtzVideoFlag && bOtherFunFlag)
  1608.                         {
  1609.                                 uInterfaceNum = 6;
  1610.                                 if(bPresetVideo_Flag == 0)
  1611.                                 {
  1612.                                         MMI_DisplayFun(8);          //进入预设页 视频界面
  1613.                                         return;
  1614.                                 }
  1615.                         }
  1616.                         if(uPtzMainBarNum == 2 && bPtzVideoFlag && !bOtherFunFlag)  //CCCC
  1617.                         {
  1618.                                 uInterfaceNum = 6;
  1619.                                 MMI_DisplayFun(9);
  1620.                                 return;
  1621.                         }
  1622. //chen++ 预设值功能有效
  1623.                         if(bPresetSet_Flag == 1)
  1624.                         {
  1625.                                 if((uPtzOtherFunNum == 10)||(uPtzOtherFunNum == 11)||(uPtzOtherFunNum == 12))
  1626.                                 {
  1627.                                         MMI_DisplayFun(8);
  1628.                                 }
  1629.                         }

  1630. //chen++ 预设值界面
  1631.                         if(bPreset_Page == 1 && bPresetVideo_Flag == 1)
  1632.                         {
  1633.                                 uPtzOtherFunNum_Preset = uPtzOtherFunNum;
  1634.                                 uPtzOtherFunNum = 9;
  1635.                                 MMI_DisplayFun(26);                  //进入预设 设置界面
  1636.                                 bPresetVideo_Flag = 0;
  1637.                                 bPresetSet_Flag = 1;
  1638.                                 
  1639.                                 
  1640.                         }
  1641.                         else
  1642.                         {
  1643.                                 if(bPreset_Page == 1 && bPresetSet_Flag == 1)
  1644.                                 {
  1645.                                         MMI_DisplayFun(25);          //进入预设 视频界面
  1646.                                         bPresetVideo_Flag = 1;
  1647.                                         bPresetSet_Flag = 0;
  1648.                                 }
  1649.                         }
  1650. //chen++   其他
  1651.                         if(uMainMenuTimes == 9 && bMainMenuFlag && !bPtzVideoFlag)
  1652.                         {
  1653.                                         uInterfaceNum = 6;        //其他 操作界面
  1654.                                         MMI_DisplayFun(9);        //9 其他 显示界面
  1655.                                     uPtzMainBarNum = 2;
  1656.                                         return;
  1657.                         }
  1658.                         
  1659.                         //>3球机地址自动扫描
  1660.                         if(uPtzMainBarNum == 3 && bAutoScanFlag && !bAutoScanEndFlag && bAutoScanStartFlag) //BBBBB
  1661.                         {
  1662.                                 uInterfaceNum = 7;   
  1663.                                 MMI_DisplayFun(10);                  //10 球机自动扫描 开始界面
  1664.                                 return;
  1665.                         }
  1666.                         if(uPtzMainBarNum == 3 && bAutoScanFlag && !bAutoScanStartFlag && !bAutoScanEndFlag) //BBBBB
  1667.                         {
  1668.                                 uInterfaceNum = 8;
  1669.                                 MMI_DisplayFun(11);                 //11 球机自动扫描 结束界面
  1670.                                 return;
  1671.                         }
  1672.                         if(uPtzMainBarNum == 3 && bPtzVideoFlag && !bAutoScanFlag)  //BBBBB
  1673.                         {
  1674.                                         uInterfaceNum = 8;
  1675.                                         MMI_DisplayFun(12);                //12 球机地址自动扫描 界面显示、参数设定
  1676.                                         return;
  1677.                         }
  1678. //chen++  2 寻址
  1679.                         if(uMainMenuTimes == 8 && bMainMenuFlag && !bPtzVideoFlag)
  1680.                         {
  1681.                                         uInterfaceNum = 8;
  1682.                                         MMI_DisplayFun(12); //12 球机地址自动扫描 界面显示、参数设定
  1683.                                         uPtzMainBarNum = 3; //chen++
  1684.                                         return;
  1685.                         }
  1686.         
  1687.                         //3 网线输出测试功能
  1688. //chen++ 在网线测试功能界面下,按确定键,开始或者停止网线测试
  1689.                         if(uMainMenuTimes == 3 && bNetSendBarFlag)
  1690.                         {
  1691.                                 uInterfaceNum = 9;
  1692.                                 MMI_DisplayFun(13);
  1693.                                 return;        
  1694.                         }

  1695. //chen++ 在主菜单界面下,按确定键,进入网线测试功能界面
  1696.                         if(uMainMenuTimes == 3 && bMainMenuFlag && !bNetSendBarFlag)
  1697.                         {
  1698.                                 uInterfaceNum = 9;
  1699.                                 MMI_DisplayFun(14);
  1700.                                 return;
  1701.                         }

  1702.                           /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1703.                         //4 视频信号发生器
  1704.                         if(uMainMenuTimes == 4 && bVideoGenerationFlag)
  1705.                         {
  1706.                                 uInterfaceNum = 10;
  1707.                                 MMI_DisplayFun(15);
  1708.                                 return;
  1709.                         }
  1710.                         if(uMainMenuTimes == 4 && bMainMenuFlag &&!bVideoGenerationFlag)
  1711.                         {
  1712.                                 uInterfaceNum = 11;
  1713.                                 MMI_DisplayFun(16);
  1714.                                 return;
  1715.                         }
  1716.                         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1717.                         //5 通信数据测试功能
  1718.                         if(uMainMenuTimes == 5 && bComuDataBarFlag && bComuStopRecFlag && !bComuDispDataFlag)//显示数据
  1719.                         {
  1720.                                 uInterfaceNum = 12;
  1721.                                 MMI_DisplayFun(17);
  1722.                                 return;
  1723.                         }
  1724.                         if(uMainMenuTimes == 5 && bComuDataBarFlag && !bComuDispDataFlag)
  1725.                         {
  1726.                                 uInterfaceNum = 13;
  1727.                                 MMI_DisplayFun(18);
  1728.                                 return;
  1729.                         }
  1730.                         if(uMainMenuTimes == 5 && bMainMenuFlag && !bComuDataBarFlag && !bComuDispDataFlag)
  1731.                         {
  1732.                                 uInterfaceNum = 14;
  1733.                                 MMI_DisplayFun(19);
  1734.                                 return;
  1735.                         }
  1736.                         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1737.                         //6 电源管理功能
  1738.                         if(uMainMenuTimes == 6 && !bMainMenuFlag && bPowerManageBarFlag)
  1739.                         {
  1740.                                 uInterfaceNum = 15;
  1741.                                 MMI_DisplayFun(20);
  1742.                                 return;
  1743.                         }
  1744.                         if(uMainMenuTimes == 6 && bMainMenuFlag && !bPowerManageBarFlag)
  1745.                         {
  1746.                                 uInterfaceNum = 16;
  1747.                                 MMI_DisplayFun(21);
  1748.                                 return;
  1749.                         }
  1750.                         ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1751.                         //7 关于帮助
  1752.                         if(uMainMenuTimes == 7 && bMainMenuFlag && !bAboutHelpBarFlag)
  1753.                         {
  1754.                                         uInterfaceNum = 17;
  1755.                                         MMI_DisplayFun(22);
  1756.                                         return;
  1757.                         }
  1758. }

  1759. void MMI_EnableFlag(void)
  1760. {
  1761.                         bPowerOffMMIFlag = FALSE;
  1762.                         bLogoFlag = FALSE;
  1763.                         bMainMenuFlag = FALSE;
  1764.                         bSysSetupFlag = FALSE;
  1765.                         bPtzVideoFlag = FALSE;
  1766.                         bVideoSignInFlag  = FALSE;      //视频信号输入模式
  1767.                         bVideoSignInGenFlag = FALSE;   //已经有视频信号 标志
  1768.                         bAutoScanFlag = FALSE;
  1769.                         bOtherFunFlag = FALSE;
  1770.                         bNetSendBarFlag = FALSE;
  1771.                         bNetSendRunFlag = FALSE;
  1772.                         bVideoGenerationFlag = FALSE;
  1773.                         bComuDataBarFlag   = FALSE;
  1774.                         bPowerManageBarFlag = FALSE;
  1775.                         bAboutHelpBarFlag = FALSE;
  1776.                         
  1777.                         bAutoScanStopFlag = FALSE;


  1778.                         bModeKeyVideoFlag = FALSE;
  1779.    
  1780.    
  1781.                  return;
  1782. }
  1783. //所有显示函数在一起
  1784. void MMI_DisplayFun(unsigned char uMMI_Num)
  1785. {
  1786.         bit  bFlag = FALSE;
  1787.         unsigned char uEndNum = 0;
  1788.         switch(uMMI_Num)
  1789.         {
  1790. //显示LOGO
  1791.                 case 1:
  1792.                         {
  1793.                                 MainLogo();
  1794.                                 MMI_EnableFlag();
  1795.                                 bLogoFlag = TRUE;
  1796.                                 break;
  1797.                         }
  1798. //显示主菜单
  1799.                 case 2:
  1800.                         {
  1801.                                 CD4053_A = 0;  //chen++
  1802.                                 CD4053_B = 0;  //OSD - LCD
  1803.                             CD4053_C = 0;
  1804.                                   MB90092_ClearScreen();         //chen++

  1805.                                 TopLeft(3, 0x070);  //主菜单
  1806.                                 //chen-- TopLeft(0, 0x073);  //chen++ _ _ _
  1807.                                 TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, uBatGridNum); //1格电池
  1808.                                 //chen--BottomLeft(2,0x074);   //选择
  1809.                                 BottomLeft(2,0x140);   //确定
  1810.                                 //chen-- BottomRight(2,0x076);  //返回
  1811.                                 BottomRight(0,0x078);  //chen++ ---

  1812.                                 MainMenu(uMainMenuTimes);

  1813.                                 //保存数据到EEPROM  等待加入 。。。。。。
  1814.                                 uControlRuleItem = uControlRuleItem;  //控制协议是第几个
  1815.                                 uComSereialItem = uComSereialItem; //串口选择
  1816.                                 uBaudRateItem = uBaudRateItem;  //波特率选择
  1817.                                 uRunSpeedData = uRunSpeedData;//运行速度
  1818.                                 uStandbyTime = uStandbyTime;//待机时间
  1819.                                 uNetSpeed = uNetSpeed; //网线速度                                                                                                           其实忙也不用但是项目
  1820.                                 uLcdBright = uLcdBright; //屏幕亮度
  1821.                                                 
  1822.                                 if(uComSereialItem == 1)  //232
  1823.                                         SerialPortOneInitial(uBaudRateItem);
  1824.                                 if(uComSereialItem == 2)  //485
  1825.                                         SerialPortTwoInitial(uBaudRateItem);
  1826.                                                 
  1827.                                 MMI_EnableFlag();
  1828.                                 bMainMenuFlag = TRUE;
  1829.                                 bComuDataBarFlag = FALSE;   //通信数据测试功能
  1830.                                 bComuStartRecFlag= FALSE;
  1831.                                 bComuStopRecFlag = FALSE;
  1832.                                 bComuDispDataFlag= FALSE;
  1833.                                 bComuRecLedFlashFlag = FALSE;
  1834.                                 uDataLedLoop = 0;
  1835.                                 uGetSerialDataNum = 0;  //接收到数据个数
  1836.                                 ES = 0;
  1837.                                 IE2 = 0x00;
  1838.                                 break;
  1839.                         }
  1840. //显示 1 系统参数设置
  1841.                 case 3:
  1842.                         {
  1843.                                 TopLeft(6, 0x0F0);
  1844.                                 BottomLeft(2,0x14E);  //保存
  1845.                                 BottomRight(2,0x076); //返回
  1846.                                 SysSetupLeft(6,0x150); //系统参数设置左边
  1847.                                 SysSetupBarFun(uSysSetupTimes);
  1848.                                 MMI_EnableFlag();                    
  1849.                                 bSysSetupFlag = TRUE;
  1850.                                 break;
  1851.                         }
  1852. //显示 2 云台球机和视频输入控制 显示界面(三列)
  1853.                 case 4:
  1854.                         {            
  1855.                                 TopLeftNew(0,11);     //云台球机和视频输入控制  
  1856.                                 BottomLeft(2,0x140);  //确定
  1857.                                 BottomRight(2,0x076); //返回
  1858.                                                 
  1859.                                 PtzVideoControl(uPtzMainBarNum);   //显示地址  视频格式  
  1860.                                                 
  1861.                                 MMI_EnableFlag();
  1862.                                 bPtzVideoFlag = TRUE;
  1863.                                 break;
  1864.                         }
  1865. //显示 >1:视频输入和云台控制
  1866.                 case 5:
  1867.                          {
  1868.                                 CD4053_A = 0;  //chen++
  1869.                                 CD4053_B = 0;  //OSD - LCD
  1870.                                 CD4053_C = 0;
  1871.                                 //保存485 的发送地址
  1872.                                 AddressSave = uVideoSignInAddr;
  1873.                                 bVideoSignInGenFlag = FALSE;   //已经有视频信号
  1874.                                 bVideoSignInFlag = TRUE;        
  1875.                                 bModeKeyVideoFlag = TRUE;
  1876.                                 break;
  1877.                         }
  1878. //显示 //>1:视频输入和云台控制 1
  1879. //chen++ ;从视频输入和云台控制界面(地址、视频模式界面),进入到视频显示。
  1880.                 case 6:  
  1881.                         {   
  1882.                                 CD4053_A = 0;  //chen++
  1883.                                 CD4053_B = 1;  //视频信号直接输入到LCD
  1884.                                 CD4053_C = 0;
  1885.                                 //保存485 的发送地址
  1886.                                 AddressSave = uVideoSignInAddr;
  1887.                                 bVideoSignInGenFlag = TRUE;   //已经有视频信号
  1888.                                 bVideoSignInFlag = FALSE;
  1889.                                 bModeKeyVideoFlag = TRUE;
  1890.                                 break;
  1891.                         }
  1892. //显示 //>1:视频输入和云台控制 2
  1893.                 case 7:
  1894.                          {
  1895.                                 SerialPortOneInitial(uBaudRateItem);  //开始为2400  uBaudRateItem= 3
  1896.                                 SerialPortTwoInitial(uBaudRateItem);  //开始为2400
  1897.                                                 
  1898.                                 TopLeftNew(1, 9);    //视频输入和云台控制  
  1899.                                 BottomLeft(2,0x140);  //确定
  1900.                                 BottomRight(2,0x076); //返回

  1901.                                 if(uVideoSignInBarNum == 1)
  1902.                                 {
  1903.                                         bFlag = TRUE;
  1904.                                 }
  1905.                                 else if(uVideoSignInBarNum == 2)
  1906.                                         {
  1907.                                                 bFlag = FALSE;
  1908.                                         }
  1909.                                         else
  1910.                                         {
  1911.                                                 _nop_();
  1912.                                         }
  1913.                                 VideoSignInMode(uVideoSignInAddr, uVideoSignInType, bFlag);   //显示地址  视频格式
  1914.                                                 
  1915.                                 MMI_EnableFlag();
  1916.                                 bVideoSignInGenFlag = FALSE;   //已经有视频信号
  1917.                                 bVideoSignInFlag = TRUE;       //视频信号输入模式
  1918.                                 bModeKeyVideoFlag = TRUE;
  1919.                                 break;
  1920.                         }
  1921. //显示 //>2云台其他功能操作
  1922.                 case 8:
  1923.                         {
  1924.                                 DE =1;
  1925.                                 PtzOtherFunSendOrder(uPtzOtherFunNum);  //其他功能命令
  1926.                                 //PtzFunction2(uPtzOtherFunNum);         
  1927.                                 DE =0;
  1928.                                 break;
  1929.                         }
  1930. //显示 //>2云台其他功能操作  1
  1931.                 case 9:  
  1932.                         {
  1933.                                 SerialPortOneInitial(uBaudRateItem);  //开始为2400  uBaudRateItem= 3
  1934.                                 SerialPortTwoInitial(uBaudRateItem);  //开始为2400
  1935.                                 MB90092_ClearScreen();//chen++
  1936.                                 TopLeftNew(3,8);      //云台其他功能操作
  1937.                                 BottomLeft(2,0x140);  //确定

  1938.                                 if(!bPreset_Page)
  1939.                                 {
  1940.                                         TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, uBatGridNum); //?格电池
  1941.                                 }

  1942.                                 BottomRight(2,0x076); //返回
  1943.                                 //chen-- PtzOtherFun(uPtzOtherFunNum,uPresetAddr);         
  1944.                                 PtzFunction1(uPtzOtherFunNum);         
  1945.                                 MMI_EnableFlag();
  1946.                                 bOtherFunFlag = TRUE;
  1947.                                 break;
  1948.                         }
  1949. //显示 //>3球机地址自动扫描 按确定键停止
  1950.                 case 10:
  1951.                         {
  1952.                             MMI_EnableFlag();
  1953.                                 bAutoScanFlag = TRUE;
  1954.                                 bAutoScanEndFlag = TRUE;
  1955.                                 bAutoScanStartFlag = FALSE;
  1956.                                 CD4053_A = 0;  //chen++
  1957.                                 CD4053_B = 0;  //LCD显示 文字界面
  1958.                                 CD4053_C = 0;
  1959.                                 break;
  1960.                         }   
  1961. //显示 ////>3球机地址自动扫描 1
  1962.                 case 11:  
  1963.                         {
  1964.                              MMI_EnableFlag();
  1965.                                 bAutoScanFlag = TRUE;
  1966.                                 bAutoScanStartFlag = TRUE;
  1967.                                 bAutoScanEndFlag = FALSE;
  1968.                                                 
  1969.                                 CD4053_A = 0;  //chen++
  1970.                                 CD4053_B = 1;  //LCD显示 视频信号输入
  1971.                                 CD4053_C = 0;
  1972.                                 ScanStop_Interface = 1;
  1973.                                                 
  1974.                                 if(uAutoStartAddr > uAutoEndAddr )
  1975.                                 {
  1976.                                         uAutoEndAddr = uAutoStartAddr;
  1977.                                 }
  1978.                                 uAutoSendTempAddr = uAutoStartAddr;
  1979.                                 //初始化串口
  1980.                                 SerialPortOneInitial(uAutoBaudRateItem);  //开始为2400  uBaudRateItem= 3
  1981.                                 SerialPortTwoInitial(uAutoBaudRateItem);  //开始为2400
  1982.                                 uAutoScanSend1Times = 0;
  1983.                                 uAutoScanSend2Times = 0;
  1984.                                 uAutoScanSendData1Time = 0;
  1985.                                 uAutoScanSendData2Time = 0;
  1986.                                 bAutoScanStopFlag = FALSE;
  1987.                                 break;
  1988.                         }
  1989. //显示//>3球机地址自动扫描 2
  1990.                 case 12:  //功能包括:设置页显示界面、参数设定
  1991.                         {
  1992.                                 TopLeftNew(2,8);      //球机地址自动扫描
  1993.                                 BottomLeft(2,0x144);  //开始
  1994.                                 BottomRight(2,0x076); //返回
  1995.                                 AutoScanSetupLeft();        //球机地址自动扫描 设置页的左边 显示界面
  1996.                                 
  1997.                                 PtzAddrAutoScan(uAutoScanSetupTimes);
  1998.                                 bAutoScanStartFlag = FALSE;
  1999.                                 bAutoScanEndFlag = FALSE;
  2000.                                                 
  2001.                                 MMI_EnableFlag();
  2002.                                                 
  2003.                                 bAutoScanFlag = TRUE;
  2004.                                 ScanStop_Interface = 0;        //chen++ 0:不在自动扫面停止界面;1:在自动扫面停止界面
  2005.                                 break;
  2006.                         }
  2007. //显示//3 网线连接测试功能
  2008. //bNetSendRunFlag =1 含义: 网线信号输出已停止,可再执行网线输出测试功能。
  2009. //                =0 含义:网线信号输出正进行,网线接口有信号输出。
  2010.                 case 13:
  2011.                         {
  2012.                                 if(!bNetSendRunFlag)
  2013.                                 {
  2014.                                         BottomLeft(2,0x14A);  //停止
  2015.                                         bNetSendRunFlag = TRUE;
  2016.                                 }
  2017.                                 else
  2018.                                 {
  2019.                                         BottomLeft(2,0x144);  //开始
  2020.                                         bNetSendRunFlag = FALSE;
  2021.                                 }
  2022.                                 break;
  2023.                         }
  2024. //显示        //3 网线连接测试功能 1
  2025.                 case 14:
  2026.                         {
  2027.                                 TopLeft(8, 0x100);   //网线输出测试功能   
  2028.                                 BottomLeft(2,0x144);  //开始
  2029.                                 BottomRight(2,0x076); //返回
  2030.                                 
  2031.                                 uNetSendRunLoop = 8;
  2032.                                 uNetMcuLedLoop  = 1;

  2033.                                 SendOneData(0x00);  //74HC164
  2034.                                 NetLineSendMode(0, uNetMcuLedLoop);  //先静止
  2035.                                 
  2036.                                 MMI_EnableFlag();
  2037.                                                 
  2038.                                 bNetSendBarFlag = TRUE;
  2039.                                 break;
  2040.                         }
  2041. //显示//4 视频信号发生器
  2042.                                 case 15:
  2043.                                         {
  2044.                                                 
  2045.                                               CD4053_B = 0;  //OSD - LCD
  2046.                                                 //chen--g CD4053_C = 1;
  2047.                                                 CD4053_C = 0;
  2048.                                                 CD4053_A = 1;  //chen++
  2049.                                                 
  2050.                                                 //按开始执行该视频信号模式
  2051.                                                 uVideoGenTimes  = uVideoGenTimes+1;
  2052.                                                 if(uVideoGenTimes == 7)
  2053.                                                 {
  2054.                                                         uVideoGenTimes = 1;
  2055.                                                 }
  2056.                                                 
  2057.                                                 VideoGeneration(uVideoGenTimes);
  2058.                                                 MMI_EnableFlag();
  2059.                                                 bVideoGenerationFlag = TRUE;
  2060.                                                 break;
  2061.                                         }
  2062. //显示 //4 视频信号发生器 2
  2063.                 case 16:
  2064.                         {
  2065.                                 CD4053_B = 0;  //OSD - LCD
  2066.                                 //chen--g CD4053_C = 1;
  2067.                                 CD4053_A = 1;  //chen++
  2068.                                 //按开始执行该视频信号模式
  2069.                                 uVideoGenTimes  = 1;
  2070.                                 
  2071.                                 VideoGeneration(uVideoGenTimes);
  2072.                                 
  2073.                                 BottomLeft(3,0x2D0);  //下一色
  2074.                                 BottomRight(2,0x14C); //结束
  2075.                                 MMI_EnableFlag();
  2076.                                 bVideoGenerationFlag = TRUE;
  2077.                                 break;
  2078.                         }
  2079. //显示//5 通信数据测试功能
  2080.                 case 17:
  2081.                         {
  2082.                                 TopLeft(8, 0x108);   //
  2083.                                 BottomLeft(2,0x2EE);  //结果
  2084.                                 BottomRight(2,0x076); //返回
  2085.                                 
  2086.                                 if(uGetSerialDataNum>0)
  2087.                                 {
  2088.                                       if(!bPowerOffMMIFlag)  //如果重新来,刚开始为第一页
  2089.                                            uComuPageNum = 1;  //表示显示第一页
  2090.                                         // uGetSerialDataNum = 2;
  2091.                                         if(uGetSerialDataNum < 7)
  2092.                                         {
  2093.                                                 uEndNum = uGetSerialDataNum%7;
  2094.                                         }
  2095.                                         else
  2096.                                         {
  2097.                                                 uEndNum  = 7;
  2098.                                         }
  2099.                                         ComuDisplayData(uComuPageNum, uEndNum, uInbox);      //显示收到数据
  2100.                                         ComuDisplayBarNum(uComuPageNum, uGetSerialDataNum);  //显示下拉条
  2101.                                 }
  2102.                                 else   //显示  Not Receive Data  表示没有收到一个字节
  2103.                                 {
  2104.                                         ComuDisplayNoData();
  2105.                                 }
  2106.                                 bComuDispDataFlag =  TRUE;  //表示进入显示数据界面
  2107.                                 
  2108.                                 MMI_EnableFlag();
  2109.                                 bComuDataBarFlag   = TRUE;
  2110.                                 bComuRecLedFlashFlag = FALSE;
  2111.                                 uDataLedLoop = 0;
  2112.                                 break;
  2113.                         }
  2114. //显示        //5 通信数据测试功能 1        
  2115.                 case 18:  
  2116.                         {
  2117.                                 TopLeft(8, 0x108);   //
  2118.                                 if(!bComuStartRecFlag)
  2119.                                 {
  2120.                                         BottomLeft(2,0x14A);  //停止
  2121.                                         uDataLedLoop = 0;
  2122.                                         bComuRecLedFlashFlag = TRUE;
  2123.                                         uGetSerialDataNum = 0;
  2124.                                         //ES   = 1;    //打开串口1中断
  2125.                                         IE2= 0x01;   //打开串口2中断 ES2 = 0;
  2126.                                 }
  2127.                                 else
  2128.                                 {
  2129.                                         BottomLeft(4,0x2EC);  //查看结果
  2130.                                         bComuRecLedFlashFlag = FALSE;
  2131.                                         ES   = 0;    //关闭串口1中断
  2132.                                         IE2= 0x00;   //打开串口2中断 ES2 = 0;
  2133.                                         uDataLedLoop = 0;
  2134.                                                         
  2135.                                 }
  2136.                                 BottomRight(2,0x076);
  2137.                                 
  2138.                                 if(!bComuStartRecFlag)
  2139.                                 {
  2140.                                         ComuStartReceive();
  2141.                                         bComuStartRecFlag = TRUE;
  2142.                                 }
  2143.                                 else
  2144.                                 {
  2145.                                         ComuStopReceive();
  2146.                                         bComuStartRecFlag = FALSE;
  2147.                                         bComuStopRecFlag = TRUE;
  2148.                                 }
  2149.                                 MMI_EnableFlag();
  2150.                                 bComuDataBarFlag   = TRUE;
  2151.                                 break;
  2152.                         }
  2153. //显示        //5 通信数据测试功能 2
  2154.                 case 19:  
  2155.                         {
  2156.                                 TopLeft(8, 0x108);   //  
  2157.                                 BottomLeft(2,0x144);  //开始
  2158.                                 BottomRight(2,0x076); //返回
  2159.                                 
  2160.                                 ComuDataBarFun();
  2161.                                 uGetSerialDataNum = 0;
  2162.                                 ES = 0;
  2163.                                 IE2 = 0x00;
  2164.                                                 
  2165.                                 MMI_EnableFlag();
  2166.                                                 
  2167.                                 bComuDataBarFlag   = TRUE;
  2168.                                 bComuStartRecFlag = FALSE;
  2169.                                 bComuStopRecFlag = FALSE;
  2170.                                 bComuDispDataFlag = FALSE;
  2171.                                 bComuRecLedFlashFlag = FALSE;
  2172.                                 uDataLedLoop = 0;
  2173.                                 break;
  2174.                         }
  2175. //显示//6 电源管理功能
  2176.                 case 20:  
  2177.                         {        
  2178.                                 if(uPowerManageBarTimes == 2)
  2179.                                 {
  2180.                                         bPowerInOutFlag = TRUE;
  2181.                                         IN_OUT = 1;
  2182.                                 }
  2183.                                 else
  2184.                                 {
  2185.                                         bPowerInOutFlag = FALSE;
  2186.                                         IN_OUT = 0;
  2187.                                 }
  2188.                                 MB90092_ClearScreen();        //chen++
  2189.                                 TopLeft(3, 0x070);  //主菜单

  2190.                                 if(!bPreset_Page)
  2191.                                 {
  2192.                                         TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, uBatGridNum); //?格电池
  2193.                                 }

  2194.                                 BottomLeft(2,0x140);   //chen++ 确定
  2195.                                 BottomRight(0,0x078);  //chen++ ---

  2196.                                 MainMenu(uMainMenuTimes);
  2197.                                 
  2198.                                 //保存数据到EEPROM  等待加入 。。。。。。
  2199.                                 MMI_EnableFlag();
  2200.                                 bMainMenuFlag = TRUE;
  2201.                                 break;
  2202.                         }
  2203. //显示          //6 电源管理功能 1
  2204.                 case 21:  
  2205.                         {
  2206.                                 TopLeft(6, 0x119);    //电源管理功能

  2207.                                 if(!bPreset_Page)
  2208.                                 {
  2209.                                         TopRight(bAlarmSoundFlag, bKeyLockFlag, bPowerInOutFlag, uBatGridNum); //?格电池
  2210.                                 }

  2211.                                 //chen--gBottomLeft(2,0x074);  //选择
  2212.                                 BottomLeft(2,0x140);   //chen++ 确定
  2213.                                 BottomRight(2,0x076); //返回
  2214.                                                 
  2215.                                 PowerManageBarFun(uPowerManageBarTimes, uVolData);
  2216.                                 VolAdChangeOpen(); //得到电压
  2217.                                 DealWithVolAdDispBat(FALSE);
  2218.                                 MMI_EnableFlag();
  2219.                                 bPowerManageBarFlag = TRUE;
  2220.                                 break;
  2221.                         }
  2222. //显示 //7 关于帮助
  2223.                 case 22:  
  2224.                         {
  2225.                                 TopLeft(4, 0x0EC);   //关于帮助
  2226.                                 BottomLeft(1,0x078);  //----
  2227.                                 BottomRight(2,0x076); //返回
  2228.                                 uVerData = "Version-2.11.0";
  2229.                                 uSNData  = "SN-B0A00B2123.12";
  2230.                                 uNetAddr = "www.hzshoup.com";
  2231.                                 uTelNum  = "0571-85121925";
  2232.                                 AboutHelpBarFun(uVerData,uSNData,uNetAddr,uTelNum);  //网线连接测试功能 选择
  2233.                                 MMI_EnableFlag();
  2234.                                 bAboutHelpBarFlag = TRUE;
  2235.                                 break;
  2236.                         }        
  2237. //显示  //8 自动寻址        chen++
  2238.                 case 23:  
  2239.                         {
  2240.                                 TopLeft(6, 0x119);    //电源管理功能
  2241.                                 //chen--gBottomLeft(2,0x074);  //选择
  2242.                                 BottomLeft(2,0x140);   //chen++ 确定
  2243.                                 BottomRight(2,0x076); //返回
  2244.                                        
  2245.                                 PowerManageBarFun(uPowerManageBarTimes, uVolData);
  2246.                                 VolAdChangeOpen(); //得到电压
  2247.                                 DealWithVolAdDispBat(FALSE);
  2248.                                 MMI_EnableFlag();
  2249.                                 bPowerManageBarFlag = TRUE;
  2250.                                 break;
  2251.                         }                        
  2252. //显示  9 自动巡航        chen++
  2253.                 case 24:  //6 电源管理功能 1
  2254.                         {
  2255.                                 TopLeft(6, 0x119);    //电源管理功能
  2256.                                 //chen--gBottomLeft(2,0x074);  //选择
  2257.                                 BottomLeft(2,0x140);   //chen++ 确定
  2258.                                 BottomRight(2,0x076); //返回
  2259.                                 
  2260.                                 PowerManageBarFun(uPowerManageBarTimes, uVolData);
  2261.                                 VolAdChangeOpen(); //得到电压
  2262.                                 DealWithVolAdDispBat(FALSE);
  2263.                                 MMI_EnableFlag();
  2264.                                 bPowerManageBarFlag = TRUE;
  2265.                                 break;
  2266.                         }
  2267. //显示 预设值视频 界面        chen++                                                               
  2268.                 case 25:
  2269.                         {
  2270.                             MB90092_ClearScreen();
  2271.                                 break;
  2272.                         }
  2273. //显示 预设值设置 界面  chen++
  2274.                 case 26:
  2275.                         {
  2276.                                 MB90092_ClearScreen();
  2277.                                 PtzOtherFun(uPtzOtherFunNum,uPresetAddr);
  2278.                                 break;
  2279.                         }                                                               
  2280.                 }
  2281.            return;
  2282. }


  2283. //左右选中数字 递减或者递加   
  2284. //bLeftRightFlag = FALSE;表示向右移动  递减
  2285. //bLeftRightFlag = TRUE; 表示向左移动  递加
  2286. void LeftRightItem(bit bLeftRightFlag)
  2287. {
  2288. //chen++1
  2289. //主菜单
  2290.                         if(bMainMenuFlag)
  2291.                         {
  2292.                                 if(bLeftRightFlag)
  2293.                                 {
  2294.                                         switch(uMainMenuTimes)
  2295.                                         {
  2296.                                                 case 1:  uMainMenuTimes = 3;        break;
  2297.                                                 case 2:         uMainMenuTimes = 4;        break;
  2298.                                                 case 3:         uMainMenuTimes = 5;        break;
  2299.                                                 case 4:  uMainMenuTimes = 6;        break;
  2300.                                                 case 5:         uMainMenuTimes = 2;        break;
  2301.                                                 case 6:         uMainMenuTimes = 8;        break;
  2302.                                                 case 8:         uMainMenuTimes = 9;        break;
  2303.                                                 case 9:         uMainMenuTimes = 1;        break;
  2304.                                                 default: uMainMenuTimes = 1;
  2305.                                         }
  2306.                                 }
  2307.                                 else
  2308.                                 {        switch(uMainMenuTimes)
  2309.                                         {
  2310.                                                 case 1:         uMainMenuTimes = 9;        break;
  2311.                                                 case 2:         uMainMenuTimes = 5;        break;
  2312.                                                 case 3:         uMainMenuTimes = 1;        break;
  2313.                                                 case 4:  uMainMenuTimes = 2;        break;
  2314.                                                 case 5:         uMainMenuTimes = 3;        break;
  2315.                                                 case 6:         uMainMenuTimes = 4;        break;
  2316.                                                 case 8:         uMainMenuTimes = 6;        break;
  2317.                                                 case 9:         uMainMenuTimes = 8;        break;
  2318.                                                 default: uMainMenuTimes = 1;
  2319.                                         }
  2320.                                 }
  2321.                                 MainMenu(uMainMenuTimes);
  2322.                         }
  2323. //chen++2
  2324. //参数设置 界面                        
  2325.                         if(bSysSetupFlag && uSysSetupTimes == 1)  //控制协议
  2326.                         {
  2327.                                 if(bLeftRightFlag)
  2328.                                 {
  2329.                                         if(uControlRuleItem == 10)
  2330.                                                 uControlRuleItem = 1;
  2331.                                         else
  2332.                                                 uControlRuleItem = uControlRuleItem+1;           
  2333.                                 }
  2334.                                 else
  2335.                                 {
  2336.                                         if(uControlRuleItem == 1)
  2337.                                                 uControlRuleItem = 10;
  2338.                                         else
  2339.                                                 uControlRuleItem = uControlRuleItem-1;         
  2340.                                 }
  2341.                                 SysSetupBarFun(uSysSetupTimes);
  2342.                         }
  2343. /*
  2344.    if(bSysSetupFlag && uSysSetupTimes == 2)  //通信串口
  2345.                         {
  2346.                                 if(bLeftRightFlag)
  2347.                                 {
  2348.                                 if(uComSereialItem == 2)
  2349.                                 uComSereialItem = 1;
  2350.                                 else
  2351.                                 uComSereialItem = uComSereialItem+1;
  2352.                                 }
  2353.                                 else
  2354.                                 {
  2355.                                 if(uComSereialItem == 1)
  2356.                                 uComSereialItem = 2;
  2357.                                 else
  2358.                                 uComSereialItem = uComSereialItem-1;
  2359.                   }
  2360.                          SysSetupBarFun(uSysSetupTimes);
  2361.                         }
  2362. */
  2363.                         if(bSysSetupFlag && uSysSetupTimes == 3)  //波特率
  2364.                         {
  2365.                                 if(bLeftRightFlag)
  2366.                                 {
  2367.                                         if(uBaudRateItem == 8)
  2368.                                                 uBaudRateItem = 1;
  2369.                                         else
  2370.                                                 uBaudRateItem = uBaudRateItem+1;   
  2371.                                 }
  2372.                                 else
  2373.                                 {
  2374.                                         if(uBaudRateItem == 1)
  2375.                                                 uBaudRateItem = 8;
  2376.                                         else
  2377.                                                 uBaudRateItem = uBaudRateItem-1;
  2378.                                 }
  2379.                                 SysSetupBarFun(uSysSetupTimes);
  2380.                         }
  2381.                         if(bSysSetupFlag && uSysSetupTimes == 4)  //运行速度  0---255
  2382.                         {
  2383.                                 if(bLeftRightFlag)
  2384.                                 {
  2385.                                         if(uRunSpeedData == 255)   //0到3F
  2386.                                                 uRunSpeedData = 0;
  2387.                                         else
  2388.                                                 uRunSpeedData = uRunSpeedData+1;
  2389.                                 }
  2390.                                 else
  2391.                                 {
  2392.                                         if(uRunSpeedData == 0)
  2393.                                                 uRunSpeedData = 255;  //0到3F
  2394.                                         else
  2395.                                                 uRunSpeedData = uRunSpeedData-1;
  2396.                                 }
  2397.                                 SysSetupBarFun(uSysSetupTimes);
  2398.                         }
  2399.                         if(bSysSetupFlag && uSysSetupTimes == 5)  //待机时间  00 到30分钟  当为0时表示不待机
  2400.                         {
  2401.                                 if(bLeftRightFlag)
  2402.                                 {
  2403.                                         if(uStandbyTime == 6) //uStandbyTime*5
  2404.                                                 uStandbyTime = 0;
  2405.                                         else
  2406.                                                 uStandbyTime = uStandbyTime+1;
  2407.                                 }
  2408.                                 else
  2409.                                 {
  2410.                                         if(uStandbyTime == 0)
  2411.                                                 uStandbyTime = 6;
  2412.                                         else
  2413.                                                 uStandbyTime = uStandbyTime-1;
  2414.                                 }
  2415.                                 SysSetupBarFun(uSysSetupTimes);
  2416.                         }
  2417.                         if(bSysSetupFlag && uSysSetupTimes == 6)  //网线速度  1-5
  2418.                         {
  2419.                                 if(bLeftRightFlag)
  2420.                                 {
  2421.                                         if(uNetSpeed == 5)
  2422.                                                 uNetSpeed = 1;
  2423.                                         else
  2424.                                                 uNetSpeed = uNetSpeed+1;
  2425.                                 }
  2426.                                 else
  2427.                                 {
  2428.                                         if(uNetSpeed == 1)
  2429.                                                 uNetSpeed = 5;
  2430.                                         else
  2431.                                                 uNetSpeed = uNetSpeed-1;
  2432.                                 }
  2433.                                 SysSetupBarFun(uSysSetupTimes);
  2434.                         }
  2435.                         /*
  2436.                         if(bSysSetupFlag && uSysSetupTimes == 7)  //屏幕亮度 1-15
  2437.                         {
  2438.                         if(bLeftRightFlag)
  2439.                         {
  2440.                         if(uLcdBright == 15)
  2441.                         uLcdBright = 1;
  2442.                         else
  2443.                         uLcdBright = uLcdBright+1;
  2444.                         }
  2445.                         else
  2446.                         {
  2447.                         if(uLcdBright == 1)
  2448.                         uLcdBright = 15;
  2449.                         else
  2450.                         uLcdBright = uLcdBright-1;
  2451.                         }
  2452.                         SysSetupBarFun(uSysSetupTimes);
  2453.                            
  2454.                           }
  2455.                         */
  2456. //chen
  2457. //视频输入和云台控制
  2458.                         if(bVideoSignInFlag && uVideoSignInBarNum == 1)  //地址 选择
  2459.                         {
  2460.                                 if(bLeftRightFlag)
  2461.                                 {
  2462.                                         if(uVideoSignInAddr == 255)
  2463.                                                 uVideoSignInAddr = 0;
  2464.                                         else
  2465.                                                 uVideoSignInAddr = uVideoSignInAddr+1;
  2466.                                 }
  2467.                                 else
  2468.                                 {
  2469.                                         if(uVideoSignInAddr == 0)
  2470.                                                 uVideoSignInAddr = 255;
  2471.                                         else
  2472.                                                 uVideoSignInAddr = uVideoSignInAddr-1;
  2473.                                 }
  2474.                                 VideoSignInMode(uVideoSignInAddr, uVideoSignInType, TRUE);   //显示地址  视频格式
  2475.                         }
  2476.                         if(bVideoSignInFlag && uVideoSignInBarNum == 2) //视频制式 选择
  2477.                         {
  2478.                                 if(bLeftRightFlag)
  2479.                                 {
  2480.                                         if(uVideoSignInType == 3)
  2481.                                                 uVideoSignInType = 1;
  2482.                                         else
  2483.                                                 uVideoSignInType = uVideoSignInType+1;
  2484.                                 }
  2485.                                 else
  2486.                                 {
  2487.                                         if(uVideoSignInType == 1)
  2488.                                                 uVideoSignInType = 3;
  2489.                                         else
  2490.                                                 uVideoSignInType = uVideoSignInType-1;
  2491.                                 }
  2492.                                 VideoSignInMode(uVideoSignInAddr, uVideoSignInType, FALSE);   //显示地址  视频格式
  2493.                         }
  2494.                         
  2495. //chen
  2496. //预置位设置界面菜单选择
  2497. //                        if(bOtherFunFlag == 1 && bPreset_Page ==1)
  2498.                         if(bPreset_Page ==1)
  2499.                         {
  2500. //chen--                if(bLeftRightFlag)
  2501.                                 MB90092_DisChar (2,5,0x0B,2,B_COLOR_CYAN,0,0);
  2502.                                 switch(uPtzOtherFunNum)
  2503.                                 {
  2504.                                         case 9:         uPtzOtherFunNum = 10;         break;
  2505.                                         case 10:        
  2506.                                         case 11:        
  2507.                                         case 12:        uPtzOtherFunNum = 9;         break;
  2508.                                         default:        break;               
  2509.                                 }
  2510.                                 PtzOtherFun(uPtzOtherFunNum,uPresetAddr);                                
  2511.                         }
  2512. /*chen--取消左右按键功能,改左右按键为上下按键。
  2513.                                 if(bLeftRightFlag)
  2514.                                 {
  2515.                                         //横向的第1行
  2516.                                         if(uPtzOtherFunNum == 1)
  2517.                                         {
  2518.                                                 uPtzOtherFunNum = 2;
  2519.                                         }
  2520.                                         else if(uPtzOtherFunNum == 2)
  2521.                                         {
  2522.                                                 uPtzOtherFunNum = 3;
  2523.                                         }
  2524.                                         else if(uPtzOtherFunNum == 3)
  2525.                                         {
  2526.                                                 uPtzOtherFunNum = 1;
  2527.                                         }
  2528.                                         //横向的第2行
  2529.                                         else if(uPtzOtherFunNum == 4)
  2530.                                         {
  2531.                                                 uPtzOtherFunNum = 5;
  2532.                                         }
  2533.                                         else if(uPtzOtherFunNum == 5)
  2534.                                         {
  2535.                                                 uPtzOtherFunNum = 6;
  2536.                                         }
  2537.                                         else if(uPtzOtherFunNum == 6)
  2538.                                         {
  2539.                                                 uPtzOtherFunNum = 4;
  2540.                                         }
  2541.                                        
  2542.                                         //横向的第3行
  2543.                                         else if(uPtzOtherFunNum == 7)
  2544.                                         {
  2545.                                                 uPtzOtherFunNum = 8;
  2546.                                         }
  2547.                                         else if(uPtzOtherFunNum == 8)
  2548.                                         {
  2549.                                                 uPtzOtherFunNum = 7;
  2550.                                         }
  2551.                                        
  2552.                                         //横向的第4行
  2553.                                         else if(uPtzOtherFunNum == 10)
  2554.                                         {
  2555.                                                 uPtzOtherFunNum = 11;
  2556.                                         }
  2557.                                         else if(uPtzOtherFunNum == 11)
  2558.                                         {
  2559.                                                 uPtzOtherFunNum = 12;
  2560.                                         }
  2561.                                         else if(uPtzOtherFunNum == 12)
  2562.                                         {
  2563.                                                 uPtzOtherFunNum = 3;
  2564.                                         }
  2565.                                         //数字改变
  2566.                                         else if(uPtzOtherFunNum == 9)
  2567.                                                                 {
  2568.                                                                         if(uPresetAddr == 255)
  2569.                                                                                         uPresetAddr = 0;
  2570.                                                                         else
  2571.                                                                                 uPresetAddr = uPresetAddr+1;
  2572.                                                                 }
  2573.                                                                 else
  2574.                                                                 {
  2575.                                                                         uPtzOtherFunNum =1;
  2576.                                                                 }
  2577.                                 }
  2578.                                 else
  2579.                                 {
  2580.                                         //横向的第1行
  2581.                                         if(uPtzOtherFunNum == 2)
  2582.                                         {
  2583.                                                 uPtzOtherFunNum = 1;
  2584.                                         }
  2585.                                         else if(uPtzOtherFunNum == 3)
  2586.                                         {
  2587.                                                 uPtzOtherFunNum = 2;
  2588.                                         }
  2589.                                         else if(uPtzOtherFunNum == 1)
  2590.                                         {
  2591.                                                 uPtzOtherFunNum = 3;
  2592.                                         }
  2593.                                         //横向的第2行
  2594.                                         else if(uPtzOtherFunNum == 5)
  2595.                                         {
  2596.                                                 uPtzOtherFunNum = 4;
  2597.                                         }
  2598.                                         else if(uPtzOtherFunNum == 6)
  2599.                                         {
  2600.                                                 uPtzOtherFunNum = 5;
  2601.                                         }
  2602.                                         else if(uPtzOtherFunNum == 4)
  2603.                                         {
  2604.                                                 uPtzOtherFunNum = 6;
  2605.                                         }
  2606.                                        
  2607.                                         //横向的第3行
  2608.                                         else if(uPtzOtherFunNum == 8)
  2609.                                         {
  2610.                                                 uPtzOtherFunNum = 7;
  2611.                                         }
  2612.                                         else if(uPtzOtherFunNum == 7)
  2613.                                         {
  2614.                                                 uPtzOtherFunNum = 8;
  2615.                                         }
  2616.                                        
  2617.                                         //横向的第4行
  2618.                                         else if(uPtzOtherFunNum == 12)
  2619.                                         {
  2620.                                                 uPtzOtherFunNum = 11;
  2621.                                         }
  2622.                                         else if(uPtzOtherFunNum == 11)
  2623.                                         {
  2624.                                                 uPtzOtherFunNum = 10;
  2625.                                         }
  2626.                                         else if(uPtzOtherFunNum == 10)
  2627.                                         {
  2628.                                                 uPtzOtherFunNum = 9;
  2629.                                         }
  2630.                                         //数字改变
  2631.                                         else if(uPtzOtherFunNum == 9)
  2632.                                         {
  2633.                                                 if(uPresetAddr == 255)
  2634.                                                         uPresetAddr = 0;
  2635.                                                 else
  2636.                                                         uPresetAddr = uPresetAddr-1;
  2637.                                         }
  2638.                                         else
  2639.                                         {
  2640.                                                 uPtzOtherFunNum =1;
  2641.                                         }
  2642.                                 }
  2643. */               

  2644. //chen
  2645. //球机地址自动扫描 设置界面
  2646.                         
  2647. //新增加内容  地址自动扫描
  2648.         if(!ScanStop_Interface)        //chen++ 确定当前界面不是自动扫描停止界面。
  2649.         {
  2650.                          if(bAutoScanFlag && uAutoScanSetupTimes == 1)//自动扫描波特率
  2651.                          {
  2652.                              if(bLeftRightFlag)
  2653.                           {
  2654.                                   if(uAutoBaudRateItem == 8)
  2655.                                           uAutoBaudRateItem = 1;
  2656.                                   else
  2657.                                           uAutoBaudRateItem = uAutoBaudRateItem+1;
  2658.                           }
  2659.                           else
  2660.                           {
  2661.                                   if(uAutoBaudRateItem == 1)
  2662.                                           uAutoBaudRateItem = 8;
  2663.                                   else
  2664.                                           uAutoBaudRateItem = uAutoBaudRateItem-1;
  2665.                           }
  2666.                           PtzAddrAutoScan(uAutoScanSetupTimes);
  2667.                          }
  2668.                          if(bAutoScanFlag && uAutoScanSetupTimes == 2)  //自动扫描控制协议是第几个
  2669.                          {
  2670.                              if(bLeftRightFlag)
  2671.                           {
  2672.                                   if(uAutoControlRuleItem == 10)
  2673.                                           uAutoControlRuleItem = 1;
  2674.                                   else
  2675.                                           uAutoControlRuleItem = uAutoControlRuleItem+1;
  2676.                           }
  2677.                           else
  2678.                           {
  2679.                                   if(uAutoControlRuleItem == 1)
  2680.                                           uAutoControlRuleItem = 10;
  2681.                                   else
  2682.                                           uAutoControlRuleItem = uAutoControlRuleItem-1;
  2683.                           }
  2684.                           PtzAddrAutoScan(uAutoScanSetupTimes);
  2685.                          }
  2686.                          if(bAutoScanFlag && uAutoScanSetupTimes == 3)  //开始地址
  2687.                          {
  2688.                              if(bLeftRightFlag)
  2689.                           {
  2690.                                   if(uAutoStartAddr == 255)
  2691.                                           uAutoStartAddr = 0;
  2692.                                   else
  2693.                                           uAutoStartAddr = uAutoStartAddr+1;
  2694.                           }
  2695.                           else
  2696.                           {
  2697.                                   if(uAutoStartAddr == 0)
  2698.                                           uAutoStartAddr = 255;
  2699.                                   else
  2700.                                           uAutoStartAddr = uAutoStartAddr-1;
  2701.                           }
  2702.                           PtzAddrAutoScan(uAutoScanSetupTimes);
  2703.                          }
  2704.                          if(bAutoScanFlag && uAutoScanSetupTimes == 4)  //结束地址
  2705.                          {
  2706.                              if(bLeftRightFlag)
  2707.                           {
  2708.                                   if(uAutoEndAddr == 255)
  2709.                                           uAutoEndAddr = 0;
  2710.                                   else
  2711.                                           uAutoEndAddr = uAutoEndAddr+1;
  2712.                           }
  2713.                           else
  2714.                           {
  2715.                                   if(uAutoEndAddr == 0)
  2716.                                           uAutoEndAddr = 255;
  2717.                                   else
  2718.                                           uAutoEndAddr = uAutoEndAddr-1;
  2719.                           }
  2720.                           PtzAddrAutoScan(uAutoScanSetupTimes);
  2721.                          }
  2722.                          if(bAutoScanFlag && uAutoScanSetupTimes == 5)   //间隔时间
  2723.                          {
  2724.                              if(bLeftRightFlag)
  2725.                           {
  2726.                                   if(uAutoSpaceTime == 10)
  2727.                                           uAutoSpaceTime = 1;
  2728.                                   else
  2729.                                           uAutoSpaceTime = uAutoSpaceTime+1;
  2730.                           }
  2731.                           else
  2732.                           {
  2733.                                   if(uAutoSpaceTime == 1)
  2734.                                           uAutoSpaceTime = 10;
  2735.                                   else
  2736.                                           uAutoSpaceTime = uAutoSpaceTime-1;
  2737.                           }
  2738.                           PtzAddrAutoScan(uAutoScanSetupTimes);
  2739.                          }
  2740.         }
  2741.                          return;
  2742. }

  2743. //选择项的移动
  2744. //bDownUp = FALSE;表示向下移动
  2745. //bDownUp = TRUE;表示向上移动
  2746. void DownUpItem(bit bDownUp)
  2747. {
  2748.                         bit bFlag = FALSE;
  2749.                         unsigned char uData[7] = {0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A};
  2750.                         unsigned char i = 0;
  2751.                         unsigned char uEndNumTemp = 0;
  2752.                         unsigned char uTemp1 = 0;
  2753.                         unsigned int  uTemp2 = 0;
  2754. //主菜单
  2755.                         if(bMainMenuFlag)
  2756.                         {
  2757.                                 if(bDownUp)
  2758.                                 {
  2759.                                 switch(uMainMenuTimes)
  2760.                                         {
  2761.                                                 case 1:  uMainMenuTimes = 4;        break;
  2762.                                                 case 2:         uMainMenuTimes = 9;        break;
  2763.                                                 case 3:         uMainMenuTimes = 6;        break;
  2764.                                                 case 4:  uMainMenuTimes = 1;        break;
  2765.                                                 case 5:         uMainMenuTimes = 8;        break;
  2766.                                                 case 6:         uMainMenuTimes = 3;        break;
  2767.                                                 case 8:         uMainMenuTimes = 5;        break;
  2768.                                                 case 9:         uMainMenuTimes = 2;        break;
  2769.                                                 default: uMainMenuTimes = 1;
  2770.                                         }
  2771.                                 }
  2772.                                 else
  2773.                                 {        switch(uMainMenuTimes)
  2774.                                         {
  2775.                                                 case 1:  uMainMenuTimes = 4;        break;
  2776.                                                 case 2:         uMainMenuTimes = 9;        break;
  2777.                                                 case 3:         uMainMenuTimes = 6;        break;
  2778.                                                 case 4:  uMainMenuTimes = 1;        break;
  2779.                                                 case 5:         uMainMenuTimes = 8;        break;
  2780.                                                 case 6:         uMainMenuTimes = 3;        break;
  2781.                                                 case 8:         uMainMenuTimes = 5;        break;
  2782.                                                 case 9:         uMainMenuTimes = 2;        break;
  2783.                                                 default: uMainMenuTimes = 1;
  2784.                                         }
  2785.                                 }
  2786.                                 /*chen--g
  2787.                                         if(uMainMenuTimes == 6)
  2788.                                         {
  2789.                                                 uMainMenuTimes = 1;
  2790.                                         }
  2791.                                         else
  2792.                                         {
  2793.                                                 uMainMenuTimes = uMainMenuTimes+1;
  2794.                                         }
  2795.                                 }
  2796.                                 else
  2797.                                 {
  2798.                                         if(uMainMenuTimes == 1)
  2799.                                         {
  2800.                                                 uMainMenuTimes = 6;
  2801.                                         }
  2802.                                         else
  2803.                                         {
  2804.                                                 uMainMenuTimes = uMainMenuTimes-1;
  2805.                                         }
  2806.                                 }                 
  2807.                                 chen--g*/

  2808.                                 MainMenu(uMainMenuTimes);
  2809.                         }
  2810. //系统参数设置
  2811.                         if(bSysSetupFlag)
  2812.                         {
  2813.                                 if(bDownUp)
  2814.                                 {
  2815.                                         if(uSysSetupTimes == 6)        //chen--g 7-->6  取消屏幕亮度调节
  2816.                                         {
  2817.                                                 uSysSetupTimes = 1;
  2818.                                         }
  2819.                                         else
  2820.                                         {
  2821.                                                 uSysSetupTimes = uSysSetupTimes+1;
  2822.                                         }
  2823.                                 }
  2824.                                 else
  2825.                                 {
  2826.                                         if(uSysSetupTimes == 1)
  2827.                                         {
  2828.                                                 uSysSetupTimes = 6;        //chen--g 7-->6  取消屏幕亮度调节
  2829.                                         }
  2830.                                         else
  2831.                                         {
  2832.                                                 uSysSetupTimes = uSysSetupTimes-1;
  2833.                                         }
  2834.                                 }
  2835.                                 SysSetupBarFun(uSysSetupTimes);
  2836.                         }
  2837. //云台球机和视频输入控制  
  2838.                         if(bPtzVideoFlag)
  2839.                         {
  2840.                                 if(bDownUp)
  2841.                                 {
  2842.                                         if(uPtzMainBarNum == 3)
  2843.                                         {
  2844.                                                 uPtzMainBarNum = 1;
  2845.                                         }
  2846.                                         else
  2847.                                         {
  2848.                                                 uPtzMainBarNum = uPtzMainBarNum+1;
  2849.                                         }
  2850.                                 }
  2851.                                 else
  2852.                                 {
  2853.                                         if(uPtzMainBarNum == 1)
  2854.                                         {
  2855.                                                 uPtzMainBarNum = 3;
  2856.                                         }
  2857.                                         else
  2858.                                         {
  2859.                                                 uPtzMainBarNum = uPtzMainBarNum-1;
  2860.                                         }
  2861.                                 }
  2862.                                 PtzVideoControl(uPtzMainBarNum);   //显示地址  视频格式
  2863.                         }
  2864. //视频输入和云台控制
  2865.                         if(bVideoSignInFlag)
  2866.                         {
  2867.                                 if(uVideoSignInBarNum == 1)
  2868.                                 {
  2869.                                         uVideoSignInBarNum = 2;
  2870.                                         bFlag = FALSE;
  2871.                                 }
  2872.                                 else if(uVideoSignInBarNum == 2)
  2873.                                 {
  2874.                                         uVideoSignInBarNum = 1;
  2875.                                         bFlag = TRUE;
  2876.                                 }
  2877.                                 else
  2878.                                 {
  2879.                                         _nop_();
  2880.                                 }
  2881.                                 VideoSignInMode(uVideoSignInAddr, uVideoSignInType, bFlag);   //显示地址  视频格式  
  2882.                         }
  2883. //球机其他功能操作
  2884.                         if(bOtherFunFlag)
  2885.                         {
  2886.                                 if(bDownUp)
  2887.                                 {
  2888.                                         switch(uPtzOtherFunNum)
  2889.                                         {
  2890.                                                 case 1:    uPtzOtherFunNum = 2;                break;
  2891.                                                 case 2:    uPtzOtherFunNum = 3;                break;
  2892.                                                 case 3:    uPtzOtherFunNum = 7;                break;
  2893.                                                 case 7:    uPtzOtherFunNum = 13;        break;
  2894.                                                 case 13:   uPtzOtherFunNum = 1;                break;
  2895. //预设值界面下的三个坐标
  2896.                                                 case 10:   uPtzOtherFunNum = 11;        break;        //10 预设置
  2897.                                                 case 11:   uPtzOtherFunNum = 12;        break;        //11 预设调用
  2898.                                                 case 12:   uPtzOtherFunNum = 10;        break;        //12 预设清除
  2899.                                                 default: break;
  2900.                                         }
  2901.                                         if(bPreset_Page == 1 && uPtzOtherFunNum == 9)
  2902.                                         {
  2903.                                                 if(uPresetAddr == 255)
  2904.                                                         uPresetAddr = 0;
  2905.                                                 else
  2906.                                                         uPresetAddr = uPresetAddr+1;
  2907.                                         }
  2908.                                 }
  2909.                                 else
  2910.                                 {
  2911.                                         switch(uPtzOtherFunNum)
  2912.                                         {
  2913.                                                 case 1:    uPtzOtherFunNum = 13;        break;        //1 雨刷
  2914.                                                 case 2:    uPtzOtherFunNum = 1;                break;        //2        灯光
  2915.                                                 case 3:    uPtzOtherFunNum = 2;                break;        //3        电源
  2916.                                                 case 7:    uPtzOtherFunNum = 3;                break;        //7        自动巡航
  2917.                                                 case 13:   uPtzOtherFunNum = 7;                break;        //13 预设值界面进入标志
  2918. //预设值界面下的三个坐标
  2919.                                                 case 10:   uPtzOtherFunNum = 12;        break;        //10 预设置
  2920.                                                 case 11:   uPtzOtherFunNum = 10;        break;        //11 预设调用
  2921.                                                 case 12:   uPtzOtherFunNum = 11;        break;        //12 预设清除

  2922.                                                 default: break;
  2923.                                         }
  2924.                                         if(bPreset_Page == 1 && uPtzOtherFunNum == 9)
  2925.                                         {
  2926.                                                 if(uPresetAddr == 0)
  2927.                                                         {uPresetAddr = 255;}
  2928.                                                         
  2929.                                                 else
  2930.                                                         {uPresetAddr = uPresetAddr-1;}
  2931.                                         }
  2932.                                 }
  2933.                                 if(bPreset_Page == 0)        
  2934.                                         PtzFunction2(uPtzOtherFunNum);  //其他功能命令
  2935.                                 else
  2936.                                         PtzOtherFun(uPtzOtherFunNum,uPresetAddr);  //在预设值页面
  2937.                          }
  2938.                         
  2939.         //地址自动扫描
  2940.                  if((bAutoScanFlag)&&(!ScanStop_Interface))
  2941.                  {
  2942.                   if(bDownUp)
  2943.                   {
  2944.                           if(uAutoScanSetupTimes == 5)
  2945.                           {
  2946.                                   uAutoScanSetupTimes = 1;
  2947.                           }
  2948.                           else
  2949.                           {
  2950.                                   uAutoScanSetupTimes = uAutoScanSetupTimes+1;
  2951.                           }
  2952.                   }
  2953.                   else
  2954.                   {
  2955.                           if(uAutoScanSetupTimes == 1)
  2956.                           {
  2957.                                   uAutoScanSetupTimes = 5;
  2958.                           }
  2959.                           else
  2960.                           {
  2961.                                   uAutoScanSetupTimes = uAutoScanSetupTimes-1;
  2962.                           }
  2963.                   }
  2964.                      PtzAddrAutoScan(uAutoScanSetupTimes);
  2965.                  }
  2966. //电源管理
  2967.                  if(bPowerManageBarFlag)
  2968.                  {
  2969.                      if(uPowerManageBarTimes == 1)
  2970.                   {
  2971.                           uPowerManageBarTimes = 2;
  2972.                   }
  2973.                   else
  2974.                   {
  2975.                           uPowerManageBarTimes = 1;
  2976.                   }
  2977.                   PowerManageBarFun(uPowerManageBarTimes, uVolData);
  2978.                  }
  2979. //串口数据接收
  2980.                  if(bComuDispDataFlag)
  2981.                  {
  2982.                   uTemp1 = uGetSerialDataNum/7;  //页数
  2983.                   if(bDownUp)
  2984.                   {
  2985.                           if(uComuPageNum >= uTemp1+1)
  2986.                           {
  2987.                                   uComuPageNum = 1;
  2988.                           }
  2989.                           else
  2990.                           {
  2991.                                   uComuPageNum = uComuPageNum+1;
  2992.                           }
  2993.                   }
  2994.                   else
  2995.                   {
  2996.                           if(uComuPageNum == 1)
  2997.                           {
  2998.                                   uComuPageNum = uTemp1+1;
  2999.                           }
  3000.                           else
  3001.                           {
  3002.                                   uComuPageNum = uComuPageNum-1;
  3003.                           }
  3004.                   }
  3005.                   
  3006.                   uTemp2 = (uComuPageNum-1)*7;  //第uComuPageNum剩下
  3007.                   
  3008.                   if(uComuPageNum<= uTemp1)
  3009.                   {
  3010.                           uEndNumTemp = 7;
  3011.                   }
  3012.                   else
  3013.                   {
  3014.                           uEndNumTemp = uGetSerialDataNum-uTemp2;
  3015.                   }
  3016.                   
  3017.                   for(i=0; i<uEndNumTemp; i++)
  3018.                   {
  3019.                           uData[i] = uInbox[uTemp2+i];
  3020.                   }
  3021.                   
  3022.                   //处理得到uEndNumTemp 数据
  3023.                   ComuDisplayData(uComuPageNum,uEndNumTemp,uData);
  3024.                   ComuDisplayBarNum(uComuPageNum, uGetSerialDataNum);
  3025.                  }
  3026.                  return;                  
  3027. }
  3028. //>2云台其他功能操作 发送相关命令
  3029. void PtzOtherFunSendOrder(unsigned char uPtzOtherFunNumTemp)
  3030. {
  3031. // unsigned char uTemp;
  3032. // uPresetAddrTemp = uPresetAddrTemp;
  3033.                         switch(uPtzOtherFunNumTemp)
  3034.                         {
  3035.                                 case 1:
  3036.                                         if (Wipper_state == 0)
  3037.                                         {
  3038.                                                 Wipper_state = 1;
  3039.                                                 PtzBrushOpen(uControlRuleItem);                //雨刷开
  3040.                                                 MB90092_DisChar (12,2,Open_adr,2,B_COLOR_CYAN,C_COLOR_BLACK,1);                //开
  3041. //chen test                                                MB90092_DisChar (15,2,RingForm_adr,2,B_COLOR_CYAN,C_COLOR_RED,1);         //环
  3042.                                         }
  3043.                                         else
  3044.                                         {
  3045.                                                 Wipper_state = 0;
  3046.                                                 PtzBrushClose(uControlRuleItem);        //雨刷关
  3047.                                                 MB90092_DisChar (12,2,Close_adr,2,B_COLOR_CYAN,C_COLOR_BLACK,1);                //关
  3048. //chen test                                                MB90092_DisChar (15,2,RoundForm_adr,2,B_COLOR_CYAN,C_COLOR_RED,1);         //园
  3049.                                         }
  3050.                                         break;
  3051.                                 case 2:
  3052.                                         if(Light_state ==0)
  3053.                                         {
  3054.                                                 Light_state = 1;
  3055.                                                 PtzLightOpen(uControlRuleItem);                //灯光开
  3056.                                                 MB90092_DisChar (12,3,Open_adr,2,B_COLOR_CYAN,C_COLOR_BLACK,1);                //开
  3057. //chen test                                                MB90092_DisChar (15,3,RingForm_adr,2,B_COLOR_CYAN,C_COLOR_RED,1);         //环
  3058.                                         }
  3059.                                         else
  3060.                                         {
  3061.                                                 Light_state = 0;
  3062.                                                 PtzLightClose(uControlRuleItem);        //灯光关
  3063.                                                 MB90092_DisChar (12,3,Close_adr,2,B_COLOR_CYAN,C_COLOR_BLACK,1);                //关
  3064. //chen test                                                MB90092_DisChar (15,3,RoundForm_adr,2,B_COLOR_CYAN,C_COLOR_RED,1);         //园
  3065.                                         }
  3066.                                         break;
  3067.                                 case 3:
  3068.                                         if(Power_state == 0)
  3069.                                         {
  3070.                                                 Power_state = 1;        
  3071.                                                 PtzPowerOpen(uControlRuleItem);                //电源开
  3072.                                                 MB90092_DisChar (12,4,Open_adr,2,B_COLOR_CYAN,C_COLOR_BLACK,1);                //开
  3073. //chen test                                                MB90092_DisChar (15,4,RingForm_adr,2,B_COLOR_CYAN,C_COLOR_RED,1);         //环
  3074.                                         }
  3075.                                         else
  3076.                                         {
  3077.                                                 Power_state = 0;
  3078.                                                 PtzPowerClose(uControlRuleItem);        //电源关
  3079.                                                 MB90092_DisChar (12,4,Close_adr,2,B_COLOR_CYAN,C_COLOR_BLACK,1);                //关
  3080. //chen test                                                MB90092_DisChar (15,4,RoundForm_adr,2,B_COLOR_CYAN,C_COLOR_RED,1);         //园
  3081.                                         }
  3082.                                         break;
  3083.                                 case 7:
  3084.                                         if(Cruise_state ==0)
  3085.                                         {
  3086.                                                 Cruise_state =1;
  3087.                                                 PtzAutoOpen(uControlRuleItem);                //自动巡航开
  3088.                                                 MB90092_DisChar (12,5,Open_adr,2,B_COLOR_CYAN,C_COLOR_BLACK,0);                //开
  3089. //chen test                                                MB90092_DisChar (15,5,RingForm_adr,2,B_COLOR_CYAN,C_COLOR_RED,1);         //环
  3090.                                         }
  3091.                                         else
  3092.                                         {
  3093.                                                 Cruise_state = 0;
  3094.                                                 PtzAutoClose(uControlRuleItem);                //自动巡航关
  3095.                                                 MB90092_DisChar (12,5,Close_adr,2,B_COLOR_CYAN,C_COLOR_BLACK,0);                //开
  3096. //chen test                                                MB90092_DisChar (15,5,RoundForm_adr,2,B_COLOR_CYAN,C_COLOR_RED,1);         //园
  3097.                                         }
  3098.                                         break;

  3099.                                 case 10:
  3100.                                         PtzSetPreset(uControlRuleItem);                //设置预置点
  3101. //chen test                                        MB90092_DisChar (1,1,RingForm_adr,2,B_COLOR_CYAN,C_COLOR_RED,1);         //环
  3102.                                         break;
  3103.                                 case 11:
  3104.                                         PtzCallPreset(uControlRuleItem);        //调用预置点
  3105. //chen test                                        MB90092_DisChar (1,2,RingForm_adr,2,B_COLOR_CYAN,C_COLOR_RED,1);         //环
  3106.                                         break;
  3107.                                 case 12:
  3108.                                         PtzDelPreset(uControlRuleItem);                //清除预置点
  3109. //chen test                                        MB90092_DisChar (1,1,RoundForm_adr,2,B_COLOR_CYAN,C_COLOR_RED,1);         //环
  3110. //chen test                                        MB90092_DisChar (1,2,RoundForm_adr,2,B_COLOR_CYAN,C_COLOR_RED,1);         //环
  3111.                                         break;
  3112.                                 case 13:
  3113.                 //chen++
  3114.                                         MB90092_ClearScreen();

  3115.                                         MB90092_WriteByte(0xA2|4);//command 4,内、外同步选择        SYN_INTERNAL = 0、4
  3116.                                         MB90092_WriteByte(0x2B);

  3117.                                         CD4053_A = 0;
  3118.                                         CD4053_B = 0;
  3119.                                         CD4053_C = 1;
  3120. //                                        PtzOtherFun(uPtzOtherFunNum,uPresetAddr);
  3121.                                         bPreset_Page = 1;
  3122.                                         bPresetVideo_Flag = 1;
  3123.                                         bPresetSet_Flag = 0;
  3124.                                         break;

  3125.                         }
  3126.         
  3127. }
  3128. //>3球机地址自动扫描
  3129. void PtzAddrAutoScan(unsigned char uAutoScanBarNum)
  3130. {
  3131.                         unsigned char *pData = 0;
  3132.                         unsigned char uTemp  = 0;
  3133.                         unsigned char uData[6] = 0;
  3134.                         
  3135.                         switch(uAutoBaudRateItem)
  3136.                         {
  3137.                 //case 1:
  3138.                 //        pData = "300bps";
  3139.                 //        break;
  3140.                                 case 1:
  3141.                                         pData = "600bps";
  3142.                                         break;
  3143.                                 case 2:
  3144.                                         pData = "1200bps";
  3145.                                         break;
  3146.                                 case 3:
  3147.                                         pData = "2400bps";
  3148.                                         break;
  3149.                                 case 4:
  3150.                                         pData = "4800bps";
  3151.                                         break;
  3152.                                 case 5:
  3153.                                         pData = "9600bps";
  3154.                                         break;
  3155.                                 case 6:
  3156.                                         pData = "19200bps";
  3157.                                         break;
  3158.                                 case 7:
  3159.                                         pData = "38400bps";
  3160.                                         break;
  3161.                                 case 8:
  3162.                                         pData = "57600bps";
  3163.                                         break;
  3164.                                         //                case 10:
  3165.                                         //          pData = "115200bps";
  3166.                                         //                        break;
  3167.                         }
  3168.                         AutoScanSetupRight(pData,1,uAutoScanBarNum-1); //波特率:
  3169.                         switch(uAutoControlRuleItem)  //控制协议目前范围  1到10
  3170.                         {
  3171.                                 case 1:
  3172.                                         pData = "PELCO-D";
  3173.                                         break;
  3174.                                 case 2:
  3175.                                         pData = "PELCO-P";
  3176.                                         break;
  3177.                                 case 3:
  3178.                                         pData = "KRE-302";
  3179.                                         break;
  3180.                                 case 4:
  3181.                                         pData = "Philips";
  3182.                                         break;
  3183.                                 case 5:
  3184.                                         pData = "Samsung";
  3185.                                         break;
  3186.                                 case 6:
  3187.                                         pData = "ADR8060";
  3188.                                         break;
  3189.                                 case 7:
  3190.                                         pData = "Dali";
  3191.                                         break;
  3192.                                 case 8:
  3193.                                         pData = "HIKVISION";
  3194.                                         break;
  3195.                                 case 9:
  3196.                                         pData = "Howell";
  3197.                                         break;
  3198.                                 case 10:
  3199.                                         pData = "Siemens";
  3200.                                         break;
  3201.                         }
  3202.                         AutoScanSetupRight(pData,2,uAutoScanBarNum-2);  //控制协议:  PELCO-P  PELCO-D
  3203.                         
  3204.                         
  3205.                         //把数字转换成字符  开始地址
  3206.                         pData = 0;
  3207.                         uData[0] = uAutoStartAddr/100+0x30;
  3208.                         uData[1] = uAutoStartAddr%100/10+0x30;
  3209.                         uData[2] = uAutoStartAddr%10+0x30;
  3210.                         uData[3] = '\0';
  3211.                         pData = uData;
  3212.                         AutoScanSetupRight(pData,3,uAutoScanBarNum-3);  //开始地址:        
  3213.                            
  3214.                         
  3215.                         //把数字转换成字符  结束地址
  3216.                         pData = 0;
  3217.                         uData[0] = uAutoEndAddr/100+0x30;
  3218.                         uData[1] = uAutoEndAddr%100/10+0x30;
  3219.                         uData[2] = uAutoEndAddr%10+0x30;
  3220.                         uData[3] = '\0';
  3221.                         pData = uData;
  3222.                         AutoScanSetupRight(pData,4,uAutoScanBarNum-4);  //结束地址:
  3223.                         
  3224.                            //关机机时间         1秒 2秒 3秒 4秒 5秒
  3225.                         pData = 0;
  3226.                         uData[5] = 0;
  3227.                         uData[0] = (uAutoSpaceTime)%100/10+0x30;
  3228.                         uData[1] = (uAutoSpaceTime)%10+0x30;
  3229.                         uData[2] = '\S';
  3230.                         uData[3] = '\0';
  3231.                         pData = uData;
  3232.                         AutoScanSetupRight(pData,5,uAutoScanBarNum-5);  //待机时间:
  3233. }
  3234. //系统参数设置 界面
  3235. void SysSetupBarFun(unsigned char uSysSetupTimes)
  3236. {
  3237.                         unsigned char *pData = 0;
  3238.                         unsigned char uTemp  = 0;
  3239.                         unsigned char uData[6] = 0;
  3240.                         
  3241.                         switch(uControlRuleItem)  //控制协议目前范围  1到10
  3242.                         {
  3243.                                 case 1:
  3244.                                 pData = "PELCO-D";
  3245.                                 break;
  3246.                                 case 2:
  3247.                                 pData = "PELCO-P";
  3248.                                 break;
  3249.                                 case 3:
  3250.                                 pData = "KRE-302";
  3251.                                 break;
  3252.                                 case 4:
  3253.                                 pData = "Philips";
  3254.                                 break;
  3255.                                 case 5:
  3256.                                 pData = "Samsung";
  3257.                                 break;
  3258.                                 case 6:
  3259.                                 pData = "ADR8060";
  3260.                                 break;
  3261.                                 case 7:
  3262.                                 pData = "Dali";
  3263.                                 break;
  3264.                                 case 8:
  3265.                                 pData = "HIKVISION";
  3266.                                 break;
  3267.                                 case 9:
  3268.                                 pData = "Howell";
  3269.                                 break;
  3270.                                 case 10:
  3271.                                 pData = "Siemens";
  3272.                                 break;
  3273.                         }
  3274.                         SysSetupRight(pData,1,uSysSetupTimes-1);  //控制协议:  PELCO-P  PELCO-D
  3275.                         switch(uComSereialItem)
  3276.                         {
  3277.                                 case 1:
  3278.                                         pData = "232";
  3279.                                         break;
  3280.                                 case 2:
  3281.                                         pData = "485";
  3282.                                         break;
  3283.                         }
  3284.                         SysSetupRight(pData,2,uSysSetupTimes-2);  //通信串口:
  3285.                         switch(uBaudRateItem)
  3286.                         {
  3287.                 //case 1:
  3288.                 //        pData = "300bps";
  3289.                 //        break;
  3290.                                 case 1:
  3291.                                         pData = "600bps";
  3292.                                         break;
  3293.                                 case 2:
  3294.                                         pData = "1200bps";
  3295.                                         break;
  3296.                                 case 3:
  3297.                                         pData = "2400bps";
  3298.                                         break;
  3299.                                 case 4:
  3300.                                         pData = "4800bps";
  3301.                                         break;
  3302.                                 case 5:
  3303.                                         pData = "9600bps";
  3304.                                         break;
  3305.                                 case 6:
  3306.                                         pData = "19200bps";
  3307.                                         break;
  3308.                                 case 7:
  3309.                                         pData = "38400bps";
  3310.                                         break;
  3311.                                 case 8:
  3312.                                         pData = "57600bps";
  3313.                                         break;
  3314.                 //case 10:
  3315.                 //        pData = "115200bps";
  3316.                 //        break;
  3317.                         }
  3318.                         
  3319.                         SysSetupRight(pData,3,uSysSetupTimes-3); //波特率:                        
  3320.                         //把数字转换成字符  运行速度
  3321.                         pData = 0;
  3322.                         uData[0] = uRunSpeedData/100+0x30;
  3323.                         uData[1] = uRunSpeedData%100/10+0x30;
  3324.                         uData[2] = uRunSpeedData%10+0x30;
  3325.                         uData[3] = '\@';
  3326.                         uData[4] = '\#';
  3327.                         uData[5] = '\0';
  3328.                         pData = uData;
  3329.                         SysSetupRight(pData,4,uSysSetupTimes-4);  //运行速度:        
  3330.                           
  3331.                           //关机机时间        
  3332.                         pData = 0;
  3333.                         uData[5] = 0;
  3334.                         uData[0] = (uStandbyTime*5)%100/10+0x30;
  3335.                         uData[1] = (uStandbyTime*5)%10+0x30;
  3336.                         uData[2] = '\


  3337. ;
  3338.                         uData[3] = '\%';
  3339.                         uData[4] = '\0';
  3340.                         pData = uData;
  3341.                         SysSetupRight(pData,5,uSysSetupTimes-5);  //待机时间:
  3342.                         
  3343.                         //网线速度
  3344.                         pData = 0;
  3345.                         uData[5] = 0;
  3346.                         uData[0] = uNetSpeed%100/10+0x30;
  3347.                         uData[1] = uNetSpeed%10+0x30;
  3348.                         uData[2] = '\@';
  3349.                         uData[3] = '\#';
  3350.                         uData[4] = '\0';
  3351.                         pData = uData;
  3352.                         SysSetupRight(pData,6,uSysSetupTimes-6);
  3353. /* chen-- 取消屏幕亮度显示                        
  3354.                         //屏幕亮度
  3355.                         pData = 0;
  3356.                         uData[5] = 0;
  3357.                         uData[0] = uLcdBright%100/10+0x30;
  3358.                         uData[1] = uLcdBright%10+0x30;
  3359.                         //   uData[0] = '\(';
  3360.                         //         uData[1] = '\)';
  3361.                         uData[2] = '\&';  //级
  3362.                         uData[3] = '\0';
  3363.                         pData = uData;
  3364.                         SysSetupRight(pData,7,uSysSetupTimes-7);  //屏幕亮度: 暂无
  3365. */
  3366. }
  3367. /////////////////////////////////////////////PTZ///////////////////////////////////////////////////////
  3368. //============================
  3369. //函数名:ProtocolCalculation
  3370. //作用:用于不同协议码地址的更新和校验码的计算
  3371. //输入参数:无
  3372. //输出参数:无
  3373. //============================
  3374. void ProtocolCalculation(unsigned char uSerialType)
  3375. {
  3376.                         if(uControlRuleItem == 1)
  3377.                         {
  3378.                                 PELCO_D[1]=(unsigned char)AddressSave;
  3379.                                 PELCO_D[6]=(unsigned char)(PELCO_D[1]+PELCO_D[2]+PELCO_D[3]+PELCO_D[4]+PELCO_D[5]);
  3380.                                 if(uSerialType == 2) //485
  3381.                                         Send_UART_Two(PELCO_D,7);  //发送串口数据
  3382.                                 if(uSerialType == 1) //232
  3383.                                         Send_UART_One(PELCO_D,7);  //发送串口数据
  3384.                         }
  3385.                         if(uControlRuleItem == 2)
  3386.                         {
  3387.                                 PELCO_P[1]=(unsigned char)AddressSave-1;
  3388.                                 PELCO_P[7]=(unsigned char)(PELCO_P[0]^PELCO_P[1]^PELCO_P[2]^PELCO_P[3]^PELCO_P[4]^PELCO_P[5]^PELCO_P[6]);
  3389.                                 if(uSerialType == 2) //485
  3390.                                         Send_UART_Two(PELCO_P,8);  //发送串口数据
  3391.                                 if(uSerialType == 1) //232
  3392.                                         Send_UART_One(PELCO_P,8);  //发送串口数据
  3393.                         }
  3394.                         if(uControlRuleItem == 3)
  3395.                         {
  3396.                                 KRE_302[2]=(unsigned char)AddressSave;
  3397.                                 if(uSerialType == 2) //485
  3398.                                         Send_UART_Two(KRE_302,6);  //发送串口数据
  3399.                                 if(uSerialType == 1) //232
  3400.                                         Send_UART_One(KRE_302,6);  //发送串口数据
  3401.                         }  
  3402.                         if(uControlRuleItem == 4)
  3403.                         {
  3404.                                 Philips[2]=(unsigned char)AddressSave;
  3405.                                 Philips[7]=(unsigned char)(Philips[0]+Philips[1]+Philips[2]+Philips[3]+Philips[4]+Philips[5]+Philips[6]);
  3406.                                 if(uSerialType == 2) //485
  3407.                                         Send_UART_Two(Philips,8);  //发送串口数据
  3408.                                 if(uSerialType == 1) //232
  3409.                                         Send_UART_One(Philips,8);  //发送串口数据
  3410.                         }
  3411.                         if(uControlRuleItem == 5)
  3412.                         {
  3413.                                 Samsung[1]=(unsigned char)AddressSave;
  3414.                                 Samsung[8]=(unsigned char)(~(Samsung[1]+Samsung[2]+Samsung[3]+Samsung[4]+Samsung[5]+Samsung[6]+Samsung[7]));
  3415.                                 if(uSerialType == 2) //485
  3416.                                         Send_UART_Two(Samsung,9);  //发送串口数据
  3417.                                 if(uSerialType == 1) //232
  3418.                                         Send_UART_One(Samsung,9);  //发送串口数据
  3419.                         }
  3420.                         if(uControlRuleItem == 6)
  3421.                         {
  3422.                                 ADR8060[2]=(unsigned char)AddressSave;
  3423.                                 ADR8060[4]=(unsigned char)(ADR8060[0]+ADR8060[1]+ADR8060[2]+ADR8060[3]);
  3424.                                 if(uSerialType == 2) //485
  3425.                                         Send_UART_Two(ADR8060,5);  //发送串口数据
  3426.                                 if(uSerialType == 1) //232
  3427.                                         Send_UART_One(ADR8060,5);  //发送串口数据
  3428.                         }
  3429.                         if(uControlRuleItem == 7)
  3430.                         {
  3431.                                 Dali[1]=(unsigned char)AddressSave;
  3432.                                 Dali[5]=(unsigned char)(Dali[0]^Dali[1]^Dali[2]^Dali[3]^Dali[4]);  
  3433.                                 if(uSerialType == 2) //485
  3434.                                         Send_UART_Two(Dali,6);  //发送串口数据
  3435.                                 if(uSerialType == 1) //232
  3436.                                         Send_UART_One(Dali,6);  //发送串口数据
  3437.                         }  
  3438.                         if(uControlRuleItem == 8)
  3439.                         {
  3440.                                 HIKVISION[1]=(unsigned char)AddressSave;
  3441.                                 HIKVISION[7]=(unsigned char)(HIKVISION[0]+HIKVISION[1]+HIKVISION[2]+HIKVISION[3]+HIKVISION[4]+HIKVISION[5]+HIKVISION[6]);   
  3442.                                 if(uSerialType == 2) //485
  3443.                                         Send_UART_Two(HIKVISION,8);  //发送串口数据
  3444.                                 if(uSerialType == 1) //232
  3445.                                         Send_UART_One(HIKVISION,8);  //发送串口数据
  3446.                         }
  3447.                         if(uControlRuleItem == 9)
  3448.                         {
  3449.                                 Howell[1]=(unsigned char)AddressSave;
  3450.                                 if(uSerialType == 2) //485
  3451.                                         Send_UART_Two(Howell,4);  //发送串口数据
  3452.                                 if(uSerialType == 1) //232
  3453.                                         Send_UART_One(Howell,4);  //发送串口数据
  3454.                         }
  3455.                         if(uControlRuleItem == 10)
  3456.                         {
  3457.                                 Siemens[1]=(unsigned char)AddressSave;
  3458.                                 if(KeyValueSave==0)   //向上
  3459.                                 {
  3460.                                         Siemens[2]=0x84;  
  3461.                                 }
  3462.                                 else if(KeyValueSave==3) //向左
  3463.                                 {
  3464.                                         Siemens[2]=0x81;  
  3465.                                 }  
  3466.                                 else if(KeyValueSave==4) //向右
  3467.                                 {
  3468.                                         Siemens[2]=0x82;  
  3469.                                 }
  3470.                                 else if(KeyValueSave==7)//向下
  3471.                                 {              
  3472.                                         Siemens[2]=0x85;  
  3473.                                 }
  3474.                                 else
  3475.                                 {
  3476.                                         Siemens[2]=~(Siemens[0]+Siemens[1])+1;
  3477.                                 }
  3478.                                 Siemens[4]=~(Siemens[0]+Siemens[1]+Siemens[2]+Siemens[3])+1;
  3479.                                 
  3480.                                 if(uSerialType == 2) //485
  3481.                                         Send_UART_Two(Siemens,5);  //发送串口数据
  3482.                                 if(uSerialType == 1) //232
  3483.                                         Send_UART_One(Siemens,5);  //发送串口数据
  3484.                         }
  3485. }
  3486. //============================
  3487. //函数名:AutoProtocolCalculation
  3488. //作用:用于不同协议码地址的更新和校验码的计算
  3489. //输入参数:无
  3490. //输出参数:无
  3491. //============================
  3492. void AutoProtocolCalculation(unsigned char uSerialType)
  3493. {
  3494.                         if(uAutoControlRuleItem == 1)
  3495.                         {
  3496.                                         PELCO_D[1]=(unsigned char)uAutoSendTempAddr;
  3497.                                         PELCO_D[6]=(unsigned char)(PELCO_D[1]+PELCO_D[2]+PELCO_D[3]+PELCO_D[4]+PELCO_D[5]);
  3498.                                         if(uSerialType == 2) //485
  3499.                                                 Send_UART_Two(PELCO_D,7);  //发送串口数据
  3500.                                         if(uSerialType == 1) //232
  3501.                                                 Send_UART_One(PELCO_D,7);  //发送串口数据
  3502.                         }
  3503.                         if(uAutoControlRuleItem == 2)
  3504.                         {
  3505.                                         PELCO_P[1]=(unsigned char)uAutoSendTempAddr-1;
  3506.                                         PELCO_P[7]=(unsigned char)(PELCO_P[0]^PELCO_P[1]^PELCO_P[2]^PELCO_P[3]^PELCO_P[4]^PELCO_P[5]^PELCO_P[6]);
  3507.                                         if(uSerialType == 2) //485
  3508.                                                 Send_UART_Two(PELCO_P,8);  //发送串口数据
  3509.                                         if(uSerialType == 1) //232
  3510.                                                 Send_UART_One(PELCO_P,8);  //发送串口数据
  3511.                         }
  3512.                         if(uAutoControlRuleItem == 3)
  3513.                         {
  3514.                                         KRE_302[2]=(unsigned char)uAutoSendTempAddr;
  3515.                                         if(uSerialType == 2) //485
  3516.                                                 Send_UART_Two(KRE_302,6);  //发送串口数据
  3517.                                         if(uSerialType == 1) //232
  3518.                                                 Send_UART_One(KRE_302,6);  //发送串口数据
  3519.                         }  
  3520.                         if(uAutoControlRuleItem == 4)
  3521.                         {
  3522.                                         Philips[2]=(unsigned char)uAutoSendTempAddr;
  3523.                                         Philips[7]=(unsigned char)(Philips[0]+Philips[1]+Philips[2]+Philips[3]+Philips[4]+Philips[5]+Philips[6]);
  3524.                                         if(uSerialType == 2) //485
  3525.                                                 Send_UART_Two(Philips,8);  //发送串口数据
  3526.                                         if(uSerialType == 1) //232
  3527.                                                 Send_UART_One(Philips,8);  //发送串口数据
  3528.                         }
  3529.                         if(uAutoControlRuleItem == 5)
  3530.                         {
  3531.                                         Samsung[1]=(unsigned char)uAutoSendTempAddr;
  3532.                                         Samsung[8]=(unsigned char)(~(Samsung[1]+Samsung[2]+Samsung[3]+Samsung[4]+Samsung[5]+Samsung[6]+Samsung[7]));
  3533.                                         if(uSerialType == 2) //485
  3534.                                                 Send_UART_Two(Samsung,9);  //发送串口数据
  3535.                                         if(uSerialType == 1) //232
  3536.                                                 Send_UART_One(Samsung,9);  //发送串口数据
  3537.                         }
  3538.                         if(uAutoControlRuleItem == 6)
  3539.                         {
  3540.                                         ADR8060[2]=(unsigned char)uAutoSendTempAddr;
  3541.                                         ADR8060[4]=(unsigned char)(ADR8060[0]+ADR8060[1]+ADR8060[2]+ADR8060[3]);
  3542.                                         if(uSerialType == 2) //485
  3543.                                                 Send_UART_Two(ADR8060,5);  //发送串口数据
  3544.                                         if(uSerialType == 1) //232
  3545.                                                 Send_UART_One(ADR8060,5);  //发送串口数据
  3546.                         }
  3547.                         if(uAutoControlRuleItem == 7)
  3548.                         {
  3549.                                         Dali[1]=(unsigned char)uAutoSendTempAddr;
  3550.                                         Dali[5]=(unsigned char)(Dali[0]^Dali[1]^Dali[2]^Dali[3]^Dali[4]);  
  3551.                                         if(uSerialType == 2) //485
  3552.                                                 Send_UART_Two(Dali,6);  //发送串口数据
  3553.                                         if(uSerialType == 1) //232
  3554.                                                 Send_UART_One(Dali,6);  //发送串口数据
  3555.                         }  
  3556.                         if(uAutoControlRuleItem == 8)
  3557.                         {
  3558.                                         HIKVISION[1]=(unsigned char)uAutoSendTempAddr;
  3559.                                         HIKVISION[7]=(unsigned char)(HIKVISION[0]+HIKVISION[1]+HIKVISION[2]+HIKVISION[3]+HIKVISION[4]+HIKVISION[5]+HIKVISION[6]);   
  3560.                                         if(uSerialType == 2) //485
  3561.                                                 Send_UART_Two(HIKVISION,8);  //发送串口数据
  3562.                                         if(uSerialType == 1) //232
  3563.                                                 Send_UART_One(HIKVISION,8);  //发送串口数据
  3564.                         }
  3565.                         if(uAutoControlRuleItem == 9)
  3566.                         {
  3567.                                         Howell[1]=(unsigned char)uAutoSendTempAddr;
  3568.                                         if(uSerialType == 2) //485
  3569.                                                 Send_UART_Two(Howell,4);  //发送串口数据
  3570.                                         if(uSerialType == 1) //232
  3571.                                                 Send_UART_One(Howell,4);  //发送串口数据
  3572.                         }
  3573.                         if(uAutoControlRuleItem == 10)
  3574.                         {
  3575.                                         Siemens[1]=(unsigned char)uAutoSendTempAddr;
  3576.                                         if(KeyValueSave==0)   //向上
  3577.                                         {
  3578.                                                 Siemens[2]=0x84;  
  3579.                                         }
  3580.                                         else if(KeyValueSave==3) //向左
  3581.                                         {
  3582.                                                 Siemens[2]=0x81;  
  3583.                                         }  
  3584.                                         else if(KeyValueSave==4) //向右
  3585.                                         {
  3586.                                                 Siemens[2]=0x82;  
  3587.                                         }
  3588.                                         else if(KeyValueSave==7)//向下
  3589.                                         {              
  3590.                                                 Siemens[2]=0x85;  
  3591.                                         }
  3592.                                         else
  3593.                                         {
  3594.                                                 Siemens[2]=~(Siemens[0]+Siemens[1])+1;
  3595.                                         }
  3596.                                         Siemens[4]=~(Siemens[0]+Siemens[1]+Siemens[2]+Siemens[3])+1;
  3597.                                        
  3598.                                         if(uSerialType == 2) //485
  3599.                                                 Send_UART_Two(Siemens,5);  //发送串口数据
  3600.                                         if(uSerialType == 1) //232
  3601.                                                 Send_UART_One(Siemens,5);  //发送串口数据
  3602.                         }
  3603. }
  3604. //光圈关
  3605. void  PtzIrisClose(unsigned char uProtocolType)
  3606. {   
  3607.                         if(uProtocolType == 1) //PELCO_D
  3608.                         {
  3609.                                         PELCO_D[2]=0x04;
  3610.                                         PELCO_D[3]=0x00;
  3611.                                         PELCO_D[4]=0x00;
  3612.                                         PELCO_D[5]=0x00;
  3613.                         }
  3614.                         if(uProtocolType == 2)//PELCO_P
  3615.                         {
  3616.                                         PELCO_P[2]=0x08;
  3617.                                         PELCO_P[3]=0x00;
  3618.                                         PELCO_P[4]=0x00;
  3619.                                         PELCO_P[5]=0x00;
  3620.                         }
  3621.                         if(uProtocolType == 3)  //KRE_302
  3622.                         {
  3623.                                         KRE_302[4]=0x07;
  3624.                         }
  3625.                         if(uProtocolType == 4)   //Philips
  3626.                         {
  3627.                                         Philips[3]=0x00;
  3628.                                         Philips[4]=0x00;
  3629.                                         Philips[5]=0x00;
  3630.                                         Philips[6]=0x00;
  3631.                         }
  3632.                         if(uProtocolType == 5)  //Samsung
  3633.                         {
  3634.                                         Samsung[4]=0x08;
  3635.                                         Samsung[5]=0x00;
  3636.                                         Samsung[6]=0x00;
  3637.                                         Samsung[7]=0x00;
  3638.                         }
  3639.                         if(uProtocolType == 6)  //ADR8060
  3640.                         {
  3641.                                         ADR8060[3]=0x60;
  3642.                         }
  3643.                         if(uProtocolType == 7)  //Dali
  3644.                         {
  3645.                                         Dali[3]=0x06;
  3646.                         }  
  3647.                         if(uProtocolType == 8)  //HIKVISION
  3648.                         {
  3649.                                         HIKVISION[2]=0x0E;
  3650.                                         HIKVISION[3]=0x00;
  3651.                                         HIKVISION[4]=0x00;
  3652.                         }
  3653.                         if(uProtocolType == 9) //Howell
  3654.                         {
  3655.                                         Howell[2]=0xB7;
  3656.                                         Howell[3]=0xF1;
  3657.                         }
  3658.                         if(uProtocolType == 10) // Siemens
  3659.                         {
  3660.                                         Siemens[1]=0x91;
  3661.                                         Siemens[3]=0x00;
  3662.                         }
  3663.                         ProtocolCalculation(uComSereialItem);
  3664. }

  3665. //光圈开
  3666. void  PtzIrisOpen(unsigned char uProtocolType)
  3667. {
  3668.                         if(uProtocolType == 1) //PELCO_D
  3669.                         {
  3670.                                         PELCO_D[2]=0x02;
  3671.                                         PELCO_D[3]=0x00;
  3672.                                         PELCO_D[4]=0x00;
  3673.                                         PELCO_D[5]=0x00;
  3674.                         }
  3675.                         if(uProtocolType == 2)//PELCO_P
  3676.                         {
  3677.                                         PELCO_P[2]=0x04;
  3678.                                         PELCO_P[3]=0x00;
  3679.                                         PELCO_P[4]=0x00;
  3680.                                         PELCO_P[5]=0x00;
  3681.                         }
  3682.                         if(uProtocolType == 3)  //KRE_302
  3683.                         {
  3684.                                         KRE_302[4]=0x06;
  3685.                         }
  3686.                         if(uProtocolType == 4)   //Philips
  3687.                         {
  3688.                                         Philips[3]=0x00;
  3689.                                         Philips[4]=0x00;
  3690.                                         Philips[5]=0x00;
  3691.                                         Philips[6]=0x00;
  3692.                         }
  3693.                         if(uProtocolType == 5)  //Samsung
  3694.                         {
  3695.                                         Samsung[4]=0x10;
  3696.                                         Samsung[5]=0x00;
  3697.                                         Samsung[6]=0x00;
  3698.                                         Samsung[7]=0x00;
  3699.                         }
  3700.                         if(uProtocolType == 6)  //ADR8060
  3701.                         {
  3702.                                         ADR8060[3]=0x80;
  3703.                         }
  3704.                         if(uProtocolType == 7)  //Dali
  3705.                         {
  3706.                                         Dali[3]=0x05;
  3707.                         }  
  3708.                         if(uProtocolType == 8)  //HIKVISION
  3709.                         {
  3710.                                         HIKVISION[2]=0x0F;
  3711.                                         HIKVISION[3]=0x00;
  3712.                                         HIKVISION[4]=0x00;
  3713.                         }
  3714.                         if(uProtocolType == 9) //Howell
  3715.                         {
  3716.                                         Howell[2]=0xB6;
  3717.                                         Howell[3]=0xF1;
  3718.                         }
  3719.                         if(uProtocolType == 10) // Siemens
  3720.                         {
  3721.                                         Siemens[1]=0x90;
  3722.                                         Siemens[3]=0x00;
  3723.                         }
  3724.                         ProtocolCalculation(uComSereialItem);
  3725. }

  3726. //焦距近
  3727. void  PtzFocusNear(unsigned char uProtocolType)
  3728. {
  3729.                         if(uProtocolType == 1) //PELCO_D
  3730.                         {
  3731.                                         PELCO_D[2]=0x01;
  3732.                                         PELCO_D[3]=0x00;
  3733.                                         PELCO_D[4]=0x00;
  3734.                                         PELCO_D[5]=0x00;
  3735.                         }
  3736.                         if(uProtocolType == 2)//PELCO_P
  3737.                         {
  3738.                                         PELCO_P[2]=0x02;
  3739.                                         PELCO_P[3]=0x00;
  3740.                                         PELCO_P[4]=0x00;
  3741.                                         PELCO_P[5]=0x00;
  3742.                         }
  3743.                         if(uProtocolType == 3)  //KRE_302
  3744.                         {
  3745.                                         KRE_302[4]=0x05;
  3746.                         }
  3747.                         if(uProtocolType == 4)   //Philips
  3748.                         {
  3749.                                         Philips[3]=0x00;
  3750.                                         Philips[4]=0x00;
  3751.                                         Philips[5]=0x00;
  3752.                                         Philips[6]=0x40;
  3753.                         }
  3754.                         if(uProtocolType == 5)  //Samsung
  3755.                         {
  3756.                                         Samsung[4]=0x02;
  3757.                                         Samsung[5]=0x00;
  3758.                                         Samsung[6]=0x00;
  3759.                                         Samsung[7]=0x00;
  3760.                         }
  3761.                         if(uProtocolType == 6)  //ADR8060
  3762.                         {
  3763.                                         ADR8060[3]=0x40;
  3764.                         }
  3765.                         if(uProtocolType == 7)  //Dali
  3766.                         {
  3767.                                         Dali[3]=0x09;
  3768.                         }  
  3769.                         if(uProtocolType == 8)  //HIKVISION
  3770.                         {
  3771.                                         HIKVISION[2]=0x10;
  3772.                                         HIKVISION[3]=0x00;
  3773.                                         HIKVISION[4]=0x00;
  3774.                         }
  3775.                         if(uProtocolType == 9) //Howell
  3776.                         {
  3777.                                         Howell[2]=0xB9;
  3778.                                         Howell[3]=0xF1;
  3779.                         }
  3780.                         if(uProtocolType == 10) // Siemens
  3781.                         {
  3782.                                         Siemens[1]=0x87;
  3783.                                         Siemens[3]=0x00;
  3784.                         }
  3785.                         ProtocolCalculation(uComSereialItem);
  3786. }

  3787. //焦距远
  3788. void  PtzFocusFar(unsigned char uProtocolType)
  3789. {
  3790.                         if(uProtocolType == 1) //PELCO_D
  3791.                         {
  3792.                           PELCO_D[2]=0x00;
  3793.                           PELCO_D[3]=0x80;
  3794.                           PELCO_D[4]=0x00;
  3795.                           PELCO_D[5]=0x00;
  3796.                         }
  3797.                         if(uProtocolType == 2)//PELCO_P
  3798.                         {
  3799.                           PELCO_P[2]=0x01;
  3800.                           PELCO_P[3]=0x00;
  3801.                           PELCO_P[4]=0x00;
  3802.                           PELCO_P[5]=0x00;
  3803.                         }
  3804.                         if(uProtocolType == 3)  //KRE_302
  3805.                         {
  3806.                                         KRE_302[4]=0x04;
  3807.                         }
  3808.                         if(uProtocolType == 4)   //Philips
  3809.                         {
  3810.                           Philips[3]=0x00;
  3811.                           Philips[4]=0x00;
  3812.                           Philips[5]=0x01;
  3813.                           Philips[6]=0x00;
  3814.                         }
  3815.                         if(uProtocolType == 5)  //Samsung
  3816.                         {
  3817.                           Samsung[4]=0x01;
  3818.                           Samsung[5]=0x00;
  3819.                           Samsung[6]=0x00;
  3820.                           Samsung[7]=0x00;
  3821.                         }
  3822.                         if(uProtocolType == 6)  //ADR8060
  3823.                         {
  3824.                                         ADR8060[3]=0x30;
  3825.                         }
  3826.                         if(uProtocolType == 7)  //Dali
  3827.                         {
  3828.                                         Dali[3]=0x0A;
  3829.                         }  
  3830.                         if(uProtocolType == 8)  //HIKVISION
  3831.                         {
  3832.                                         HIKVISION[2]=0x11;
  3833.                                         HIKVISION[3]=0x00;
  3834.                                         HIKVISION[4]=0x00;
  3835.                         }
  3836.                         if(uProtocolType == 9) //Howell
  3837.                         {
  3838.                                         Howell[2]=0xB8;
  3839.                                         Howell[3]=0xF1;
  3840.                         }
  3841.                         if(uProtocolType == 10) // Siemens
  3842.                         {
  3843.                                         Siemens[1]=0x88;
  3844.                                         Siemens[3]=0x00;
  3845.                         }
  3846.                         ProtocolCalculation(uComSereialItem);
  3847. }

  3848. //放大  变倍远
  3849. void  PtzZoomWide(unsigned char uProtocolType)
  3850. {
  3851.                         if(uProtocolType == 1) //PELCO_D
  3852.                         {
  3853.                                         PELCO_D[2]=0x00;
  3854.                                         PELCO_D[3]=0x20;
  3855.                                         PELCO_D[4]=0x00;
  3856.                                         PELCO_D[5]=0x00;
  3857.                         }
  3858.                         if(uProtocolType == 2)//PELCO_P
  3859.                         {
  3860.                                         PELCO_P[2]=0x00;
  3861.                                         PELCO_P[3]=0x20;
  3862.                                         PELCO_P[4]=0x00;
  3863.                                         PELCO_P[5]=0x00;
  3864.                         }
  3865.                         if(uProtocolType == 3)  //KRE_302
  3866.                         {
  3867.                                         KRE_302[4]=0x09;
  3868.                         }
  3869.                         if(uProtocolType == 4)   //Philips
  3870.                         {
  3871.                                         Philips[3]=0x00;
  3872.                                         Philips[4]=0x00;
  3873.                                         Philips[5]=0x00;
  3874.                                         Philips[6]=0x10;
  3875.                         }
  3876.                         if(uProtocolType == 5)  //Samsung
  3877.                         {
  3878.                                         Samsung[4]=0x20;
  3879.                                         Samsung[5]=0x00;
  3880.                                         Samsung[6]=0x00;
  3881.                                         Samsung[7]=0x00;
  3882.                         }
  3883.                         if(uProtocolType == 6)  //ADR8060
  3884.                         {
  3885.                                         ADR8060[3]=0x10;
  3886.                         }
  3887.                         if(uProtocolType == 7)  //Dali
  3888.                         {
  3889.                                         Dali[3]=0x07;
  3890.                         }  
  3891.                         if(uProtocolType == 8)  //HIKVISION
  3892.                         {
  3893.                                         HIKVISION[2]=0x13;
  3894.                                         HIKVISION[3]=0x00;
  3895.                                         HIKVISION[4]=0x00;
  3896.                         }
  3897.                         if(uProtocolType == 9) //Howell
  3898.                         {
  3899.                                         Howell[2]=0xBA;
  3900.                                         Howell[3]=0xF1;
  3901.                         }
  3902.                         if(uProtocolType == 10) // Siemens
  3903.                         {
  3904.                                         Siemens[1]=0x8A;
  3905.                                         Siemens[3]=0x00;
  3906.                         }
  3907.                         ProtocolCalculation(uComSereialItem);
  3908. }
  3909. //缩小 变倍近
  3910. void  PtzZoomTele(unsigned char uProtocolType)
  3911. {
  3912.                         if(uProtocolType == 1) //PELCO_D
  3913.                         {
  3914.                                         PELCO_D[2]=0x00;
  3915.                                         PELCO_D[3]=0x40;
  3916.                                         PELCO_D[4]=0x00;
  3917.                                         PELCO_D[5]=0x00;
  3918.                         }
  3919.                         if(uProtocolType == 2)//PELCO_P
  3920.                         {
  3921.                                         PELCO_P[2]=0x00;
  3922.                                         PELCO_P[3]=0x40;
  3923.                                         PELCO_P[4]=0x00;
  3924.                                         PELCO_P[5]=0x00;
  3925.                         }
  3926.                         if(uProtocolType == 3)  //KRE_302
  3927.                         {
  3928.                                         KRE_302[4]=0x08;
  3929.                         }
  3930.                         if(uProtocolType == 4)   //Philips
  3931.                         {
  3932.                                         Philips[3]=0x00;
  3933.                                         Philips[4]=0x00;
  3934.                                         Philips[5]=0x00;
  3935.                                         Philips[6]=0x20;
  3936.                         }
  3937.                         if(uProtocolType == 5)  //Samsung
  3938.                         {
  3939.                                         Samsung[4]=0x40;
  3940.                                         Samsung[5]=0x00;
  3941.                                         Samsung[6]=0x00;
  3942.                                         Samsung[7]=0x00;
  3943.                         }
  3944.                         if(uProtocolType == 6)  //ADR8060
  3945.                         {
  3946.                                         ADR8060[3]=0x20;
  3947.                         }
  3948.                         if(uProtocolType == 7)  //Dali
  3949.                         {
  3950.                                         Dali[3]=0x08;
  3951.                         }  
  3952.                         if(uProtocolType == 8)  //HIKVISION
  3953.                         {
  3954.                                         HIKVISION[2]=0x12;
  3955.                                         HIKVISION[3]=0x00;
  3956.                                         HIKVISION[4]=0x00;
  3957.                         }
  3958.                         if(uProtocolType == 9) //Howell
  3959.                         {
  3960.                                         Howell[2]=0xBB;
  3961.                                         Howell[3]=0xF1;
  3962.                         }
  3963.                         if(uProtocolType == 10) // Siemens
  3964.                         {
  3965.                                         Siemens[1]=0x8B;
  3966.                                         Siemens[3]=0x00;
  3967.                         }
  3968.                         ProtocolCalculation(uComSereialItem);
  3969. }

  3970. //云台向下
  3971. void  PtzDown(unsigned char uProtocolType)
  3972. {        
  3973.                         if(uProtocolType == 1) //PELCO_D
  3974.                         {
  3975.                                         PELCO_D[2]=0x00;
  3976.                                         PELCO_D[3]=0x10;
  3977.                                         PELCO_D[4]=0x00;
  3978.                                         PELCO_D[5]=uRunSpeedData;
  3979.                         }
  3980.                         if(uProtocolType == 2)//PELCO_P
  3981.                         {
  3982.                                         PELCO_P[2]=0x00;
  3983.                                         PELCO_P[3]=0x10;
  3984.                                         PELCO_P[4]=0x00;
  3985.                                         PELCO_P[5]=uRunSpeedData;
  3986.                         }
  3987.                         if(uProtocolType == 3)  //KRE_302
  3988.                         {
  3989.                                         KRE_302[4]=0x01;
  3990.                         }
  3991.                         if(uProtocolType == 4)   //Philips
  3992.                         {
  3993.                                         Philips[3]=0x0E;
  3994.                                         Philips[4]=0x30;
  3995.                                         Philips[5]=0x00;
  3996.                                         Philips[6]=0x04;
  3997.                         }
  3998.                         if(uProtocolType == 5)  //Samsung
  3999.                         {
  4000.                                         Samsung[4]=0x00;
  4001.                                         Samsung[5]=0x08;
  4002.                                         Samsung[6]=0x00;
  4003.                                         Samsung[7]=uRunSpeedData;
  4004.                         }
  4005.                         if(uProtocolType == 6)  //ADR8060
  4006.                         {
  4007.                                         ADR8060[3]=0x02;
  4008.                         }
  4009.                         if(uProtocolType == 7)  //Dali
  4010.                         {
  4011.                                         Dali[3]=0x02;
  4012.                         }  
  4013.                         if(uProtocolType == 8)  //HIKVISION
  4014.                         {
  4015.                                         HIKVISION[2]=0x07;
  4016.                                         HIKVISION[3]=0x1F;
  4017.                                         HIKVISION[4]=0x00;
  4018.                         }
  4019.                         if(uProtocolType == 9) //Howell
  4020.                         {
  4021.                                         Howell[2]=0xB1;
  4022.                                         Howell[3]=0x10;
  4023.                         }
  4024.                         if(uProtocolType == 10) // Siemens
  4025.                         {
  4026.                                         Siemens[1]=0xC0;
  4027.                                         Siemens[3]=0x32;
  4028.                         }        
  4029.                         ProtocolCalculation(uComSereialItem);
  4030. }
  4031. //AUTO 云台向下
  4032. void  AutoPtzDown(unsigned char uProtocolType)
  4033. {        
  4034.                         if(uProtocolType == 1) //PELCO_D
  4035.                         {
  4036.                                         PELCO_D[2]=0x00;
  4037.                                         PELCO_D[3]=0x10;
  4038.                                         PELCO_D[4]=0x00;
  4039.                                         PELCO_D[5]=uRunSpeedData;
  4040.                         }
  4041.                         if(uProtocolType == 2)//PELCO_P
  4042.                         {
  4043.                                         PELCO_P[2]=0x00;
  4044.                                         PELCO_P[3]=0x10;
  4045.                                         PELCO_P[4]=0x00;
  4046.                                         PELCO_P[5]=uRunSpeedData;
  4047.                         }
  4048.                         if(uProtocolType == 3)  //KRE_302
  4049.                         {
  4050.                                         KRE_302[4]=0x01;
  4051.                         }
  4052.                         if(uProtocolType == 4)   //Philips
  4053.                         {
  4054.                                         Philips[3]=0x0E;
  4055.                                         Philips[4]=0x30;
  4056.                                         Philips[5]=0x00;
  4057.                                         Philips[6]=0x04;
  4058.                         }
  4059.                         if(uProtocolType == 5)  //Samsung
  4060.                         {
  4061.                                         Samsung[4]=0x00;
  4062.                                         Samsung[5]=0x08;
  4063.                                         Samsung[6]=0x00;
  4064.                                         Samsung[7]=uRunSpeedData;
  4065.                         }
  4066.                         if(uProtocolType == 6)  //ADR8060
  4067.                         {
  4068.                                         ADR8060[3]=0x02;
  4069.                         }
  4070.                         if(uProtocolType == 7)  //Dali
  4071.                         {
  4072.                                         Dali[3]=0x02;
  4073.                         }  
  4074.                         if(uProtocolType == 8)  //HIKVISION
  4075.                         {
  4076.                                         HIKVISION[2]=0x07;
  4077.                                         HIKVISION[3]=0x1F;
  4078.                                         HIKVISION[4]=0x00;
  4079.                         }
  4080.                         if(uProtocolType == 9) //Howell
  4081.                         {
  4082.                                         Howell[2]=0xB1;
  4083.                                         Howell[3]=0x10;
  4084.                         }
  4085.                         if(uProtocolType == 10) // Siemens
  4086.                         {
  4087.                                         Siemens[1]=0xC0;
  4088.                                         Siemens[3]=0x32;
  4089.                         }        
  4090.                         AutoProtocolCalculation(uComSereialItem);
  4091. }
  4092. //云台向上
  4093. void  PtzUp(unsigned char uProtocolType)
  4094. {
  4095.                         if(uProtocolType == 1) //PELCO_D
  4096.                         {
  4097.                           PELCO_D[2]=0x00;
  4098.                           PELCO_D[3]=0x08;
  4099.                           PELCO_D[4]=0x00;
  4100.                           PELCO_D[5]=uRunSpeedData;
  4101.                         }
  4102.                         if(uProtocolType == 2)//PELCO_P
  4103.                         {
  4104.                           PELCO_P[2]=0x00;
  4105.                           PELCO_P[3]=0x08;
  4106.                           PELCO_P[4]=0x00;
  4107.                           PELCO_P[5]=uRunSpeedData;
  4108.                         }
  4109.                         if(uProtocolType == 3)  //KRE_302
  4110.                         {
  4111.                                         KRE_302[4]=0x00;
  4112.                         }
  4113.                         if(uProtocolType == 4)   //Philips
  4114.                         {
  4115.                           Philips[3]=0x0E;
  4116.                           Philips[4]=0x30;
  4117.                           Philips[5]=0x00;
  4118.                           Philips[6]=0x08;
  4119.                         }
  4120.                         if(uProtocolType == 5)  //Samsung
  4121.                         {
  4122.                         Samsung[4]=0x00;
  4123.                         Samsung[5]=0x04;
  4124.                         Samsung[6]=0x00;
  4125.                         Samsung[7]=uRunSpeedData;
  4126.                         }
  4127.                         if(uProtocolType == 6)  //ADR8060
  4128.                         {
  4129.                                         ADR8060[3]=0x01;
  4130.                         }
  4131.                         if(uProtocolType == 7)  //Dali
  4132.                         {
  4133.                                         Dali[3]=0x01;
  4134.                         }  
  4135.                         if(uProtocolType == 8)  //HIKVISION
  4136.                         {
  4137.                           HIKVISION[2]=0x06;
  4138.                           HIKVISION[3]=0x1F;
  4139.                           HIKVISION[4]=0x00;
  4140.                         }
  4141.                         if(uProtocolType == 9) //Howell
  4142.                         {
  4143.                                         Howell[2]=0xB0;
  4144.                                         Howell[3]=0x10;
  4145.                         }
  4146.                         if(uProtocolType == 10) // Siemens
  4147.                         {
  4148.                                         Siemens[1]=0xC0;
  4149.                                         Siemens[3]=0x32;
  4150.                         }
  4151.                         ProtocolCalculation(uComSereialItem);
  4152. }
  4153. //自动云台向上
  4154. void  AutoPtzUp(unsigned char uProtocolType)
  4155. {
  4156.                         if(uProtocolType == 1) //PELCO_D
  4157.                         {
  4158.                    PELCO_D[2]=0x00;
  4159.                    PELCO_D[3]=0x08;
  4160.                    PELCO_D[4]=0x00;
  4161.                    PELCO_D[5]=0x30;
  4162.                         }
  4163.                         if(uProtocolType == 2)//PELCO_P
  4164.                         {
  4165.                    PELCO_P[2]=0x00;
  4166.                    PELCO_P[3]=0x08;
  4167.                    PELCO_P[4]=0x00;
  4168.                    PELCO_P[5]=0x30;
  4169.                         }
  4170.                         if(uProtocolType == 3)  //KRE_302
  4171.                         {
  4172.                                         KRE_302[4]=0x00;
  4173.                         }
  4174.                         if(uProtocolType == 4)   //Philips
  4175.                         {
  4176.                    Philips[3]=0x0E;
  4177.                    Philips[4]=0x30;
  4178.                    Philips[5]=0x00;
  4179.                    Philips[6]=0x08;
  4180.                         }
  4181.                         if(uProtocolType == 5)  //Samsung
  4182.                         {
  4183.                         Samsung[4]=0x00;
  4184.                         Samsung[5]=0x04;
  4185.                         Samsung[6]=0x00;
  4186.                         Samsung[7]=uRunSpeedData;
  4187.                         }
  4188.                         if(uProtocolType == 6)  //ADR8060
  4189.                         {
  4190.                                         ADR8060[3]=0x01;
  4191.                         }
  4192.                         if(uProtocolType == 7)  //Dali
  4193.                         {
  4194.                                         Dali[3]=0x01;
  4195.                         }  
  4196.                         if(uProtocolType == 8)  //HIKVISION
  4197.                         {
  4198.                    HIKVISION[2]=0x06;
  4199.                    HIKVISION[3]=0x1F;
  4200.                    HIKVISION[4]=0x00;
  4201.                         }
  4202.                         if(uProtocolType == 9) //Howell
  4203.                         {
  4204.                                         Howell[2]=0xB0;
  4205.                                         Howell[3]=0x10;
  4206.                         }
  4207.                         if(uProtocolType == 10) // Siemens
  4208.                         {
  4209.                                         Siemens[1]=0xC0;
  4210.                                         Siemens[3]=0x32;
  4211.                         }
  4212.                         AutoProtocolCalculation(uComSereialItem);
  4213. }
  4214. //云台向左
  4215. void  PtzLeft(unsigned char uProtocolType)
  4216. {
  4217.                         if(uProtocolType == 1) //PELCO_D
  4218.                         {
  4219.                    PELCO_D[2]=0x00;
  4220.                    PELCO_D[3]=0x04;
  4221.                    PELCO_D[4]=uRunSpeedData;
  4222.                    PELCO_D[5]=0x00;
  4223.                         }
  4224.                         if(uProtocolType == 2)//PELCO_P
  4225.                         {
  4226.                    PELCO_P[2]=0x00;
  4227.                    PELCO_P[3]=0x04;
  4228.                    PELCO_P[4]=uRunSpeedData;
  4229.                    PELCO_P[5]=0x00;
  4230.                         }
  4231.                         if(uProtocolType == 3)  //KRE_302
  4232.                         {
  4233.                                         KRE_302[4]=0x02;
  4234.                         }
  4235.                         if(uProtocolType == 4)   //Philips
  4236.                 {
  4237.                    Philips[3]=0x0E;
  4238.                    Philips[4]=0x30;
  4239.                    Philips[5]=0x00;
  4240.                    Philips[6]=0x02;
  4241.                         }
  4242.                         if(uProtocolType == 5)  //Samsung
  4243.                         {
  4244.                         Samsung[4]=0x00;
  4245.                         Samsung[5]=0x01;
  4246.                         Samsung[6]=uRunSpeedData;
  4247.                         Samsung[7]=0x00;
  4248.                         }
  4249.                         if(uProtocolType == 6)  //ADR8060
  4250.                         {
  4251.                                         ADR8060[3]=0x04;
  4252.                         }
  4253.                         if(uProtocolType == 7)  //Dali
  4254.                         {
  4255.                                         Dali[3]=0x03;
  4256.                         }  
  4257.                         if(uProtocolType == 8)  //HIKVISION
  4258.                         {
  4259.                                         HIKVISION[2]=0x09;
  4260.                                         HIKVISION[3]=0x00;
  4261.                                         HIKVISION[4]=0x1F;
  4262.                         }
  4263.                         if(uProtocolType == 9) //Howell
  4264.                         {
  4265.                                         Howell[2]=0xAE;
  4266.                                         Howell[3]=0x10;
  4267.                         }
  4268.                         if(uProtocolType == 10) // Siemens
  4269.                         {
  4270.                                         Siemens[1]=0xC0;
  4271.                                         Siemens[3]=0x32;
  4272.                         }
  4273.                         ProtocolCalculation(uComSereialItem);
  4274. }

  4275. //云台向右
  4276. void  PtzRight(unsigned char uProtocolType)
  4277. {
  4278.                         if(uProtocolType == 1) //PELCO_D
  4279.                         {
  4280.                            PELCO_D[2]=0x00;
  4281.                            PELCO_D[3]=0x02;
  4282.                            PELCO_D[4]=uRunSpeedData;
  4283.                            PELCO_D[5]=0x00;
  4284.                         }
  4285.                         if(uProtocolType == 2)//PELCO_P
  4286.                         {
  4287.                            PELCO_P[2]=0x00;
  4288.                            PELCO_P[3]=0x02;
  4289.                            PELCO_P[4]=uRunSpeedData;
  4290.                            PELCO_P[5]=0x00;
  4291.                         }
  4292.                         if(uProtocolType == 3)  //KRE_302
  4293.                         {
  4294.                                                 KRE_302[4]=0x03;
  4295.                         }
  4296.                         if(uProtocolType == 4)   //Philips
  4297.                         {
  4298.                            Philips[3]=0x0E;
  4299.                            Philips[4]=0x30;
  4300.                            Philips[5]=0x00;
  4301.                            Philips[6]=0x01;
  4302.                         }
  4303.                         if(uProtocolType == 5)  //Samsung
  4304.                         {
  4305.                         Samsung[4]=0x00;
  4306.                         Samsung[5]=0x02;
  4307.                         Samsung[6]=uRunSpeedData;
  4308.                         Samsung[7]=0x00;
  4309.                         }
  4310.                         if(uProtocolType == 6)  //ADR8060
  4311.                         {
  4312.                                                 ADR8060[3]=0x08;
  4313.                         }
  4314.                         if(uProtocolType == 7)  //Dali
  4315.                         {
  4316.                                         Dali[3]=0x04;
  4317.                         }  
  4318.                         if(uProtocolType == 8)  //HIKVISION
  4319. ……………………

  4320. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
工程宝资料.rar (91.57 KB, 下载次数: 73)


评分

参与人数 2黑币 +80 收起 理由
cheng95 + 30
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:378546 发表于 2018-7-27 11:45 | 只看该作者
附上程序,刚才忘记了

01 程序.rar

191.02 KB, 下载次数: 37, 下载积分: 黑币 -5

附上程序

回复

使用道具 举报

板凳
ID:33544 发表于 2018-9-8 10:08 | 只看该作者
下载学习一下
回复

使用道具 举报

地板
ID:333807 发表于 2019-3-12 17:39 | 只看该作者
下载学习一下,感谢分享!!!
回复

使用道具 举报

5#
ID:489452 发表于 2019-3-12 19:36 | 只看该作者
谢谢,拿来看看
回复

使用道具 举报

6#
ID:526241 发表于 2019-5-3 00:38 | 只看该作者
楼主好厉害,新手来学习一下!谢谢楼主无私分享
回复

使用道具 举报

7#
ID:199471 发表于 2020-6-15 20:44 | 只看该作者
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表