Exemplo n.º 1
0
        /// <summary>
        /// 通过“消息ID”和“参数结构体对象列表”执行操作。
        /// </summary>
        /// <param name="messageId">
        /// 消息ID。
        /// <para><see cref="MessageId"/>类型,长度为2个字节。</para>
        /// </param>
        /// <param name="parameterList">参数结构体对象列表。</param>
        /// <exception cref="CsaException">表示发生错误时引发的 CSA018 异常。</exception>
        /// <returns></returns>
        private byte[] GetOperateCommand(MessageId messageId, List <Parameter> parameterList)
        {
            // 获取消息体对象。
            MessageBody mb = new MessageBody(
                messageId,
                GatewayId,
                LuminaireId,
                parameterList,
                DESKey);

            // 获取消息体字节数组。
            byte[] msgBody = mb.GetBody();

            // 获取消息头对象。
            MessageHead mh = new MessageHead(
                MessageType,
                (ushort)(msgBody.Length),
                Crc32.GetCrc32(msgBody));

            // 返回消息报文字节数组。
            return(new Datagram(mh, mb).GetDatagram());
        }
Exemplo n.º 2
0
        /// <summary>
        /// 获取命令执行结果数据报文字节数组。
        /// <para>用于获取“命令执行结果”字节数组。</para>
        /// </summary>
        /// <param name="seqNumber">
        /// 消息序号。
        /// <para>uint类型,长度为4个字节。</para>
        /// </param>
        /// <param name="messageId">
        /// 消息ID。
        /// <para><see cref="MessageId"/>类型,长度为2个字节。</para>
        /// </param>
        /// <param name="errorCode">
        /// 错误代码。
        /// <para><see cref="ErrorCode"/>类型,长度为4个字节。</para>
        /// <para>可选字段,对“命令结果”类型的消息有效。</para>
        /// </param>
        /// <param name="errorInfo">
        /// 错误信息。
        /// <para>string类型,长度可变。</para>
        /// <para>可选字段,对“命令结果”类型的消息有效。</para>
        /// </param>
        /// <returns></returns>
        public byte[] GetResultCommand(uint seqNumber, MessageId messageId, ErrorCode errorCode, string errorInfo = null)
        {
            // 获取消息体对象。
            MessageBody mb = new MessageBody(
                messageId,
                GatewayId,
                LuminaireId,
                errorCode,
                errorInfo,
                DESKey);

            // 获取消息体字节数组。
            byte[] msgBody = mb.GetBody();

            // 获取消息头对象。
            MessageHead mh = new MessageHead(
                MessageType,
                seqNumber,
                (ushort)(msgBody.Length),
                Crc32.GetCrc32(msgBody));

            // 返回消息报文字节数组。
            return(new Datagram(mh, mb).GetDatagram());
        }