private string __DetectMcuComPort(Mcu.FirmwareName expectedFirmware)
        {
            var ports = McuCom.GetMcuPortName();

            foreach (var p in ports)
            {
                try
                {
                    Console.Write(".");
                    this._mcu = new McuCom(p, BAUD);
                    if (this.Ping().Succeeded) // This will turn on the on board led
                    {
                        this.Firmware = this.DetectFirmware();
                        if (this.Firmware == expectedFirmware)
                        {
                            return(p);
                        }
                    }
                }
                finally
                {
                    if (this._mcu != null)
                    {
                        this._mcu.Dispose();
                        this._mcu = null;
                    }
                }
            }
            return(null);
        }
        public virtual McuComResponse Initialize(Mcu.FirmwareName firmwareName = Mcu.FirmwareName.NusbioMcuMatrixPixel)
        {
            this._mcu = new McuCom(this._comPort, this._baud);
            var r = this.Ping();

            if (r.Succeeded)
            {
                this.FirmwareVersion = r.GetParam(1);
                this.Firmware        = this.DetectFirmware();
                if (this.Firmware == firmwareName)
                {
                    this.SetOnBoardLed(OnBoardLedMode.Connected);
                    return(McuComResponse.Success);
                }
                else
                {
                    return(new McuComResponse().Fail(string.Format("Invalid firmware:{0}", this.Firmware)));
                }
            }
            return(new McuComResponse().Fail("Firmware not found"));
        }