コード例 #1
0
        ProErr NoXYTrans(int SerialNumbler)
        {
            ProErr
                Err = ProErr.ProNOErr;

            if (SerialNumbler == 0)
            {
                Err = ProErr.ProCoordinateErr;
            }
            if (Err != ProErr.ProNOErr)
            {
                return(Err);
            }
            if (SerialNumbler <= 4u)
            {
                NoX = 0;
                NoY = SerialNumbler;
            }
            else
            if (SerialNumbler <= 10)
            {
                NoX = 1;
                NoY = SerialNumbler - 5;
            }
            else
            if (SerialNumbler <= 16u)
            {
                NoX = 2;
                NoY = SerialNumbler - 11;
            }
            else
            if (SerialNumbler <= 22u)
            {
                NoX = 3;
                NoY = SerialNumbler - 17;
            }
            else
            if (SerialNumbler <= 28u)
            {
                NoX = 4;
                NoY = SerialNumbler - 23;
            }
            else
            if (SerialNumbler <= 32)
            {
                NoX = 5;
                NoY = SerialNumbler - 28;
            }
            else
            {
                Err = ProErr.ProCoordinateErr;
            }
            return(Err);
        }
コード例 #2
0
        ProErr FingersSpeed(int Speed)
        {
            ProErr
                Err = ProErr.ProNOErr;

            if (FingersSpeedOldSet != Speed)
            {
                HoldingSingelWrite(Auto_32, Speed);
                FingersSpeedOldSet    = Speed;
                RTStatus.FingersSpeed = Speed;
            }

            return(Err);
        }
コード例 #3
0
        ProErr StirrerCtrl(bool CMD)
        {
            ProErr Err = ProErr.ProNOErr;

            if (CMD)
            {
                HoldingSingelWrite(Meter_18, 1);
            }
            else
            {
                HoldingSingelWrite(Meter_18, 0);
            }
            return(Err);
        }
コード例 #4
0
        ProErr HeatColdCtrl(bool CMD)
        {
            ProErr Err = ProErr.ProNOErr;

            if (CMD)
            {
                HoldingSingelWrite(Heat_15, 1);
                HoldingSingelWrite(Heat_17, 165);
            }
            else
            {
                HoldingSingelWrite(Heat_15, 0);
            }
            return(Err);
        }
コード例 #5
0
        ProErr RBootArmZFindZero()
        {
            ProErr
                Err = ProErr.ProNOErr;
            int i   = 0;

            HoldingSingelWrite(ARM_19, 1);
            do
            {
                osDelay(100);
            } while ((i++ < 30) && (HoldingSingelRead(ARM_19) != 0));
            if (i >= 30)
            {
                Err = ProErr.ProArmZFindZeroErr;
            }
            return(Err);
        }
コード例 #6
0
        private ProErr SingelTubeProcess()
        {
            ProErr Err = ProErr.ProNOErr;

            Thread oThreadRegentProcess = new Thread(new ThreadStart(this.RegentProcess));

            oThreadRegentProcess.Start();
            Thread oThreadSampleProcess = new Thread(new ThreadStart(this.SampleProcess));

            oThreadSampleProcess.Start();
            Thread oThreadFingerProcess = new Thread(new ThreadStart(this.FingerProcess));

            oThreadFingerProcess.Start();

            while (!FingerReturnIsOK)
            {
                osDelay(1000);
            }
            HoldingSingelWrite(Heat_05, 50000);
            while (HoldingSingelRead(Heat_06) != 50000)
            {
                osDelay(500);
            }

            HoldingSingelWrite(Heat_10, 8300);
            while (HoldingSingelRead(Heat_11) != 8300)
            {
                osDelay(500);
            }
            osDelay(2000);
            HoldingSingelWrite(Heat_10, 400);
            while (HoldingSingelRead(Heat_11) != 400)
            {
                osDelay(500);
            }

            HoldingSingelWrite(Heat_05, 0);
            while (HoldingSingelRead(Heat_06) != 0)
            {
                osDelay(500);
            }
            return(Err);
        }
コード例 #7
0
        //private delegate void btn_writeClient(bool State);



        ProErr WaterValveCTRL(int State)
        {
            ProErr
                Err = ProErr.ProNOErr;
            int i   = 0;

            if (HoldingSingelRead(Auto_15) != State)
            {
                HoldingSingelWrite(Auto_14, State);
            }
            do
            {
                osDelay(50);
                i++;
            } while ((HoldingSingelRead(Auto_15) != State) && i < 20);
            if (i >= 20)
            {
                return(ProErr.ProValveErr);
            }
            return(Err);
        }
コード例 #8
0
        ProErr MeterARMMove(int ARMX)
        {
            int i         = 0;
            int LocationZ = HoldingSingelRead(Meter_06);
            ProErr
                Err = ProErr.ProNOErr;

            i = 0;

            if (HoldingSingelRead(Meter_06) != ARMX)
            {
                HoldingSingelWrite(Meter_05, ARMX);
                do
                {
                    osDelay(10);
                } while ((HoldingSingelRead(Meter_06) != ARMX) && (i++ < Math.Abs(ARMX - LocationZ) / 3u));
                if (i >= Math.Abs(ARMX - LocationZ) / 3u)
                {
                    Err = ProErr.ProArmZErr;
                    return(Err);
                }
                LocationZ = RTStatus.RbootArmSignelPosition = HoldingSingelRead(Meter_06);
                if (LocationZ == SignelArm_1)
                {
                    ProcessCurrent.RengentAdd = 1;
                }
                else if (LocationZ == SignelArm_2)
                {
                    ProcessCurrent.RengentAdd = 2;
                }
                else if (LocationZ == SignelArm_3)
                {
                    ProcessCurrent.RengentAdd = 3;
                }
            }
            return(Err);
        }
コード例 #9
0
        ProErr FingersCTRL(int Setsition)
        {
            ProErr
                Err = ProErr.ProNOErr;

            int i = 0;
            int FingersPosition = HoldingSingelRead(Auto_31);

            if (FingersPosition != Setsition)
            {
                HoldingSingelWrite(Auto_30, Setsition);
            }
            do
            {
                osDelay(100);
                FingersPosition = HoldingSingelRead(Auto_31);
            } while (Setsition != FingersPosition && (i++ < 40));

            if (i >= 40)
            {
                Err = ProErr.ProFingersErr;
            }
            return(Err);
        }
コード例 #10
0
        static int Z_High5 = 10550;        //	压塞子

        ProErr RBootARMMoveZ(int High)
        {
            int i         = 0;
            int LocationZ = HoldingSingelRead(ARM_16);
            ProErr
                Err = ProErr.ProNOErr;

            i = 0;
            if (High != 0)
            {
                if (RTStatus.RbootArmPosition[0] == XY_HeadSample[0, 0])
                {
                    if (RTStatus.RbootArmPosition[1u] == XY_HeadSample[0, 1])
                    {
                        if (RTStatus.FingersPosition >= 1500)
                        {
                            if (RTStatus.RbootArmSignelPosition == SignelArm_1)
                            {
                                Err = ProErr.ProArmZErr;
                            }
                        }
                    }
                }

                if (RTStatus.RbootArmPosition[0] == XY_HeadSample[0, 0])
                {
                    if (RTStatus.RbootArmPosition[1u] == XY_HeadSample[0, 1] + 6150)
                    {
                        if (RTStatus.FingersPosition >= 1500)
                        {
                            if (RTStatus.RbootArmSignelPosition == SignelArm_3)
                            {
                                Err = ProErr.ProArmZErr;
                            }
                        }
                    }
                }

                if (RTStatus.RbootArmPosition[0] == XY_HeadFingers[0, 0])
                {
                    if (RTStatus.RbootArmPosition[1u] == XY_HeadFingers[0, 1])
                    {
                        if (RTStatus.FingersPosition >= 1500)
                        {
                            if (RTStatus.RbootArmSignelPosition == SignelArm_1)
                            {
                                Err = ProErr.ProArmZErr;
                            }
                        }
                    }
                }
                if (Err != ProErr.ProNOErr)
                {
                    while (true)
                    {
                        osDelay(10);
                    }
                }
                ;
            }

            if (HoldingSingelRead(ARM_16) != High)
            {
                HoldingSingelWrite(ARM_15, High);
                do
                {
                    osDelay(10);
                } while ((HoldingSingelRead(ARM_16) != High) && (i++ < Math.Abs(High - LocationZ) / 3u));
                if (i >= Math.Abs(High - LocationZ) / 3u)
                {
                    Err = ProErr.ProArmZErr;
                    return(Err);
                }
                LocationZ = RTStatus.RbootArmPosition[2u] = HoldingSingelRead(ARM_16);
            }
            return(Err);
        }
コード例 #11
0
        ProErr RBootARMMoveXY(enumCoordinateType CoordinateType, enumAreaType AreaType, int SerialNumbler)
        {
            int i         = 0;
            int LocationX = HoldingSingelRead(ARM_06);
            int LocationY = HoldingSingelRead(ARM_11);
            int LocationZ = HoldingSingelRead(ARM_16);
            ProErr
                Err = ProErr.ProNOErr;

            i   = 0;
            Err = CoordinateTransformation(CoordinateType, AreaType, SerialNumbler);
            if (Err != ProErr.ProNOErr)
            {
                return(Err);
            }

            if ((LocationX != CoordinateTransX) || (LocationY != CoordinateTransY))
            {
                if ((LocationZ > Z_High0))
                {
                    HoldingSingelWrite(ARM_15, Z_High0);
                    do
                    {
                        osDelay(10);
                    } while ((HoldingSingelRead(ARM_16) != Z_High0) && (i++ < Math.Abs(Z_High0 - LocationZ) / 3u));
                    if (i >= Math.Abs(Z_High0 - LocationZ) / 3u)
                    {
                        Err = ProErr.ProArmZErr;
                        return(Err);
                    }
                    LocationZ = RTStatus.RbootArmPosition[2u] = HoldingSingelRead(ARM_16);
                }
                HoldingSingelWrite(ARM_05, CoordinateTransX);
                HoldingSingelWrite(ARM_10, CoordinateTransY);

                i = 0;
                int X;
                int Y;
                do
                {
                    osDelay(10);
                    X = HoldingSingelRead(ARM_06);
                    Y = HoldingSingelRead(ARM_11);
                } while (
                    ((X != CoordinateTransX) || (Y != CoordinateTransY)) &&
                    (i++ <
                     (
                         Math.Abs(CoordinateTransX - LocationX) > Math.Abs(CoordinateTransY - LocationY) ?
                         Math.Abs(CoordinateTransX - LocationX) : Math.Abs(CoordinateTransY - LocationY)
                     ) / 3u
                    )
                    );
                if (i >=
                    (
                        Math.Abs(CoordinateTransX - LocationX) > Math.Abs(CoordinateTransY - LocationY) ?
                        Math.Abs(CoordinateTransX - LocationX) : Math.Abs(CoordinateTransY - LocationY)
                    ) / 3u
                    )
                {
                    if (X != CoordinateTransX)
                    {
                        Err = ProErr.ProArmXErr;
                    }
                    if (Y != CoordinateTransY)
                    {
                        Err = ProErr.ProArmYErr;
                    }
                    return(Err);
                }
                LocationX = RTStatus.RbootArmPosition[0] = HoldingSingelRead(ARM_06);
                LocationY = RTStatus.RbootArmPosition[1u] = HoldingSingelRead(ARM_11);
            }
            return(Err);
        }
コード例 #12
0
        ProErr RBootARMMoveXYZ(int X, int Y, int Z)
        {
            int i         = 0;
            int LocationX = HoldingSingelRead(ARM_06);
            int LocationY = HoldingSingelRead(ARM_11);
            int LocationZ = HoldingSingelRead(ARM_16);
            ProErr
                Err = ProErr.ProNOErr;

            i = 0;
            if ((LocationX != X) || (LocationY != Y))
            {
                if ((LocationZ > 400))
                {
                    HoldingSingelWrite(ARM_15, 400);
                    do
                    {
                        osDelay(300);
                    } while ((HoldingSingelRead(ARM_16) != 400) && (i++ < Math.Abs(400 - LocationZ) / 10));
                    if (i >= Math.Abs(0 - LocationZ) / 10)
                    {
                        Err = ProErr.ProArmZErr;
                        return(Err);
                    }
                    LocationZ = RTStatus.RbootArmPosition[2u] = HoldingSingelRead(ARM_16);
                }
                HoldingSingelWrite(ARM_05, X);
                HoldingSingelWrite(ARM_10, Y);

                i = 0;
                int RT_X;
                int RT_Y;
                do
                {
                    osDelay(300);
                    RT_X = HoldingSingelRead(ARM_06);
                    RT_Y = HoldingSingelRead(ARM_11);
                } while (
                    ((X != RT_X) || (Y != RT_Y)) &&
                    (i++ <
                     (
                         Math.Abs(X - LocationX) > Math.Abs(Y - LocationY) ?
                         Math.Abs(X - LocationX) : Math.Abs(Y - LocationY)
                     ) / 10
                    )
                    );
                if (i >=
                    (
                        Math.Abs(X - LocationX) > Math.Abs(Y - LocationY) ?
                        Math.Abs(X - LocationX) : Math.Abs(Y - LocationY)
                    ) / 10
                    )
                {
                    Err = ProErr.ProArmXErr;
                    return(Err);
                }
                LocationX = RTStatus.RbootArmPosition[0] = HoldingSingelRead(ARM_06);
                LocationY = RTStatus.RbootArmPosition[1u] = HoldingSingelRead(ARM_11);
            }
            return(Err);
        }
コード例 #13
0
        ProErr CoordinateTransformation(enumCoordinateType CoordinateType, enumAreaType AreaType, int SerialNumbler)
        {
            ProErr
                Err = ProErr.ProNOErr;

            switch (CoordinateType)
            {
            case enumCoordinateType.CoordSampleHead:
            {
                switch (AreaType)
                {
                case enumAreaType.AreaReagentAdd:
                    CoordinateTransX = XY_HeadSample[0, 0] - 8450 * (SerialNumbler - 1);
                    CoordinateTransY = XY_HeadSample[0, 1] + 0;
                    break;

                case enumAreaType.AreaSampler:
                    Err = NoXYTrans(SerialNumbler);
                    if (Err != ProErr.ProNOErr)
                    {
                        return(Err);
                    }
                    CoordinateTransX = XY_HeadSample[1, 0] + (int)(/*6400.0f / 72 * 32*/ 2844.44f * NoX + 0.5f);
                    CoordinateTransY = XY_HeadSample[1, 1] + (int)(/*6400.0f / 72 * 32*/ 2844.44f * NoY + 0.5f);
                    break;

                case enumAreaType.AreaDigestion:
                    Err = ProErr.ProCoordinateErr;
                    break;

                default:
                    break;
                }
            }
            break;

            case enumCoordinateType.CoordFingers:
            {
                switch (AreaType)
                {
                case enumAreaType.AreaReagentAdd:
                    CoordinateTransX = XY_HeadFingers[0, 0] + 6150 * (SerialNumbler - 1);
                    CoordinateTransY = XY_HeadFingers[0, 1] + 0;
                    break;

                case enumAreaType.AreaSampler:
                    Err = ProErr.ProCoordinateErr;
                    break;

                case enumAreaType.AreaDigestion:
                    Err = NoXYTrans(SerialNumbler);
                    if (Err != ProErr.ProNOErr)
                    {
                        return(Err);
                    }
                    CoordinateTransX = XY_HeadFingers[1, 0] + (int)(/*6400.0f / 72 * 32*/ 2844.44f * NoX + 0.5f);
                    CoordinateTransY = XY_HeadFingers[1, 1] + (int)(/*6400.0f / 72 * 32*/ 2844.44f * NoY + 0.5f);
                    break;

                default:
                    break;
                }
            }
            break;

            default:
                break;
            }
            return(Err);
        }
コード例 #14
0
        ProErr MotorCTRL(enumM_Type M_Type)
        {
            ProErr
                Err = ProErr.ProNOErr;
            int i   = 0;

            switch (M_Type)
            {
            case enumM_Type.M_Type1:
            case enumM_Type.M_Type2:
            case enumM_Type.M_Type3:
            case enumM_Type.M_Type4:
            case enumM_Type.M_Type5:
            case enumM_Type.M_Type7:
            case enumM_Type.M_Type8:
            {
                WaterValveCTRL(1);
                HoldingSingelWrite(Auto_22, M_TypeSet[(int)(enumM_Type)M_Type].M_Time);
                HoldingSingelWrite(Auto_10, 1);
                HoldingSingelWrite(Auto_21, M_TypeSet[(int)(enumM_Type)M_Type].M_Speed);
                osDelay(300);
                do
                {
                    osDelay(300);
                } while ((HoldingSingelRead(Auto_11) != 0) && /* HoldingSingelRead(Auto_23) && */ (i++ < (M_TypeSet[(int)(enumM_Type)M_Type].M_Time + 3000000) / 300));


                if (i >= (M_TypeSet[(int)(enumM_Type)M_Type].M_Time + 3000000) / 300)
                {
                    //g_pBaseInterface->ptrFuncLogger("ProCommonError %s", i);
                    return(ProErr.ProCommonErr);
                }
                break;
            }

            case enumM_Type.M_Type6:
            case enumM_Type.M_Type9:
            {
                WaterValveCTRL(1);
                HoldingSingelWrite(Auto_22, M_TypeSet[(int)(enumM_Type)M_Type].M_Time);
                HoldingSingelWrite(Auto_21, M_TypeSet[(int)(enumM_Type)M_Type].M_Speed);
                osDelay(1500);
                HoldingSingelWrite(Auto_10, 1);
                do
                {
                    osDelay(300);
                } while ((HoldingSingelRead(Auto_11) != 0) && (i++ < (M_TypeSet[(int)(enumM_Type)M_Type].M_Time + 3000000) / 300));


                if (i >= (M_TypeSet[(int)(enumM_Type)M_Type].M_Time + 3000000) / 300)
                {
                    //g_pBaseInterface->ptrFuncLogger("ProCommonErrorM_Type6 %s", i);
                    return(ProErr.ProCommonErr);
                }
                break;
            }

            case enumM_Type.M_Type10:
                break;

            case enumM_Type.M_Type11:
            {
                WaterValveCTRL(1);
                HoldingSingelWrite(Auto_22, M_TypeSet[(int)(enumM_Type)M_Type].M_Time);
                HoldingSingelWrite(Auto_27, M_TypeSet[(int)(enumM_Type)M_Type].M_Time);
                osDelay(200);
                HoldingSingelWrite(Auto_21, M_TypeSet[(int)(enumM_Type)M_Type].M_Speed);
                HoldingSingelWrite(Auto_26, M_TypeSet[(int)(enumM_Type)M_Type].M_Speed);
                osDelay(1000);
                HoldingSingelWrite(Auto_12, 1);
                osDelay(500);
                HoldingSingelWrite(Auto_10, 1);
                do
                {
                    osDelay(300);
                } while ((HoldingSingelRead(Auto_11) != 0) && (i++ < (M_TypeSet[(int)(enumM_Type)M_Type].M_Time + 3000000) / 300 * 2));

                HoldingSingelWrite(Auto_10, 0);
                HoldingSingelWrite(Auto_12, 0);
                osDelay(200);
                HoldingSingelWrite(Auto_21, 0);
                HoldingSingelWrite(Auto_26, 0);

                if (i >= (M_TypeSet[(int)(enumM_Type)M_Type].M_Time + 3000000) / 300 * 2u)
                {
                    //g_pBaseInterface->ptrFuncLogger("ProCommonErrorM_Type11 %s", i);
                    return(ProErr.ProCommonErr);
                }
                break;
            }

            case enumM_Type.M_Type12:
                break;

            default:
                break;
            }

            return(Err);
        }
コード例 #15
0
        ProErr SamplePumpCTRL(int ulPumpPosition)
        {
            ProErr
                Err = ProErr.ProNOErr;

            //int ValueStatus = 0;
            int  i        = 0;
            int  ii       = 0;
            int  Common   = 0;
            int  j        = 0;
            int  t        = 0;
            bool COMCheck = false;
            int  PumpPosition;
            int  RTPumpPosition;

            osDelay(1500);
            //RTPumpPosition = HoldingSingelRead(Auto_06);
            //if (RTPumpPosition != 0xFFFF)
            //{
            //	RTStatus.PumpPosition[(int)(enumPumpType.SamplePump)] = RTPumpPosition;
            //}
            //PumpPosition = SamplePumpPositionConvert(ulPumpPosition);
            //if (Math.Abs(PumpPosition - RTStatus.PumpPosition[(int)(enumPumpType.SamplePump)]) <= PumpZero)
            //	return ProErr.ProNOErr;
            //if (RTStatus.PumpSpeed[(int)(enumPumpType.SamplePump)] == 0)
            //	return ProErr.ProPumpSpeedErr;
            //COMCheck = false;
            //i = 0;
            //ii = (Math.Abs(PumpPosition - RTStatus.PumpPosition[(int)(enumPumpType.SamplePump)])/*要走的步数*/ / (RTStatus.PumpSpeed[(int)(enumPumpType.SamplePump)]/*每分钟转速*/ * 400/*单圈步数*/ / 60/*秒*/ * 1000/*毫秒*/)) / 300/*计数周期*/ + 100;
            //Common = 0;
            //j = 0;
            //t = 0;
            //HoldingSingelWrite(Auto_05, PumpPosition);
            //osDelay(500);
            //if (PumpPosition > PumpZero)
            //{
            //	COMCheck = true;
            //	ii *= 6;
            //}
            //do
            //{
            //	if (COMCheck)
            //	{
            //		t++;
            //		Common = HoldingSingelRead(Auto_09);
            //		if (Common == 0)
            //		{
            //			j++;
            //		}
            //		else
            //		{
            //			j = 0;
            //		}

            //		osDelay(50);
            //	}
            //	else
            //	{
            //		osDelay(300);
            //	}
            //	if (t % 10 == 0)
            //	{
            //		RTStatus.PumpPosition[(int)(enumPumpType.SamplePump)] = HoldingSingelRead(Auto_06);
            //	}
            //} while ((Math.Abs(PumpPosition - RTStatus.PumpPosition[(int)(enumPumpType.SamplePump)]) > PumpZero) && (i++ < ii));

            //if (i > ii)
            //{
            //	Err = ProErr.ProPumpBlockingErr;
            //}
            //if (COMCheck == true)
            //{
            //	if (j > 60)
            //	{
            //		RTStatus.Exist[(int)(enumPumpType.SamplePump)] = RTStatus.LevelSwitch[(int)(enumPumpType.SamplePump)] = enumLevelStatus.LevelStatusBlank;
            //		Err = ProErr.ProCommonErr;
            //	}
            //	else
            //	{
            //		RTStatus.Exist[(int)(enumPumpType.SamplePump)] = RTStatus.LevelSwitch[(int)(enumPumpType.SamplePump)] = enumLevelStatus.LevelStatusNonblank;
            //	}
            //	COMCheck = false;
            //}


            return(Err);
        }
コード例 #16
0
        ProErr CHxPumpCTRL(int[] ulPumpPosition)
        {
            ProErr
                Err = ProErr.ProNOErr;

            int Typei = 0;
            int i     = 0;
            int ii    = 0;

            int[] Common = new int[(int)enumPumpType.PumpMax] {
                0, 0, 0, 0, 0
            };
            int[] j = new int[(int)enumPumpType.PumpMax] {
                0, 0, 0, 0, 0
            };
            int[] t = new int[(int)enumPumpType.PumpMax] {
                0, 0, 0, 0, 0
            };
            bool[] COMCheck = new bool[(int)enumPumpType.PumpMax] {
                false, false, false, false, false
            };
            bool[] IsOK = new bool[(int)enumPumpType.PumpMax] {
                false, false, false, false, false
            };
            int[] PumpPosition = new int[(int)enumPumpType.PumpMax] {
                0, 0, 0, 0, 0
            };
            int[] RTPumpPosition = new int[(int)enumPumpType.PumpMax] {
                0, 0, 0, 0, 0
            };
            osDelay(1500);
            //for (Typei = 0; Typei < (int)enumPumpType.PumpMax; Typei++)
            //{
            //	switch ((enumPumpType)Typei)
            //	{
            //		case enumPumpType.SamplePump:
            //			//RTPumpPosition[Typei] = HoldingSingelRead(Auto_06);
            //			break;
            //		case enumPumpType.CH1Pump:
            //			RTPumpPosition[Typei] = HoldingSingelRead(Meter_26);
            //			break;
            //		case enumPumpType.CH2Pump:
            //			RTPumpPosition[Typei] = HoldingSingelRead(Meter_31);
            //			break;
            //		case enumPumpType.CH3Pump:
            //			RTPumpPosition[Typei] = HoldingSingelRead(Meter_36);
            //			break;
            //		case enumPumpType.CH4Pump:
            //			RTPumpPosition[Typei] = HoldingSingelRead(Meter_41);
            //			break;
            //		case enumPumpType.PumpMax:
            //			break;
            //		default:
            //			break;
            //	}
            //	if (RTPumpPosition[Typei] != 0xFFFF)
            //	{
            //		RTStatus.PumpPosition[Typei] = RTPumpPosition[Typei];
            //	}
            //	PumpPosition[Typei] = CHxPumpPositionConvert(ulPumpPosition[Typei], (enumPumpType)Typei);
            //	COMCheck[Typei] = false;
            //	Common[Typei] = 0;
            //	j[Typei] = 0;
            //	t[Typei] = 0;
            //	if (Math.Abs(PumpPosition[Typei] - RTStatus.PumpPosition[Typei]) > PumpZero)
            //	{
            //		switch ((enumPumpType)Typei)
            //		{
            //			case enumPumpType.SamplePump:
            //				//HoldingSingelWrite(Auto_05, PumpPosition[(int)(enumPumpType.SamplePump)]);
            //				break;
            //			case enumPumpType.CH1Pump:
            //				HoldingSingelWrite(Meter_25, PumpPosition[(int)enumPumpType.CH1Pump]);
            //				break;
            //			case enumPumpType.CH2Pump:
            //				HoldingSingelWrite(Meter_30, PumpPosition[(int)enumPumpType.CH2Pump]);
            //				break;
            //			case enumPumpType.CH3Pump:
            //				HoldingSingelWrite(Meter_35, PumpPosition[(int)enumPumpType.CH3Pump]);
            //				break;
            //			case enumPumpType.CH4Pump:
            //				HoldingSingelWrite(Meter_40, PumpPosition[(int)enumPumpType.CH4Pump]);
            //				break;
            //			case enumPumpType.PumpMax:
            //				break;
            //			default:
            //				break;
            //		}
            //	}
            //	int CountOut = 0;
            //	if (RTStatus.PumpSpeed[Typei] > 0)
            //		CountOut = (Math.Abs(PumpPosition[Typei] - RTStatus.PumpPosition[Typei])/*要走的步数*/ / (RTStatus.PumpSpeed[Typei]/*每分钟转速*/ * 400/*单圈步数*/ / 60/*秒*/ * 1000/*毫秒*/)) / 300/*计数周期*/ + 100;
            //	if (CountOut > ii)
            //		ii = CountOut;
            //	if (PumpPosition[Typei] > PumpZero)
            //	{
            //		COMCheck[Typei] = true;
            //		ii *= 6;
            //	}
            //}

            //i = 0;
            //do
            //{
            //	for (Typei = 0; Typei < (int)enumPumpType.PumpMax; Typei++)
            //	{
            //		if (COMCheck[Typei])
            //		{
            //			t[Typei]++;
            //			switch ((enumPumpType)Typei)
            //			{
            //				case enumPumpType.SamplePump:
            //					//Common[Typei] = HoldingSingelRead(Auto_09);
            //					break;
            //				case enumPumpType.CH1Pump:
            //					Common[Typei] = HoldingSingelRead(Meter_29);
            //					break;
            //				case enumPumpType.CH2Pump:
            //					Common[Typei] = HoldingSingelRead(Meter_34);
            //					break;
            //				case enumPumpType.CH3Pump:
            //					Common[Typei] = HoldingSingelRead(Meter_39);
            //					break;
            //				case enumPumpType.CH4Pump:
            //					Common[Typei] = HoldingSingelRead(Meter_44);
            //					break;
            //				case enumPumpType.PumpMax:
            //					break;
            //				default:
            //					break;
            //			}
            //			if (Common[Typei] == 0)
            //			{
            //				j[Typei]++;
            //			}
            //			else
            //			{
            //				j[Typei] = 0;
            //			}

            //			osDelay(50);
            //		}
            //		else
            //		{
            //			osDelay(300);
            //		}

            //		if (t[Typei] % 6 == 0)
            //		{
            //			switch ((enumPumpType)Typei)
            //			{
            //				case enumPumpType.SamplePump:
            //					//RTStatus.PumpPosition[Typei] = HoldingSingelRead(Auto_06);
            //					break;
            //				case enumPumpType.CH1Pump:
            //					RTStatus.PumpPosition[Typei] = HoldingSingelRead(Meter_26);
            //					break;
            //				case enumPumpType.CH2Pump:
            //					RTStatus.PumpPosition[Typei] = HoldingSingelRead(Meter_31);
            //					break;
            //				case enumPumpType.CH3Pump:
            //					RTStatus.PumpPosition[Typei] = HoldingSingelRead(Meter_36);
            //					break;
            //				case enumPumpType.CH4Pump:
            //					RTStatus.PumpPosition[Typei] = HoldingSingelRead(Meter_41);
            //					break;
            //				case enumPumpType.PumpMax:
            //				default:
            //					break;
            //			}
            //			if ((Math.Abs(PumpPosition[Typei] - RTStatus.PumpPosition[Typei]) > PumpZero))
            //				IsOK[Typei] = false;
            //			else
            //				IsOK[Typei] = true;
            //		}
            //	}
            //} while (
            //	(!IsOK[(int)enumPumpType.CH1Pump]
            //	|| !IsOK[(int)enumPumpType.CH2Pump]
            //	|| !IsOK[(int)enumPumpType.CH3Pump]
            //	|| !IsOK[(int)enumPumpType.CH4Pump]
            //	)
            //	&& (i++ < ii)
            //		);

            //if (i > ii)
            //{
            //	Err = ProErr.ProPumpBlockingErr;
            //}
            //for (Typei = 0; Typei < (int)enumPumpType.PumpMax; Typei++)
            //{
            //	if (COMCheck[Typei] == true)
            //	{
            //		if (j[Typei] > 60)
            //		{
            //			RTStatus.Exist[Typei] = RTStatus.LevelSwitch[Typei] = enumLevelStatus.LevelStatusBlank;
            //			Err = ProErr.ProCommonErr;
            //		}
            //		else
            //		{
            //			RTStatus.Exist[Typei] = RTStatus.LevelSwitch[Typei] = enumLevelStatus.LevelStatusNonblank;
            //		}
            //		COMCheck[Typei] = false;
            //	}
            //}
            return(Err);
        }