/// <summary> /// ワードデバイスの一括読出しをおこないます。ビットデバイスを読み出す場合は <see cref="ReadBitDevice"/>()、ダブルワードデバイスを読み出す場合は <see cref="ReadDoubleWordDevice"/>() を使用してください。 /// </summary> /// <param name="type">デバイス種別を指定します。</param> /// <param name="topAddress">読み出すデバイスの先頭アドレスを指定します。</param> /// <param name="dataNumbers">読み出すデバイスのワード数を指定します。</param> /// <returns>終了コードと受信処理結果のペアを返します。</returns> public KeyValuePair <McEndCode, short[]> ReadWordDevice(McWordDeviceType type, int topAddress, int dataNumbers) { if (this.IsDisposed) { throw new ObjectDisposedException(ObjectDisposedExceptionMessage, null as Exception); } if (type.IsBitDevice()) { throw new ArgumentException("ワードデバイスを指定してください。", "type"); } return(this._connection.ReadDevice(type, topAddress, dataNumbers, McConnection.WordDeviceReader)); }
/// <summary> /// ダブルワードデバイスの一括読出しをおこないます。ビットデバイスを読み出す場合は <see cref="ReadBitDevice"/>()、ワードデバイスを読み出す場合は <see cref="ReadWordDevice"/>() を使用してください。 /// </summary> /// <param name="type">デバイス種別を指定します。</param> /// <param name="topAddress">読み出すデバイスの先頭アドレスを指定します。</param> /// <param name="dataNumbers">読み出すデバイスのワード数を指定します。読み出したワード数分をダブルワードとして扱います。ダブルワード 1 点につきワード数 2 個として指定してください。</param> /// <returns>終了コードと受信処理結果のペアを返します。</returns> public KeyValuePair <McEndCode, Int32[]> ReadDoubleWordDevice(McWordDeviceType type, int topAddress, int dataNumbers) { if (this.IsDisposed) { throw new ObjectDisposedException(ObjectDisposedExceptionMessage, null as Exception); } if (type.IsBitDevice()) { throw new ArgumentException("ワードデバイスを指定してください。", "type"); } var pair = this._connection.ReadDevice(type, topAddress, dataNumbers, McConnection.WordDeviceReader); Int32[] values = null; if (pair.Key == McEndCode.Success) { // ワード単位で読み出した結果をダブルワード単位に変換する values = pair.Value.Chunk(2).Select(x => BitConverter.ToInt32(x.SelectMany(y => BitConverter.GetBytes(y)).ToArray(), 0)).ToArray(); } return(new KeyValuePair <McEndCode, Int32[]>(pair.Key, values)); }