/// <summary>
        /// 応答パケットから暗号化なし読み込み応答を生成します。
        /// </summary>
        /// <param name="request">要求データ</param>
        /// <param name="data">応答データ</param>
        /// <exception cref="ArgumentNullException" />
        /// <exception cref="ArgumentException" />
        public ReadWithoutEncryptionResponse(ReadWithoutEncryptionRequest request, byte[] data)
        {
            Request = request ?? throw new ArgumentNullException("request");
            RawData = data ?? throw new ArgumentNullException("data");

            if (data.Length < 11)
            {
                throw new ArgumentException("データが不足しています。", "data");
            }

            if (data[0] != ResponseCode)
            {
                throw new ArgumentException("データの形式が正しくありません。", "data");
            }

            IDm         = data.Where((val, idx) => 1 <= idx && idx <= 8).ToArray();
            StatusFlag1 = data[9];
            StatusFlag2 = data[10];

            if (StatusFlag1 == 0x00 && 12 <= data.Length)
            {
                NumberOfBlock = data[11];

                if (13 + 16 * NumberOfBlock < data.Length)
                {
                    throw new ArgumentException("データが不足しています。", "data");
                }

                BlockData = data.Where((val, idx) => 12 <= idx && idx < 12 + 16 * NumberOfBlock).ToArray();
            }
        }
예제 #2
0
        /// <summary>
        /// ReadWithoutEncryption 暗号化なし読み取り
        /// </summary>
        /// <param name="request">要求データ</param>
        /// <returns>応答データまたはnull</returns>
        /// <exception cref="ArgumentNullException" />
        public ReadWithoutEncryptionResponse ReadWithoutEncryption(ReadWithoutEncryptionRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            byte[] recv = transmit(request.Command);

            if (recv == null)
            {
                return(null);
            }

            var response = new ReadWithoutEncryptionResponse(request, recv);

            return(response);
        }