Обнаружение правильного устройства с использованием FTDI FTD2xx_NET - PullRequest
1 голос
/ 13 февраля 2012

У меня есть программа ac # windows form, которая использует библиотеку FTDI FTD2XX_NET для перечисления устройств, использующих драйвер ftdi, и получения их соответствий.

Моя проблема заключается в том, что я хочу определить, является ли аппаратное обеспечение, с которым я говорю,конкретное устройство, которое я ищу.Это нестандартная аппаратная часть, но, похоже, производитель оставил общий PID / VID для чипсета FTDI.

Сейчас я прибегаю к отправке команды и ожиданию действительного ответа / тайм-аута, но, похоже, это не удастся в большом мире, учитывая большое количество устройств, использующих этот набор микросхем.

Каков правильный подход к решению этой проблемы?Я не программист, поэтому я не уверен, какова будет рекомендация для этого.Я могу попросить производителя изменить аппаратное обеспечение при необходимости.

Ответы [ 3 ]

2 голосов
/ 06 июня 2012

Даже с общим PID / VID поставщик может изменить описание устройства, чтобы вы могли проверить его перед началом связи:

// Create new instance of the FTDI device class
var ftdiDevice = new FTDI();

// Check how many FTDI devices are connected
uint deviceNum = 0;
ftdiDevice.GetNumberOfDevices(ref deviceNum);  

var status = FTDI.FT_STATUS.FT_DEVICE_NOT_FOUND;            
if (deviceNum > 0)
{
    // Get information about the connected devices
    var devicelist = new FTDI.FT_DEVICE_INFO_NODE[deviceNum];
    ftdiDevice.GetDeviceList(devicelist);
    for (uint i = 0; i < deviceNum; i++)
    {
        if (devicelist[i].Description == "My Device Description") 
        {
            status = ftdiDevice.OpenByIndex(i);
            break;
        }
    }
}

if (status != FTDI.FT_STATUS.FT_OK)
{
    throw new Exception("Unable to connect");
}

Вы можете проверить или изменить описание устройства, серийный номер, PID / VID и т. Д., Используя FT PROG . Использование пользовательского описания при выходе из общего PID / VID позволит вам использовать подписанные драйверы от FTDI без каких-либо изменений.

1 голос
/ 16 декабря 2016

httpstackoverflow.comquestions9264312 обнаружение-правильное-использование-устройства-ftdi-ftd2xx-net

Как упоминалось выше, вы можете использовать

  • список устройств [i] .Description, но также
  • devicelist [i] .SerialNumber, оба можно перепрограммировать с помощью утилиты FTDI FT_Prog.exe или с каким-то другим пользовательским кодом, это то, что я делаю для устройства Nusbio .
  • Вы также можете определить тип микросхемы с помощью api. GetDeviceID FT232RL, FT231X или FT232H имеют другой идентификатор, который имеет длину без знака
0 голосов
/ 06 марта 2012

Я предполагаю, что вы пытаетесь установить связь с устройством, разработанным третьей стороной?

Если поставщик не установил пользовательский PID / VID (т. Е. Он остается в качестве PID / VID по умолчанию, установленного FTDI), тогда попытка установить связь с устройством по протоколу связи представляется разумной.Протоколы связи обычно начинаются с набора команд рукопожатия, чтобы убедиться, что вы общаетесь с правильным устройством.Есть ли на устройстве такие команды?

...