/// <summary> /// 初始化结束命令 /// </summary> /// <param name="cot">传输原因</param> /// <param name="coi">初始化结束命令</param> /// <param name="objectAddr">公共地址</param> private void SendMasterCommand(CauseOfTransmissionList cot, CauseOfInitialization coi, UInt32 objectAddr) { try { var id = TypeIdentification.M_EI_NA_1;//初始化结束命令 eventTypeIDManager.AddEventProcess(new EventProperty(id)); var frame = new MasterCommand(appMessageManager.TransmitSequenceNumber, appMessageManager.RealReceiveSequenceNumber, id, cot, appMessageManager.ASDUADdress, objectAddr, coi); var array = frame.GetAPDUDataArray(); MainTypeIProcess(array, array.Length, appMessageManager.WaitTime, id); appMessageManager.UpdateTransmitSequenceNumber(); } catch (Exception ex) { MessageBox.Show(ex.Message, "SendMasterCommand复位进程命令"); } }
/// <summary> /// MasterCommand APDU初始化结束命令 /// </summary> /// <param name="typeID">类型ID</param> /// <param name="transmitSeqNum">发送序列号</param> /// <param name="ReceiveSeqNum">接收序列号</param> /// <param name="cot">传输原因</param> /// <param name="asduPublicAddress">ASDU公共地址</param> /// <param name="objectAddress">信息对象地址</param> /// <param name="coi">初始化原因coi</param> public MasterCommand(UInt16 transmitSeqNum, UInt16 ReceiveSeqNum, TypeIdentification typeID, CauseOfTransmissionList cot, UInt16 asduPublicAddress, UInt32 objectAddress, CauseOfInitialization coi) { ASDU = new ApplicationServiceDataUnit((byte)typeID, (byte)1, false, (byte)cot, asduPublicAddress); //信息对象地址为0 ASDU.InformationObject[0] = ElementTool.GetBit7_0(objectAddress); ASDU.InformationObject[1] = ElementTool.GetBit15_8(objectAddress); ASDU.InformationObject[2] = ElementTool.GetBit23_16(objectAddress); ASDU.InformationObject[3] = (byte)coi; var apduLen = 4 + ASDU.Length; //控制域长度4 + ASDU长度 APCI = new APCITypeI((byte)apduLen, transmitSeqNum, ReceiveSeqNum); TimeStamp = DateTime.Now; }