Example #1
0
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState state = XGCommandMaker.CheckReceivedData(this.Station.Address,
                                                                     XGDefinition.DEVICE_TYPE,
                                                                     XGDefinition.FC_READ_RECORD,
                                                                     data);

            // 正确时处理记录数据,错误时保留上次读取的数据不变。
            //
            if (state == CommResultState.Correct)
            {
                byte[] innerDatas   = XGCommandMaker.GetReceivedInnerData(data);
                int    innerDataLen = innerDatas.Length;

                //
                if (innerDataLen == XGDefinition.RECODE_DATA_LENGTH)
                {
                    // analyse recode data
                    //
                    _record           = Record.Analyze(innerDatas);
                    _recordTotalCount = -1;
                }
                else if (innerDataLen == 1) // recode index error
                {
                    _recordTotalCount = innerDatas[0];
                }
                else
                {
                    throw new Exception("Read recode inner data error.");
                }
            }
            return(state);
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState r = GRCommandMaker.CheckReceivedData(this.Station.Address,
                                                                 GRDef.DEVICE_TYPE,
                                                                 GRDef.FC_READ_SETTINGS,
                                                                 data);

            if (r == CommResultState.Correct)
            {
                byte[] ids = GRCommandMaker.GetReceivedInnerData(data);
                if (ids != null && ids.Length == 4)
                {
                    if (ids[0] == GRDef.MC_OPENDEGREE)
                    {
                        this._minod = ids[1];
                        this._maxod = ids[2];
                    }
                    else
                    {
                        return(CommResultState.DataError);
                    }
                }
            }
            return(r);
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="state"></param>
        /// <returns></returns>
        private string GetCommResultTextDetail(CommResultState state)
        {
            string r = string.Empty;

            switch (state)
            {
            case CommResultState.CheckError:
                r = "校验错";
                break;

            case CommResultState.Correct:
                r = "成功";
                break;

            case CommResultState.DataError:
                r = "接收数据错误";
                break;

            case CommResultState.LengthError:
                r = "接收数据长度错误";
                break;

            case CommResultState.NullData:
                r = "未接收到数据";
                break;

            default:
                r = "未知错误";
                break;
            }

            return(r);
        }
Example #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState r = GRCommandMaker.CheckReceivedData(Station.Address,
                                                                 GRDef.DEVICE_TYPE, GRDef.FC_READ_SETTINGS,
                                                                 data);

            if (r == CommResultState.Correct)
            {
                byte[] inner = GRCommandMaker.GetReceivedInnerData(data);
                if (inner.Length < 10)
                {
                    return(CommResultState.LengthError);
                }

                if (inner[0] == GRDef.MC_RE_PRESS)
                {
//					byte mode = inner[1];
                    _mode       = (RePumpMode)inner[1];
                    _rePressSet = BitConverter.ToSingle(inner, 2);
                }
                else
                {
                    return(CommResultState.DataError);
                }
            }
            return(r);
        }
Example #5
0
        /// <summary>
        /// 处理接收到的数据
        /// </summary>
        /// <param name="received"></param>
        public void ProcessReceived(byte[] received)
        {
            m_LastReceived = received;

            // 2006.12.15 Added, save last received byte[] data.
            //
            m_LastReceivedDateTime = DateTime.Now;

            // before proecee
            //
            if (m_BeforeProcessReceivedDelegate != null)
            {
                m_BeforeProcessReceivedDelegate(this, EventArgs.Empty);
            }

            // process and save last execute result.
            //
            // 2006.12.13
            //
            //m_LastCommResultState = OnProcessReceived ( Station, Parameters , received );
            m_LastCommResultState = OnProcessReceived(received);


            // after process
            //
            if (m_AfterProcessReceivedDelegate != null)
            {
                m_AfterProcessReceivedDelegate(this, EventArgs.Empty);
            }
        }
Example #6
0
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState r = GRCommandMaker.CheckReceivedData(Station.Address,
                                                                 GRDef.DEVICE_TYPE,
                                                                 GRDef.FC_READ_SETTINGS,
                                                                 data);

            if (r == CommResultState.Correct)
            {
                byte[] innerDatas = GRCommandMaker.GetReceivedInnerData(data);
                System.Diagnostics.Debug.Assert(innerDatas != null &&
                                                innerDatas.Length == 13);

                if (innerDatas[0] == GRDef.MC_TEMPERATURE_ALARM)
                {
                    _oneGiveTempLoSetV = BitConverter.ToSingle(innerDatas, 0 * 4 + 1);
                    _twoGiveTempHiSetV = BitConverter.ToSingle(innerDatas, 1 * 4 + 1);
                    _wlLoSetV          = BitConverter.ToSingle(innerDatas, 2 * 4 + 1);
                }
                else
                {
                    return(CommResultState.DataError);
                }
            }
            return(r);
        }
Example #7
0
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState r = GRCommandMaker.CheckReceivedData(this.Station.Address,
                                                                 GRDef.DEVICE_TYPE,
                                                                 GRDef.FC_ANSWER,
                                                                 data);

            return(r);
        }
Example #8
0
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState r = XGCommandMaker.CheckReceivedData(Station.Address,
                                                                 XGDefinition.DEVICE_TYPE,
                                                                 XGDefinition.FC_QUERY_ADDRESS,
                                                                 data);

            System.Windows.Forms.MessageBox.Show("re" + data.Length + r.ToString());
            return(r);
        }
Example #9
0
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState state = XGCommandMaker.CheckReceivedData(Station.Address,
                                                                     XGDefinition.DEVICE_TYPE,
                                                                     XGDefinition.FC_READ_TOTALCOUNT,
                                                                     data);

            if (state == CommResultState.Correct)
            {
                byte[] innerDatas = XGCommandMaker.GetReceivedInnerData(data);
                _totalCount = innerDatas[0];
            }
            return(state);
        }
Example #10
0
        /// <summary>
        /// reutrn xgdata or null
        /// </summary>
        /// <returns></returns>
        public override object ToValue()
        {
            byte[]          data  = _bytes;
            CommResultState state = XGCommandMaker.CheckReceivedData(// this.Station.Address,
                XGDefinition.DEVICE_TYPE,
                XGDefinition.FC_READ_RECORD,
                data);

            _commResultState = state;

            // 正确时处理记录数据,错误时保留上次读取的数据不变。
            //
            if (state == CommResultState.Correct)
            {
                int address = data[XGDefinition.ADDRESS_POS];

                byte[] innerDatas   = XGCommandMaker.GetReceivedInnerData(data);
                int    innerDataLen = innerDatas.Length;

                //
                if (innerDataLen == XGDefinition.RECODE_DATA_LENGTH)
                {
                    // analyse recode data
                    //
                    Record record = Record.Analyze(innerDatas);
                    if (record == null)
                    {
                        return(null);
                    }

                    XGData xgdata = new XGData(record.CardSN, address, record.DateTime, false);
                    _value = xgdata;
                    return(xgdata);
                }
                else if (innerDataLen == 1) // recode index error
                {
                    //_recordTotalCount = innerDatas[0];
                    return(null);
                }
                else
                {
                    //throw new Exception("Read recode inner data error.");
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
Example #11
0
        /// <summary>
        /// return a grRealData or null
        /// </summary>
        /// <returns></returns>
        public override object ToValue()
        {
            byte[] data = _bytes;

            if (data == null || data.Length == 0)
            {
                _commResultState = CommResultState.NullData;
                return(null);
            }

            if (data.Length != 113)
            {
                _commResultState = CommResultState.LengthError;
                return(null);
            }

            // dev type and fc
            if (data[4] != 0xA0 || data[5] != 0x1E)
            {
                _commResultState = CommResultState.DataError;
                return(null);
            }

            byte cachi, caclo;

            CRC16.CalculateCRC(data, 113 - 2, out cachi, out caclo);

            byte hi = data[113 - 1];
            byte lo = data[113 - 2];

            if (cachi != hi || caclo != lo)
            {
                _commResultState = CommResultState.CheckError;
                return(null);
            }

            int address = -1;

            address = data[GRDef.ADDRESS_POS];

            byte[]     innerData = GRCommandMaker.GetReceivedInnerData(data);
            GRRealData realData  = GRRealData.Parse(innerData, address);

            if (realData != null)
            {
                _commResultState = CommResultState.Correct;
            }
            _value = realData;
            return(realData);
        }
Example #12
0
        private string GetCommResultText(CommResultState state)
        {
            string r = string.Empty;

            if (state == CommResultState.Correct)
            {
                return(" 成功");
            }
            else
            {
                r = " 失败(";
            }

            switch (state)
            {
            case CommResultState.CheckError:
                r += "校验错";
                break;

//                case CommResultState.Correct:
//                    r = "成功";
//                    break;

            case CommResultState.DataError:
                r += "接收数据错误";
                break;

            case CommResultState.LengthError:
                r += "接收数据长度错误";
                break;

            case CommResultState.NullData:
                r += "未接收到数据";
                break;

            default:
                r += "未知错误";
                break;
            }
            r += ")";

            return(r);
        }
Example #13
0
        //private string getlogstring( int commport, task task )
        private string GetLogString(string remoteIP, Task task)
        {
            CommCmdBase     cmd             = task.CommCmd;
            CommResultState commResultState = task.LastCommResultState;
            string          sLastReceive    = string.Empty;

            if (task.LastReceived != null)
            {
                sLastReceive = CT.BytesToString(task.LastReceived);
            }

            string s = string.Format("Send\t\t: {0}, {1}\r\nReceived\t: {2}, {3}\r\nCommResult\t: {4}\r\nCmdType\t\t: {5}\r\nRemoteIP\t: {6}\r\n",
                                     task.LastSendDateTime, CT.BytesToString(task.LastSendDatas),
                                     //task.LastReceivedDateTime, CT.BytesToString( task.LastReceived),
                                     task.LastReceivedDateTime, sLastReceive,
                                     commResultState.ToString(), cmd.GetType().Name, remoteIP);

            return(s);
        }
Example #14
0
        //
        static public CommResultState ProcessAutoReport(byte[] datas, out GRAlarmData alarmData)
        {
            //if ( datas == null )
            //    return CommResultState.NullData;
            //if ( datas.Length != 11 )
            //    return CommResultState.LengthError;
            CommResultState result = GRCommandMaker.CheckReceivedData(0xA0, 0x20, datas);

            if (result != CommResultState.Correct)
            {
                alarmData = null;
            }
            else
            {
                int addr = datas[GRDef.ADDRESS_POS];
                alarmData = Parse(GRCommandMaker.GetReceivedInnerData(datas), addr);
            }
            return(result);
        }
Example #15
0
        public void t1()
        {
            GRReadGiveModeCommand cmd = new GRReadGiveModeCommand(grst);

            byte[] bscmd = cmd.MakeCommand();
            Assert.IsNotNull(bscmd);
            Assert.AreEqual(10, bscmd.Length);

            string s = "21 58 44 00 A0 14 0A 47 01 00 00 00 00 06 07 08 09 1e bb";

            byte[] bsrece = new byte[] {
            };

            bsrece = Utilities.CT.StringToBytes(s, null, StringFormat.Hex);

            CommResultState r = cmd.ProcessReceived(bsrece);

            Assert.AreEqual(CommResultState.Correct, r);
            Assert.AreEqual(GiveTempMode.TempLine, cmd.GiveTempMode);
            Assert.AreEqual(0, cmd.GiveTempValue);
        }
Example #16
0
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState state = XGCommandMaker.CheckReceivedData(
                Station.Address,
                XGDefinition.DEVICE_TYPE,
                XGDefinition.FC_READ_DATE,
                data);

            if (state == CommResultState.Correct)
            {
                byte[] innerDatas = XGCommandMaker.GetReceivedInnerData(data);
                _day   = BCDConvert.BCDToDec(innerDatas[0]);
                _month = BCDConvert.BCDToDec(innerDatas[1]);
                _year  = BCDConvert.BCDToDec(innerDatas[2]);
            }
            else
            {
                SetInvalidValue();
            }

            return(state);
        }
Example #17
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState r = GRCommandMaker.CheckReceivedData(Station.Address,
                                                                 GRDef.DEVICE_TYPE, GRDef.FC_READ_SETTINGS, data);

            if (r == CommResultState.Correct)
            {
                byte[] innerDatas = GRCommandMaker.GetReceivedInnerData(data);

                byte mc = innerDatas[0];
                if (mc == GRDef.MC_TEMPERATURE_LINE)
                {
                    _tl = TemperatureLine.Parse(innerDatas, 1);
                    this._timetempline = TimeTempLine.Parse(innerDatas, 1 + 16);
                }
                else
                {
                    return(CommResultState.DataError);
                }
            }
            return(r);
        }
Example #18
0
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState r = GRCommandMaker.CheckReceivedData(this.Station.Address,
                                                                 GRDef.DEVICE_TYPE,
                                                                 GRDef.FC_READ_SETTINGS,
                                                                 data);

            if (r == CommResultState.Correct)
            {
                byte[] ids = GRCommandMaker.GetReceivedInnerData(data);
                if (ids != null && ids.Length == 19)
                {
                    _b   = BitConverter.ToSingle(ids, 15);
                    _k   = BitConverter.ToSingle(ids, 11);
                    _ids = ids;
                }
                else
                {
                    return(CommResultState.LengthError);
                }
            }
            return(r);
        }
Example #19
0
        public override CommResultState ProcessReceived(byte[] data)
        {
            CommResultState r = GRCommandMaker.CheckReceivedData(Station.Address,
                                                                 GRDef.DEVICE_TYPE,
                                                                 GRDef.FC_READ_SETTINGS,
                                                                 data);

            if (r == CommResultState.Correct)
            {
                byte[] innerDatas = GRCommandMaker.GetReceivedInnerData(data);

//                System.Diagnostics.Debug.Assert ( innerDatas != null &&
//                    innerDatas.Length == 10 );
                if (innerDatas.Length < 10)
                {
                    return(CommResultState.LengthError);
                }

                if (innerDatas [0] == GRDef.MC_TWOPRESS_CHA)
                {
                    _cycPumpCtrlMode = (CyclePumpMode)innerDatas[1];
                    //                    byte[] pressChaSetValue = new byte[ 4 ];
                    //                    byte[] backPressSetValue = new byte[ 4 ];
                    //                    Array.Copy( innerDatas,2, pressChaSetValue, 0, 4 );
                    //                    Array.Copy( innerDatas,6, backPressSetValue, 0, 4 );

                    _pressChaSetValue  = BitConverter.ToSingle(innerDatas, 2);
                    _backPressSetValue = BitConverter.ToSingle(innerDatas, 6);
                }
                else
                {
                    return(CommResultState.DataError);
                }
            }

            return(r);
        }
Example #20
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Process(object sender, EventArgs e)
        {
            ArgumentChecker.CheckNotNull(sender);
            TaskScheduler sch  = (TaskScheduler)sender;
            Task          task = sch.ActiveTask;

            ArgumentChecker.CheckNotNull(task);

            CommCmdBase     cmd             = task.CommCmd;
            CommResultState commResultState = task.LastCommResultState;

            if (commResultState != CommResultState.Correct)
            {
                if (XGConfig.Default.LogCommFail)
                {
                    string s = string.Format("Send\t\t: {0}, {1}\r\nReceived\t: {2}, {3}\r\nCommResult\t: {4}\r\nCmdType\t\t: {5}\r\n",
                                             task.LastSendDateTime, CT.BytesToString(task.LastSendDatas),
                                             task.LastReceivedDateTime, CT.BytesToString(task.LastReceived),
                                             commResultState.ToString(), cmd.GetType().Name);
                    FileLog.CommFail.Add(s);
                }
                return;
            }

            if (cmd is ReadRecordCommand)
            {
                ReadRecordCommand readRecordCmd = cmd as ReadRecordCommand;
                ProcessReadRecordCmd(readRecordCmd);
            }

            if (cmd is ReadTotalCountCommand)
            {
                ReadTotalCountCommand readCountCmd = cmd as ReadTotalCountCommand;
                ProcessReadTotalCountCmd(readCountCmd, task);
            }
        }
Example #21
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="task"></param>
//        private void Process( string remoteIP, Task task )
        private void Process(Task task)
        {
            ArgumentChecker.CheckNotNull(task);

            string      remoteIP = task.CommCmd.Station.DestinationIP;
            CommCmdBase cmd      = task.CommCmd;
            Station     st       = cmd.Station;

            CommResultState commResultState = task.LastCommResultState;
            string          s = null;

            if (XGConfig.Default.LogCommIO)
            {
                if (s == null)
                {
                    //s = GetLogString( commPort, task );
                    s = GetLogString(remoteIP, task);
                }

                FileLog.CommIO.Add(s);
                if (XGConfig.Default.ShowLogForm)
                {
                    frmLogs.Default.AddLog(s);
                }
            }

            // log fail comm
            // 所有通讯失败情况在此处理
            //
            if (commResultState != CommResultState.Correct)
            {
                if (XGConfig.Default.LogCommFail)
                {
                    if (s == null)
                    {
                        s = GetLogString(remoteIP, task);
                    }

                    if (XGConfig.Default.LogCommFail)
                    {
                        FileLog.CommFail.Add(s);
                    }

                    if (XGConfig.Default.ShowLogForm)
                    {
                        //frmLogs.FailForm.AddLog( s );
                        frmLogs.Default.AddLogCommFail(s);
                    }
                }

                ProcessFreeData(task.CommCmd.Station.DestinationIP, task.LastReceived);  //, task);
                return;
            }

            // 以下只是处理通讯成功的情况
            //

            // 4. XG real total count command
            //
            if (cmd is ReadTotalCountCommand)
            {
                ReadTotalCountCommand readCountCmd = cmd as ReadTotalCountCommand;
                ProcessReadTotalCountCmd(readCountCmd, task);
            }

            // 5. XG real record
            //
            if (cmd is ReadRecordCommand)
            {
                ReadRecordCommand readRecordCmd = cmd as ReadRecordCommand;
                ProcessReadRecordCmd(readRecordCmd);
            }

            // 6. XG clear record command
            //

            // 读取供热控制器实时数据
            // 1. GR real data command
            //
            if (cmd is GRRealDataCommand)
            {
                GRRealDataCommand realDataCmd = ( GRRealDataCommand )cmd;
                //ProcessGRRealDataCmd( commPort, realDataCmd );
                ProcessGRRealDataCmd(remoteIP, realDataCmd);
            }

            // 2. GR set out side temperature command
            //
            if (cmd is GRSetOutSideTempCommand)
            {
                GRSetOutSideTempCommand c = (GRSetOutSideTempCommand)cmd;
                ProcessGRSetOutSideTempCmd(c);
            }

            // 3. GR remote set control params
            //
        }
Example #22
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="state"></param>
 /// <returns></returns>
 private string GetCommResultText(CommResultState state)
 {
     return(state == CommResultState.Correct ? "成功" : "失败");
 }
Example #23
0
 internal void _set_comm_result(CommResultState st)
 {
     m_LastCommResultState = st;
 }