Ftd2xx dll что это

Скачать ftd2xx.dll:

Если у вас есть ошибка, связанная с ftd2xx.dll, проверьте, есть ли файл на компьютере. Dll обычно должен быть в папке C:\WINDOWS\system32 , C:\Windows\SysWOW64\ или в папке приложения, в которой происходит ошибка. Если вы не знаете, что такое DLL — прочитайте статью в Википедии о Microsoft Dynamic-link library

Как установить ftd2xx.dll файл?

  1. В Windows щелкните мышью на «Пуск» (внизу слева) и найдите «Выполнить», а затем щелкните мышью на «Выполнить».
  2. Тип CMD и щелчок мыши Ok
  3. В черном окне напишите: regsvr32 ftd2xx.dll а затем нажмите Enter
  4. Установка займет всего несколько секунд, и вы получите сообщение, когда она будет завершена.

Зарегистрируйте файл dll с помощью Regsvr32

Возможно, вам придется перезагрузить компьютер, если вы все еще получаете ошибки DLL

RegSvr32.exe имеет следующие параметры командной строки:

Regsvr32 [/u] [/n] [/i[:cmdline]] ftd2xx.dll

Обновление драйверов

Ошибки DLL могут быть вызваны ошибками, устаревшими драйверами устройств. Чтобы устранить эту возможность, обновите драйверы для всех аппаратных устройств, установленных на вашем компьютере. Драйверы устройств для OEM-систем можно получить на веб-сайте производителя системы или на вашем собственном диске, который прилагается к покупке вашего компьютера. Snappy Driver Installer Это мощная программа для установки отсутствующих драйверов и обновления старых драйверов.

Как исправить: ftd2xx.dll не был найден?

Затем:
Поместите ftd2xx.dll в одну из следующих папок:

Если у вас 64-битная версия Windows, то поместите файл в:
«C:\Windows\SysWOW64»

Если у вас 32-битная версия Windows, то поместите файл в:
«C:\Windows\System32»

После этого
Перезагрузите компьютер, чтобы изменения вступили в силу.

Всё равно выдаёт ошибку ftd2xx.dll не был найден?

Тогда придётся установить этот файл вручную. Для этого:

Зайдите в меню «Пуск».
В строчке поиска введите «cmd». И запустите найденную программу от имени администратора.
В открывшемся окне введите «regsvr32 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.

VCP. Virtual COM Port — виртуальный последовательный порт (COM-порт), который получается в операционной системе Windows, когда к ней подключается устройство класса USB CDC. Чипы компании FTDI часто работают именно как устройства USB CDC.

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).

Windows CDM Driver Architecture

Рис. 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 покажет, что устройство открыто, но в других полях информация не появится.

Значение флагов представлено 4-байтной картой бит, содержащей различные данные, как это определено в приложении Appendix A – Type Definitions. Бит 0 (самый младший) этого числа показывает, что порт открыт (open, 1) или закрыт (closed, 0). Бит 1 показывает, как устройство прошло энумерацию — как high-speed USB device (1) или full-speed USB device (0). Остальные биты (2 — 31) зарезервированы для будущего использования.

Массив 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.

Значение флагов представлено 4-байтной картой бит, содержащей различные данные, как это определено в приложении Appendix A – Type Definitions. Бит 0 (самый младший) этого числа показывает, что порт открыт (open, 1) или закрыт (closed, 0). Бит 1 показывает, как устройство прошло энумерацию — как high-speed USB device (1) или full-speed USB device (0). Остальные биты (2 — 31) зарезервированы для будущего использования.

Информация 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.

Эта функция может использоваться разными способами для получения информации различного типа. Более продвинутый способ, чем эта функция — использовать FT_CreateDeviceInfoList, FT_GetDeviceInfoList и FT_GetDeviceInfoDetail, потому что они возвращают больше информации об устройствах.

В этой упрощенной форме функция может быть использована для получения количества подключенных в настоящее время устройств. Если в 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».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *