yidong.fan 7 місяців тому
батько
коміт
c5b3217282

+ 3 - 3
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Makefile-genesis.properties

@@ -1,10 +1,10 @@
 #
-#Mon Aug 04 13:25:12 CST 2025
+#Tue Sep 23 18:15:02 CST 2025
 default.languagetoolchain.version=2.10
 default.Pack.dfplocation=
 conf.ids=default
-default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc16\\v2.10\\bin
-host.id=1lj1-c7wd-qs
+default.languagetoolchain.dir=D\:\\Program Files\\Microchip\\xc16\\v2.10\\bin
+host.id=1707-dsfu-bg
 configurations-xml=ed15cc36d40c270060cb3e593bb16a1c
 default.com-microchip-mplab-mdbcore-PICKit3Tool-PICkit3DbgToolManager.md5=50072f33d27b72924000ca2dca4b7622
 com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=e62346c0c0ecee2637e613b49cb7b7fa

+ 12 - 12
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Makefile-local-default.mk

@@ -15,22 +15,22 @@
 # $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...  
 #
 SHELL=cmd.exe
-PATH_TO_IDE_BIN=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/
+PATH_TO_IDE_BIN=D:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/
 # Adding MPLAB X bin directory to path.
-PATH:=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
+PATH:=D:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
 # Path to java used to run MPLAB X when this makefile was created
-MP_JAVA_PATH="C:\Program Files\Microchip\MPLABX\v6.15\sys\java\zulu8.64.0.19-ca-fx-jre8.0.345-win_x64/bin/"
+MP_JAVA_PATH="D:\Program Files\Microchip\MPLABX\v6.15\sys\java\zulu8.64.0.19-ca-fx-jre8.0.345-win_x64/bin/"
 OS_CURRENT="$(shell uname -s)"
-MP_CC="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-gcc.exe"
+MP_CC="D:\Program Files\Microchip\xc16\v2.10\bin\xc16-gcc.exe"
 # MP_CPPC is not defined
 # MP_BC is not defined
-MP_AS="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-as.exe"
-MP_LD="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-ld.exe"
-MP_AR="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-ar.exe"
-DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
-MP_CC_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
+MP_AS="D:\Program Files\Microchip\xc16\v2.10\bin\xc16-as.exe"
+MP_LD="D:\Program Files\Microchip\xc16\v2.10\bin\xc16-ld.exe"
+MP_AR="D:\Program Files\Microchip\xc16\v2.10\bin\xc16-ar.exe"
+DEP_GEN=${MP_JAVA_PATH}java -jar "D:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
+MP_CC_DIR="D:\Program Files\Microchip\xc16\v2.10\bin"
 # MP_CPPC_DIR is not defined
 # MP_BC_DIR is not defined
-MP_AS_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
-MP_LD_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
-MP_AR_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
+MP_AS_DIR="D:\Program Files\Microchip\xc16\v2.10\bin"
+MP_LD_DIR="D:\Program Files\Microchip\xc16\v2.10\bin"
+MP_AR_DIR="D:\Program Files\Microchip\xc16\v2.10\bin"

+ 1 - 1
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/private/configurations.xml

@@ -5,7 +5,7 @@
   <confs>
     <conf name="default" type="2">
       <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>900A:=&lt;rev>0002:=&lt;man>Microchip Technology Inc.:=&lt;prod>PICkit 3:=&lt;sn>BUR182473687:=&lt;drv>x:=&lt;xpt>h:=end</platformToolSN>
-      <languageToolchainDir>C:\Program Files\Microchip\xc16\v2.10\bin</languageToolchainDir>
+      <languageToolchainDir>D:\Program Files\Microchip\xc16\v2.10\bin</languageToolchainDir>
       <mdbdebugger version="1">
         <placeholder1>place holder 1</placeholder1>
         <placeholder2>place holder 2</placeholder2>

+ 1 - 4
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/private/private.xml

@@ -77,10 +77,7 @@
         </file>
     </editor-bookmarks>
     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
-        <group>
-            <file>file:/E:/30.%20BTD24018-WZYXPOCT/01.Code/current/WZYXHT_V1.02412310001.X/command.c</file>
-            <file>file:/E:/30.%20BTD24018-WZYXPOCT/01.Code/current/WZYXHT_V1.02412310001.X/Instrument_EEPROM_Param.c</file>
-        </group>
         <group name="source"/>
+        <group/>
     </open-files>
 </project-private>

+ 0 - 1
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/private/private.xml

@@ -14,7 +14,6 @@
             <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.c</file>
             <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/myprintf.c</file>
             <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/PIN.c</file>
-            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/main.c</file>
             <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Interrupt.c</file>
             <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/ABIS_User.c</file>
         </group>

+ 12 - 9
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Pin.c

@@ -30,18 +30,21 @@ void Pin_Init(){
 	TRISBbits.TRISB7 = 0;
 	TRISBbits.TRISB12 = 1;
 	
-//	RPINR18bits.U1RXR = 17;//上电默认PC使用
-	RPINR18bits.U1RXR = 48; //上电默认屏幕使用    
+//	RPINR18bits.U1RXR = 17;//上电默认PC使用   	
+//    _RP10R = 3;  //上电默认PC使用 
+	RPINR18bits.U1RXR = 48; //上电默认屏幕使用  
+    _RP1R = 3; //上电默认屏幕使用 
+    
 	RPINR19bits.U2RXR= 43;
 	RPINR17bits.U3RXR = 29;
+	/*启用串口4,双串口控制*/
 //	RPINR27bits.U4RXR = 48;
-    
+//    _RP1R = 24;
+	RPINR27bits.U4RXR = 17;
+    _RP10R = 24;
 	
-//    _RP10R = 3;  //上电默认PC使用
-    _RP1R = 3; //上电默认屏幕使用    
 	_RP5R = 5;
 	_RP14R = 22 ;
-//	_RP1R= 24;
     
 
 	TRISFbits.TRISF13 = 1;
@@ -52,10 +55,10 @@ void Pin_Init(){
 	
 }
 
-void SetIO(unsigned char data,unsigned char state){
+void SetIO(unsigned int uc_CH,unsigned char state){
     
- switch(data){
-	 case 1 : STU = data;break;    
+ switch(uc_CH){
+	 case 1 : STU = state;break;    
         default:
             break;
  

+ 3 - 0
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Pin.h

@@ -19,5 +19,8 @@ extern "C" {
 }
 #endif
 void Pin_Init();
+unsigned int Get_IO(unsigned char uc_CH);
+void SetIO(unsigned int uc_CH,unsigned char state);
+
 #endif	/* PIN_H */
 

+ 3182 - 2823
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Uart.c

@@ -1,2881 +1,3240 @@
-#define  __UART_DEF
-#include"User.h"
+#define __UART_DEF
+#include "User.h"
 
 /*******************************************************************************
  * 函数名称:Check
  *******************************************************************************/
-unsigned int Check(unsigned char *p,unsigned char num)
-{
-	unsigned char i=0;
-    unsigned int uiCheckSum=0;
-	for(i=0;i<num;i++){
-		uiCheckSum += *p;
-		p++;
-	}
-    return uiCheckSum;
+#define OUTTIME2S 200
+#define OUTTIME60S 6000
+unsigned char g_ucTX_DMA[MAX_UART_BUFFER_SIZE] __attribute__((eds));
+
+uint32_t   uart1_header = 0;
+uint32_t   uart1_last = 0;
+uint32_t   uart4_header = 0;
+uint32_t   uart4_last = 0;
+uint32_t   uart1_recOK = 0;
+
+
+extern unsigned int ms10_conter;
+unsigned int Check(unsigned char *p, unsigned char num) {
+  unsigned char i = 0;
+  unsigned int uiCheckSum = 0;
+  for (i = 0; i < num; i++) {
+    uiCheckSum += *p;
+    p++;
+  }
+  return uiCheckSum;
 }
 
-void InitUart1(void){	  
-    U1MODEbits.STSEL = 0;   
-    U1MODEbits.PDSEL = 0;   
-    U1MODEbits.BRGH = 0;    
-    U1MODEbits.ABAUD = 0;   
-    U1MODEbits.LPBACK = 0;  
-
-    //    U1BRG = 31;     
-//    U1BRG = 259;           
-    U1BRG =0x67;           
-    
-    U1STAbits.UTXISEL0 = 1;
-    U1STAbits.UTXISEL1 = 0;
-    U1STAbits.URXISEL = 0;
-
-    IEC0bits.U1TXIE = 0;
-    IEC0bits.U1RXIE = 1;
-    U1MODEbits.UARTEN = 1;
-    U1STAbits.UTXEN = 1;
-    IPC2bits.U1RXIP = 7;
-    IPC3bits.U1TXIP = 7;    
-   
+void InitUart1(void) {
+  U1MODEbits.STSEL = 0;
+  U1MODEbits.PDSEL = 0;
+  U1MODEbits.BRGH = 0;
+  U1MODEbits.ABAUD = 0;
+  U1MODEbits.LPBACK = 0;
+
+  //    U1BRG = 31;
+  //    U1BRG = 259;
+  U1BRG = 0x67;
+
+  U1STAbits.UTXISEL1 = 0;
+  U1STAbits.UTXISEL0 = 1;
+  U1STAbits.URXISEL = 0;
+
+  IEC0bits.U1TXIE = 0;
+  IEC0bits.U1RXIE = 1;
+  U1MODEbits.UARTEN = 1;
+  U1STAbits.UTXEN = 1;
+  IPC2bits.U1RXIP = 7;
+  IPC3bits.U1TXIP = 7;
+
+
+
+  _U1TXIF = 0; // Clear UART TX IF to prevent erroneous DMA operation
+  // Configure DMA channel
+  DMACH5 = 0;
+  DMACH5bits.SAMODE = 1; // Source Address incremented after operation
+  DMACH5bits.DAMODE = 0; // Destination Address unchanged after operation
+  DMACH5bits.TRMODE = 0; // One Shot Mode
+  DMACH5bits.SIZE = 1;   // Transfer size of 1 byte
+
+  DMAINT5 = 0;
+  DMAINT5bits.CHSEL = 68; // DMA Trigger is U1 TX Interrupt
+
+  DMADST5 = (uint16_t)&U1TXREG;
+
+  // Set up interrupts and interrupt priorities as desired
+  _DMA5IF = 0;
+  _DMA5IE = 0;
+  _DMA5IP = 3;
+
+  _U1RXIF = 0;
+  _U1RXIE = 1;
+  _U1RXIP = 3;
+
+
+  
 }
-void InitUart2(void){
-	
-	
-	U2MODEbits.STSEL=0;
-	U2MODEbits.PDSEL=0;
-	U2MODEbits.BRGH=0;
-	U2MODEbits.ABAUD=0;
-	U2MODEbits.LPBACK=0;
-	
-	U2BRG = 0x67;
-	
-	U2STAbits.UTXISEL1=0;
-	U2STAbits.UTXISEL0=1;
-	U2STAbits.URXISEL=1;
-	
-    IEC1bits.U2TXIE = 0;
-    IEC1bits.U2RXIE = 1;    
-	U2MODEbits.UARTEN=1;
-	U2STAbits.UTXEN=1;
-    IPC7bits.U2RXIP = 6;
-    IPC7bits.U2TXIP = 6;      
-    
+void InitUart2(void) {
+
+  U2MODEbits.STSEL = 0;
+  U2MODEbits.PDSEL = 0;
+  U2MODEbits.BRGH = 0;
+  U2MODEbits.ABAUD = 0;
+  U2MODEbits.LPBACK = 0;
+
+  U2BRG = 0x67;
+
+  U2STAbits.UTXISEL1 = 0;
+  U2STAbits.UTXISEL0 = 1;
+  U2STAbits.URXISEL = 1;
+
+  IEC1bits.U2TXIE = 0;
+  IEC1bits.U2RXIE = 1;
+  U2MODEbits.UARTEN = 1;
+  U2STAbits.UTXEN = 1;
+  IPC7bits.U2RXIP = 6;
+  IPC7bits.U2TXIP = 6;
 }
-void InitUart3(void){
-	
-	
-	U3MODEbits.STSEL=0;
-	U3MODEbits.PDSEL=0;
-	U3MODEbits.BRGH=0;
-	U3MODEbits.ABAUD=0;
-	U3MODEbits.LPBACK=0;
-	
-	U3BRG = 0x67;
-	
-	U3STAbits.UTXISEL1=0;
-	U3STAbits.UTXISEL0=1;
-	U3STAbits.URXISEL=1;
-	
-    IEC5bits.U3TXIE = 0;
-    IEC5bits.U3RXIE = 1;    
-	U3MODEbits.UARTEN=1;
-	U3STAbits.UTXEN=1;
-    IPC20bits.U3RXIP = 6;
-    IPC20bits.U3TXIP = 6;      
-    
+void InitUart3(void) {
+
+  U3MODEbits.STSEL = 0;
+  U3MODEbits.PDSEL = 0;
+  U3MODEbits.BRGH = 0;
+  U3MODEbits.ABAUD = 0;
+  U3MODEbits.LPBACK = 0;
+
+  U3BRG = 0x67;
+
+  U3STAbits.UTXISEL1 = 0;
+  U3STAbits.UTXISEL0 = 1;
+  U3STAbits.URXISEL = 0;
+
+  IEC5bits.U3TXIE = 0;
+  IEC5bits.U3RXIE = 1;
+  U3MODEbits.UARTEN = 1;
+  U3STAbits.UTXEN = 1;
+  IPC20bits.U3RXIP = 6;
+  IPC20bits.U3TXIP = 6;
 }
-void InitUart4(void){
-	
-	
-	U4MODEbits.STSEL=0;
-	U4MODEbits.PDSEL=0;
-	U4MODEbits.BRGH=0;
-	U4MODEbits.ABAUD=0;
-	U4MODEbits.LPBACK=0;
-	
-	U4BRG = 0x67;
-	
-	U4STAbits.UTXISEL1=0;
-	U4STAbits.UTXISEL0=1;
-	U4STAbits.URXISEL=1;
-	
-    IEC5bits.U4TXIE = 0;
-    IEC5bits.U4RXIE = 1;    
-	U4MODEbits.UARTEN=1;
-	U4STAbits.UTXEN=1;
-    IPC22bits.U4RXIP = 6;
-    IPC22bits.U4TXIP = 6;      
-    
+void InitUart4(void) {
+
+  U4MODEbits.STSEL = 0;
+  U4MODEbits.PDSEL = 0;
+  U4MODEbits.BRGH = 0;
+  U4MODEbits.ABAUD = 0;
+  U4MODEbits.LPBACK = 0;
+
+  U4BRG = 0x67;
+
+  U4STAbits.UTXISEL1 = 0;
+  U4STAbits.UTXISEL0 = 1;
+  U4STAbits.URXISEL = 1;
+
+  IEC5bits.U4TXIE = 0;
+  IEC5bits.U4RXIE = 1;
+  U4MODEbits.UARTEN = 1;
+  U4STAbits.UTXEN = 1;
+  IPC22bits.U4RXIP = 6;
+  IPC22bits.U4TXIP = 6;
+
+  
+  _U4TXIF = 0; // Clear UART TX IF to prevent erroneous DMA operation
+  // Configure DMA channel
+  DMACH4 = 0;
+  DMACH4bits.SAMODE = 1; // Source Address incremented after operation
+  DMACH4bits.DAMODE = 0; // Destination Address unchanged after operation
+  DMACH4bits.TRMODE = 0; // One Shot Mode
+  DMACH4bits.SIZE = 1;   // Transfer size of 1 byte
+
+  DMAINT4 = 0;
+  DMAINT4bits.CHSEL = 59; // DMA Trigger is U4 TX Interrupt
+
+  DMADST4 = (uint16_t)&U4TXREG;
+
+  // Set up interrupts and interrupt priorities as desired
+  _DMA4IF = 0;
+  _DMA4IE = 0;
+  _DMA4IP = 3;
+
+  _U4RXIF = 0;
+  _U4RXIE = 1;
+  _U4RXIP = 3;
+
 }
-void InitUart5(void){
-	
-	
-	U5MODEbits.STSEL=0;
-	U5MODEbits.PDSEL=0;
-	U5MODEbits.BRGH=0;
-	U5MODEbits.ABAUD=0;
-	U5MODEbits.LPBACK=0;
-	
-	U5BRG = 0x67;
-	
-	U5STAbits.UTXISEL1=0;
-	U5STAbits.UTXISEL0=1;
-	U5STAbits.URXISEL=1;
-	
-    IEC7bits.U5TXIE = 0;
-    IEC6bits.U5RXIE = 1;    
-	U5MODEbits.UARTEN=1;
-	U5STAbits.UTXEN=1;
-    IPC27bits.U5RXIP = 6;
-    IPC28bits.U5TXIP = 6;      
-    
+void InitUart5(void) {
+
+  U5MODEbits.STSEL = 0;
+  U5MODEbits.PDSEL = 0;
+  U5MODEbits.BRGH = 0;
+  U5MODEbits.ABAUD = 0;
+  U5MODEbits.LPBACK = 0;
+
+  U5BRG = 0x67;
+
+  U5STAbits.UTXISEL1 = 0;
+  U5STAbits.UTXISEL0 = 1;
+  U5STAbits.URXISEL = 1;
+
+  IEC7bits.U5TXIE = 0;
+  IEC6bits.U5RXIE = 1;
+  U5MODEbits.UARTEN = 1;
+  U5STAbits.UTXEN = 1;
+  IPC27bits.U5RXIP = 6;
+  IPC28bits.U5TXIP = 6;
 }
-void InitUart6(void){
-	
-	
-	U6MODEbits.STSEL=0;
-	U6MODEbits.PDSEL=0;
-	U6MODEbits.BRGH=0;
-	U6MODEbits.ABAUD=0;
-	U6MODEbits.LPBACK=0;
-	
-	U6BRG = 0x67;
-	
-	U6STAbits.UTXISEL1=0;
-	U6STAbits.UTXISEL0=1;
-	U6STAbits.URXISEL=1;
-	
-    IEC7bits.U6TXIE = 0;
-    IEC7bits.U6RXIE = 1;    
-	U6MODEbits.UARTEN=1;
-	U6STAbits.UTXEN=1;
-    IPC28bits.U6RXIP = 6;
-    IPC28bits.U6TXIP = 6;      
-    
+void InitUart6(void) {
+
+  U6MODEbits.STSEL = 0;
+  U6MODEbits.PDSEL = 0;
+  U6MODEbits.BRGH = 0;
+  U6MODEbits.ABAUD = 0;
+  U6MODEbits.LPBACK = 0;
+
+  U6BRG = 0x67;
+
+  U6STAbits.UTXISEL1 = 0;
+  U6STAbits.UTXISEL0 = 1;
+  U6STAbits.URXISEL = 1;
+
+  IEC7bits.U6TXIE = 0;
+  IEC7bits.U6RXIE = 1;
+  U6MODEbits.UARTEN = 1;
+  U6STAbits.UTXEN = 1;
+  IPC28bits.U6RXIP = 6;
+  IPC28bits.U6TXIP = 6;
 }
-void UART1SEND(char data)
-{
-     U1TXREG = data;   
-      while(!IFS0bits.U1TXIF);
-     IFS0bits.U1TXIF=0;       		
+void UART1SEND(char data) {
+  if (g_CmdFrom_UartNum == 1) {
+    U1TXREG = data;
+    while (!IFS0bits.U1TXIF)
+      ;
+    IFS0bits.U1TXIF = 0;
+  } else {
+    U4TXREG = data;
+    while (!IFS5bits.U4TXIF)
+      ;
+    IFS5bits.U4TXIF = 0;
+  }
+}
+void UART1SendDma(unsigned char *txData, unsigned int len) {
+    for (unsigned int i = 0; i < len; i++) {
+      g_ucTX_DMA[i] = txData[i];
+    }
+  if (g_CmdFrom_UartNum == 1) {
+    while (DMACH5bits.CHEN);  
+    DMASRC5 = (uint16_t)g_ucTX_DMA;
+    DMACNT5 = len;
+    DMACH5bits.CHEN = 1; // Enable DMA Channel
+    DMACH5bits.CHREQ = 1; // Start DMA Operation
+  } else {    
+  	while (DMACH4bits.CHEN);  
+    DMASRC4 = (uint16_t)g_ucTX_DMA;
+    DMACNT4 = len;
+    DMACH4bits.CHEN = 1; // Enable DMA Channel
+    DMACH4bits.CHREQ = 1; // Start DMA Operation
+  }
 }
-void Uart1_Receive(char num){
 
-    U1TXREG = num;  
-	  while(!U1STAbits.TRMT);
-	   IFS0bits.U1RXIF=0;  
+void Uart1_Receive(char num) {
+
+  U1TXREG = num;
+  while (!U1STAbits.TRMT)
+    ;
+  IFS0bits.U1RXIF = 0;
 }
-void UART2SEND(char data)
-{
-     U2TXREG = data;   
-      while(!IFS1bits.U2TXIF);
-     IFS1bits.U2TXIF=0;       		
+void UART2SEND(char data) {
+  U2TXREG = data;
+  while (!IFS1bits.U2TXIF)
+    ;
+  IFS1bits.U2TXIF = 0;
 }
-void Uart2_Receive(char num){
+void Uart2_Receive(char num) {
 
-    U2TXREG = num;  
-	  while(!U2STAbits.TRMT);
-	   IFS1bits.U2RXIF=0;  
+  U2TXREG = num;
+  while (!U2STAbits.TRMT)
+    ;
+  IFS1bits.U2RXIF = 0;
 }
-void UART3SEND(char data)
-{
-     U3TXREG = data;   
-      while(!IFS5bits.U3TXIF);
-     IFS5bits.U3TXIF=0;       		
+void UART3SEND(char data) {
+  U3TXREG = data;
+  while (!IFS5bits.U3TXIF)
+    ;
+  IFS5bits.U3TXIF = 0;
 }
-void Uart3_Receive(char num){
+void Uart3_Receive(char num) {
 
-    U3TXREG = num;  
-	  while(!U3STAbits.TRMT);
-	   IFS5bits.U3RXIF=0;  
+  U3TXREG = num;
+  while (!U3STAbits.TRMT)
+    ;
+  IFS5bits.U3RXIF = 0;
 }
-void UART4SEND(char data)
-{
-     U4TXREG = data;   
-      while(!IFS5bits.U4TXIF);
-     IFS5bits.U4TXIF=0;       		
+void UART4SEND(char data) {
+  U4TXREG = data;
+  while (!IFS5bits.U4TXIF)
+    ;
+  IFS5bits.U4TXIF = 0;
 }
-void Uart4_Receive(char num){
+void Uart4_Receive(char num) {
 
-    U4TXREG = num;  
-	  while(!U4STAbits.TRMT);
-	   IFS5bits.U4RXIF=0;  
+  U4TXREG = num;
+  while (!U4STAbits.TRMT)
+    ;
+  IFS5bits.U4RXIF = 0;
 }
-void UART5SEND(char data)
-{
-     U5TXREG = data;   
-      while(!IFS7bits.U5TXIF);
-     IFS7bits.U5TXIF=0;       		
+void UART5SEND(char data) {
+  U5TXREG = data;
+  while (!IFS7bits.U5TXIF)
+    ;
+  IFS7bits.U5TXIF = 0;
 }
-void Uart5_Receive(char num){
+void Uart5_Receive(char num) {
 
-    U5TXREG = num;  
-	  while(!U5STAbits.TRMT);
-	   IFS6bits.U5RXIF=0;  
+  U5TXREG = num;
+  while (!U5STAbits.TRMT)
+    ;
+  IFS6bits.U5RXIF = 0;
 }
-void UART6SEND(char data)
-{
-     U6TXREG = data;   
-      while(!IFS7bits.U6TXIF);
-     IFS7bits.U6TXIF=0;       		
+void UART6SEND(char data) {
+  U6TXREG = data;
+  while (!IFS7bits.U6TXIF)
+    ;
+  IFS7bits.U6TXIF = 0;
 }
-void Uart6_Receive(char num){
+void Uart6_Receive(char num) {
 
-    U6TXREG = num;  
-	  while(!U6STAbits.TRMT);
-	   IFS7bits.U6RXIF=0;  
+  U6TXREG = num;
+  while (!U6STAbits.TRMT)
+    ;
+  IFS7bits.U6RXIF = 0;
 }
 
+void __attribute__((interrupt, no_auto_psv)) _U1RXInterrupt(void) {
+  IFS0bits.U1RXIF = 0; 
+  g_ucU1RX_Buf[uart1_last++] = U1RXREG;
+  if(uart1_last == MAX_UART_BUFFER_SIZE){
+	uart1_last = 0;
+  }
+	
+//  g_ucU1RX_Data[g_uiUart1_No] = U1RXREG;
+//  if (g_BUSY1 == 1)
+//    return;
+//  if (g_ucHeaderFlag1 == 0) {
+//    if (g_ucU1RX_Data[g_uiUart1_No] == FRAME_HEAD) {
+//      g_ucHeaderFlag1 = 1;
+//      g_ucU1RX_Data[0] = FRAME_HEAD;
+//      g_uiUart1_No = 1;
+//    } else {
+//      g_BUSY1 = 0;
+//    }
+//  } else if (g_ucHeaderFlag1 == 1) {
+//    g_uiUart1_No++;
+//  }
+//  if (g_uiUart1_No > (FRAME_LTHH_INDEX + 1)) {
+//    g_uiLth1 = g_ucU1RX_Data[FRAME_LTHH_INDEX];
+//    if (g_uiUart1_No == g_uiLth1) {
+//      g_ulRSUM1 = Check(g_ucU1RX_Data, g_uiLth1 - 1);
+//      g_ucCRC1 = (unsigned char)g_ulRSUM1;
+//      if (g_ucCRC1 == g_ucU1RX_Data[g_uiLth1 - 1]) {
+//        g_ucCMD1 = g_ucU1RX_Data[FRAME_CMD_INDEX];
+//        g_ucUART1_flag = 1;
+//        g_CmdFrom_UartNum = 1;
+//        g_ulRSUM1 = 0;
+//        g_uiUart1_No = 0;
+//        g_ucHeaderFlag1 = 0;
+//        g_BUSY1 = 1;
+//      } else {
+//        memset(g_ucU1RX_Data, 0, g_uiLth1 * sizeof(unsigned char));
+//        g_BUSY1 = 0;
+//      }
+//    } else if (g_uiUart1_No > g_uiLth1) {
+//      g_uiUart1_No = 0;
+//      g_ucHeaderFlag1 = 0;
+//      g_BUSY1 = 0;
+//    }
+//  }
+}
 
-
-void __attribute__ ( ( interrupt, no_auto_psv ) ) _U1RXInterrupt( void ){
-    IFS0bits.U1RXIF = 0;       
-	g_ucU1RX_Data[g_uiUart1_No] = U1RXREG;                                   
-    if(g_BUSY1 == 1) return;
-    if(g_ucHeaderFlag1 == 0){                                               
-		if(g_ucU1RX_Data[g_uiUart1_No] == FRAME_HEAD){                      
-            g_ucHeaderFlag1 = 1;                                           
-            g_ucU1RX_Data[0] = FRAME_HEAD;                              
-            g_uiUart1_No = 1;                                             
-		}else{
-            g_BUSY1 = 0;                                                    
-        }
-	}else if(g_ucHeaderFlag1 == 1){                                             
-		g_uiUart1_No++;
-    } 
-    if(g_uiUart1_No > (FRAME_LTHH_INDEX+1)){                                                          
-        g_uiLth1 = g_ucU1RX_Data[FRAME_LTHH_INDEX]; 
-        if(g_uiUart1_No == g_uiLth1){                                         
-            g_ulRSUM1 = Check(g_ucU1RX_Data,g_uiLth1-1);                      
-            g_ucCRC1 = (unsigned char)g_ulRSUM1;                         
-            if(g_ucCRC1 == g_ucU1RX_Data[g_uiLth1-1]){                   
-                g_ucCMD1 = g_ucU1RX_Data[FRAME_CMD_INDEX];            
-                g_ucUART1_flag  = 1;                                         
-                g_ulRSUM1       = 0;                                          
-                g_uiUart1_No    = 0;                                     
-                g_ucHeaderFlag1 = 0;                                     
-                g_BUSY1         = 1;                                          
-            }else{
-                memset(g_ucU1RX_Data,0,g_uiLth1*sizeof(unsigned char));      
-                g_BUSY1 = 0;                                                  
-            }        
-        }else if(g_uiUart1_No > g_uiLth1){                             
-            g_uiUart1_No    = 0;                                          
-            g_ucHeaderFlag1 = 0;                                         
-            g_BUSY1         = 0;                                       
-        }
+void __attribute__((interrupt, no_auto_psv)) _U2RXInterrupt(void) {
+  IFS1bits.U2RXIF = 0;
+  g_ucU2RX_Data[g_uiUart2_No] = U2RXREG;
+  if (g_BUSY2 == 1)
+    return;
+  if (g_ucHeaderFlag2 == 0) {
+    if (g_ucU2RX_Data[g_uiUart2_No] == FRAME_HEAD) {
+      g_ucHeaderFlag2 = 1;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_uiUart2_No = 1;
+    } else {
+      g_BUSY2 = 0;
     }
-           
-	
+  } else if (g_ucHeaderFlag2 == 1) {
+    g_uiUart2_No++;
+  }
+  if (g_uiUart2_No > (FRAME_LTHH_INDEX + 1)) {
+    g_uiLth2 = g_ucU2RX_Data[FRAME_LTHH_INDEX];
+    if (g_uiUart2_No == g_uiLth2) {
+      g_ulRSUM2 = Check(g_ucU2RX_Data, g_uiLth2 - 1);
+      g_ucCRC2 = (unsigned char)g_ulRSUM2;
+      if (g_ucCRC2 == g_ucU2RX_Data[g_uiLth2 - 1]) {
+        g_ucCMD2 = g_ucU2RX_Data[FRAME_CMD_INDEX];
+        g_ucUART2_flag = 1;
+        g_ulRSUM2 = 0;
+        g_uiUart2_No = 0;
+        g_ucHeaderFlag2 = 0;
+        g_BUSY2 = 1;
+      } else {
+        memset(g_ucU2RX_Data, 0, g_uiLth2 * sizeof(unsigned char));
+        g_BUSY2 = 0;
+      }
+    } else if (g_uiUart2_No > g_uiLth2) {
+      g_uiUart2_No = 0;
+      g_ucHeaderFlag2 = 0;
+      g_BUSY2 = 0;
+    }
+  }
 }
-  
-void __attribute__ ( ( interrupt, no_auto_psv ) ) _U2RXInterrupt( void ){
- IFS1bits.U2RXIF = 0;                                                      
-	g_ucU2RX_Data[g_uiUart2_No] = U2RXREG;                                 
-    if(g_BUSY2 == 1) return;
-    if(g_ucHeaderFlag2 == 0){                                               
-		if(g_ucU2RX_Data[g_uiUart2_No] == FRAME_HEAD){                   
-            g_ucHeaderFlag2 = 1;                                               
-            g_ucU2RX_Data[0] = FRAME_HEAD;                                  
-            g_uiUart2_No = 1;                                               
-		}else{
-            g_BUSY2 = 0;                                                   
-        }
-	}else if(g_ucHeaderFlag2 == 1){                                      
-		g_uiUart2_No++;
-    } 
-    if(g_uiUart2_No > (FRAME_LTHH_INDEX+1)){                                                        
-        g_uiLth2 = g_ucU2RX_Data[FRAME_LTHH_INDEX]; 
-        if(g_uiUart2_No == g_uiLth2){                                 
-            g_ulRSUM2 = Check(g_ucU2RX_Data,g_uiLth2-1);                      
-            g_ucCRC2 = (unsigned char)g_ulRSUM2;                                
-            if(g_ucCRC2 == g_ucU2RX_Data[g_uiLth2-1]){   
-				g_ucCMD2 = g_ucU2RX_Data[FRAME_CMD_INDEX];
-                g_ucUART2_flag  = 1;                                     
-                g_ulRSUM2       = 0;                                     
-                g_uiUart2_No    = 0;                                    
-                g_ucHeaderFlag2 = 0;                                      
-                g_BUSY2         = 1;                                       
-            } else{  
-                memset(g_ucU2RX_Data,0,g_uiLth2*sizeof(unsigned char));      
-                g_BUSY2 = 0;                                                
-            }        
-        }else if(g_uiUart2_No > g_uiLth2){                                  
-            g_uiUart2_No    = 0;                                           
-            g_ucHeaderFlag2 = 0;                                      
-            g_BUSY2         = 0;                                 
-        }
+
+void __attribute__((interrupt, no_auto_psv)) _U3RXInterrupt(void) {
+  IFS5bits.U3RXIF = 0;
+  g_ucU3RX_Data[g_uiUart3_No] = U3RXREG;
+  if (g_BUSY3 == 1)
+    return;
+  if (g_ucHeaderFlag3 == 0) {
+    if (g_ucU3RX_Data[g_uiUart3_No] == FRAME_HEAD1) {
+      g_ucHeaderFlag3 = 1;
+      g_ucU3RX_Data[0] = FRAME_HEAD1;
+      g_uiUart3_No = 1;
+    } else {
+      g_BUSY3 = 0;
     }
-           
-	
+  } else if (g_ucHeaderFlag3 == 1) {
+    g_uiUart3_No++;
+  }
+  if (g_uiUart3_No > 5) {
+    g_uiLth3 = g_ucU3RX_Data[4];
+    if (g_uiUart3_No == g_uiLth3) {
+      g_ulRSUM3 = Check(g_ucU3RX_Data, g_uiLth3 - 1);
+      g_ucCRC3 = (unsigned char)g_ulRSUM3;
+      if (g_ucCRC3 == g_ucU3RX_Data[g_uiLth3 - 1]) {
+        g_ucUART3_flag = 1;
+        g_ulRSUM3 = 0;
+        g_uiUart3_No = 0;
+        g_ucHeaderFlag3 = 0;
+        g_BUSY3 = 1;
+      } else {
+        memset(g_ucU3RX_Data, 0, g_uiLth3 * sizeof(unsigned char));
+        g_BUSY3 = 0;
+      }
+    } else if (g_uiUart3_No > g_uiLth3) {
+      g_uiUart3_No = 0;
+      g_ucHeaderFlag3 = 0;
+      g_BUSY3 = 0;
+    }
+  }
 }
 
-void __attribute__ ( ( interrupt, no_auto_psv ) ) _U3RXInterrupt( void ){
-    IFS5bits.U3RXIF = 0;       
-	g_ucU3RX_Data[g_uiUart3_No] = U3RXREG;                             
-    if(g_BUSY3 == 1) return;
-    if(g_ucHeaderFlag3 == 0){                                               
-		if(g_ucU3RX_Data[g_uiUart3_No] == FRAME_HEAD1){                                 
-            g_ucHeaderFlag3 = 1;                                       
-            g_ucU3RX_Data[0] = FRAME_HEAD1;                                
-            g_uiUart3_No = 1;                                         
-		}else{
-            g_BUSY3 = 0;                                              
-        }
-	}else if(g_ucHeaderFlag3 == 1){                      
-		g_uiUart3_No++;
-    } 
-    if(g_uiUart3_No > 5){                                                                    
-        g_uiLth3 = g_ucU3RX_Data[4];
-        if(g_uiUart3_No == g_uiLth3){                                    
-            g_ulRSUM3 = Check(g_ucU3RX_Data,g_uiLth3-1);               
-            g_ucCRC3 = (unsigned char)g_ulRSUM3;                                
-            if(g_ucCRC3 == g_ucU3RX_Data[g_uiLth3-1]){                 
-                g_ucUART3_flag  = 1;                                 
-                g_ulRSUM3       = 0;                                  
-                g_uiUart3_No    = 0;                                 
-                g_ucHeaderFlag3 = 0;                                 
-                g_BUSY3         = 1;                                  
-            } else{  
-                memset(g_ucU3RX_Data,0,g_uiLth3*sizeof(unsigned char));    
-                g_BUSY3 = 0;                                               
-            }        
-        }else if(g_uiUart3_No > g_uiLth3){                               
-            g_uiUart3_No    = 0;                                        
-            g_ucHeaderFlag3 = 0;                                    
-            g_BUSY3         = 0;                           
-        }
+void __attribute__((interrupt, no_auto_psv)) _U4RXInterrupt(void) {
+  IFS5bits.U4RXIF = 0; 
+
+  g_ucU4RX_Buf[uart4_last++] = U4RXREG;
+  if(uart4_last == MAX_UART_BUFFER_SIZE){
+	uart4_last = 0;
+  }
+
+
+//
+//  g_ucU1RX_Data[g_uiUart1_No] = U4RXREG;
+//  if (g_BUSY1 == 1)
+//    return;
+//  if (g_ucHeaderFlag1 == 0) {
+//    if (g_ucU1RX_Data[g_uiUart1_No] == FRAME_HEAD) {
+//      g_ucHeaderFlag1 = 1;
+//      g_ucU1RX_Data[0] = FRAME_HEAD;
+//      g_uiUart1_No = 1;
+//    } else {
+//      g_BUSY1 = 0;
+//    }
+//  } else if (g_ucHeaderFlag1 == 1) {
+//    g_uiUart1_No++;
+//  }
+//  if (g_uiUart1_No > (FRAME_LTHH_INDEX + 1)) {
+//    g_uiLth1 = g_ucU1RX_Data[FRAME_LTHH_INDEX];
+//    if (g_uiUart1_No == g_uiLth1) {
+//      g_ulRSUM1 = Check(g_ucU1RX_Data, g_uiLth1 - 1);
+//      g_ucCRC1 = (unsigned char)g_ulRSUM1;
+//      if (g_ucCRC1 == g_ucU1RX_Data[g_uiLth1 - 1]) {
+//        g_ucCMD1 = g_ucU1RX_Data[FRAME_CMD_INDEX];
+//        g_ucUART1_flag = 1;
+//        g_CmdFrom_UartNum = 4;
+//        g_ulRSUM1 = 0;
+//        g_uiUart1_No = 0;
+//        g_ucHeaderFlag1 = 0;
+//        g_BUSY1 = 1;
+//      } else {
+//        memset(g_ucU1RX_Data, 0, g_uiLth1 * sizeof(unsigned char));
+//        g_BUSY1 = 0;
+//      }
+//    } else if (g_uiUart1_No > g_uiLth1) {
+//      g_uiUart1_No = 0;
+//      g_ucHeaderFlag1 = 0;
+//      g_BUSY1 = 0;
+//    }
+//  }
+}
+
+void __attribute__((interrupt, no_auto_psv)) _U5RXInterrupt(void) { //√
+  IFS6bits.U5RXIF = 0;
+  g_ucU5RX_Data[g_uiUart5_No] = U5RXREG;
+  if (g_BUSY5 == 1)
+    return;
+  if (g_ucHeaderFlag5 == 0) {
+    if (g_ucU5RX_Data[g_uiUart5_No] == FRAME_HEAD) {
+      g_ucHeaderFlag5 = 1;
+      g_ucU5RX_Data[0] = FRAME_HEAD;
+      g_uiUart5_No = 1;
+    } else {
+      g_BUSY5 = 0;
+    }
+  } else if (g_ucHeaderFlag5 == 1) {
+    g_uiUart5_No++;
+  }
+  if (g_uiUart5_No > (FRAME_LTHH_INDEX + 1)) {
+    g_uiLth5 = g_ucU5RX_Data[FRAME_LTHH_INDEX];
+    if (g_uiUart5_No == g_uiLth5) {
+      g_ulRSUM5 = Check(g_ucU5RX_Data, g_uiLth5 - 1);
+      g_ucCRC5 = (unsigned char)g_ulRSUM5;
+      if (g_ucCRC5 == g_ucU5RX_Data[g_uiLth5 - 1]) {
+        g_ucCMD5 = g_ucU5RX_Data[FRAME_CMD_INDEX];
+        g_ucUART5_flag = 1;
+        g_ulRSUM5 = 0;
+        g_uiUart5_No = 0;
+        g_ucHeaderFlag5 = 0;
+        g_BUSY5 = 1;
+      } else {
+        memset(g_ucU5RX_Data, 0, g_uiLth5 * sizeof(unsigned char));
+        g_BUSY5 = 0;
+      }
+    } else if (g_uiUart5_No > g_uiLth5) {
+      g_uiUart5_No = 0;
+      g_ucHeaderFlag5 = 0;
+      g_BUSY5 = 0;
     }
+  }
 }
 
-void __attribute__ ( ( interrupt, no_auto_psv ) ) _U4RXInterrupt( void ){
-    IFS5bits.U4RXIF = 0;       
-	g_ucU4RX_Data[g_uiUart4_No] = U4RXREG;                                
-    if(g_BUSY4 == 1) return;
-    if(g_ucHeaderFlag4 == 0){                                            
-		if(g_ucU4RX_Data[g_uiUart4_No] == FRAME_HEAD){                 
-            g_ucHeaderFlag4 = 1;                                         
-            g_ucU4RX_Data[0] = FRAME_HEAD;                                
-            g_uiUart4_No = 1;                                             
-		}else{
-            g_BUSY4 = 0;                                                  
-        }
-	}else if(g_ucHeaderFlag4 == 1){                                  
-		g_uiUart4_No++;
-    } 
-    if(g_uiUart4_No > (FRAME_LTHH_INDEX+1)){                                                      
-        g_uiLth4 = g_ucU4RX_Data[FRAME_LTHH_INDEX]; 
-        if(g_uiUart4_No == g_uiLth4){                                    
-            g_ulRSUM4 = Check(g_ucU4RX_Data,g_uiLth4-1);                
-            g_ucCRC4 = (unsigned char)g_ulRSUM4;                           
-            if(g_ucCRC4 == g_ucU4RX_Data[g_uiLth4-1]){                   
-                g_ucCMD4 = g_ucU4RX_Data[FRAME_CMD_INDEX];                
-                g_ucUART4_flag  = 1;                               
-                g_ulRSUM4       = 0;                                    
-                g_uiUart4_No    = 0;                                 
-                g_ucHeaderFlag4 = 0;                                   
-                g_BUSY4         = 1;                                    
-            }else{
-                memset(g_ucU4RX_Data,0,g_uiLth4*sizeof(unsigned char));     
-                g_BUSY4 = 0;                                                  
-            }        
-        }else if(g_uiUart4_No > g_uiLth4){                               
-            g_uiUart4_No    = 0;                                         
-            g_ucHeaderFlag4 = 0;                                         
-            g_BUSY4         = 0;                                            
-        }
+void __attribute__((interrupt, no_auto_psv)) _U6RXInterrupt(void) {
+  IFS7bits.U6RXIF = 0;
+  g_ucU6RX_Data[g_uiUart6_No] = U6RXREG;
+  if (g_BUSY6 == 1)
+    return;
+  if (g_ucHeaderFlag6 == 0) {
+    if (g_ucU6RX_Data[g_uiUart6_No] == FRAME_HEAD) {
+      g_ucHeaderFlag6 = 1;
+      g_ucU6RX_Data[0] = FRAME_HEAD;
+      g_uiUart6_No = 1;
+    } else {
+      g_BUSY6 = 0;
     }
-           
-	
+  } else if (g_ucHeaderFlag6 == 1) {
+    g_uiUart6_No++;
+  }
+  if (g_uiUart6_No > (FRAME_LTHH_INDEX + 1)) {
+    g_uiLth6 = g_ucU6RX_Data[FRAME_LTHH_INDEX];
+    if (g_uiUart6_No == g_uiLth6) {
+      g_ulRSUM6 = Check(g_ucU6RX_Data, g_uiLth6 - 1);
+      g_ucCRC6 = (unsigned char)g_ulRSUM6;
+      if (g_ucCRC6 == g_ucU6RX_Data[g_uiLth6 - 1]) {
+        g_ucCMD6 = g_ucU6RX_Data[FRAME_CMD_INDEX];
+        g_ucUART6_flag = 1;
+        g_ulRSUM6 = 0;
+        g_uiUart6_No = 0;
+        g_ucHeaderFlag6 = 0;
+        g_BUSY6 = 1;
+      } else {
+        memset(g_ucU6RX_Data, 0, g_uiLth6 * sizeof(unsigned char));
+        g_BUSY6 = 0;
+      }
+    } else if (g_uiUart6_No > g_uiLth6) {
+      g_uiUart6_No = 0;
+      g_ucHeaderFlag6 = 0;
+      g_BUSY6 = 0;
+    }
+  }
 }
 
-void __attribute__ ( ( interrupt, no_auto_psv ) ) _U5RXInterrupt( void ){//√
-    IFS6bits.U5RXIF = 0;       
-	g_ucU5RX_Data[g_uiUart5_No] = U5RXREG;                                   
-    if(g_BUSY5 == 1) return;
-    if(g_ucHeaderFlag5 == 0){                                             
-		if(g_ucU5RX_Data[g_uiUart5_No] == FRAME_HEAD){                      
-            g_ucHeaderFlag5 = 1;                                         
-            g_ucU5RX_Data[0] = FRAME_HEAD;                                
-            g_uiUart5_No = 1;                                            
-		}else{
-            g_BUSY5 = 0;                                               
-        }
-	}else if(g_ucHeaderFlag5 == 1){                                   
-		g_uiUart5_No++;
-    } 
-    if(g_uiUart5_No > (FRAME_LTHH_INDEX+1)){                                                           
-        g_uiLth5 = g_ucU5RX_Data[FRAME_LTHH_INDEX]; 
-        if(g_uiUart5_No == g_uiLth5){                                    
-            g_ulRSUM5 = Check(g_ucU5RX_Data,g_uiLth5-1);                  
-            g_ucCRC5 = (unsigned char)g_ulRSUM5;                            
-            if(g_ucCRC5 == g_ucU5RX_Data[g_uiLth5-1]){              
-                g_ucCMD5 = g_ucU5RX_Data[FRAME_CMD_INDEX];            
-                g_ucUART5_flag  = 1;                                      
-                g_ulRSUM5       = 0;                                    
-                g_uiUart5_No    = 0;                                    
-                g_ucHeaderFlag5 = 0;                                    
-                g_BUSY5         = 1;                                       
-            }else{
-                memset(g_ucU5RX_Data,0,g_uiLth5*sizeof(unsigned char));      
-                g_BUSY5 = 0;                                                 
-            }        
-        }else if(g_uiUart5_No > g_uiLth5){                                   
-            g_uiUart5_No    = 0;                                         
-            g_ucHeaderFlag5 = 0;                                          
-            g_BUSY5         = 0;                                           
-        }
+
+uint16_t checkSum(const uint8_t *pInBuffer, int uLen)
+{
+    uint32_t sum = 0;
+
+    for(int i = 0; i < uLen; i++)
+    {
+        sum += pInBuffer[i];
     }
-           
-	
+
+    return (sum);
 }
 
-void __attribute__ ( ( interrupt, no_auto_psv ) ) _U6RXInterrupt( void ){
-    IFS7bits.U6RXIF = 0;       
-	g_ucU6RX_Data[g_uiUart6_No] = U6RXREG;                               
-    if(g_BUSY6 == 1) return;
-    if(g_ucHeaderFlag6 == 0){                                             
-		if(g_ucU6RX_Data[g_uiUart6_No] == FRAME_HEAD){                     
-            g_ucHeaderFlag6 = 1;                                           
-            g_ucU6RX_Data[0] = FRAME_HEAD;                               
-            g_uiUart6_No = 1;                                              
+
+/********************************************************************
+ *                         int Decode(const char *pInBuffer, int uLen)
+ *
+ *描述:对串口数据进行解码成结构体
+ *参数:pInBuffer    接收缓冲区
+        *uheader 当前头位置
+        ulast 当前头尾位置
+        maxlen 缓冲区长度
+        pMessage  命令结构体
+        pdata 命令数据
+ *返回:1解码成功,0解码失败
+ *其他:无
+ *--------------------------------------------------------------------
+ *记录:
+ ********************************************************************/
+int DecodeNew(void* pMessage, uint8_t *pdata, const uint8_t *pInBuffer, uint32_t *pheader,uint32_t  ulast,uint32_t maxlen)
+{
+	uint32_t  bufRealLen;
+	uint32_t  sizeofMessage = ALPS_MASSAGE_MIN_SIZE;
+	uint32_t  header = *pheader;
+	uint32_t i = 0;
+//    if (NULL == pInBuffer || NULL == pMessage || NULL == pdata || NULL == pheader)
+    if (NULL == pInBuffer  || NULL == pdata || NULL == pheader)
+    {
+		/*空指针判断*/
+		return 0;
+    }
+	/*缓冲区有效数据长度,缓冲区循环处理,会出现头大于未情况*/
+	bufRealLen = (ulast > header)?(ulast - header):(ulast + maxlen - header);
+	if(bufRealLen < sizeofMessage){
+		/*长度过段,跳过*/
+		return 0;
+	}
+//	bufRealLen = sizeofMessage; /*最大有效数据长度*/
+	for(; i<=(bufRealLen - sizeofMessage);){
+		uint32_t headerflag = pInBuffer[(header + i)%maxlen];
+//		headerflag += pInBuffer[(header + i + 1)%maxlen] <<8;
+		if(headerflag != ALPS_HEADER_FALG){
+			i += 1;
+//			header = (header + 1)%maxlen;
+			continue;
+		}
+		uint32_t messagelen =  pInBuffer[(header + i + 3)%maxlen];
+//		messagelen += pInBuffer[(header + i + 5)%maxlen] <<8;
+		if(messagelen > (maxlen)){
+			/*长度超长 跳过2个字节*/
+			i += 1;
+//			header = (header + 1)%maxlen;
+			continue;
+		}
+		if(messagelen >bufRealLen){
+			/*当前起始点可能存在数据,跳出循环,*/
+			i++; /*for采样小于等于判断,循环次数多1,此处加1便于后续处理*/
+			break;
+		}
+
+		uint8_t checkesum = 0;
+		uint8_t recsum = 0;
+		if((header + i +  messagelen) < maxlen){
+			checkesum = checkSum(pInBuffer + header + i , messagelen - 1);
+			
 		}else{
-            g_BUSY6 = 0;                                                 
+			checkesum = checkSum(pInBuffer + header + i , (maxlen - (header)));
+			checkesum += checkSum(pInBuffer, (header + i + messagelen - 1)%maxlen);
+		}
+		recsum = *(pInBuffer + (header + i  + messagelen - 1)%maxlen ) ;
+//		recsum += *(pInBuffer + (header + i + 7 + messagelen)%maxlen) << 8;
+		/*固定结尾预留做调试用*/
+		if(checkesum != recsum ){
+			i += 1;
+//			header = (header + 1)%maxlen;
+		}else{
+			/*解析成功,拷贝消息结构体*/
+//		    uint8_t * pCharMessage = (uint8_t *)pMessage;
+//			for(unsigned copyi=0;copyi<(sizeofMessage-2);copyi++){
+//				 *pCharMessage++ = pInBuffer[(header + i+ copyi)%maxlen];
+//			}
+//			(*pMessage).tail = MINI7_TAIL_FALG;
+
+			/*解析成功,拷贝数据结构体*/
+			for(unsigned copyi=0;copyi<messagelen;copyi++){
+				 *pdata++ = pInBuffer[(header + i + copyi)%maxlen];
+			}
+			*pheader = (header + messagelen  + i )%maxlen;
+			return 1;
+		}
+	}
+   *pheader = (header + i - 1)%maxlen;
+   return 0;
+}
+
+
+
+/*******************************************************************************
+ * 函数名称: unPack_Cmd  串口消息解码
+ *******************************************************************************/
+
+void unPack_Cmd(void){
+    if(((uart1_last + MAX_UART_BUFFER_SIZE - uart1_header) % MAX_UART_BUFFER_SIZE ) >= ALPS_MASSAGE_MIN_SIZE)
+        {
+		    uart1_recOK = DecodeNew(NULL,g_ucU1RX_Data,g_ucU1RX_Buf, &uart1_header,uart1_last,MAX_UART_BUFFER_SIZE);
+			if(uart1_recOK){
+				if(g_BUSY1){
+					/*忙应答*/
+				}else{
+					g_BUSY1 = 1;
+					g_ucUART1_flag = 1;
+					g_CmdFrom_UartNum = 1;
+				}
+			}
         }
-	}else if(g_ucHeaderFlag6 == 1){                                      
-		g_uiUart6_No++;
-    } 
-    if(g_uiUart6_No > (FRAME_LTHH_INDEX+1)){                                                            
-        g_uiLth6 = g_ucU6RX_Data[FRAME_LTHH_INDEX]; 
-        if(g_uiUart6_No == g_uiLth6){                                     
-            g_ulRSUM6 = Check(g_ucU6RX_Data,g_uiLth6-1);                 
-            g_ucCRC6 = (unsigned char)g_ulRSUM6;                         
-            if(g_ucCRC6 == g_ucU6RX_Data[g_uiLth6-1]){                  
-                g_ucCMD6 = g_ucU6RX_Data[FRAME_CMD_INDEX];                 
-                g_ucUART6_flag  = 1;                                      
-                g_ulRSUM6       = 0;                                     
-                g_uiUart6_No    = 0;                                        
-                g_ucHeaderFlag6 = 0;                                      
-                g_BUSY6         = 1;                                       
-            }else{
-                memset(g_ucU6RX_Data,0,g_uiLth6*sizeof(unsigned char));      
-                g_BUSY6 = 0;                                              
-            }        
-        }else if(g_uiUart6_No > g_uiLth6){                                  
-            g_uiUart6_No    = 0;                                         
-            g_ucHeaderFlag6 = 0;                                      
-            g_BUSY6         = 0;                                            
+	else if(((uart4_last + MAX_UART_BUFFER_SIZE - uart4_header) % MAX_UART_BUFFER_SIZE ) >= ALPS_MASSAGE_MIN_SIZE)
+        {
+		    uart1_recOK = DecodeNew(NULL,g_ucU1RX_Data,g_ucU4RX_Buf, &uart4_header,uart4_last,MAX_UART_BUFFER_SIZE);
+			if(uart1_recOK){
+				if(g_BUSY1){
+					/*忙应答*/
+				}else{
+					g_BUSY1 = 1;
+					g_ucUART1_flag = 1;
+					g_CmdFrom_UartNum = 4;
+				}
+			}
         }
+}
+
+
+/*******************************************************************************
+ * 函数名称:Uart1_Ack
+ *******************************************************************************/
+
+void Uart1_Ack_new(void) {
+  unsigned int g_uiFrmLth;
+  unsigned int sendTime;
+  unsigned int outTime = OUTTIME2S;
+  switch (g_ucCMD1) {
+  case READ_EEPROM:
+  case WRITE_EEPROM: {
+    if (g_ucU1RX_Data[2] == 0) {
+      if ((ulEE_address >= 0x0000) && (ulEE_address <= 0x1FFF)) {
+        g_ucU1RX_Data[2] = 1;
+        g_ucU1RX_Data[g_ucU1RX_Data[3] - 1] += 1;
+      } else if ((ulEE_address >= 0x2000) && (ulEE_address <= 0xFFFF)) {
+        g_ucU1RX_Data[2] = 2;
+        g_ucU1RX_Data[g_ucU1RX_Data[3] - 1] += 2;
+      }
     }
-           
-	
+  } break;
+  case PCR_RDTEMP:
+  case RD_PCRDATA:
+  case PCR_MOTOR:
+    outTime = OUTTIME60S;
+    break;
+  default:
+    break;
+  }
+
+  switch (g_ucU1RX_Data[2]) {
+  case 0: {
+    g_uiFrmLth = 6;
+    g_ucU1TX_Data[0] = FRAME_HEAD;
+    g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+    g_ucU1TX_Data[2] = 0;
+    g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+    g_ucU1TX_Data[4] = 0;
+    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, g_uiFrmLth - 1);
+//    for (unsigned int n = 0; n < g_ucU1TX_Data[3]; n++) {
+//      UART1SEND(g_ucU1TX_Data[n]);
+//    }
+	UART1SendDma(g_ucU1TX_Data,g_uiFrmLth);
+
+  } break;
+  case 1: {
+    for (unsigned int n = 0; n < g_ucU1RX_Data[3]; n++) {
+      UART2SEND(g_ucU1RX_Data[n]);
+    }
+    sendTime = ms10_conter;
+    while (!g_ucUART2_flag && (ms10_conter - sendTime) < outTime)
+      ;
+    if (!g_ucUART2_flag) {
+      g_uiFrmLth = 6;
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 1;
+      g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+      g_ucU1TX_Data[4] = EnmErrCode_errTimeOut;
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, g_uiFrmLth - 1);
+      for (unsigned int n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+    } else {
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (unsigned int n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+    }
+    g_ucUART2_flag = 0;
+    g_BUSY2 = 0;
+
+  } break;
+  case 2: {
+    g_ucU3TX_Data[0] = FRAME_HEAD1;
+    g_ucU3TX_Data[1] = g_ucCMD1;
+    g_ucU3TX_Data[2] = 2;
+    g_ucU3TX_Data[3] = 0;
+    g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1; // 6
+    g_uiFrmLth = g_ucU3TX_Data[4];
+    for (unsigned int i = 4; i < g_ucU1RX_Data[3]; i++) {
+      g_ucU3TX_Data[i + 1] = g_ucU1RX_Data[i];
+    }
+    g_ucU3TX_Data[g_uiFrmLth - 1] =
+        (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+    for (unsigned int n = 0; n < g_ucU3TX_Data[4]; n++) {
+      UART3SEND(g_ucU3TX_Data[n]);
+    }
+    sendTime = ms10_conter;
+    while (!g_ucUART2_flag && (ms10_conter - sendTime) < outTime)
+      ;
+    if (!g_ucUART2_flag) {
+      g_uiFrmLth = 6;
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 1;
+      g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+      g_ucU1TX_Data[4] = EnmErrCode_errTimeOut;
+    } else {
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = g_ucU3RX_Data[4] - 1;
+      g_uiFrmLth = g_ucU1TX_Data[3];
+      for (unsigned int i = 4; i < g_ucU3RX_Data[4]; i++) {
+        g_ucU1TX_Data[i] = g_ucU4RX_Data[i + 1];
+      }
+    }
+
+    g_ucU1TX_Data[g_uiFrmLth - 1] =
+        (unsigned char)Check(g_ucU1TX_Data, g_uiFrmLth - 1);
+    for (unsigned int n = 0; n < g_ucU1TX_Data[3]; n++) {
+      UART1SEND(g_ucU1TX_Data[n]);
+    }
+    g_ucUART3_flag = 0;
+    g_BUSY3 = 0;
+
+  } break;
+  default: {
+    g_uiFrmLth = 6;
+    g_ucU1TX_Data[0] = FRAME_HEAD;
+    g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+    g_ucU1TX_Data[2] = 0;
+    g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+    g_ucU1TX_Data[4] = EnmErrCode_errPara1;
+    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, g_uiFrmLth - 1);
+    for (unsigned int n = 0; n < g_ucU1TX_Data[3]; n++) {
+      UART1SEND(g_ucU1TX_Data[n]);
+    }
+
+  } break;
+  }
+  g_ucUART1_flag = 0;
+  g_uiUart1_No = 0;
+  g_ucHeaderFlag1 = 0;
+  memset(g_ucU1RX_Data, 0, g_uiLth1 * sizeof(unsigned char));
+  g_BUSY1 = 0;
+  g_CmdFrom_UartNum = 0;
 }
+
 /*******************************************************************************
  * 函数名称:Uart1_Ack
  *******************************************************************************/
 
-void Uart1_Ack(void)
-{
-    unsigned int g_uiFrmLth;               
-    unsigned int i=0;                         
-    unsigned int j=0;                         
-    unsigned int n=0;                       
-    unsigned char k=0;                        
-    unsigned int UARTAD_buff[8];             
-    unsigned char Flag_STATUS=0;             
-    unsigned char Sensor,ucPWMindex,ucCtrlMode;          
-    long lMPPCtemp = 0;
-    long lPWMstate=0;
-    
-    unsigned long           SoftVersion =230719,date;      
-
-    unsigned char  u8_data1,u8_data2,u8_data3;
-
-
-    switch(g_ucCMD1){      
-        /***************************(0x01)****************************/ 
-        case HELLO:
-			switch(g_ucU1RX_Data[2])
-            {
-		    case 0:
-					g_uiFrmLth = 6;                                        
-					g_ucU1TX_Data[0] = FRAME_HEAD;
-					g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-					g_ucU1TX_Data[2] = 0;
-					g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;                           
-					g_ucU1TX_Data[4] = Flag_STATUS;                                  
-					g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);    	            
-					for(n=0;n<g_ucU1TX_Data[3];n++)
-                    {	
-						UART1SEND(g_ucU1TX_Data[n]);
-					}
-					break;
-					
-		    case 1:
-                for(n=0;n<g_ucU1RX_Data[3];n++)
-                    {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}  
-                        while(!g_ucUART2_flag); 
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                        for(n = 0;n < g_ucU2RX_Data[3];n++)
-                        {
-                            UART1SEND(g_ucU2RX_Data[n]);	
-                        }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                       
-                            break;
-					
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;   //6
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 5;
-                    g_ucU1TX_Data[4] = (unsigned char)Check(g_ucU1TX_Data,4);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;
-		    case 3:
-                for(n = 0;n < g_ucU1RX_Data[3];n++)
-                    {
-						UART4SEND(g_ucU1RX_Data[n]);
-					}	
-                    while(!g_ucUART4_flag);
-                        g_ucU4RX_Data[0] = FRAME_HEAD;
-                        g_ucU4RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU4RX_Data[2] = 3;
-                        g_uiFrmLth = g_ucU4RX_Data[3] ;
-                        g_ucU4RX_Data[g_uiFrmLth-1]=(unsigned char)Check(g_ucU4RX_Data,g_uiFrmLth-1);
-                        for(n=0;n<g_ucU4RX_Data[3];n++)
-                        {
-                            UART1SEND(g_ucU4RX_Data[n]);	
-                        }
-                        g_ucUART4_flag = 0;
-                        g_BUSY4 = 0;                              
-                            break;
-		    case 4:
-                for(n=0;n<g_ucU1RX_Data[3];n++)
-                    {
-						UART5SEND(g_ucU1RX_Data[n]);
-					}
-                    while(!g_ucUART5_flag);
-                        g_ucU5RX_Data[0] = FRAME_HEAD;
-                        g_ucU5RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU5RX_Data[2]=4;
-                        g_uiFrmLth =  g_ucU5RX_Data[3] ;
-                        g_ucU5RX_Data[g_uiFrmLth-1]=(unsigned char)Check(g_ucU5RX_Data,g_uiFrmLth-1);
-                    for(n=0;n<g_ucU5RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU5RX_Data[n]);	
-                    }
-                        g_ucUART5_flag = 0;
-                        g_BUSY5 = 0;                              
-                        break;
-		    case 5:
-                for(n=0;n<g_ucU1RX_Data[3];n++)
-                    {
-						UART6SEND(g_ucU1RX_Data[n]);
-                    }	
-                    while(!g_ucUART6_flag);
-                        g_ucU6RX_Data[0] = FRAME_HEAD;
-                        g_ucU6RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU6RX_Data[2] = 5;
-                        g_uiFrmLth = g_ucU6RX_Data[3] ;
-                        g_ucU6RX_Data[g_uiFrmLth-1]=(unsigned char)Check(g_ucU6RX_Data,g_uiFrmLth-1);
-                    for(n=0;n<g_ucU6RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU6RX_Data[n]);	
-                    }
-                        g_ucUART6_flag = 0;
-                        g_BUSY6 = 0;                              
-                        break;					
-        }
-        break;            
-        /**************************(0x02)****************************/ 
-        case PCR_SYSRST:
-			switch(g_ucU1RX_Data[2])
-            {
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                    g_ucU2RX_Data[0] = FRAME_HEAD;
-                    g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU2RX_Data[2] = 1;
-                    g_uiFrmLth = g_ucU2RX_Data[3] ;
-                    g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;      
-                            break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = 0;
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;            
-            }  
-            break;
-        /**************************(0x03)****************************/ 
-        case PCR_SELFTEST:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                    g_ucU2RX_Data[0] = FRAME_HEAD;
-                    g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU2RX_Data[2] = 1;
-                    g_uiFrmLth = g_ucU2RX_Data[3] ;
-                    g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    } 
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;      
-                            break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = 0;
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;              
-            }    
-            break;
-        /***************************(0x04)****************************/ 
-        case PCR_DEV:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                    g_ucU2RX_Data[0] = FRAME_HEAD;
-                    g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU2RX_Data[2] = 1;
-                    g_uiFrmLth = g_ucU2RX_Data[3] ;
-                    g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }   
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;      
-                            break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
-                    g_ucU3TX_Data[7] = g_ucU1RX_Data[6];
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 7;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
-                    g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
-                    g_ucU1TX_Data[6] = (unsigned char)Check(g_ucU1TX_Data,6);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;             
-            }
-            break;
-        /****************************(0x05)****************************/ 
-        case PCR_STATUS:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                    g_ucU2RX_Data[0] = FRAME_HEAD;
-                    g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU2RX_Data[2] = 1;
-                    g_uiFrmLth = g_ucU2RX_Data[3] ;
-                    g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }
-                    g_ucUART2_flag = 0;
-                    g_BUSY2 = 0;      
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 8;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
-                    g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
-                    g_ucU1TX_Data[6] = 0;
-                    g_ucU1TX_Data[7] = (unsigned char)Check(g_ucU1TX_Data,7);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;              
-            }
-            break;
-        /****************************(0x06)****************************/ 
-        case SET_Temperature:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                    g_ucU2RX_Data[0] = FRAME_HEAD;
-                    g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU2RX_Data[2] = 1;
-                    g_uiFrmLth = g_ucU2RX_Data[3] ;
-                    g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }  
-                    g_ucUART2_flag = 0;
-                    g_BUSY2 = 0;      
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 7;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
-                    g_ucU1TX_Data[5] = 0;
-                    g_ucU1TX_Data[6] = (unsigned char)Check(g_ucU1TX_Data,6);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;              
-            }
-            break;
-        /***************************(0x78)****************************/ 
-        case SET_ZLTemperature:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                    g_ucU2RX_Data[0] = FRAME_HEAD;
-                    g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU2RX_Data[2] = 1;
-                    g_uiFrmLth = g_ucU2RX_Data[3] ;
-                    g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }  
-                    g_ucUART2_flag = 0;
-                    g_BUSY2 = 0;      
-                    break;                           
-            }
-            break;            
-        /*************************** (0x07)****************************/ 
-        case PCR_MOTOR:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					} 
-                    while(!g_ucUART2_flag);                
-                    g_ucU2RX_Data[0] = FRAME_HEAD;
-                    g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU2RX_Data[2] = 1;
-                    g_uiFrmLth = g_ucU2RX_Data[3] ;
-                    g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    } 
-                    g_ucUART2_flag = 0;
-                    g_BUSY2 = 0;                         
-                    break;
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 10;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
-                    g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
-                    g_ucU1TX_Data[6] = g_ucU3RX_Data[7];
-                    g_ucU1TX_Data[7] = g_ucU3RX_Data[8];  
-                    g_ucU1TX_Data[8] = g_ucU3RX_Data[9]; 
-                    g_ucU1TX_Data[9] = (unsigned char)Check(g_ucU1TX_Data,9);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                        
-            }
-        break;
-        /*************************** (0x08)****************************/ 
-        case PCR_LEDCTRL:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                    g_ucU2RX_Data[0] = FRAME_HEAD;
-                    g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU2RX_Data[2] = 1;
-                    g_uiFrmLth = g_ucU2RX_Data[3] ;
-                    g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }  
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 9;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
-                    g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
-                    g_ucU1TX_Data[6] = g_ucU3RX_Data[7];
-                    g_ucU1TX_Data[7] = g_ucU3RX_Data[8];                    
-                    g_ucU1TX_Data[8] = (unsigned char)Check(g_ucU1TX_Data,8);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;              
-            }  
-            break;
-        /***************************  (0x09)****************************/ 
-        case PCR_RDTEMP:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                    g_ucU2RX_Data[0] = FRAME_HEAD;
-                    g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU2RX_Data[2] = 1;
-                    g_uiFrmLth = g_ucU2RX_Data[3] ;
-                    g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    } 
-                    g_ucUART2_flag = 0;
-                    g_BUSY2 = 0;                     
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                
-            } 
-            break;
-        /**************************** (0x0A)****************************/ 
-        case PCR_SETCAP:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
-                    g_ucU3TX_Data[7] = g_ucU1RX_Data[6];
-                    g_ucU3TX_Data[8] = g_ucU1RX_Data[7];
-                    g_ucU3TX_Data[9] = g_ucU1RX_Data[8];
-                    g_ucU3TX_Data[10] = g_ucU1RX_Data[9];
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = 0;                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;         
-        /***************************(0x0B)****************************/ 
-        case PCR_AUXER:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                    g_ucUART2_flag = 0;
-                    g_BUSY2 = 0;                     
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
-                    g_ucU3TX_Data[7] = g_ucU1RX_Data[6];
-                    g_ucU3TX_Data[8] = g_ucU1RX_Data[7];
-                    g_ucU3TX_Data[9] = g_ucU1RX_Data[8];
-                    g_ucU3TX_Data[10] = g_ucU1RX_Data[9];
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = 0;                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;             
-            } 
-            break;          
-       /*************************** (0x0C)****************************/ 
-        case RD_PCRDATA:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                    g_ucUART2_flag = 0;
-                    g_BUSY2 = 0;                     
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
-                    g_ucU3TX_Data[7] = g_ucU1RX_Data[6];
-                    g_ucU3TX_Data[8] = g_ucU1RX_Data[7];
-                    g_ucU3TX_Data[9] = g_ucU1RX_Data[8];
-                    g_ucU3TX_Data[10] = g_ucU1RX_Data[9];
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                
-            } 
-            break;          
-       /**************************(0x0d)****************************/ 
-        case PCR_PMT:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;			
-       /****************************(0x0e)****************************/ 
-        case PCR_GAIN:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /****************************(0x0f)****************************/ 
-        case PCR_STALED:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /**************************** (0x10)****************************/ 
-        case PCR_RTPCREMP:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                    g_ucUART2_flag = 0;
-                    g_BUSY2 = 0;                     
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                
-            } 
-            break;
-       /**************************(0x11)****************************/ 
-        case READ_EEPROM:
-            ulEE_address = g_ucU1RX_Data[4];//EEPROM的首地址
-            ulEE_address = (ulEE_address << 8) + g_ucU1RX_Data[5]; 
-            ulEE_address = (ulEE_address << 8) + g_ucU1RX_Data[6];
-            if((ulEE_address >= 0x0000 )&&(ulEE_address <= 0x1FFF))
-            {             
-               for(n = 0;n < g_ucU1RX_Data[3];n++)
-               {	
-                    UART2SEND(g_ucU1RX_Data[n]);
-                }    
-            while(!g_ucUART2_flag);
-                g_ucU2RX_Data[0] = FRAME_HEAD;
-                g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                g_ucU2RX_Data[2] = 1;
-                g_uiFrmLth = g_ucU2RX_Data[3] ;
-                g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-            for(n = 0;n < g_ucU2RX_Data[3];n++)
-            {
-                UART1SEND(g_ucU2RX_Data[n]);	
-            }                     
-            g_ucUART2_flag = 0;
-            g_BUSY2 = 0;                  
-            }else if((ulEE_address >= 0x2000 )&&(ulEE_address <= 0xFFFF))
-            {   
-                g_ucU3TX_Data[0] = FRAME_HEAD1;
-                g_ucU3TX_Data[1] = g_ucCMD1;
-                g_ucU3TX_Data[2] = 0;
-                g_ucU3TX_Data[3] = 0;
-                g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
-                g_ucU3TX_Data[7] = g_ucU1RX_Data[6];
-                g_ucU3TX_Data[8] = g_ucU1RX_Data[7];
-                g_ucU3TX_Data[9] = g_ucU1RX_Data[8];
-                g_uiFrmLth = g_ucU3TX_Data[4] ;
-                g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-            for(n=0;n<g_ucU3TX_Data[4];n++)
-                {
-                    UART3SEND(g_ucU3TX_Data[n]);
-                }	
-                while(!g_ucUART3_flag);
-                g_ucU1TX_Data[0] = FRAME_HEAD;
-                g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                g_ucU1TX_Data[2] = 2;
-                g_ucU1TX_Data[3] = g_ucU3RX_Data[4];
-//                g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
-//                g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
-//                g_ucU1TX_Data[6] = g_ucU3RX_Data[7];
-//                g_ucU1TX_Data[7] = g_ucU3RX_Data[8];
-//                g_ucU1TX_Data[8] = g_ucU3RX_Data[9];
-                for(k = 4;k < g_ucU3RX_Data[4]-2;k++)
-                {
-                    g_ucU1TX_Data[k] = g_ucU3RX_Data[k+1];	
-                } 
-                g_uiFrmLth = g_ucU1TX_Data[3] ;
-                g_ucU1TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);                  
-                for(n = 0;n < g_ucU1TX_Data[3];n++)
-                {
-                    UART1SEND(g_ucU1TX_Data[n]);	
-                }
-                g_ucUART3_flag = 0;
-                g_BUSY3 = 0;                   
-            }else
-            {
-                 break;   
-            }
-        break;  
-//
-//
-//
-//			switch(g_ucU1RX_Data[2]){
-//               case 1: 
-//                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-//                   {
-//						UART2SEND(g_ucU1RX_Data[n]);
-//					}   
-//                    while(!g_ucUART2_flag);
-//                        g_ucU2RX_Data[0] = FRAME_HEAD;
-//                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-//                        g_ucU2RX_Data[2] = 1;
-//                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-//                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-//                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-//                    {
-//                        UART1SEND(g_ucU2RX_Data[n]);	
-//                    }                     
-//                    g_ucUART2_flag = 0;
-//                    g_BUSY2 = 0;                     
-//                    break;                    
-//                case 2:
-//                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-//                    g_ucU3TX_Data[1] = g_ucCMD1;
-//                    g_ucU3TX_Data[2] = 2;
-//                    g_ucU3TX_Data[3] = 0;
-//                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-//                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-//                    g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
-//                    g_ucU3TX_Data[7] = g_ucU1RX_Data[6];
-//                    g_ucU3TX_Data[8] = g_ucU1RX_Data[7];
-//                    g_ucU3TX_Data[9] = g_ucU1RX_Data[8];
-//                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-//                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-//                for(n=0;n<g_ucU3TX_Data[4];n++)
-//                    {
-//						UART3SEND(g_ucU3TX_Data[n]);
-//					}	
-//                    while(!g_ucUART3_flag);
-//
-//                    g_ucU1TX_Data[0] = FRAME_HEAD;
-//                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-//                    g_ucU1TX_Data[2] = 2;
-//                    g_ucU1TX_Data[3] = g_ucU3RX_Data[4];
-//                    for(k = 4;k < g_ucU3RX_Data[4]-2;k++)
-//                    {
-//                        g_ucU1TX_Data[k] = g_ucU3RX_Data[k+1];	
-//                    } 
-//                    g_uiFrmLth = g_ucU1TX_Data[3] ;
-//                    g_ucU1TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);                  
-//                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-//                    {//传递给PC
-//                        UART1SEND(g_ucU1TX_Data[n]);	
-//                    }
-//                    g_ucUART3_flag = 0;
-//                    g_BUSY3 = 0;                              
-//                    break;           
-//            } 
-//            break;
-       /****************************写入EEPROM//移动到孔板位置(NE)(0x12)****************************/ 
-        case WRITE_EEPROM:
-            ulEE_address = g_ucU1RX_Data[4];    //首地址
-            ulEE_address = (ulEE_address << 8) + g_ucU1RX_Data[5]; 
-            ulEE_address = (ulEE_address << 8) + g_ucU1RX_Data[6];
-            if((ulEE_address >= 0x0000 )&&(ulEE_address <= 0x1FFF))
-            {            
-               for(n = 0;n < g_ucU1RX_Data[3];n++)
-               {
-                    UART2SEND(g_ucU1RX_Data[n]);
-                }   
-                while(!g_ucUART2_flag);
-                    g_ucU2RX_Data[0] = FRAME_HEAD;
-                    g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU2RX_Data[2] = 1;
-                    g_uiFrmLth = g_ucU2RX_Data[3] ;
-                    g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                for(n = 0;n < g_ucU2RX_Data[3];n++)
-                {
-                    UART1SEND(g_ucU2RX_Data[n]);	
-                }                     
-                g_ucUART2_flag = 0;
-                g_BUSY2 = 0;                  
-            }else if((ulEE_address >= 0x2000 )&&(ulEE_address <= 0xFFFF))
-            {      
-                g_ucU3TX_Data[0] = FRAME_HEAD1;
-                g_ucU3TX_Data[1] = g_ucCMD1;
-                g_ucU3TX_Data[2] = 0;
-                g_ucU3TX_Data[3] = 0;
-                g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                for(k = 5;k < g_ucU1RX_Data[3];k++)
-                {
-                    g_ucU3TX_Data[k] = g_ucU1RX_Data[k-1];	
-                }                     
-                g_uiFrmLth = g_ucU3TX_Data[4] ;
-                g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-            for(n=0;n<g_ucU3TX_Data[4];n++)
-                {
-                    UART3SEND(g_ucU3TX_Data[n]);
-                }	
-                while(!g_ucUART3_flag);
-
-                g_ucU1TX_Data[0] = FRAME_HEAD;
-                g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                g_ucU1TX_Data[2] = 2;
-                g_ucU1TX_Data[3] = 6;
-                g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                 
-                g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                for(n = 0;n < g_ucU1TX_Data[3];n++)
-                {//传递给PC
-                    UART1SEND(g_ucU1TX_Data[n]);	
-                }
-                g_ucUART3_flag = 0;
-                g_BUSY3 = 0;                   
-            }else
-            {
-                 break;   
-            }
-        break;  
-//
-//
-//
-//			switch(g_ucU1RX_Data[2]){
-//               case 1: 
-//                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-//                   {
-//						UART2SEND(g_ucU1RX_Data[n]);
-//					}   
-//                    while(!g_ucUART2_flag);
-//                        g_ucU2RX_Data[0] = FRAME_HEAD;
-//                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-//                        g_ucU2RX_Data[2] = 1;
-//                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-//                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-//                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-//                    {
-//                        UART1SEND(g_ucU2RX_Data[n]);	
-//                    }                     
-//                    g_ucUART2_flag = 0;
-//                    g_BUSY2 = 0;                     
-//                    break;                    
-//                case 2:
-//                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-//                    g_ucU3TX_Data[1] = g_ucCMD1;
-//                    g_ucU3TX_Data[2] = 2;
-//                    g_ucU3TX_Data[3] = 0;
-//                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-//                    for(k = 5;k < g_ucU1RX_Data[3];k++)
-//                    {
-//                        g_ucU3TX_Data[k] = g_ucU1RX_Data[k-1];	
-//                    }                     
-//                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-//                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-//                for(n=0;n<g_ucU3TX_Data[4];n++)
-//                    {	
-//						UART3SEND(g_ucU3TX_Data[n]);
-//					}	
-//                    while(!g_ucUART3_flag);
-//
-//                    g_ucU1TX_Data[0] = FRAME_HEAD;
-//                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-//                    g_ucU1TX_Data[2] = 2;
-//                    g_ucU1TX_Data[3] = 6;
-//                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                 
-//                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-//                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-//                    {
-//                        UART1SEND(g_ucU1TX_Data[n]);	
-//                    }
-//                    g_ucUART3_flag = 0;
-//                    g_BUSY3 = 0;                              
-//                    break;                  
-//            } 
-//            break;
-       /***************************(0x13)****************************/ 
-        case READ_FLASH:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;              
-            } 
-            break;
-       /************************(0x14)****************************/ 
-        case WRITE_FLISH:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;              
-            } 
-            break;
-       /**************************** (0x15)****************************/ 
-        case PCR_RDSENSOR:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;              
-            } 
-            break;
-       /****************************(0x17)****************************/ 
-        case GET_MPPCAD:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;               
-            } 
-            break;
-       /****************************(0x18)****************************/ 
-        case PCR_RDADC:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;               
-            } 
-            break;
-       /**************************(0x19)****************************/ 
-        case PCR_GLDQ:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /***************************(0x1A)****************************/ 
-        case PCR_START:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /***************************(0x1B)****************************/ 
-        case PCR_STOP:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /***************************(0x1C)****************************/ 
-        case PCR_FAN:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /****************************(0x1E)****************************/ 
-        case PCR_IO:
-			switch(g_ucU1RX_Data[2]){
-               case 0:           
-
-					g_uiFrmLth = 6;                                        
-					g_ucU1TX_Data[0] = FRAME_HEAD;
-					g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-					g_ucU1TX_Data[2] = 0;
-					g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;                               
-					g_ucU1TX_Data[4] = 0;                                    
-					g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);    	            
-					for(n=0;n<g_ucU1TX_Data[3];n++)
-                    {	
-						UART1SEND(g_ucU1TX_Data[n]);
-					}
-                    Delay_ms(500);
-                    if(g_ucU1RX_Data[4] == 253){//屏幕连接
-                        _RP10R = 0;
-                        _RP1R= 3;
-                        RPINR18bits.U1RXR = 48;    //串口输入映射 触摸屏连接
-                        InitUart1();
-                    }
-                    else if(g_ucU1RX_Data[4] == 252){//  PC连接
-                        _RP1R= 0;
-                        _RP10R = 3;
-                        RPINR18bits.U1RXR = 17;    //串口输入映射 PC机器连接  
-                        InitUart1();
-                    }else{}                     
-					break;                                      
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /************************(0xE0)****************************/ 
-        case GET_IO:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /****************************(0x25)****************************/ 
-        case PCR_TUBEMODE:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /***************************(0x26)****************************/ 
-        case PCR_INBOX:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /**************************** (0x27)****************************/ 
-        case PCR_OUTBOX:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;         
-       /****************************(0x28)****************************/ 
-        case PCR_STATEBIT:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break; 			
-       /****************************(0x31)****************************/ 
-        case SET_PWM:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;  
-       /***************************(0x32)****************************/ 
-        case GET_PWM:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;
-       /***************************(0x41)****************************/ 
-        case PCR_CHIP:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /****************************(0x42)****************************/ 
-        case PCR_RDCURTEMP:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /****************************(0x43)****************************/ 
-        case PCR_TEMP:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /****************************(0x44)****************************/ 
-        case QC_Data:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /****************************(0x66)****************************/ 
-        case BT_Protocol:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /***************************(0x77)****************************/ 
-        case ADGET:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /***************************(0xFE)****************************/ 
-        case RD_ALLDATAMAX:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {	
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-            break;
-       /***************************(0xFF)****************************/ 
-        case RD_PCRALLDATA:
-			switch(g_ucU1RX_Data[2]){
-               case 1: 
-                   for(n = 0;n < g_ucU1RX_Data[3];n++)
-                   {
-						UART2SEND(g_ucU1RX_Data[n]);
-					}   
-                    while(!g_ucUART2_flag);
-                        g_ucU2RX_Data[0] = FRAME_HEAD;
-                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
-                        g_ucU2RX_Data[2] = 1;
-                        g_uiFrmLth = g_ucU2RX_Data[3] ;
-                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
-                    for(n = 0;n < g_ucU2RX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU2RX_Data[n]);	
-                    }                     
-                        g_ucUART2_flag = 0;
-                        g_BUSY2 = 0;                     
-                    break;                    
-            } 
-        break;
-       /***************************(0xc0)****************************/ 
-        case READ_EEPROM1:
-			switch(g_ucU1RX_Data[2]){
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;     		                                    
-            } 
-        break;          
-       /*************************(0xD0)****************************/ 
-        case WRITE_EEPROM1:
-			switch(g_ucU1RX_Data[2]){
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                                                                                                         
-            } 
-        break;    
-       /****************************(0x16)****************************/ 
-        case cleaning:
-			switch(g_ucU1RX_Data[2]){                  
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;  
-       /***************************(0x22)****************************/ 
-        case READ_SET_Temperature:
-			switch(g_ucU1RX_Data[2]){                  
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 8;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5]; 
-                    g_ucU1TX_Data[5] = g_ucU3RX_Data[6]; 
-                    g_ucU1TX_Data[6] = 0; 
-                    g_ucU1TX_Data[7] = (unsigned char)Check(g_ucU1TX_Data,7);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;      
-       /***************************(0xAB)****************************/ 
-        case MCU_RESET:
-			switch(g_ucU1RX_Data[2]){                  
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5]; 
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;    
-       /***************************(0xAC)****************************/ 
-        case SET_IO:
-			switch(g_ucU1RX_Data[2]){                  
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = 0; 
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;    
-       /**************************(0x21)****************************/ 
-        case GET_TemperatureAD:
-			switch(g_ucU1RX_Data[2]){                  
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 8;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5]; 
-                    g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
-                    g_ucU1TX_Data[6] = g_ucU3RX_Data[7];
-                    g_ucU1TX_Data[7] = (unsigned char)Check(g_ucU1TX_Data,7);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;      
-       /**************************(0x30)****************************/ 
-        case qu_ci_zhu:
-			switch(g_ucU1RX_Data[2]){                  
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;        
-       /****************************(0x3A)****************************/ 
-        case pause:
-			switch(g_ucU1RX_Data[2]){                  
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;      
-       /***************************(0x3B)****************************/ 
-        case run_after_pause:
-			switch(g_ucU1RX_Data[2]){                  
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;   
-       /****************************(0x3C)****************************/ 
-        case set_time:
-			switch(g_ucU1RX_Data[2]){                  
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;   
-       /****************************(0x3D)****************************/ 
-        case real_time:
-			switch(g_ucU1RX_Data[2]){                  
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;   
-       /***************************(0x3e)****************************/ 
-        case CI_xici:
-			switch(g_ucU1RX_Data[2]){                  
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;   
-       /***************************(0x3F)****************************/ 
-        case Z_dibu:
-			switch(g_ucU1RX_Data[2]){                  
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 6;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];                
-                    g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,5);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break;  
-       /***************************(0x40)****************************/ 
-        case Z_volume:
-			switch(g_ucU1RX_Data[2]){                  
-		    case 2:
-                    g_ucU3TX_Data[0] = FRAME_HEAD1;
-                    g_ucU3TX_Data[1] = g_ucCMD1;
-                    g_ucU3TX_Data[2] = 2;
-                    g_ucU3TX_Data[3] = 0;
-                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
-                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
-                    g_ucU3TX_Data[6] = g_ucU1RX_Data[5];               
-                    g_uiFrmLth = g_ucU3TX_Data[4] ;
-                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
-                for(n=0;n<g_ucU3TX_Data[4];n++)
-                    {
-						UART3SEND(g_ucU3TX_Data[n]);
-					}	
-                    while(!g_ucUART3_flag);
-
-                    g_ucU1TX_Data[0] = FRAME_HEAD;
-                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
-                    g_ucU1TX_Data[2] = 2;
-                    g_ucU1TX_Data[3] = 7;
-                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
-                    g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
-                    g_ucU1TX_Data[6] = (unsigned char)Check(g_ucU1TX_Data,6);                  
-                    for(n = 0;n < g_ucU1TX_Data[3];n++)
-                    {
-                        UART1SEND(g_ucU1TX_Data[n]);	
-                    }
-                    g_ucUART3_flag = 0;
-                    g_BUSY3 = 0;                              
-                    break;                 
-            } 
-            break; 
-
-
-}	        
-    g_ucUART1_flag  = 0;
-    g_uiUart1_No    = 0;  
-    g_ucHeaderFlag1 = 0;       
-    memset(g_ucU1RX_Data,0,g_uiLth1*sizeof(unsigned char));   
-    g_BUSY1 = 0;     
+void Uart1_Ack(void) {
+  unsigned int g_uiFrmLth;
+
+  unsigned int n = 0;
+  unsigned char k = 0;
+
+  unsigned char Flag_STATUS = 0;
+
+  switch (g_ucCMD1) {
+  /***************************(0x01)****************************/
+  case HELLO:
+    switch (g_ucU1RX_Data[2]) {
+    case 0:
+      g_uiFrmLth = 6;
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 0;
+      g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+      g_ucU1TX_Data[4] = Flag_STATUS;
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      break;
+
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1; // 6
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 5;
+      g_ucU1TX_Data[4] = (unsigned char)Check(g_ucU1TX_Data, 4);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    case 3:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART4SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART4_flag)
+        ;
+      g_ucU4RX_Data[0] = FRAME_HEAD;
+      g_ucU4RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU4RX_Data[2] = 3;
+      g_uiFrmLth = g_ucU4RX_Data[3];
+      g_ucU4RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU4RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU4RX_Data[3]; n++) {
+        UART1SEND(g_ucU4RX_Data[n]);
+      }
+      g_ucUART4_flag = 0;
+      g_BUSY4 = 0;
+      break;
+    case 4:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART5SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART5_flag)
+        ;
+      g_ucU5RX_Data[0] = FRAME_HEAD;
+      g_ucU5RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU5RX_Data[2] = 4;
+      g_uiFrmLth = g_ucU5RX_Data[3];
+      g_ucU5RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU5RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU5RX_Data[3]; n++) {
+        UART1SEND(g_ucU5RX_Data[n]);
+      }
+      g_ucUART5_flag = 0;
+      g_BUSY5 = 0;
+      break;
+    case 5:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART6SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART6_flag)
+        ;
+      g_ucU6RX_Data[0] = FRAME_HEAD;
+      g_ucU6RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU6RX_Data[2] = 5;
+      g_uiFrmLth = g_ucU6RX_Data[3];
+      g_ucU6RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU6RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU6RX_Data[3]; n++) {
+        UART1SEND(g_ucU6RX_Data[n]);
+      }
+      g_ucUART6_flag = 0;
+      g_BUSY6 = 0;
+      break;
     }
-  
+    break;
+  /**************************(0x02)****************************/
+  case PCR_SYSRST:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = 0;
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+  /**************************(0x03)****************************/
+  case PCR_SELFTEST:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = 0;
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+  /***************************(0x04)****************************/
+  case PCR_DEV:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
+      g_ucU3TX_Data[7] = g_ucU1RX_Data[6];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 7;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
+      g_ucU1TX_Data[6] = (unsigned char)Check(g_ucU1TX_Data, 6);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+  /****************************(0x05)****************************/
+  case PCR_STATUS:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 8;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
+      g_ucU1TX_Data[6] = 0;
+      g_ucU1TX_Data[7] = (unsigned char)Check(g_ucU1TX_Data, 7);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+  /****************************(0x06)****************************/
+  case SET_Temperature:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 7;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = 0;
+      g_ucU1TX_Data[6] = (unsigned char)Check(g_ucU1TX_Data, 6);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+  /***************************(0x78)****************************/
+  case SET_ZLTemperature:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+  /*************************** (0x07)****************************/
+  case PCR_MOTOR:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 10;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
+      g_ucU1TX_Data[6] = g_ucU3RX_Data[7];
+      g_ucU1TX_Data[7] = g_ucU3RX_Data[8];
+      g_ucU1TX_Data[8] = g_ucU3RX_Data[9];
+      g_ucU1TX_Data[9] = (unsigned char)Check(g_ucU1TX_Data, 9);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+  /*************************** (0x08)****************************/
+  case PCR_LEDCTRL:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 9;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
+      g_ucU1TX_Data[6] = g_ucU3RX_Data[7];
+      g_ucU1TX_Data[7] = g_ucU3RX_Data[8];
+      g_ucU1TX_Data[8] = (unsigned char)Check(g_ucU1TX_Data, 8);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+  /***************************  (0x09)****************************/
+  case PCR_RDTEMP:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+  /**************************** (0x0A)****************************/
+  case PCR_SETCAP:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
+      g_ucU3TX_Data[7] = g_ucU1RX_Data[6];
+      g_ucU3TX_Data[8] = g_ucU1RX_Data[7];
+      g_ucU3TX_Data[9] = g_ucU1RX_Data[8];
+      g_ucU3TX_Data[10] = g_ucU1RX_Data[9];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = 0;
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+  /***************************(0x0B)****************************/
+  case PCR_AUXER:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
+      g_ucU3TX_Data[7] = g_ucU1RX_Data[6];
+      g_ucU3TX_Data[8] = g_ucU1RX_Data[7];
+      g_ucU3TX_Data[9] = g_ucU1RX_Data[8];
+      g_ucU3TX_Data[10] = g_ucU1RX_Data[9];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = 0;
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /*************************** (0x0C)****************************/
+  case RD_PCRDATA:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
+      g_ucU3TX_Data[7] = g_ucU1RX_Data[6];
+      g_ucU3TX_Data[8] = g_ucU1RX_Data[7];
+      g_ucU3TX_Data[9] = g_ucU1RX_Data[8];
+      g_ucU3TX_Data[10] = g_ucU1RX_Data[9];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /**************************(0x0d)****************************/
+  case PCR_PMT:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /****************************(0x0e)****************************/
+  case PCR_GAIN:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /****************************(0x0f)****************************/
+  case PCR_STALED:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /**************************** (0x10)****************************/
+  case PCR_RTPCREMP:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /**************************(0x11)****************************/
+  case READ_EEPROM:
+    ulEE_address = g_ucU1RX_Data[4]; // EEPROM的首地址
+    ulEE_address = (ulEE_address << 8) + g_ucU1RX_Data[5];
+    ulEE_address = (ulEE_address << 8) + g_ucU1RX_Data[6];
+    if ((ulEE_address >= 0x0000) && (ulEE_address <= 0x1FFF)) {
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+    } else if ((ulEE_address >= 0x2000) && (ulEE_address <= 0xFFFF)) {
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 0;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
+      g_ucU3TX_Data[7] = g_ucU1RX_Data[6];
+      g_ucU3TX_Data[8] = g_ucU1RX_Data[7];
+      g_ucU3TX_Data[9] = g_ucU1RX_Data[8];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = g_ucU3RX_Data[4];
+      //                g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      //                g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
+      //                g_ucU1TX_Data[6] = g_ucU3RX_Data[7];
+      //                g_ucU1TX_Data[7] = g_ucU3RX_Data[8];
+      //                g_ucU1TX_Data[8] = g_ucU3RX_Data[9];
+      for (k = 4; k < g_ucU3RX_Data[4] - 2; k++) {
+        g_ucU1TX_Data[k] = g_ucU3RX_Data[k + 1];
+      }
+      g_uiFrmLth = g_ucU1TX_Data[3];
+      g_ucU1TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU1TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+    } else {
+      break;
+    }
+    break;
+    //
+    //
+    //
+    //			switch(g_ucU1RX_Data[2]){
+    //               case 1:
+    //                   for(n = 0;n < g_ucU1RX_Data[3];n++)
+    //                   {
+    //						UART2SEND(g_ucU1RX_Data[n]);
+    //					}
+    //                    while(!g_ucUART2_flag);
+    //                        g_ucU2RX_Data[0] = FRAME_HEAD;
+    //                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
+    //                        g_ucU2RX_Data[2] = 1;
+    //                        g_uiFrmLth = g_ucU2RX_Data[3] ;
+    //                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned
+    //                        char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
+    //                    for(n = 0;n < g_ucU2RX_Data[3];n++)
+    //                    {
+    //                        UART1SEND(g_ucU2RX_Data[n]);
+    //                    }
+    //                    g_ucUART2_flag = 0;
+    //                    g_BUSY2 = 0;
+    //                    break;
+    //                case 2:
+    //                    g_ucU3TX_Data[0] = FRAME_HEAD1;
+    //                    g_ucU3TX_Data[1] = g_ucCMD1;
+    //                    g_ucU3TX_Data[2] = 2;
+    //                    g_ucU3TX_Data[3] = 0;
+    //                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
+    //                    g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+    //                    g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
+    //                    g_ucU3TX_Data[7] = g_ucU1RX_Data[6];
+    //                    g_ucU3TX_Data[8] = g_ucU1RX_Data[7];
+    //                    g_ucU3TX_Data[9] = g_ucU1RX_Data[8];
+    //                    g_uiFrmLth = g_ucU3TX_Data[4] ;
+    //                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned
+    //                    char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
+    //                for(n=0;n<g_ucU3TX_Data[4];n++)
+    //                    {
+    //						UART3SEND(g_ucU3TX_Data[n]);
+    //					}
+    //                    while(!g_ucUART3_flag);
+    //
+    //                    g_ucU1TX_Data[0] = FRAME_HEAD;
+    //                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+    //                    g_ucU1TX_Data[2] = 2;
+    //                    g_ucU1TX_Data[3] = g_ucU3RX_Data[4];
+    //                    for(k = 4;k < g_ucU3RX_Data[4]-2;k++)
+    //                    {
+    //                        g_ucU1TX_Data[k] = g_ucU3RX_Data[k+1];
+    //                    }
+    //                    g_uiFrmLth = g_ucU1TX_Data[3] ;
+    //                    g_ucU1TX_Data[g_uiFrmLth-1] = (unsigned
+    //                    char)Check(g_ucU1TX_Data,g_uiFrmLth-1); for(n = 0;n <
+    //                    g_ucU1TX_Data[3];n++)
+    //                    {//传递给PC
+    //                        UART1SEND(g_ucU1TX_Data[n]);
+    //                    }
+    //                    g_ucUART3_flag = 0;
+    //                    g_BUSY3 = 0;
+    //                    break;
+    //            }
+    //            break;
+    /****************************写入EEPROM//移动到孔板位置(NE)(0x12)****************************/
+  case WRITE_EEPROM:
+    ulEE_address = g_ucU1RX_Data[4]; //首地址
+    ulEE_address = (ulEE_address << 8) + g_ucU1RX_Data[5];
+    ulEE_address = (ulEE_address << 8) + g_ucU1RX_Data[6];
+    if ((ulEE_address >= 0x0000) && (ulEE_address <= 0x1FFF)) {
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+    } else if ((ulEE_address >= 0x2000) && (ulEE_address <= 0xFFFF)) {
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 0;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      for (k = 5; k < g_ucU1RX_Data[3]; k++) {
+        g_ucU3TX_Data[k] = g_ucU1RX_Data[k - 1];
+      }
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) { //传递给PC
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+    } else {
+      break;
+    }
+    break;
+    //
+    //
+    //
+    //			switch(g_ucU1RX_Data[2]){
+    //               case 1:
+    //                   for(n = 0;n < g_ucU1RX_Data[3];n++)
+    //                   {
+    //						UART2SEND(g_ucU1RX_Data[n]);
+    //					}
+    //                    while(!g_ucUART2_flag);
+    //                        g_ucU2RX_Data[0] = FRAME_HEAD;
+    //                        g_ucU2RX_Data[1] = g_ucCMD1|0X80;
+    //                        g_ucU2RX_Data[2] = 1;
+    //                        g_uiFrmLth = g_ucU2RX_Data[3] ;
+    //                        g_ucU2RX_Data[g_uiFrmLth-1] = (unsigned
+    //                        char)Check(g_ucU2RX_Data,g_uiFrmLth-1);
+    //                    for(n = 0;n < g_ucU2RX_Data[3];n++)
+    //                    {
+    //                        UART1SEND(g_ucU2RX_Data[n]);
+    //                    }
+    //                    g_ucUART2_flag = 0;
+    //                    g_BUSY2 = 0;
+    //                    break;
+    //                case 2:
+    //                    g_ucU3TX_Data[0] = FRAME_HEAD1;
+    //                    g_ucU3TX_Data[1] = g_ucCMD1;
+    //                    g_ucU3TX_Data[2] = 2;
+    //                    g_ucU3TX_Data[3] = 0;
+    //                    g_ucU3TX_Data[4] = g_ucU1RX_Data[3]+1;
+    //                    for(k = 5;k < g_ucU1RX_Data[3];k++)
+    //                    {
+    //                        g_ucU3TX_Data[k] = g_ucU1RX_Data[k-1];
+    //                    }
+    //                    g_uiFrmLth = g_ucU3TX_Data[4] ;
+    //                    g_ucU3TX_Data[g_uiFrmLth-1] = (unsigned
+    //                    char)Check(g_ucU3TX_Data,g_uiFrmLth-1);
+    //                for(n=0;n<g_ucU3TX_Data[4];n++)
+    //                    {
+    //						UART3SEND(g_ucU3TX_Data[n]);
+    //					}
+    //                    while(!g_ucUART3_flag);
+    //
+    //                    g_ucU1TX_Data[0] = FRAME_HEAD;
+    //                    g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+    //                    g_ucU1TX_Data[2] = 2;
+    //                    g_ucU1TX_Data[3] = 6;
+    //                    g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+    //                    g_ucU1TX_Data[5] = (unsigned
+    //                    char)Check(g_ucU1TX_Data,5); for(n = 0;n <
+    //                    g_ucU1TX_Data[3];n++)
+    //                    {
+    //                        UART1SEND(g_ucU1TX_Data[n]);
+    //                    }
+    //                    g_ucUART3_flag = 0;
+    //                    g_BUSY3 = 0;
+    //                    break;
+    //            }
+    //            break;
+    /***************************(0x13)****************************/
+  case READ_FLASH:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /************************(0x14)****************************/
+  case WRITE_FLISH:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /**************************** (0x15)****************************/
+  case PCR_RDSENSOR:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /****************************(0x17)****************************/
+  case GET_MPPCAD:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /****************************(0x18)****************************/
+  case PCR_RDADC:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /**************************(0x19)****************************/
+  case PCR_GLDQ:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /***************************(0x1A)****************************/
+  case PCR_START:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /***************************(0x1B)****************************/
+  case PCR_STOP:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /***************************(0x1C)****************************/
+  case PCR_FAN:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /****************************(0x1E)****************************/
+  case PCR_IO:
+    switch (g_ucU1RX_Data[2]) {
+    case 0:
+
+      g_uiFrmLth = 6;
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 0;
+      g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+      g_ucU1TX_Data[4] = 0;
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      Delay_ms(500);
+      if (g_ucU1RX_Data[4] == 253) { //屏幕连接
+        _RP10R = 0;
+        _RP1R = 3;
+        RPINR18bits.U1RXR = 48; //串口输入映射 触摸屏连接
+        InitUart1();
+      } else if (g_ucU1RX_Data[4] == 252) { //  PC连接
+        _RP1R = 0;
+        _RP10R = 3;
+        RPINR18bits.U1RXR = 17; //串口输入映射 PC机器连接
+        InitUart1();
+      } else {
+      }
+      break;
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /************************(0xE0)****************************/
+  case GET_IO:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /****************************(0x25)****************************/
+  case PCR_TUBEMODE:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /***************************(0x26)****************************/
+  case PCR_INBOX:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /**************************** (0x27)****************************/
+  case PCR_OUTBOX:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /****************************(0x28)****************************/
+  case PCR_STATEBIT:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /****************************(0x31)****************************/
+  case SET_PWM:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /***************************(0x32)****************************/
+  case GET_PWM:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /***************************(0x41)****************************/
+  case PCR_CHIP:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /****************************(0x42)****************************/
+  case PCR_RDCURTEMP:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /****************************(0x43)****************************/
+  case PCR_TEMP:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /****************************(0x44)****************************/
+  case QC_Data:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /****************************(0x66)****************************/
+  case BT_Protocol:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /***************************(0x77)****************************/
+  case ADGET:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /***************************(0xFE)****************************/
+  case RD_ALLDATAMAX:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /***************************(0xFF)****************************/
+  case RD_PCRALLDATA:
+    switch (g_ucU1RX_Data[2]) {
+    case 1:
+      for (n = 0; n < g_ucU1RX_Data[3]; n++) {
+        UART2SEND(g_ucU1RX_Data[n]);
+      }
+      while (!g_ucUART2_flag)
+        ;
+      g_ucU2RX_Data[0] = FRAME_HEAD;
+      g_ucU2RX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU2RX_Data[2] = 1;
+      g_uiFrmLth = g_ucU2RX_Data[3];
+      g_ucU2RX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU2RX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU2RX_Data[3]; n++) {
+        UART1SEND(g_ucU2RX_Data[n]);
+      }
+      g_ucUART2_flag = 0;
+      g_BUSY2 = 0;
+      break;
+    }
+    break;
+    /***************************(0xc0)****************************/
+  case READ_EEPROM1:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
 
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /*************************(0xD0)****************************/
+  case WRITE_EEPROM1:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /****************************(0x16)****************************/
+  case cleaning:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /***************************(0x22)****************************/
+  case READ_SET_Temperature:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 8;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
+      g_ucU1TX_Data[6] = 0;
+      g_ucU1TX_Data[7] = (unsigned char)Check(g_ucU1TX_Data, 7);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /***************************(0xAB)****************************/
+  case MCU_RESET:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /***************************(0xAC)****************************/
+  case SET_IO:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = 0;
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /**************************(0x21)****************************/
+  case GET_TemperatureAD:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 8;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
+      g_ucU1TX_Data[6] = g_ucU3RX_Data[7];
+      g_ucU1TX_Data[7] = (unsigned char)Check(g_ucU1TX_Data, 7);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /**************************(0x30)****************************/
+  case qu_ci_zhu:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
 
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /****************************(0x3A)****************************/
+  case pause:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /***************************(0x3B)****************************/
+  case run_after_pause:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /****************************(0x3C)****************************/
+  case set_time:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /****************************(0x3D)****************************/
+  case real_time:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /***************************(0x3e)****************************/
+  case CI_xici:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /***************************(0x3F)****************************/
+  case Z_dibu:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 6;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data, 5);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+    /***************************(0x40)****************************/
+  case Z_volume:
+    switch (g_ucU1RX_Data[2]) {
+    case 2:
+      g_ucU3TX_Data[0] = FRAME_HEAD1;
+      g_ucU3TX_Data[1] = g_ucCMD1;
+      g_ucU3TX_Data[2] = 2;
+      g_ucU3TX_Data[3] = 0;
+      g_ucU3TX_Data[4] = g_ucU1RX_Data[3] + 1;
+      g_ucU3TX_Data[5] = g_ucU1RX_Data[4];
+      g_ucU3TX_Data[6] = g_ucU1RX_Data[5];
+      g_uiFrmLth = g_ucU3TX_Data[4];
+      g_ucU3TX_Data[g_uiFrmLth - 1] =
+          (unsigned char)Check(g_ucU3TX_Data, g_uiFrmLth - 1);
+      for (n = 0; n < g_ucU3TX_Data[4]; n++) {
+        UART3SEND(g_ucU3TX_Data[n]);
+      }
+      while (!g_ucUART3_flag)
+        ;
+
+      g_ucU1TX_Data[0] = FRAME_HEAD;
+      g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+      g_ucU1TX_Data[2] = 2;
+      g_ucU1TX_Data[3] = 7;
+      g_ucU1TX_Data[4] = g_ucU3RX_Data[5];
+      g_ucU1TX_Data[5] = g_ucU3RX_Data[6];
+      g_ucU1TX_Data[6] = (unsigned char)Check(g_ucU1TX_Data, 6);
+      for (n = 0; n < g_ucU1TX_Data[3]; n++) {
+        UART1SEND(g_ucU1TX_Data[n]);
+      }
+      g_ucUART3_flag = 0;
+      g_BUSY3 = 0;
+      break;
+    }
+    break;
+  }
+  g_ucUART1_flag = 0;
+  g_uiUart1_No = 0;
+  g_ucHeaderFlag1 = 0;
+  memset(g_ucU1RX_Data, 0, g_uiLth1 * sizeof(unsigned char));
+  g_BUSY1 = 0;
+}

+ 48 - 8
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Uart.h

@@ -7,6 +7,17 @@
 #define EXTERN_UART extern
 #endif
 
+
+#define     MAX_UART_BUFFER_SIZE	                 256//握手指令(NE)
+
+#define ALPS_HEADER_FALG 0x5E
+#define ALPS_TAIL_FALG 0x5A
+#define ALPS_MASSAGE_MIN_SIZE  5
+
+
+
+
+
 /*****************指令码*******************/
 #define     HELLO	                 0x01//握手指令(NE)
 #define     PCR_SYSRST               0x02
@@ -105,6 +116,31 @@
 #define     ZLENTH1                  134
 #define     ZLENTH2                  198
 
+typedef enum _EnmErrCode {
+    EnmErrCode_errNo = 0,
+    EnmErrCode_errsensor1 = 1,
+    EnmErrCode_errsensor2 = 2,
+    EnmErrCode_errsensor3 = 3,
+    EnmErrCode_errNearHigh = 4,
+    EnmErrCode_errHigh = 5,
+    EnmErrCode_errNearLow = 6,
+    EnmErrCode_errLow = 7,
+    EnmErrCode_errPart1offline = 8,
+    EnmErrCode_errPart2offline = 9,
+    EnmErrCode_errPart3offline = 10,
+    EnmErrCode_errPart4offline = 11,
+    EnmErrCode_errPart1fault = 12,
+    EnmErrCode_errPart2fault = 13,
+    EnmErrCode_errPart3fault = 14,
+    EnmErrCode_errPart4fault = 15,
+    EnmErrCode_errPara1 = 16,
+    EnmErrCode_errPara2 = 17,
+    EnmErrCode_errTimeOut = 34,
+    EnmErrCode_errPreWork = 35,
+    EnmErrCode_errPreCheck = 36,
+    EnmErrCode_err_res_need_ans = 100000,
+    EnmErrCode_errbusy = 100001
+} EnmErrCode;
 
 
 //芯片检测
@@ -155,10 +191,12 @@ struct BT{
 };
 
 
+EXTERN_UART unsigned int g_CmdFrom_UartNum;
 
 EXTERN_UART unsigned char g_ucCMD1,Get_IOstate,g_ucCMD2,g_ucCMD3,g_ucCMD4,g_ucCMD5,g_ucCMD6;
 EXTERN_UART unsigned char g_ucUART1_flag,g_ucUART2_flag,g_ucUART3_flag,g_ucUART4_flag,g_ucUART5_flag,g_ucUART6_flag;
-EXTERN_UART unsigned char g_ucU1RX_Data[255],g_ucU2RX_Data[255],g_ucU3RX_Data[255],g_ucU4RX_Data[255],g_ucU5RX_Data[255],g_ucU6RX_Data[255];
+EXTERN_UART unsigned char g_ucU1RX_Data[512],g_ucU2RX_Data[512],g_ucU3RX_Data[512],g_ucU4RX_Data[512],g_ucU5RX_Data[512],g_ucU6RX_Data[512];
+EXTERN_UART unsigned char g_ucU1RX_Buf[512],g_ucU4RX_Buf[512];
 EXTERN_UART unsigned char g_uiUart1_No,g_uiUart2_No,g_uiUart3_No,g_uiUart4_No,g_uiUart5_No,g_uiUart6_No;
 EXTERN_UART unsigned char g_BUSY1,g_BUSY2,g_BUSY3,g_BUSY4,g_BUSY5,g_BUSY6;
 EXTERN_UART unsigned char g_ucHeaderFlag1,g_ucHeaderFlag2,g_ucHeaderFlag3,g_ucHeaderFlag4,g_ucHeaderFlag5,g_ucHeaderFlag6;
@@ -191,13 +229,13 @@ EXTERN_UART unsigned int FRN;
 
 EXTERN_UART unsigned int Alldata_Max[2000];
 
-EXTERN_UART unsigned char g_ucU1TX_Data[500] __attribute__((eds));
-EXTERN_UART unsigned char g_ucU2TX_Data[500] __attribute__((eds));
-EXTERN_UART unsigned char g_ucU3TX_Data[500] __attribute__((eds));
-EXTERN_UART unsigned char g_ucU4TX_Data[500] __attribute__((eds));
-EXTERN_UART unsigned char g_ucU5TX_Data[500] __attribute__((eds));
-EXTERN_UART unsigned char g_ucU6TX_Data[500] __attribute__((eds));
-EXTERN_UART unsigned int ucBuffer_Data[7000] __attribute__((eds));
+EXTERN_UART unsigned char g_ucU1TX_Data[512] __attribute__((eds));
+EXTERN_UART unsigned char g_ucU2TX_Data[512] __attribute__((eds));
+EXTERN_UART unsigned char g_ucU3TX_Data[512] __attribute__((eds));
+EXTERN_UART unsigned char g_ucU4TX_Data[512] __attribute__((eds));
+EXTERN_UART unsigned char g_ucU5TX_Data[512] __attribute__((eds));
+EXTERN_UART unsigned char g_ucU6TX_Data[512] __attribute__((eds));
+//EXTERN_UART unsigned int ucBuffer_Data[7000] __attribute__((eds));
  /****eeprom变量定义*****/
 EXTERN_UART unsigned long int uiEE_address;
 EXTERN_UART unsigned char GlobalTmp,GlobalNum1,jsbl;
@@ -218,8 +256,10 @@ void InitUart5(void);
 void InitUart6(void);
 
 void UART1SEND(char data);
+void UART1SendDma(unsigned char *txData, unsigned int len);
 unsigned int Check(unsigned char *p,unsigned char num);
 void Uart1_Ack(void);
+void Uart1_Ack_new(void);
 
 #endif	/* XC_HEADER_TEMPLATE_H */
 

+ 62 - 2
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/main.c

@@ -144,11 +144,56 @@
 #include <xc.h>
 #include <p24FJ512GU410.h>
 
+#define  STU PORTGbits.RG9 
 
 #include"User.h"
+
 /*******************************************************************************
  * 函数名称:InitOsc
  *******************************************************************************/
+
+// 假设系统时钟为40MHz(经PLL4X后)
+#define FCY 20000000UL  // 指令周期频率 = Fosc/2
+#define TIMER1_PRESCALER 256 
+#define TIMER1_PERIOD (FCY * 0.01 / TIMER1_PRESCALER - 1)
+unsigned int secondFlag;
+unsigned int ms10_conter=0;
+
+void dmaInit(void) {
+	DMACONbits.DMAEN = 1;//Enable DMA
+	DMACONbits.PRSSEL = 0;//Used Fixed Priority Scheme
+	DMAL = 0x0000;//Set the DMA range. Allow operation on all memory
+	DMAH = 0xFFFF;
+}
+
+
+void Timer1_Init(void) {
+    T1CONbits.TON = 0;      // 先关闭定时器
+    T1CONbits.TCKPS = 0b11; // 预分频比1:256 (11)
+    T1CONbits.TCS = 0;      // 使用内部时钟源 
+    PR1 = TIMER1_PERIOD;    // 10ms周期计算值(15624)
+    
+    IFS0bits.T1IF = 0;      // 清除中断标志 
+    IEC0bits.T1IE = 1;      // 使能定时器中断 
+    IPC0bits.T1IP = 4;      // 中断优先级4 
+    T1CONbits.TON = 1;      // 启动定时器 
+}
+
+void __attribute__((interrupt, auto_psv)) _T1Interrupt(void) {
+    IFS0bits.T1IF = 0;      // 必须手动清除标志位
+    
+    // 用户代码区(10ms任务)
+    static uint16_t counter = 0;
+	ms10_conter++;
+	unPack_Cmd();
+    if(++counter >= 100) {  // 1秒计时 
+        counter = 0;
+		secondFlag = 1;
+        // 添加秒级任务 
+    }
+}
+
+
 int main(void){
 //    InitOsc();
 	unsigned char data;
@@ -156,18 +201,33 @@ int main(void){
     LATBbits.LATB9 = 0;
     Delay_ms(3000);
     LATBbits.LATB9 = 1;
+	dmaInit();
 	InitUart1();//√
     InitUart2();//√
     InitUart3();//√
     InitUart4();//√
     InitUart5();//√
     InitUart6();//√	
+    Timer1_Init();
 	data=1;
  	while(1){
+		if(secondFlag){
+			secondFlag = 0;
+			 STU = !STU;     
+//		if(STU){
+//			g_CmdFrom_UartNum = 1;
+//			UART1SendDma("dma send test\n\r",sizeof("dma send test\n\r"));
+//		}else{
+//			g_CmdFrom_UartNum = 4;
+//			UART1SendDma("dma send test\n\r",sizeof("dma send test\n\r"));
+//		}
+			
+			 
+		}
 
 		if(g_ucUART1_flag == 1){  
-            Uart1_Ack();      
-
+//            Uart1_Ack();      
+			Uart1_Ack_new();
 					
 				}
 				

+ 4 - 4
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/nbproject/Makefile-genesis.properties

@@ -1,10 +1,10 @@
 #
-#Tue Aug 05 18:50:47 CST 2025
+#Thu Sep 25 09:14:40 CST 2025
 default.languagetoolchain.version=2.10
-default.Pack.dfplocation=C\:\\Program Files\\Microchip\\MPLABX\\v6.15\\packs\\Microchip\\PIC24F-GL-GU_DFP\\1.5.121
+default.Pack.dfplocation=D\:\\Program Files\\Microchip\\MPLABX\\v6.15\\packs\\Microchip\\PIC24F-GL-GU_DFP\\1.5.121
 conf.ids=default
-default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc16\\v2.10\\bin
-host.id=1lj1-c7wd-qs
+default.languagetoolchain.dir=D\:\\Program Files\\Microchip\\xc16\\v2.10\\bin
+host.id=1707-dsfu-bg
 configurations-xml=1f28628db205b0a44b9f93256c4983ee
 default.com-microchip-mplab-mdbcore-PICKit3Tool-PICkit3DbgToolManager.md5=50072f33d27b72924000ca2dca4b7622
 com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=e62346c0c0ecee2637e613b49cb7b7fa

+ 13 - 13
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/nbproject/Makefile-local-default.mk

@@ -15,23 +15,23 @@
 # $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...  
 #
 SHELL=cmd.exe
-PATH_TO_IDE_BIN=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/
+PATH_TO_IDE_BIN=D:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/
 # Adding MPLAB X bin directory to path.
-PATH:=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
+PATH:=D:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
 # Path to java used to run MPLAB X when this makefile was created
-MP_JAVA_PATH="C:\Program Files\Microchip\MPLABX\v6.15\sys\java\zulu8.64.0.19-ca-fx-jre8.0.345-win_x64/bin/"
+MP_JAVA_PATH="D:\Program Files\Microchip\MPLABX\v6.15\sys\java\zulu8.64.0.19-ca-fx-jre8.0.345-win_x64/bin/"
 OS_CURRENT="$(shell uname -s)"
-MP_CC="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-gcc.exe"
+MP_CC="D:\Program Files\Microchip\xc16\v2.10\bin\xc16-gcc.exe"
 # MP_CPPC is not defined
 # MP_BC is not defined
-MP_AS="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-as.exe"
-MP_LD="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-ld.exe"
-MP_AR="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-ar.exe"
-DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
-MP_CC_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
+MP_AS="D:\Program Files\Microchip\xc16\v2.10\bin\xc16-as.exe"
+MP_LD="D:\Program Files\Microchip\xc16\v2.10\bin\xc16-ld.exe"
+MP_AR="D:\Program Files\Microchip\xc16\v2.10\bin\xc16-ar.exe"
+DEP_GEN=${MP_JAVA_PATH}java -jar "D:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
+MP_CC_DIR="D:\Program Files\Microchip\xc16\v2.10\bin"
 # MP_CPPC_DIR is not defined
 # MP_BC_DIR is not defined
-MP_AS_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
-MP_LD_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
-MP_AR_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
-DFP_DIR=C:/Program Files/Microchip/MPLABX/v6.15/packs/Microchip/PIC24F-GL-GU_DFP/1.5.121
+MP_AS_DIR="D:\Program Files\Microchip\xc16\v2.10\bin"
+MP_LD_DIR="D:\Program Files\Microchip\xc16\v2.10\bin"
+MP_AR_DIR="D:\Program Files\Microchip\xc16\v2.10\bin"
+DFP_DIR=D:/Program Files/Microchip/MPLABX/v6.15/packs/Microchip/PIC24F-GL-GU_DFP/1.5.121

+ 2 - 2
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/nbproject/private/configurations.xml

@@ -4,8 +4,8 @@
   <defaultConf>0</defaultConf>
   <confs>
     <conf name="default" type="2">
-      <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>900A:=&lt;rev>0002:=&lt;man>Microchip Technology Inc.:=&lt;prod>PICkit 3:=&lt;sn>DEFAULT_PK3 :=&lt;drv>x:=&lt;xpt>h:=end</platformToolSN>
-      <languageToolchainDir>C:\Program Files\Microchip\xc16\v2.10\bin</languageToolchainDir>
+      <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>900A:=&lt;rev>0002:=&lt;man>Microchip Technology Inc.:=&lt;prod>PICkit 3:=&lt;sn>BUR202239188:=&lt;drv>x:=&lt;xpt>h:=end</platformToolSN>
+      <languageToolchainDir>D:\Program Files\Microchip\xc16\v2.10\bin</languageToolchainDir>
       <mdbdebugger version="1">
         <placeholder1>place holder 1</placeholder1>
         <placeholder2>place holder 2</placeholder2>

+ 8 - 6
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/nbproject/private/private.xml

@@ -2,14 +2,16 @@
 <project-private xmlns="http://www.netbeans.org/ns/project-private/1">
     <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
-        <group>
-            <file>file:/E:/30.%20BTD24018-WZYXPOCT/01.Code/current/UART.X%20(2)/WZYX_UART_V1.1250612.X/main.c</file>
-            <file>file:/E:/30.%20BTD24018-WZYXPOCT/01.Code/current/UART.X%20(2)/WZYX_UART_V1.1250612.X/Uart.c</file>
-            <file>file:/E:/30.%20BTD24018-WZYXPOCT/01.Code/current/UART.X%20(2)/WZYX_UART_V1.1250612.X/Pin.c</file>
-            <file>file:/E:/30.%20BTD24018-WZYXPOCT/01.Code/current/UART.X%20(2)/WZYX_UART_V1.1250612.X/Uart.h</file>
-        </group>
         <group name="source">
             <file>file:/F:/library/source/WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Pin.c</file>
         </group>
+        <group>
+            <file>file:/D:/Program%20Files/Microchip/MPLABX/v6.15/packs/Microchip/PIC24F-GL-GU_DFP/1.5.121/xc16/support/PIC24F/h/p24FJ512GU410.h</file>
+            <file>file:/F:/library/source/WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/main.c</file>
+            <file>file:/F:/library/source/WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Pin.c</file>
+            <file>file:/F:/library/source/WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Delay.c</file>
+            <file>file:/F:/library/source/WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Uart.c</file>
+            <file>file:/F:/library/source/WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/nbproject/Makefile-default.mk</file>
+        </group>
     </open-files>
 </project-private>