ftd2xx dll что это
Fix ftd2xx.dll отсутствует или не найден сообщения об ошибках
Что такое ftd2xx.dll?
Наиболее важные факты о ftd2xx.dll:
Ftd2xx.dll безопасный или это вирус или вредоносное ПО?
Файлы DLL полезны, потому что они позволяют программе разделять свои различные компоненты на отдельные модули, которые затем могут быть добавлены или удалены для включения или исключения определенных функций. Если программное обеспечение работает таким образом с библиотеками DLL, программа может использовать меньше памяти, поскольку ей не нужно загружать все одновременно.
Убедитесь, что вы сканируете оба вместе, чтобы вам не пришлось беспокоиться о заражении вашего компьютера чем-то плохим.
Могу ли я удалить или удалить ftd2xx.dll?
Согласно различным источникам онлайн, 1% людей удаляют этот файл, поэтому он может быть безвредным, но рекомендуется проверить надежность этого исполняемого файла самостоятельно, чтобы определить, является ли он безопасным или вирусом.
Программные программы хранят файлы DLL в одной или нескольких папках во время установки. Эти файлы содержат код, который объясняет работу программ.
Если вы планируете удалить ftd2xx.dll, то, вероятно, лучше оставить его в покое. Причина этой логики заключается в том, что некоторые программы совместно используют эти файлы, поэтому удаление определенного файла DLL может непреднамеренно вызвать проблемы. Это означает, что удаление ftd2xx.dll может привести к прекращению работы одной или нескольких других программ или только в ограниченной степени.
Некоторые программы также могут устанавливать файлы DLL в несколько папок вне папки Program Files (где установлено большинство программ). Поиск этих DLL-файлов может быть очень трудным, а удаление их может быть опасным.
Как уже упоминалось выше, если вы не уверены, что ftd2xx.dll используется другой программой, мы рекомендуем оставить ее в покое. Однако, если вам нужно удалить файл, мы рекомендуем сначала сделать копию. Если после этого у вас возникнут проблемы с другой программой, требующей использования недавно удаленного DLL-файла, вы можете восстановить файл из резервной копии.
Распространенные сообщения об ошибках в ftd2xx.dll
Как вы можете себе представить, некоторые DLL появляются чаще в сообщениях об ошибках, чем другие. Вот некоторые из DLL, которые, как известно, вызывают проблемы.
Как исправить ftd2xx.dll
Обновлен декабрь 2021:
Мы рекомендуем вам попробовать этот новый инструмент. Он исправляет множество компьютерных ошибок, а также защищает от таких вещей, как потеря файлов, вредоносное ПО, сбои оборудования и оптимизирует ваш компьютер для максимальной производительности. Это исправило наш компьютер быстрее, чем делать это вручную:
Если ftd2xx.dll отсутствует или поврежден, это может повлиять на многие приложения, включая операционную систему, что может помешать вам выполнять свою работу или использовать критические функции в критически важных программах.
Запустить SFC
Для этого щелкните правой кнопкой мыши кнопку «Пуск» на компьютере Windows 10, чтобы открыть меню WinX, и щелкните ссылку «Командная строка (администратор)».
В окне CMD скопируйте следующую команду и нажмите Enter:
Сканирование может занять 10 минут, и если оно успешно завершено, вы должны перезагрузить компьютер. Запуск sfc / scannow в безопасном режиме или при запуске может дать лучшие результаты.
Обновить драйверы
Обновите драйверы вашего устройства, чтобы увидеть, решит ли это проблему.
Восстановление при загрузке
Загрузите или переустановите ftd2xx.dll
В большинстве учебников и руководств авторы предупреждают своих читателей не загружать отсутствующие файлы ftd2xx.dll со случайных и непригодных для использования веб-сайтов, которые могут предоставить им вредоносное ПО. Это не без причины, конечно. Правда в том, что в Интернете полно сайтов, которые обещают пользователям решить их проблемы, открыв определенные приложения или программы как можно скорее. К сожалению, очень немногие могут действительно оправдать ваши ожидания.
Хотя эта проблема встречается реже, потенциально гораздо более серьезная проблема заключается в том, что библиотеки DLL, которые вы загружаете из источников, отличных от поставщика, иногда могут быть загружены вирусами или другими вредоносными программами, которые могут заразить ваш компьютер. Это особенно верно для веб-сайтов, которые не слишком заботятся о том, откуда берутся их файлы. И это не так, как будто эти сайты сделают что-нибудь, чтобы рассказать вам о своих источниках высокого риска.
Библиотека ftd2xx и пример ее использования.
Я по образованию химик, а не программист и не электронщик, но очень уж мне нравится иногда спаять какое-нибудь полезное (и не очень) устройство. Здесь то мне на помощь приходит сайт easyelectronics и сообщество. Это действительно классный проект! Пользуясь случаем хочу передать привет еще раз поблагодарить создателей и участников данного проекта за информацию, которую они предоставляют людям далеким от электроники в доступной форме. Вношу и я свой скромный вклад в распространение знаний в области электроники.
Вдоволь наработавшись с 8-битными AVRами, захотелось мне опробовать 32-битные микроконтроллеры. Выбрал STM32. Подкупила стоимость отладочной платы. По-сути, из-за отсутствия отладочных средств отказался от AVR. Помигав светодиодом, решил углубит свои знания и создать более «взрослую» программу. Выбор пал на модуль USART. Тем более я всегда хотел организовать обмен между ПК и внешним устройством.
Так вот вооружившись переходником USB USART, демо-версией Keil’a, отладочной платой STM32VLDISCOVERY и желанием реализовать проект получилось вот эта статья. Людям, профессионально занимающимися микроконтроллерами эта статья вряд ли будет полезна, но новичкам в этой области, таким как я, надеюсь она пригодится, особенно тем, кто хочет разобраться с модулем USART микроконтроллеров STM32.
Итак, по порядку.
Программа на ПК посылает ASCII-код (символ). Микроконтроллер считывает этот ASCII-код из буфера данных и увеличивает его на 1 и отправляет обратно. Т.е. отправляем 1 получаем 2, отправляем а получаем b и т.д. Нужно же как-то проверит, что программа работает правильно?:)
Программа для микроконтроллера
Пишем программу. Я использовал демо-версию Keil’a.
Написав программу, проверив на отсутствие ошибок не забываем записать в память микроконтроллера. Напомню, что я использовал в своих экспериментах STM32F100RBT6B — тот что установлен в отладочной плате STM32VLDISCOVERY.
Микроконтроллер прошит и ожидает своего звездного часа. Осталось написать программу для ПК. Есть одно замечание. Если у вас нет желания заниматься программированием для ПК, то можно поиграться с терминалом. Например, использовать Terminal v1.9b by Bray. У меня была идея написать отдельную статью с подробным описанием всей последовательности действий, и я ее почти довел до завершения, но потом решил, что получится совсем детская статья.
Обзор основных функций библиотеки ftd2xx
Начну я с краткого описания функций, необходимых для организации обмена данными между устройством и ПК. Описывать все функции я не буду, т.к. их слишком много. Тем более, что всегда можно обратиться к первоисточнику. Все функции, типы данных, структуры описаны в файле D2XX_Programmer’s_Guide(FT_000071), который можно скачать с сайта FTDI.
Перед выполнением каких-либо действий, операций чтения-записи устройства, необходимо произвести определенные манипуляции по настройке устройства. В первую очередь необходимо вызвать функцию FT_CreateDeviceInfoList. Эта функция принимает указатель на переменную, в которую функция поместит количество устройств D2xx, подключенных к ПК.
В случае успешного выполнения, функция вернет значение FT_OK. В противном случае код ошибки:
Пример использования функции:
Если функция завершилась успешно, то можно идти дальше. На следующем этапе вызываем функцию FT_GetDeviceInfoList.
Она принимает 2 параметра: *pDest — указатель на массив структур FT_DEVICE_LIST_INFO_NODE, которые содержат поля, описывающие каждое устройство;
lpdwNumDevs — количество элементов в массиве. Это и есть количество наших устройств, подключенных к ПК, полученное с помощью функции FT_CreateDeviceInfoList.
Описание структуры FT_DEVICE_LIST_INFO_NODE
Пример использования функции (опять же из документа)
Имея массив структур, описывающих все устройства, подключенные к компьютеру можно получить информацию о каждом из них. Это может понадобиться в том случае, если к одному компьютеру подключено несколько D2XX устройств. Нам же нужно знать с каким устройством мы хотим обмениваться данными? 🙂
Для извлечения полей данных определенной структуры в библиотеке ftd2xx существует функция FT_GetDeviceInfoDetail. Описание приведено ниже
dwIndex — индекс устройства в массиве. Минимальное значение 0.
lpdwFlags — флаги устройства.
lpdwType — тип устройства.
lpdwID — ID устройства.
lpdwLocId — обозначает к какому порту подключено. Здесь стоит упомянуть о небольшой утилите, которую можно скачать с сайта FTDI. Позволяет определить к какому хост-контроллеру подключено наше устройство.
pcSerialNumber — серийный номер устройства. По-видимому, уникальный номер, по которому и можно отличить нужное устройство.
pcDescription — описание устройства.
*ftHandle — указатель на дескриптор устройства.
Пример использования функции FT_GetDeviceInfoDetail
Еще для обеспечения минимальной функциональности программы понадобится функция FT_Open, а лучше ее расширенная версия FT_OpenEx.
Функция принимает 3 параметра:
pvArg1 — указатель на аргумент, который определяется вторым параметром dwFlags;
dwFlags — одна из констант (FT_OPEN_BY_SERIAL_NUMBER, FT_OPEN_BY_DESCRIPTION, FT_OPEN_BY_LOCATION), определяющих что именно содержится в переменной pvArg1: серийный номер, описание, локация.
*ftHandle — сюда функция поместит указатель на дескриптор устройства. Самый важный параметр, т.к. именно по дескриптору устройства происходит настройка и обмен данными с устройством.
Один из примеров, описанных в документации. Открытие устройства по его серийному номеру:
Я библиотеке ftd2xx я нашел минимум 2 функции, которые производят настройку интерфейса. Это FT_SetBaudRate и FT_SetDataCharacteristics. Первая, как ясно из названия устанавливает скорость передачи данных.
Функция принимает 2 параметра:
ftHandle — дескриптор устройства, подлежащего настройке;
dwBaudRate — собственно скорость с которой мы хотим обмениваться информацией с устройством.
Описание функции FT_SetDataCharacteristics представлено ниже:
Функция принимает значения:
ftHandle — дескриптор устройства, подлежащего настройке;
uWordLength — число бит в слове. Может быть либо 7, либо 8. Эти значения задаются соответственно константами FT_BITS_8 и FT_BITS_7;
uStopBits — количество стоп-битов — 1 (FT_STOP_BITS_1) или 2 (FT_STOP_BITS_2);
uParity — проверка четности. Должно быть одним из: FT_PARITY_NONE, FT_PARITY_ODD, FT_PARITY_EVEN, FT_PARITY_MARK или FT_PARITY SPACE.
Пример настройки устройства со следующими параметрами передачи данных: длина — 8 бит, количество стоп-битов — 1, отсутствие проверки четности.
Теперь поговорим о функциях, с помощью которых производится обмен данными с устройством. Функция записи передает данные от ПК к устройству.
ftHandle — дескриптор устройства, в который передают данные;
lpBuffer — буфер. Другими словами это переменная, содержащая значение, которое мы хотим записать в устройство. В функцию нужно передать указатель на эту переменную;
dwBytesToWrite — количество записываемых байт. Т.е. размер переменной-буфера в байтах. Обычно используют конструкцию sizeof(Имя_переменной_буфера), которая возвращает размер переменной.
lpdwBytesWritten — фактически переданное количество байт.
В примере была, не упомянутая функция FT_Close.
Она принимает один параметр — дескриптор устройства. В случае успешного выполнения, как бы не странно это звучало, закрывает устройство 🙂
Если мы хотим прочитать данные из устройства, используем функцию FT_Read.
ftHandle — дескриптор устройства, из которого будем читать данные;
lpBuffer — указатель на переменную, в которую функция поместит считанные данные;
dwBytesToRead — количество байт, которые будем читать. Очевидно, что следует читать столько байт каков размер переменной-буфера, поэтому можно использовать sizeof();
lpdwBytesReturned — указатель на переменную, в которую функция сохранит количество фактически прочитаных байт.
Хорошо, когда функции завершаются без ошибок. Но это случается не всегда. Для определения причины ошибки в библиотеке есть функция FT_W32_GetLastError, которая принимает один параметр — дескриптор устройства, для которого нужно получить ошибку. В случае успешного завершения возвращает код ошибки, в случае неудачи — 0.
Программа для ПК
А теперь самое вкусное — программа со стороны ПК, организующая передачу данных. Программа написана на С в Visual Studio 2008. Прикрепить файлы проекта к статье у меня не удалось( Если получится, то загружу как-нибудь. Я не создавал exe-файл, а проверял работу программы прямо из среды.
Начальные условия: все устройства отключены от ПК и обесточены. Соединяем выводы RX переходника c выводом PA9 микроконтроллера, а вывод TX переходника с выводом PA10 МК, подключаем отладочную плату к порту USB, подключаем переходник к порту USB. Такая последовательность манипуляция мне показалась наиболее безопасной, к тому же у меня ничего не загорелось:)
Открываем окно Visual Studio, нажимаем F5 или зеленую стрелочку. Идет компиляция, компоновка… Если все хорошо, то появляется окно консоли такого содержания:
Строка Data received отображает символ, который нам отправил микроконтроллер. Как вы помните, мы посылали «3» (ASCII-код 51), МК увеличил его на 1, получили 52, что соответствует «4». Кажется все работает правильно:)
Изменим содержимое переменной буфера-передатчика UserDevice0_TransmitterBuffer с 51 на 72 (число введено «с головы», главное, чтобы было в диапазоне от 0 до 255). Жмем F5. Теперь окно консоли имеет вид:
Действительно, 72 — это код символа «I». Считаем, что программа работает правильно:)
Вместо эпилога
Т.к. я только недавно ознакомился с функциями вышеупомянутой библиотеки, то у меня самого много вопросов. Например фрагмент кода
работает правильно, но в случае отправки 1 байта. Что будет, если отправлять несколько десятков или сотен байт? Возможно придется написать дополнительную функцию, которая будет отслеживать состояние устройства. Ведь он может не успеть принять всю информацию, а ПК уже требует переслать обратно. В общем, так или иначе, я надеюсь эта статья станет быстрым стартом для людей, желающих разобраться с библиотекой ftd2xx. Успехов!
Ftd2xx dll что это
BitBang. Технология BitBang для чипов FTDI означает управление ножками чипа через соединение USB. На компьютере запускается программа, которая с помощью вызовов функций из фирменной DLL FTDI может управлять логическими уровнями выводов микросхемы FTDI, и может читать логический уровень на этих выводах. Таким образом, ножки чипа FTDI работают как порты ввода/вывода микроконтроллера GPIO, но управляются они не из firmware микроконтроллера, а программой, работающей на компьютере.
Программное обеспечение, поддерживающее BitBang, называется D2XX Direct Drivers [1] и туда относится библиотека DLL (FTD2XX.DLL), которую должно загрузить приложение, чтобы впоследствии вызывать функции BitBang (FT_SetBitMode, FT_GetBitMode). На сайте FTDI есть примеры кода для C++ Builder, C#, Delphi, LabVIEW, Visual Basic, Visual C++ и других платформ [2]. Далее приведен перевод даташита FTDI «D2XX Programmer’s Guide» [1].
D2XX. Интерфейс D2XX является проприетарной (закрытой) разработкой компании FTDI, специально предназначенной для программного интерфейса с чипами этой компании. Использует драйверы D2XX и FTD2XX.DLL.
CDM. Эта аббревиатура расшифровывается как Combined Driver Model. Пакет драйверов Windows, в котором сосредоточены и драйверы D2XX, и драйверы VCP.
CDM v2.12.00 WHQL Certified.exe универсальный, единый пакет драйверов VCP и D2XX для всех операционных систем семейства Windows, 32-битных и 64 битных (за исключением Windows RT и Windows CE)
FTD2XX_NET_v1.0.14.zip FTD2XX_NET.dll, так называемая managed wrapper DLL, и XML-файл для Intellisense документации в среде Visual Studio
D2XX Programmer’s Guide описание функций библиотеки FTD2XX.DLL
[Введение]
Компания FTDI предоставляет 2 альтернативных программных интерфейса для своих микросхем USB-UART и USB-FIFO. Один интерфейс предоставляет Virtual COM Port (VCP), который система Windows видит как обычный COM-порт. Второй интерфейс, D2XX, предоставляется через проприетарную DLL (FTD2XX.DLL). Интерфейс D2XX дает доступ к специальным функциям, которые не доступны в стандартном API COM-порта операционной системы, таким как установка устройства FTDI в разные режимы или запись данных в память EEPROM устройства.
В случае драйверов FTDI для Windows, оба драйвера D2XX и VCP распространяются в одном инсталляционном пакете (см. ссылки [1]), так называемом Combined Driver Model (CDM) package (на момент написания перевода это был универсальный инсталлятор CDM v2.12.00 WHQL Certified.exe). На рис. 2.1 показана Windows CDM Driver Architecture (архитектура драйвера Windows CDM).
Рис. 2.1. Windows CDM Driver Architecture.
Для Linux, Mac OS X (10.4 и более свежих) и Windows CE (4.2 и более свежих) драйверы D2XX и VCP являются взаимоисключающими опциями, т. е. только один тип драйвера может быть установлен в одно и то же время для имеющегося идентификатора устройства USB (device ID). В случае системы Windows, на которой работает драйвер CDM, приложения могут использовать либо D2XX, либо VCP интерфейс без необходимости установки другого драйвера, но все-таки нельзя использовать оба интерфейса одновременно.
Поскольку интерфейс драйвера VCP разработан для эмулирования стандартного COM-порта, то FTDI не предоставляет специальную документацию, где описано, как осуществлять обмен между драйвером VCP и приложением; разработчик может пользоваться большим количеством имеющегося справочного материала и готового кода по теме последовательного обмена данными.
В этом документе специально рассматривается проприетарный интерфейс D2XX для устройств компании FTDI. Описаны функции библиотеки FTD2XX которые разработчик может использовать в своих приложениях.
[3. Классические функции D2XX]
Функции, описанные в этой секции, совместимы со всеми устройствами FTDI.
Поддерживаемые ОС: Linux, Mac OS X (10.4 и более свежие).
Команда подключает пользовательскую комбинацию VID и PID к внутренней таблице устройства. Это позволяет драйверу работать через указанную комбинацию идентификаторов VID и PID.
dwVID Device Vendor ID, идентификатор производителя (VID)
dwPID Device Product ID, идентификатор продукта (PID)
Возвращаемое значение: FT_OK если все прошло удачно, иначе будет возвращен код ошибки FT.
По умолчанию драйвер будет поддерживать ограниченный набор VID и PID, соответствующих устройствам (только VID 0x0403 с PID-ами 0x6001, 0x6010, 0x6006). Чтобы использовать драйвер с другими комбинациями VID и PID, предварительно должна быть использована функция FT_SetVIDPID, и только после этого можно использовать такие функции как FT_ListDevices, FT_Open, FT_OpenEx или FT_CreateDeviceInfoList.
Поддерживаемые ОС: Linux, Mac OS X (10.4 и более свежие).
Команда запрашивает текущую комбинацию VID и PID из внутренней таблицы устройства.
pdwVID указатель на DWORD, который содержит внутренний VID устройства
pdwPID указатель на DWORD, который содержит внутренний PID устройства
Возвращаемое значение: FT_OK если все прошло удачно, иначе будет возвращен код ошибки FT.
Примечание: см. описание функции FT_SetVIDPID.
Поддерживаемые ОС: Linux, Mac OS X (10.4 и более свежие), Windows (2000 и более свежие), Windows CE (4.2 и более свежие).
Эта функция строит список информации об устройствах, и возвращает количество устройств D2XX, подключенных к системе. В списке содержится информация о не открытых устройствах (которые пока не используются программно) и об открытых устройствах (с которыми программно ведется взаимодействие).
lpdwNumDevs указатель на число типа unsigned long, куда будет сохранено количество подключенных устройств.
Возвращаемое значение: FT_OK если все прошло удачно, иначе будет возвращен код ошибки FT.
Приложение может использовать эту функцию для получения количества устройств, подключенных к системе. Функция выделяет место для информационного списка устройств, который потом можно опросить с использованием FT_GetDeviceInfoList или FT_GetDeviceInfoDetailFT_GetDeviceInfoDetail.
Если в системе были изменения, связанные с подключениями устройств, то информационный список устройств не изменится, пока функция FT_CreateDeviceInfoList не будет вызвана заново. Пример:
Поддерживаемые ОС: Linux, Mac OS X (10.4 и более свежие), Windows (2000 и более свежие), Windows CE (4.2 и более свежие).
Эта функция возвращает список информации об устройствах, и количество устройств D2XX в этом списке.
*pDest указатель на массив структур FT_DEVICE_LIST_INFO_NODE.
lpdwNumDevs указатель на количество элементов в массиве.
Возвращаемое значение: FT_OK если все прошло удачно, иначе будет возвращен код ошибки FT.
Эта функция должна быть вызвана только после вызова FT_CreateDeviceInfoList. Если в подключениях устройств со стороны системы были изменения, то они не отразятся в списке device info list, пока функция FT_CreateDeviceInfoList не будет вызвана заново.
Информация Location ID для устройств не будет возвращена для устройств, которые были открыты в момент вызова FT_CreateDeviceInfoList.
Информация не будет доступна для устройств, которые открыты в других процессах. В этом случае параметр Flags в структуре FT_DEVICE_LIST_INFO_NODE покажет, что устройство открыто, но в других полях информация не появится.
Массив FT_DEVICE_LIST_INFO_NODES содержит все доступные данные по каждому устройству в системе. Структура FT_DEVICE_LIST_INFO_NODES приведена в приложении. Место в памяти для списка должно быть выделено приложением. Для этой цели может быть использовано количество устройств, возвращенное функцией FT_CreateDeviceInfoList.
Когда программирование осуществляется в Visual Basic, LabVIEW или подобных языках, может потребоваться FT_GetDeviceInfoDetail вместо этой функции.
Обратите внимание, что Linux, Mac OS X и Windows CE не поддерживают идентификаторы размещения (location ID). Поэтому для этих систем параметр Location ID в структуре будет пуст.
Поддерживаемые ОС: Linux, Mac OS X (10.4 и более свежие), Windows (2000 и более свежие), Windows CE (4.2 и более свежие).
Функция берет одну запись из списка информации об устройствах.
dwIndex индекс записи в списке device info list.
lpdwFlags указатель на unsigned long, куда будет сохранено значение флагов.
lpdwType указатель на unsigned long для сохранения типа устройства.
lpdwID указатель на unsigned long для сохранения device ID.
lpdwLocId указатель на unsigned long для сохранения device location ID.
pcSerialNumber указатель на буфер для сохранения серийного номера устройства как ASCIIZ строки (null-terminated string, строка оканчивающаяся нулем).
pcDescription указатель на буфер для сохранения описания устройства как ASCIIZ строки (null-terminated string, строка оканчивающаяся нулем).
*ftHandle указатель на переменную типа FT_HANDLE, куда будет сохранен хендл.
Возвращаемое значение: FT_OK если все прошло удачно, иначе будет возвращен код ошибки FT.
Эта функция должна быть вызвана только после вызова FT_CreateDeviceInfoList. Если в подключениях устройств со стороны системы были изменения, то они не отразятся в списке device info list, пока функция FT_CreateDeviceInfoList не будет вызвана заново.
Значение переменной индекса начинается с 0.
Информация Location ID для устройств не будет возвращена для устройств, которые были открыты в момент вызова FT_CreateDeviceInfoList.
Информация не будет доступна для устройств, которые открыты в других процессах. В этом случае параметр Flags в структуре FT_DEVICE_LIST_INFO_NODE покажет, что устройство открыто, но в других полях информация не появится.
Для возврата всего списка информации об устройства как массива структур FT_DEVICE_LIST_INFO_NODE используйте FT_CreateDeviceInfoList.
Обратите внимание, что Linux, Mac OS X и Windows CE не поддерживают идентификаторы размещения (location ID). Поэтому для этих систем параметр Location ID в структуре будет пуст.
Поддерживаемые ОС: Linux, Mac OS X (10.4 и более свежие), Windows (2000 и более свежие), Windows CE (4.2 и более свежие).
Получает информацию об устройствах, подключенных к системе в настоящий момент. Функция может вернуть такую информацию, как количество подключенных устройств, серийный номер устройства и строки описания устройства, и идентификаторы location ID для подключенных устройств.
pvArg1 значение зависит от dwFlags.
pvArg2 значение зависит от dwFlags.
dwFlags определяет формат возвращенной информации.
Возвращаемое значение: FT_OK если все прошло удачно, иначе будет возвращен код ошибки FT.
В этой упрощенной форме функция может быть использована для получения количества подключенных в настоящее время устройств. Если в dwFlags установлен бит FT_LIST_NUMBER_ONLY, то параметр pvArg1 интерпретируется как указатель на переменную DWORD для сохранения количества подключенных в настоящее время устройств.
Функция может быть использована для возврата информации об устройстве: если в dwFlags установлен флаг FT_OPEN_BY_SERIAL_NUMBER, то будет возвращена строка серийного номера; если в dwFlags установлен бит FT_OPEN_BY_DESCRIPTION, то будет возвращена строка описания продукта; если в dwFlags установлен бит FT_OPEN_BY_LOCATION, то будет возвращен Location ID; если не установлен ни один из этих битов, то по умолчанию будет возвращена строка серийного номера.
Функция может использоваться для возврата строки описания одного устройства. Если в dwFlags установлены биты FT_LIST_BY_INDEX и FT_OPEN_BY_SERIAL_NUMBER или FT_OPEN_BY_DESCRIPTION, то параметр pvArg1 интерпретируется как индекс устройства, и параметр pvArg2 интерпретируется как указатель на буфер, который должен принять соответствующую строку. Используются индексы по базе 0, и для недопустимого индекса будет возвращен код ошибки FT_DEVICE_NOT_FOUND.
Функция может использоваться для возврата строки описания всех подключенных устройств. Если в dwFlags установлены биты FT_LIST_ALL и FT_OPEN_BY_SERIAL_NUMBER или FT_OPEN_BY_DESCRIPTION, то параметр pvArg1 интерпретируется как указатель на массив указателей на буферы, куда должны быть помещены соответствующие строки, и параметр pvArg2 интерпретируется как указатель на DWORD, куда будет сохранено количество подключенных в настоящее время устройств. Имейте в виду для pvArg1, что последняя запись в массиве указателей на буферы должна содержать NULL-указатель, так что в массиве может быть больше записей, чем количество подключенных устройств.
Будет возвращен location ID устройства, если в dwFlags установлены биты FT_LIST_BY_INDEX и FT_OPEN_BY_LOCATION. В этом случае параметр pvArg1 интерпретируется как индекс устройства, и параметр pvArg2 интерпретируется как указатель на переменную типа long, куда должно быть помещено значение location ID. Используются индексы по базе 0, и для недопустимого индекса будет возвращен код ошибки FT_DEVICE_NOT_FOUND. Имейте в виду, что Windows CE и Linux не поддерживают идентификаторы location ID.
Идентификаторы location ID всех подключенных устройств могут быть возвращены, если в dwFlags установлены биты FT_LIST_ALL и FT_OPEN_BY_LOCATION. В этом случае pvArg1 интерпретируется как указатель на массив переменных типа long, куда должны быть сохранены идентификаторы location ID, и параметр pvArg2 интерпретируется как указатель на DWORD, куда будет сохранено количество подключенных в настоящее время устройств.
Пример 1. Получение количества подключенных устройств.
Пример 2. Получение серийного номера устройства.
Помните, что индексы базируются на нуле. Если подключено больше одного устройства, то инкремент devIndex приведет к получению серийного номера следующего устройства, и т. д.
Пример 3. Получение описаний всех подключенных устройств.
Этот пример подразумевает, что к системе подключено 2 устройства. Если на самом деле устройств больше, то размер массива указателей должен быть увеличен, и должно быть создано большее количество буферов для строк.
Пример 4. Получение размещений (location) всех подключенных устройств.
Этот пример подразумевает, что к системе подключено не более 16 устройств. Если на самом деле устройств больше, то размер массива должен быть увеличен.
Поддерживаемые ОС: Linux, Mac OS X (10.4 и более свежие), Windows (2000 и более свежие), Windows CE (4.2 и более свежие).
Открывает устройство, и возвращает хендл, который будет использован для последующего доступа к устройству.
iDevice индекс по базе 0 для открываемого устройства.
ftHandle указатель на переменную типа FT_HANDLE, куда будет сохранен хендл. Этот хендл должен использоваться для доступа к устройству.
Возвращаемое значение: FT_OK если все прошло удачно, иначе будет возвращен код ошибки FT.
Хотя эта функция может быть использована для открытия нескольких устройств путем установки iDevice в 0, 1, 2 и т. д., у неё нет возможности открыть специфическое устройство. Чтобы открыть именованные устройства, используйте функцию FT_OpenEx.
Поддерживаемые ОС: Linux, Mac OS X (10.4 и более свежие), Windows (2000 и более свежие), Windows CE (4.2 и более свежие).
Открывает указанное устройство и возвращает хендл к нему, который будет использоваться для последующего доступа к устройству. Устройство может быть указано по серийному номеру, по описанию или по размещению (location).
Эта функция может также использоваться для того, чтобы открыть несколько устройств одновременно. Несколько устройств может быть указано по серийному номеру, описанию устройства или location ID (информация размещения, полученная от физического места подключения устройства на шине USB). Идентификаторы Location ID для специфических портов USB может быть получена утилитой USBView и дана в шестнадцатеричном формате. Идентификаторы Location ID для устройств, подключенных к системе, могут быть получены вызовом FT_GetDeviceInfoList или FT_ListDevices с соответствующими флагами.
pvArg1 указатель на аргумент, тип которого зависит от значения dwFlags. Обычно он интерпретируется как указатель на ASCIIZ-строку.
dwFlags FT_OPEN_BY_SERIAL_NUMBER, FT_OPEN_BY_DESCRIPTION или FT_OPEN_BY_LOCATION.
ftHandle указатель на переменную типа FT_HANDLE, куда будет сохранен хендл. Этот хендл должен использоваться для доступа к устройству.
Возвращаемое значение: FT_OK если все прошло удачно, иначе будет возвращен код ошибки FT.
Параметр в pvArg1 зависит от dwFlags: если dwFlags FT_OPEN_BY_SERIAL_NUMBER, то pvArg1 интерпретируется как указатель на null-terminated строку, представляющую серийный номер устройства; если dwFlags FT_OPEN_BY_DESCRIPTION, то pvArg1 интерпретируется как указатель на null-terminated строку, представляющую описание устройства; если dwFlags FT_OPEN_BY_LOCATION, то pvArg1 интерпретируется как значение long, которое содержит location ID устройства. Имейте в виду, что Windows CE и Linux не поддерживают идентификаторы location ID.
Пример 1. Открыть устройство с серийным номером «FT000001».
Пример 2. Открыть устройство с описанием «USB Serial Converter».
Пример 3. Открыть 2 устройства с серийными номерами «FT000001» и «FT999999».
Пример 4. Открыть 2 устройства с описаниями «USB Serial Converter» и «USB Pump Controller».
Пример 5. Открыть устройство с location 23.
Пример 6. Открыть 2 устройства с location 23 и 31.