/// <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(); } }
/// <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); }