コード例 #1
0
        /// <summary>
        /// Returns the list of FTDI device connected
        /// </summary>
        /// <returns>A list of devices connected</returns>
        public static List <FtDevice> GetDevices()
        {
            List <FtDevice> devInfos = new List <FtDevice>();
            FtStatus        ftStatus = 0;

            // Check device
            uint numOfDevices;

            ftStatus = FtFunction.FT_CreateDeviceInfoList(out numOfDevices);

            Debug.WriteLine($"Number of devices: {numOfDevices}");
            if (numOfDevices == 0)
            {
                return(devInfos);
            }

            Span <byte> sernum = stackalloc byte[16];
            Span <byte> desc   = stackalloc byte[64];

            for (uint i = 0; i < numOfDevices; i++)
            {
                uint         flags = 0;
                FtDeviceType ftDevice;
                uint         id;
                uint         locId;
                IntPtr       handle;
                ftStatus = FtFunction.FT_GetDeviceInfoDetail(i, out flags, out ftDevice, out id, out locId,
                                                             in MemoryMarshal.GetReference(sernum), in MemoryMarshal.GetReference(desc), out handle);
                if (ftStatus != FtStatus.Ok)
                {
                    throw new IOException($"Can't read device information on device index {i}, error {ftStatus}");
                }

                var devInfo = new FtDevice(
                    (FtFlag)flags,
                    ftDevice,
                    id,
                    locId,
                    Encoding.ASCII.GetString(sernum.ToArray(), 0, FindFirstZero(sernum)),
                    Encoding.ASCII.GetString(desc.ToArray(), 0, FindFirstZero(desc)));
                devInfos.Add(devInfo);
            }

            return(devInfos);
        }
コード例 #2
0
        protected override bool ReleaseHandle()
        {
            var ftStatus = FtFunction.FT_Close(handle);

            return(ftStatus == FtStatus.Ok);
        }