Beispiel #1
0
 public void SetConfirm(CAlarmMsgEventArgs e)
 {
     e.bConfirm    = false;
     e.ConfirmTime = DateTime.Now;
     e.ConfirmName = nUserInfo.UserName;
     nDatabase.UpdateMsg(e);
 }
Beispiel #2
0
        public List <CAlarmMsgEventArgs> ListAlarmMsg = new List <CAlarmMsgEventArgs>();//所有报警

        public void AddMsg(CAlarmMsgEventArgs e)
        {
            ListAlarmMsg.Add(e);
            bUpdate = true;
            while (ListAlarmMsg.Count > CCONST.ListMax)
            {
                ListAlarmMsg.RemoveAt(0);
            }
        }
Beispiel #3
0
 //定时器
 public void CommTimerCall(object source, System.Timers.ElapsedEventArgs e)
 {
     if (!bOpen)
     {
         return;
     }
     if (CommStateE == ECommSatate.Unknown)
     {
         return;
     }
     try
     {
         DelayTime += 100;
         if (DelayTime >= Math.Max(LastSendMsg.Delay_Time, 400))  //超时
         {
             SaveDebugMsg("延时");
             DelayTime = 0;
             present_MsgFailRep++;           //子站重发次数+1
             if (present_MsgFailRep > 2)     //超过最大重发次数
             {
                 present_MsgFailRep = 0;     //子站重发次数置0
                 present_DevFailNum++;       //子站失败次数置+1
                 if (present_DevFailNum > 3) //超过最大失败次数
                 {
                     if (CommStateE != ECommSatate.Failure)
                     {
                         SaveDebugMsg("故障");
                         CommStateE = ECommSatate.Failure;//子站置通信故障
                         CAlarmMsgEventArgs ee = new CAlarmMsgEventArgs();
                         ee.Date_Time  = DateTime.Now;
                         ee.Recorder   = Description + "通信故障";
                         ee.priority   = EAlarmPriority.PRIORITY_1;
                         ee.eAlarmType = EAlarmType.StationState;
                         ee.StaName    = Name;
                         staAlarm.OnAlarmEvent(ee);
                     }
                     present_DevFailNum = 0;
                     GetSendMsg();//失败次数没达到,继续发送下个子站报文
                 }
                 else
                 {
                     GetSendMsg();//失败次数没达到,继续发送下个子站报文
                 }
             }
             else
             {
                 Write();
             }
         }
     }
     catch (Exception e1)
     {
         ListStrMsg.Add("CProtcolModbusTCP.CommTimerCall:" + Name + e1.Message);
         Debug.WriteLine("CProtcolModbusTCP.CommTimerCall:" + Name + e1.Message);
     }
     //Debug.WriteLine("Send");
 }
Beispiel #4
0
        public void OnAlarmEvent(CAlarmMsgEventArgs e)
        {
            EventHandler alarmevent = AlarmEvent;

            if (alarmevent != null)
            {
                e.ALGuid = System.Guid.NewGuid();
                nDatabase.SaveMsg(e);
                cAlarmMsg.AddMsg(e);
                alarmevent(this, e);
            }
        }
Beispiel #5
0
        private void cAlarmMsgAddMsg(string text, EAlarmType AlarmType, EAlarmPriority priority)
        {
            //string sShow = "[" + staAlarm.GetAlarmTypeString(AlarmType) + "]" + text + ";等级:" + staAlarm.GetPriorityString(priority);
            //MessageBox.Show(sShow);
            CAlarmMsgEventArgs e = new CAlarmMsgEventArgs();

            e.Date_Time  = DateTime.Now;
            e.Recorder   = text;
            e.priority   = priority;
            e.eAlarmType = AlarmType;
            e.StaName    = staName;
            staAlarm.OnAlarmEvent(e);
        }
Beispiel #6
0
        private void GetVarValue(CMessage nMsg, byte[] Datebuff)
        {
            lock (this)
            {
                int iQuCommand = nMsg.sSendMsg.DataBuffer[8] * 256 * 256 * 256 + nMsg.sSendMsg.DataBuffer[9] * 256 * 256 + nMsg.sSendMsg.DataBuffer[10] * 256 + nMsg.sSendMsg.DataBuffer[11];
                int iReCommand = Datebuff[0] * 256 * 256 * 256 + Datebuff[1] * 256 * 256 + Datebuff[2] * 256 + Datebuff[3];
                int Errorcode  = Datebuff[4] * 256 * 256 * 256 + Datebuff[5] * 256 * 256 + Datebuff[6] * 256 + Datebuff[7];
                if (Errorcode > 0)
                {
                    string sErr = "";
                    switch (Errorcode)
                    {
                    case 1: sErr = "The header is not ‘FINS’ (ASCII code)."; break;

                    case 2: sErr = "The data length is too long."; break;

                    case 3: sErr = "The command is not supported."; break;

                    case 32: sErr = "All connections are in use."; break;

                    case 33: sErr = "The specified node is already connected."; break;

                    case 34: sErr = Errorcode.ToString() + "(" + Errorcode.ToString("X2") + "H):Attempt to access a protected node from an unspecified IP address."; break;

                    case 35: sErr = Errorcode.ToString() + "(" + Errorcode.ToString("X2") + "H):The client FINS node address is out of range."; break;

                    case 36: sErr = Errorcode.ToString() + "(" + Errorcode.ToString("X2") + "H):The same FINS node address is being used by the client and server."; break;

                    case 37: sErr = Errorcode.ToString() + "(" + Errorcode.ToString("X2") + "H):All the node addresses available for allocation have been used."; break;

                    default: sErr = "No Details."; break;
                    }
                    CAlarmMsgEventArgs ee = new CAlarmMsgEventArgs();
                    ee.Date_Time  = DateTime.Now;
                    ee.Recorder   = "PLC报警:" + Errorcode.ToString() + "," + sErr;
                    ee.priority   = EAlarmPriority.PRIORITY_2;
                    ee.eAlarmType = EAlarmType.StationState;
                    ee.StaName    = Name;
                    staAlarm.OnAlarmEvent(ee);
                    Debug.WriteLine("CProtcolFINS.Errorcode" + sErr);

                    if (CommStateE == ECommSatate.Failure)
                    {
                        CommStateE = ECommSatate.Normal;//子站置通信恢复
                        CAlarmMsgEventArgs eea = new CAlarmMsgEventArgs();
                        eea.Date_Time  = DateTime.Now;
                        eea.Recorder   = Description + "通信恢复";
                        eea.priority   = EAlarmPriority.PRIORITY_1;
                        eea.eAlarmType = EAlarmType.StationState;
                        eea.StaName    = Name;
                        staAlarm.OnAlarmEvent(eea);
                    }
                    else if (CommStateE != ECommSatate.Normal)
                    {
                        CommStateE = ECommSatate.Normal;//子站置通信恢复
                    }
                    DelayTime          = 0;
                    present_MsgFailRep = 0;
                    present_DevFailNum = 0;
                    return;
                }
                switch (iReCommand)
                {
                case 1:
                    break;

                case 2:
                    if (iReCommand == 2)
                    {
                        if (Datebuff[18] != nMsg.sSendMsg.DataBuffer[26] || Datebuff[19] != nMsg.sSendMsg.DataBuffer[27])
                        {
                            return;
                        }
                        if (Datebuff[18] == 1 && Datebuff[19] == 1)    //读
                        {
                            int iStart    = Convert.ToInt32(nMsg.Starting);
                            int iReadType = (int)((iStart + 1) / 1000);

                            if (iReadType < 8)
                            {
                                iStart = iStart - (iReadType - 1) * 1000;
                                if (iReadType == 1)
                                {
                                    for (int i = 0; i < 50; i++)
                                    {
                                        int n = i * 2 + 22;
                                        System[i] = Datebuff[n] * 256 + Datebuff[n + 1];
                                    }
                                }
                                //foreach (KeyValuePair<string, CVar> kvp in nMsg.ListMsgVar)
                                foreach (CVar nVar in StaDevice.ListDevVar)
                                {
                                    if (nVar.DAType != EDAType.DA_YC)
                                    {
                                        continue;
                                    }
                                    int   iIndex = nVar.ByteAddr - iStart;
                                    int   iBit   = nVar.BitAddr;
                                    int   iLen   = nVar.Length;
                                    Int64 Value  = 0;
                                    int   nByte  = iIndex * 2 + 22;
                                    if (nByte + iLen / 8 > Datebuff.Length || nByte < 0 || iIndex < 0)
                                    {
                                        continue;
                                    }
                                    switch (iLen)
                                    {
                                    case 1:
                                        int aa = (int)(Math.Pow(2, iBit));
                                        if (nVar.bHighLow == 1)
                                        {
                                            Value = (Datebuff[nByte] * 256 + Datebuff[nByte + 1]) & aa;
                                        }
                                        else
                                        {
                                            Value = (Datebuff[nByte] + Datebuff[nByte + 1] * 256) & aa;
                                        }
                                        if (Value > 0)
                                        {
                                            Value = 1;
                                        }
                                        break;

                                    case 8:
                                        aa = (int)((iBit + 1) / 8);
                                        if (nVar.bHighLow == 1)
                                        {
                                            Value = Datebuff[nByte + 1 - aa];
                                        }
                                        else
                                        {
                                            Value = Datebuff[nByte + aa];
                                        }
                                        break;

                                    case 16:
                                        if (nVar.bHighLow == 1)
                                        {
                                            Value = Datebuff[nByte] * 256 + Datebuff[nByte + 1];
                                        }
                                        else
                                        {
                                            Value = Datebuff[nByte] + Datebuff[nByte + 1] * 256;
                                        }
                                        break;

                                    case 32:
                                        if (nVar.bHighLow == 1)
                                        {
                                            Value = Datebuff[nByte] * 256 * 256 * 256 + Datebuff[nByte + 1] * 256 * 256 + Datebuff[nByte + 2] * 256 + Datebuff[nByte + 3];
                                        }
                                        else
                                        {
                                            Value = Datebuff[nByte] + Datebuff[nByte + 1] * 256 + Datebuff[nByte + 2] * 256 * 256 + Datebuff[nByte + 3] * 256 * 256 * 256;
                                        }
                                        break;

                                    default:
                                        break;
                                    }
                                    if (iReadType == 1)
                                    {
                                        nVar.SetValue(Value);
                                    }
                                    else if (iReadType == 2)
                                    {
                                        nVar.PLCValue[iReadType] = (Int64)Math.Round(Value * nVar.RatioValue + nVar.BaseValue);
                                    }
                                    else
                                    {
                                        nVar.PLCValue[iReadType] = (Int64)Value;
                                    }
                                }
                                CheckRunState();
                            }
                            else if (iReadType == 8)    //DO
                            {
                                foreach (CVar nVar in StaDevice.ListDevVar)
                                {
                                    if (nVar.DAType != EDAType.DA_YX)
                                    {
                                        continue;
                                    }

                                    int   iIndex = nVar.ByteAddr - iStart;
                                    int   iBit   = nVar.BitAddr;
                                    int   iLen   = nVar.Length;
                                    Int64 Value  = 0;
                                    int   nByte  = iIndex * 2 + 22;
                                    if (nByte + iLen / 8 > Datebuff.Length || nByte < 0)
                                    {
                                        continue;
                                    }

                                    int aa = (int)(Math.Pow(2, iBit));
                                    if (nVar.bHighLow == 1)
                                    {
                                        Value = (Datebuff[nByte] * 256 + Datebuff[nByte + 1]) & aa;
                                    }
                                    else
                                    {
                                        Value = (Datebuff[nByte] + Datebuff[nByte + 1] * 256) & aa;
                                    }
                                    if (Value > 0)
                                    {
                                        Value = 1;
                                    }

                                    nVar.SetValue(Value);
                                }
                            }
                            else if (iReadType == 9)    //DI
                            {
                                foreach (CVar nVar in StaDevice.ListDevVar)
                                {
                                    if (nVar.DAType != EDAType.DA_YX)
                                    {
                                        continue;
                                    }
                                    int   iIndex = nVar.ByteAddr - iStart;
                                    int   iBit   = nVar.BitAddr;
                                    int   iLen   = nVar.Length;
                                    Int64 Value  = 0;
                                    int   nByte  = iIndex * 2 + 22;
                                    if (nByte + iLen / 8 > Datebuff.Length || nByte < 0)
                                    {
                                        continue;
                                    }

                                    int aa = 1 << iBit;

                                    if (nVar.bHighLow == 1)
                                    {
                                        Value = (Datebuff[nByte] * 256 + Datebuff[nByte + 1]) & aa;
                                    }
                                    else
                                    {
                                        Value = (Datebuff[nByte] + Datebuff[nByte + 1] * 256) & aa;
                                    }
                                    if (Value > 0)
                                    {
                                        Value = 1;
                                    }

                                    nVar.SetValue(Value);
                                }
                            }
                        }
                        else if (Datebuff[18] == 1 && Datebuff[19] == 2)    //写
                        {
                            //Debug.WriteLine("CProtcolFINS.PLC0102");
                        }
                    }
                    break;

                default:
                    break;
                }
                if (CommStateE == ECommSatate.Failure)
                {
                    CommStateE = ECommSatate.Normal;//子站置通信恢复
                    CAlarmMsgEventArgs ee = new CAlarmMsgEventArgs();
                    ee.Date_Time  = DateTime.Now;
                    ee.Recorder   = Description + "通信恢复";
                    ee.priority   = EAlarmPriority.PRIORITY_1;
                    ee.eAlarmType = EAlarmType.StationState;
                    ee.StaName    = Name;
                    //staAlarm.OnAlarmEvent(ee);
                }
                else if (CommStateE != ECommSatate.Normal)
                {
                    CommStateE = ECommSatate.Normal;//子站置通信恢复
                }
                DelayTime          = 0;
                present_MsgFailRep = 0;
                present_DevFailNum = 0;
            }
        }
Beispiel #7
0
        //界面操作
        public void SendAODO(string sVar, int iValue, string sType)
        {
            if (sType == "SY")
            {
                SSend_Message temSet = new SSend_Message();
                int           iLen;
                CMessage      nMsg = new CMessage();

                temSet.Length     = 36;
                temSet.DataBuffer = new byte[temSet.Length];
                for (int i = 0; i < 4; i++)
                {
                    temSet.DataBuffer[i] = FINSTCPHeader[i];
                }
                iLen = temSet.Length - 8;
                temSet.DataBuffer[4]  = (byte)(iLen >> 24);
                temSet.DataBuffer[5]  = (byte)(iLen >> 16);
                temSet.DataBuffer[6]  = (byte)(iLen >> 8);
                temSet.DataBuffer[7]  = (byte)iLen;
                temSet.DataBuffer[11] = 2;
                for (int i = 0; i < 10; i++)
                {
                    temSet.DataBuffer[i + 16] = FINSHeader[i];
                }
                temSet.DataBuffer[26] = 1;
                temSet.DataBuffer[27] = 2;
                temSet.DataBuffer[28] = 130;

                iLen = Convert.ToInt32(sVar);
                temSet.DataBuffer[29] = (byte)(iLen >> 8);
                temSet.DataBuffer[30] = (byte)iLen;
                temSet.DataBuffer[33] = 1;
                temSet.DataBuffer[34] = (byte)(iValue >> 8);
                temSet.DataBuffer[35] = (byte)iValue;

                nMsg.sSendMsg = temSet;
                ListImmSendMsg.Add(nMsg);

                CAlarmMsgEventArgs e = new CAlarmMsgEventArgs();
                e.Date_Time  = DateTime.Now;
                e.Recorder   = GetMsg(sVar, iValue);
                e.priority   = EAlarmPriority.PRIORITY_1;
                e.eAlarmType = EAlarmType.ManualAct;
                e.StaName    = Name;
                if (e.Recorder != "")
                {
                    staAlarm.OnAlarmEvent(e);
                }
                return;
            }
            foreach (CVar nVar in StaDevice.ListDevVar)
            {
                if (nVar.Name == sVar)
                {
                    SSend_Message temSet = new SSend_Message();
                    int           iLen;
                    CMessage      nMsg = new CMessage();
                    switch (sType)
                    {
                    case "AO":    //AO 需要处理变比
                        iValue            = (int)Math.Round(iValue / nVar.RatioValue);
                        temSet.Length     = 36;
                        temSet.DataBuffer = new byte[temSet.Length];
                        for (int i = 0; i < 4; i++)
                        {
                            temSet.DataBuffer[i] = FINSTCPHeader[i];
                        }
                        iLen = temSet.Length - 8;
                        temSet.DataBuffer[4]  = (byte)(iLen >> 24);
                        temSet.DataBuffer[5]  = (byte)(iLen >> 16);
                        temSet.DataBuffer[6]  = (byte)(iLen >> 8);
                        temSet.DataBuffer[7]  = (byte)iLen;
                        temSet.DataBuffer[11] = 2;
                        for (int i = 0; i < 10; i++)
                        {
                            temSet.DataBuffer[i + 16] = FINSHeader[i];
                        }
                        temSet.DataBuffer[26] = 1;
                        temSet.DataBuffer[27] = 2;
                        temSet.DataBuffer[28] = 130;

                        iLen = nVar.ByteAddr + 1000;
                        temSet.DataBuffer[29] = (byte)(iLen >> 8);
                        temSet.DataBuffer[30] = (byte)iLen;
                        temSet.DataBuffer[33] = 1;
                        temSet.DataBuffer[34] = (byte)(iValue >> 8);
                        temSet.DataBuffer[35] = (byte)iValue;

                        nMsg.sSendMsg = temSet;
                        ListImmSendMsg.Add(nMsg); Debug.WriteLine("SendAODO:AO.ListImmSendMsg");
                        break;

                    case "AO2":    //AO2 不需要处理变比
                        temSet.Length     = 36;
                        temSet.DataBuffer = new byte[temSet.Length];
                        for (int i = 0; i < 4; i++)
                        {
                            temSet.DataBuffer[i] = FINSTCPHeader[i];
                        }
                        iLen = temSet.Length - 8;
                        temSet.DataBuffer[4]  = (byte)(iLen >> 24);
                        temSet.DataBuffer[5]  = (byte)(iLen >> 16);
                        temSet.DataBuffer[6]  = (byte)(iLen >> 8);
                        temSet.DataBuffer[7]  = (byte)iLen;
                        temSet.DataBuffer[11] = 2;
                        for (int i = 0; i < 10; i++)
                        {
                            temSet.DataBuffer[i + 16] = FINSHeader[i];
                        }
                        temSet.DataBuffer[26] = 1;
                        temSet.DataBuffer[27] = 2;
                        temSet.DataBuffer[28] = 130;

                        iLen = nVar.ByteAddr + 1000;
                        temSet.DataBuffer[29] = (byte)(iLen >> 8);
                        temSet.DataBuffer[30] = (byte)iLen;
                        temSet.DataBuffer[33] = 1;
                        temSet.DataBuffer[34] = (byte)(iValue >> 8);
                        temSet.DataBuffer[35] = (byte)iValue;

                        nMsg.sSendMsg = temSet;
                        ListImmSendMsg.Add(nMsg); Debug.WriteLine("SendAODO:AO2.ListImmSendMsg");
                        break;

                    case "DO":    //DO
                        int iByte = nVar.ByteAddr - 1000;
                        int iBit  = nVar.BitAddr;
                        if (nVar.GetBoolValue())
                        {
                            iValue = 0;
                        }
                        else
                        {
                            iValue = 1;
                        }
                        temSet.Length     = 35;
                        temSet.DataBuffer = new byte[temSet.Length];
                        for (int i = 0; i < 4; i++)
                        {
                            temSet.DataBuffer[i] = FINSTCPHeader[i];
                        }
                        iLen = temSet.Length - 8;
                        temSet.DataBuffer[4]  = (byte)(iLen >> 24);
                        temSet.DataBuffer[5]  = (byte)(iLen >> 16);
                        temSet.DataBuffer[6]  = (byte)(iLen >> 8);
                        temSet.DataBuffer[7]  = (byte)iLen;
                        temSet.DataBuffer[11] = 2;
                        for (int i = 0; i < 10; i++)
                        {
                            temSet.DataBuffer[i + 16] = FINSHeader[i];
                        }
                        temSet.DataBuffer[26] = 1;
                        temSet.DataBuffer[27] = 2;
                        temSet.DataBuffer[28] = 2;

                        temSet.DataBuffer[29] = (byte)(iByte >> 8);
                        temSet.DataBuffer[30] = (byte)iByte;
                        temSet.DataBuffer[31] = (byte)(iBit);
                        temSet.DataBuffer[33] = 1;
                        //iValue = 0;
                        temSet.DataBuffer[34] = (byte)iValue;

                        nMsg.sSendMsg = temSet;
                        ListImmSendMsg.Add(nMsg); Debug.WriteLine("SendAODO:DO.ListImmSendMsg");
                        // ListImmSendMsg.Add(SendMag8000);
                        break;

                    case "DO2":    //DO
                        iByte             = nVar.ByteAddr - 1000;
                        iBit              = nVar.BitAddr;
                        temSet.Length     = 35;
                        temSet.DataBuffer = new byte[temSet.Length];
                        for (int i = 0; i < 4; i++)
                        {
                            temSet.DataBuffer[i] = FINSTCPHeader[i];
                        }
                        iLen = temSet.Length - 8;
                        temSet.DataBuffer[4]  = (byte)(iLen >> 24);
                        temSet.DataBuffer[5]  = (byte)(iLen >> 16);
                        temSet.DataBuffer[6]  = (byte)(iLen >> 8);
                        temSet.DataBuffer[7]  = (byte)iLen;
                        temSet.DataBuffer[11] = 2;
                        for (int i = 0; i < 10; i++)
                        {
                            temSet.DataBuffer[i + 16] = FINSHeader[i];
                        }
                        temSet.DataBuffer[26] = 1;
                        temSet.DataBuffer[27] = 2;
                        temSet.DataBuffer[28] = 2;

                        temSet.DataBuffer[29] = (byte)(iByte >> 8);
                        temSet.DataBuffer[30] = (byte)iByte;
                        temSet.DataBuffer[31] = (byte)(iBit);
                        temSet.DataBuffer[33] = 1;
                        //iValue = 0;
                        temSet.DataBuffer[34] = (byte)iValue;

                        nMsg.sSendMsg = temSet;
                        ListImmSendMsg.Add(nMsg); Debug.WriteLine("SendAODO:DO2.ListImmSendMsg");
                        // ListImmSendMsg.Add(SendMag8000);
                        break;
                    }
                }
            }
        }
Beispiel #8
0
        public bool PortDataRecv(CMessage sSend, byte[] cRecv, int iRecvLen)
        {
            //     00 01 02 03 04 05 06 07 08 09 10 11
            //(012)00 07 00 00 00 06 03 03 00 41 00 40
            //(137)00 07 00 00 00 83 03 03 80 00 55 00 72 00 77 .......

            //(012)01 2F 00 00 00 06 06 02 00 00 00 99
            //(029)01 2F 00 00 00 17 06 02 14 EC 9B CA 85 8E 35 EA 5D D7 5F 27 C3 A5 08 8E 3C F1 39 25 00
            //(012)49 A4 00 00 00 06 05 05 00 6E FF 00
            //(012)49 A4 00 00 00 06 05 05 00 6E FF 00
            //(012)49 E5 00 00 00 06 05 06 00 11 00 00
            //(012)49 E5 00 00 00 06 05 06 00 11 00 00

            try
            {
                if (iRecvLen < 10)
                {
                    ListStrMsg.Add("PortDataRecv:false:iRecvLen < 10");
                    return(false);
                }
                //Debug.WriteLine(iSendNum.ToString());
                for (int i = 0; i < iRecvLen - 10; i++)
                {
                    if (cRecv[i] * 256 + cRecv[i + 1] == iSendNum)
                    {
                        int iLen = cRecv[i + 5];
                        if (iRecvLen - i < iLen + 6)
                        {
                            ListStrMsg.Add("PortDataRecv:false:iRecvLen - i < iLen + 6");
                            return(false);
                        }

                        if (CommStateE == ECommSatate.Failure)
                        {
                            SaveDebugMsg("正常");
                            CommStateE = ECommSatate.Normal;//子站置通信恢复
                            CAlarmMsgEventArgs ee = new CAlarmMsgEventArgs();
                            ee.Date_Time  = DateTime.Now;
                            ee.Recorder   = Description + "通信恢复";
                            ee.priority   = EAlarmPriority.PRIORITY_1;
                            ee.eAlarmType = EAlarmType.StationState;
                            ee.StaName    = Name;
                            staAlarm.OnAlarmEvent(ee);
                        }
                        else if (CommStateE != ECommSatate.Normal)
                        {
                            SaveDebugMsg("正常");
                            CommStateE = ECommSatate.Normal;//子站置通信恢复
                        }
                        DelayTime          = 0;
                        present_MsgFailRep = 0;
                        present_DevFailNum = 0;

                        byte[] Datebuff = new byte[iLen];
                        Array.Copy(cRecv, i + 6, Datebuff, 0, iLen);

                        GetVarValue(sSend, Datebuff);
                        return(true);
                    }
                }
                ListStrMsg.Add("PortDataRecv:false:cRecv[i] * 256 + cRecv[i + 1] == iSendNum");
                return(false);
            }
            catch (Exception ex)
            {
                ListStrMsg.Add("CProtcolModbusTCP.PortDataRecv:" + ex.Message);
                Debug.WriteLine("CProtcolModbusTCP.PortDataRecv:" + ex.Message);
                string sShow = "";
                for (int i = 0; i < iRecvLen; i++)
                {
                    sShow += cRecv[i].ToString("X2") + " ";
                }
                ListStrMsg.Add(DateTime.Now.ToLongTimeString() + "Err:" + iRecvLen.ToString() + ":" + sShow);
                Debug.WriteLine(DateTime.Now.ToLongTimeString() + "Err:" + iRecvLen.ToString() + ":" + sShow);
                return(false);
            }
        }