コード例 #1
0
        /// <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));
        }
コード例 #2
0
        /// <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));
        }