コード例 #1
0
            public override Status Scan <USB_HID_Device>(out List <USB_HID_Device> device_list,
                                                         ScanOptions scan_opt = ScanOptions.None)
            {
                device_list = new List <USB_HID_Device>();
                devices.Clear();

                try
                {
                    int i      = 1;
                    var alldev = DeviceList.Local.GetHidDevices();
                    if (alldev != null && alldev.Count() > 0)
                    {
                        foreach (HidDevice dev in alldev)
                        {
                            if (scan_opt.HasFlag(ScanOptions.UsbHid_IgnoreTexasVid) ||
                                (dev.VendorID == TI_VID && dev.ProductID == TI_BSL_PID))
                            {
                                //dev.GetReportDescriptor().DeviceItems[0].Usages;
                                string device_name = DEVICE_PREFIX + i;

                                Comm.USB_HID_Device nod = new Comm.USB_HID_Device
                                                          (
                                    dev.VendorID,
                                    dev.ProductID,
                                    dev.GetSerialNumber(),
                                    dev.GetManufacturer(),
                                    dev.GetProductName(), // dev.GetFriendlyName()
                                    device_name,
                                    dev.DevicePath,
                                    "",
                                    Mode.USB_HID
                                                          );
                                nod.FormattedDescription = nod.ToString();
                                devices.Add(device_name.ToLower(), nod);
                                i++;
                            }
                        }

                        device_list = devices.Select(pair => pair.Value).Cast <USB_HID_Device>().ToList();
                    }
                    return(Utils.StatusCreate(0));
                }
                catch (Exception ex)
                {
                    return(Utils.StatusCreate(601, ex.Message));
                }
            }
コード例 #2
0
ファイル: CommFTD2XX.cs プロジェクト: parezj/BSL430.NET
            public override Status Scan <FTDI_Device>(out List <FTDI_Device> device_list,
                                                      ScanOptions scan_opt = ScanOptions.None)
            {
                device_list = new List <FTDI_Device>();
                devices.Clear();

                try
                {
                    uint ftdiDeviceCount = 0;
                    ftStatus = FTDI.FT_STATUS.FT_OK;
                    if (ftdi == null)
                    {
                        ftdi = new FTDI();
                    }
                    ftStatus = ftdi.GetNumberOfDevices(ref ftdiDeviceCount);

                    if (ftStatus != FTDI.FT_STATUS.FT_OK)
                    {
                        return(Utils.StatusCreate(300, ftStatus.ToString()));
                    }

                    FTDI.FT_DEVICE_INFO_NODE[] ftdiDeviceList = new FTDI.FT_DEVICE_INFO_NODE[ftdiDeviceCount];

                    int timeout = Const.TIMEOUT_SCAN;
                    do
                    {
                        Task.Delay(5).Wait();
                        ftStatus = ftdi.GetDeviceList(ftdiDeviceList);
                        timeout -= 5;
                        if (timeout <= 0)
                        {
                            return(Utils.StatusCreate(302));
                        }
                        if (BSL430NET.Interrupted)
                        {
                            throw new Bsl430NetException(666);
                        }
                    }while (ftStatus != FTDI.FT_STATUS.FT_OK);

                    int i = 1;
                    foreach (var dev in ftdiDeviceList)
                    {
                        string device_name = DEVICE_PREFIX + i;
                        string type        = dev.Type.ToString();
                        string description = dev.Description;
                        string serial      = dev.SerialNumber.ToString();
                        string vidpid      = String.Format("{0:x}", dev.ID);
                        int    vid         = -1;
                        int    pid         = -1;
                        Int32.TryParse(vidpid.Substring(vidpid.Length - 4, 4), NumberStyles.HexNumber, null, out pid);
                        Int32.TryParse(vidpid.Substring(0, vidpid.Length - 4), NumberStyles.HexNumber, null, out vid);

                        if (!(scan_opt.HasFlag(ScanOptions.Ftdi_IgnoreUnknownDev) && type.ToLower().Contains("unknown")))
                        {
                            Comm.FTDI_Device nod = new Comm.FTDI_Device
                                                   (
                                vid,
                                pid,
                                type,
                                serial,
                                device_name,
                                description,
                                "",
                                Mode.UART_FTD2XX
                                                   );
                            nod.FormattedDescription = nod.ToString();
                            devices.Add(device_name.ToLower(), nod);
                            i++;
                        }
                    }

                    device_list = devices.Select(pair => pair.Value).Cast <FTDI_Device>().ToList();
                    return(Utils.StatusCreate(0));
                }
                catch (Bsl430NetException ex)
                {
                    throw ex;
                }
                catch (Exception ex)
                {
                    return(Utils.StatusCreate(301, ex.Message));
                }
            }