示例#1
0
        public IList <SerialDevice> ReloadDevices()
        {
            var devList = new List <SerialDevice>();
            List <ManagementBaseObject> list = null;

            using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE Caption like '%(COM%'"))
            {
                list = searcher.Get().Cast <ManagementBaseObject>().ToList();
            }

            if (list == null || list.Count <= 0)
            {
                return(devList);
            }

            foreach (var device in FTDI_DeviceInfo.EnumerateDevices())
            {
                var name = "Unknown Device";
                ManagementBaseObject ftdi = null;

                if (String.IsNullOrWhiteSpace(device.DeviceSerialNumber))
                {
                    var _tempList = list.Where(x => x["DeviceID"].ToString().Equals(device.DeviceSerialNumber)).ToList();
                    if (_tempList.Count > 0)
                    {
                        ftdi = null;
                    }
                    else
                    {
                        ftdi = list.First();
                    }
                }
                else
                {
                    ftdi = list.Where(x => x["DeviceID"].ToString().Contains(device.DeviceSerialNumber)).SingleOrDefault();
                }

                if (ftdi != null)
                {
                    name = (string)ftdi["Name"];
                }
                devList.Add(new SerialDevice(name, device.DeviceSerialNumber));
            }

            return(devList);
        }
示例#2
0
        public void Open(SerialDevice device, int BaudRate)
        {
            uint baud = (uint)BaudRate;

            _FtdiInfo = (FTDI_DeviceInfo)FTDI_DeviceInfo.EnumerateDevices().First(x => x.DeviceSerialNumber == device.Device);
            if (_FtdiInfo == null)
            {
                return;
            }
            _FtdiDevice = new FTDI_Device(_FtdiInfo);
            _FtdiDevice.SetParameters(DataLength.EightBits, Parity.None, StopBits.OneStopBit);
            _FtdiDevice.SetBaudrate(baud);

            //this is to change the USB buffer before it passes data to applications. on high baudrates it allows for faster response times instead of getting data in dirty blocks
            _FtdiDevice.SetBufferSizes(64, 64);

            //set the timer for the event
            aTimer.Elapsed  += DataToReadTimer;
            aTimer.AutoReset = true;
            aTimer.Enabled   = true;
        }