private UnPackageError CheckedPackageData(byte[] data, out SlaveReplyDataBase replyDataBase) { try { replyDataBase = null; switch (OrderCmd) { case 0x01: replyDataBase = new SlaveReadCoilsReplyData(SlaveID, OrderCmd, Data); break; case 0x02: replyDataBase = new SlaveReadDiscreteInputsReplyData(SlaveID, OrderCmd, Data); break; case 0x03: replyDataBase = new SlaveReadHoldingRegisterReplyData(SlaveID, OrderCmd, Data); break; case 0x04: replyDataBase = new SlaveReadInputRegistersReplyData(SlaveID, OrderCmd, Data); break; default: replyDataBase = new SlaveUnknownReplyData(SlaveID, OrderCmd, Data); break; } return(UnPackageError.Normal); } catch (Exception ex) { throw CreateUnPackageException("CheckedPackageData", ex, data); } }
public void BuilderObjFromBytesTest() { byte[] _orderCmd0x01 = { 0x00, 0x77, 0x00, 0x00, 0x00, 0x05, 0x02, 0x01, 0x02, 0x1F, 0x00 }; ModBusTCPUnPackage _unpackageOrderCmd0x01 = new ModBusTCPUnPackage(); SlaveReplyDataBase _slaveReplyData = null; UnPackageError _unpackageError = _unpackageOrderCmd0x01.BuilderObjFromBytes(_orderCmd0x01, out _slaveReplyData); Assert.AreEqual(_slaveReplyData.OrderCmdCode, 0x01); }
public void BuilderObjFromBytesTest() { byte[] _orderCmd0x01 = { 0x02, 0x01, 0x02, 0x1F, 0x00, 0xF5, 0xCC }; ModBusRTUUnPackage _unpackageOrderCmd0x01 = new ModBusRTUUnPackage(); SlaveReplyDataBase _slaveReplyData = null; UnPackageError _unpackageError = _unpackageOrderCmd0x01.BuilderObjFromBytes(_orderCmd0x01, out _slaveReplyData); Assert.AreEqual(_slaveReplyData.OrderCmdCode, 0x01); byte[] _orderCmd0x03 = { 002, 0x03, 0x14, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x57 }; ModBusRTUUnPackage _unpackageOrderCmd0x03 = new ModBusRTUUnPackage(); _slaveReplyData = null; _unpackageError = _unpackageOrderCmd0x03.BuilderObjFromBytes(_orderCmd0x03, out _slaveReplyData); Assert.AreEqual(_slaveReplyData.OrderCmdCode, 0x03); }
/// <summary> /// 拆包 /// </summary> /// <param name="data">数据报文</param> /// <returns>返回结果;1.是否拆包成功;2.拆包成功后对象</returns> public UnPackageError BuilderObjFromBytes(byte[] data, out SlaveReplyDataBase slaveReplyData) { slaveReplyData = null; UnPackageError _unpackageError = UnPackageError.Normal; try { bool _analyzeResult = AnalyzePackageData(data, out _unpackageError); if (_unpackageError == UnPackageError.Normal) { _unpackageError = CheckedPackageData(data, out slaveReplyData); } return(_unpackageError); } catch (UnPackageException) { _unpackageError = UnPackageError.ExceptionError; } return(_unpackageError); }
private UnPackageError CheckedPackageData(byte[] data, out SlaveReplyDataBase replyDataBase) { try { replyDataBase = null; byte[] _expectCrc = ByteHelper.ToBytes(CRCBuilder.Calu16MODBUS(CrcCaluData), false); if (!ArrayHelper.CompletelyEqual(_expectCrc, CRC)) { return(UnPackageError.CRCError); } switch (OrderCmd) { case 0x01: replyDataBase = new SlaveReadCoilsReplyData(SlaveID, OrderCmd, Data); break; case 0x02: replyDataBase = new SlaveReadDiscreteInputsReplyData(SlaveID, OrderCmd, Data); break; case 0x03: replyDataBase = new SlaveReadHoldingRegisterReplyData(SlaveID, OrderCmd, Data); break; case 0x04: replyDataBase = new SlaveReadInputRegistersReplyData(SlaveID, OrderCmd, Data); break; default: replyDataBase = new SlaveUnknownReplyData(SlaveID, OrderCmd, Data); break; } return(UnPackageError.Normal); } catch (Exception ex) { throw CreateUnPackageException("CheckedPackageData", ex, data); } }