Ejemplo n.º 1
0
        private void SetupDevice(DeviceInstance devi)
        {
            /* 直前のデバイスを終了 */
            if (devi_ != null)
            {
                /* 登録イベント解除 */
                devi_.StatusChanged   -= OnDeviceStatusChanged;
                devi_.SendDataRequest -= OnDeviceSendBufferEmpty;
                devi_.DataRateUpdated -= OnDeviceDataRateUpdated;

                /* デバイス終了 */
                devi_.DeviceShutdownRequest();
            }

            /* 新しいデバイスをセットアップ */
            if (devi != null)
            {
                /* イベント登録 */
                devi.StatusChanged   += OnDeviceStatusChanged;
                devi.SendDataRequest += OnDeviceSendBufferEmpty;
                devi.DataRateUpdated += OnDeviceDataRateUpdated;

                /* ゲートの設定/状態を反映 */
                devi.ConnectRequest = gatep_.ConnectRequest;
            }

            /* インスタンス入れ替え */
            lock (send_queue_sync_) {
                devi_ = devi;
            }
        }