/// <summary>
        /// キーボードデバイス名を指定してオープンする
        /// </summary>
        /// <param name="friendlyName">キーボードデバイス名</param>
        public void Open(string friendlyName)
        {
            KeyboardDeviceInfo kdi = devices.Find(x => x.FriendlyName == friendlyName) ?? throw new NoKeyboardDeviceException();

            // サーバを閉じる
            myClient?.Close();
            myClient = null;

            // COMポートを閉じる
            myPort?.Close();
            myPort = null;

            switch (kdi.DeviceType)
            {
            case KeyboardDeviceInfo.KeyboardDeviceType.COM:
                OpenCOMPort(kdi);
                break;

            case KeyboardDeviceInfo.KeyboardDeviceType.SERVER:
                OpenServer(kdi);
                break;

            default:
                break;
            }
        }
        /// <summary>
        /// キーボードサーバに接続する
        /// </summary>
        /// <param name="kdi"></param>
        private void OpenServer(KeyboardDeviceInfo kdi)
        {
            myClient?.Close();
            myClient = new TcpClient(kdi.DeviceName, this.serverPort);
            Task receive = ReceiveServer();

            OnKeyboardDeviceConnected(new KeyboardDeviceEventArgs(kdi.FriendlyName));
            Console.Out.WriteLine(String.Format("{0} に接続しました。", kdi.FriendlyName));
        }
 /// <summary>
 /// 発見したキーボードデバイスを追加する。
 /// </summary>
 /// <param name="deviceName">キーボードデバイス名</param>
 private void AddDevice(KeyboardDeviceInfo kdi)
 {
     if (devices.Exists(x => x.FriendlyName == kdi.FriendlyName))
     {
         return;
     }
     devices.Add(kdi);
     OnKeyboardDeviceFound(new KeyboardDeviceEventArgs(kdi.FriendlyName));
 }
        /// <summary>
        /// COMポートのオープン
        /// </summary>
        private void OpenCOMPort(KeyboardDeviceInfo kdi)
        {
            int      BaudRate = 921600;
            Parity   Parity   = Parity.None;
            int      DataBits = 8;
            StopBits StopBits = StopBits.One;

            myPort = new SerialPort(kdi.DeviceName, BaudRate, Parity, DataBits, StopBits)
            {
                Handshake = Handshake.XOnXOff
            };
            myPort.Open();
            myPort.DataReceived += new SerialDataReceivedEventHandler(ReceiveCOMPort);
            OnKeyboardDeviceConnected(new KeyboardDeviceEventArgs(kdi.FriendlyName));

            COMSendEnable = true;
            Console.Out.WriteLine(String.Format("{0} をオープンしました。", kdi.FriendlyName));
        }