FTDI
От: cr lf  
Дата: 01.05.07 12:14
Оценка:
Hi all,
кто-нибудь программировал устройства на базе микросхем FTDI ?
У меня вот тут на столе один такой самопальный девайс и надо написать program, который будет с ним работать.
Проблема в том, что девайс не всегда обнаруживается Виндой, а обнаружить его из программы и подавно не удается ;(

program Project2;

{$APPTYPE CONSOLE}

uses
  Types;

function FT_ListDevices(var arg1,arg2: DWORD; Flags: DWORD): Longword; stdcall external 'ftd2xx.dll';

var
  n,m: DWORD;

begin
  n := 1;
  if FT_ListDevices(n,m,$80000000) = 0 then
    WriteLn('n = ',n)
  else
    WriteLn('Error');
end.


Вывод:
n = 0
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: FTDI
От: Shurf Россия  
Дата: 03.05.07 06:27
Оценка:
Здравствуйте, cr lf, Вы писали:

CL>Hi all,

CL>кто-нибудь программировал устройства на базе микросхем FTDI ?
Да, как-то пробегал рядом Забавный дивайс

Не буду настаивать на решении, но как мне вспоминается, бился с такой же проблемой.
Если мне не изменяет склероз, то на самом деле они на вход ждут указатель.
Это как раз пробелма в поставляемом файле для Delphi, тама нужно было приводить указатель
к DWORD. А я себе переписал все заново (перевод с файла .h).
я бы изменил код так:

program Project2;

{$APPTYPE CONSOLE}

uses
  Types;

const
 FT_LIST_NUMBER_ONLY        = $80000000;
 FT_LIST_BY_INDEX        = $40000000;
 FT_LIST_ALL            = $20000000;


function FT_ListDevices(arg1,arg2: Pointer; Flags: DWORD): Longword; stdcall external 'ftd2xx.dll';

var
 DevCount: Integer;

begin
  n := 1;
  if FT_ListDevices(@DevCount, nil, FT_LIST_NUMBER_ONLY) = 0 then
    WriteLn('Count = ', DevCount)
  else
    WriteLn('No FTDI devices found :( ');
end.


Попробуйте, может поможет.
Удачи!
Re[2]: FTDI
От: cr lf  
Дата: 03.05.07 07:15
Оценка:
CL>>Hi all,
CL>>кто-нибудь программировал устройства на базе микросхем FTDI ?
S>Да, как-то пробегал рядом Забавный дивайс
Кстати, а что это был за девайс ?

S>Не буду настаивать на решении, но как мне вспоминается, бился с такой же проблемой.

S>Если мне не изменяет склероз, то на самом деле они на вход ждут указатель.
S>Это как раз пробелма в поставляемом файле для Delphi, тама нужно было приводить указатель
S>к DWORD.
Насчет указателя — правда ваша.

S>А я себе переписал все заново (перевод с файла .h).

S>я бы изменил код так:
S>Попробуйте, может поможет.
А все равно не работает

typedef
  FT_STATUS (WINAPI *MYFTLISTDEVICES)(PVOID,PVOID,DWORD);

typedef
  FT_STATUS (WINAPI *MYFTOPEN)(int, FT_HANDLE *);

void main(void)
{
    HINSTANCE hinstLib;
    MYFTLISTDEVICES ListProc;
    MYFTOPEN OpenProc;
    FT_HANDLE FTHandle;
    FT_STATUS ftstat;
    DWORD num;

    hinstLib = LoadLibrary(TEXT("ftd2xx"));
    if (hinstLib != NULL) {
       ListProc = (MYFTLISTDEVICES) GetProcAddress(hinstLib, "FT_ListDevices");
       if (NULL != ListProc)
          (ListProc) (&num, NULL, FT_LIST_NUMBER_ONLY);
       OpenProc = (MYFTOPEN) GetProcAddress(hinstLib, "FT_Open");
       if (NULL != OpenProc)
         ftstat = (OpenProc) (0, &FTHandle);
       if (ftstat == FT_OK) MessageBox(NULL, "Устройство открыто", "Все нормально", MB_OK);
       else MessageBox(NULL, "Устройство не открыто", "Ошибка", MB_OK);
       FreeLibrary(hinstLib);
    }
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: FTDI
От: Shurf Россия  
Дата: 03.05.07 15:22
Оценка:
Здравствуйте, cr lf, Вы писали:
CL>Кстати, а что это был за девайс ?
То был жуткий девайс, о котором не стоит вспоминать Но тама была мелкосхема FT245BM.
Я вроде слышал, что это уже преданья старины глубокой

CL>А все равно не работает

Печально У меня точно так и работала, только я передавал туда указатель на Integer,
хотя не думаю что это принципиально

Я вот не вижу в Вашем коде проблем, другое дело я мог что-нить просмотреть из-за языковой неграмотности
А чем мотивируется неработоспособность? тем что num=0?
У меня все работало именно так, как Вы и написали, тока линковал длл статически.
Да и в моих документациях все так же и описано.
Может, в новых версиях драйверов что-то поменялось...
Пока что я бессилен вам помочь
Re[4]: FTDI
От: cr lf  
Дата: 04.05.07 05:11
Оценка:
Здравствуйте, Shurf, Вы писали:

S>Здравствуйте, cr lf, Вы писали:

CL>>Кстати, а что это был за девайс ?
S>То был жуткий девайс, о котором не стоит вспоминать Но тама была мелкосхема FT245BM.
S>Я вроде слышал, что это уже преданья старины глубокой
У меня тоже FT245BM

S>Я вот не вижу в Вашем коде проблем, другое дело я мог что-нить просмотреть из-за языковой неграмотности

S>А чем мотивируется неработоспособность? тем что num=0?
S>У меня все работало именно так, как Вы и написали, тока линковал длл статически.
S>Да и в моих документациях все так же и описано.
S>Может, в новых версиях драйверов что-то поменялось...
S>Пока что я бессилен вам помочь
Увы мне, увы
Я тоже в коде проблем не вижу
А неработоспособность в том, что num=0 и в том, что
MessageBox(NULL, "Устройство не открыто", "Ошибка", MB_OK);

Но главная проблема в том, что и Windows видит этот девайс только иногда
А чаще всего сообщает, что устройство не опознано
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: FTDI
От: Shurf Россия  
Дата: 04.05.07 06:17
Оценка:
Здравствуйте, cr lf, Вы писали:

CL>Здравствуйте, Shurf, Вы писали:


S>>Здравствуйте, cr lf, Вы писали:

CL>>>Кстати, а что это был за девайс ?
S>>То был жуткий девайс, о котором не стоит вспоминать Но тама была мелкосхема FT245BM.
S>>Я вроде слышал, что это уже преданья старины глубокой
CL>У меня тоже FT245BM

S>>Я вот не вижу в Вашем коде проблем, другое дело я мог что-нить просмотреть из-за языковой неграмотности

S>>А чем мотивируется неработоспособность? тем что num=0?
S>>У меня все работало именно так, как Вы и написали, тока линковал длл статически.
S>>Да и в моих документациях все так же и описано.
S>>Может, в новых версиях драйверов что-то поменялось...
S>>Пока что я бессилен вам помочь
CL>Увы мне, увы
CL>Я тоже в коде проблем не вижу
CL>А неработоспособность в том, что num=0 и в том, что
CL>
CL>MessageBox(NULL, "Устройство не открыто", "Ошибка", MB_OK);
CL>

CL>Но главная проблема в том, что и Windows видит этот девайс только иногда
CL>А чаще всего сообщает, что устройство не опознано

Ну тада давайте попробуем плясать от печки
Есть неки дивайс на FT245BM. Он в составе неизвестного устройства? Или это что-то самопаянное? Или это
типа Developer Kit (когда они сами все напаяли, такая платка с ножками, где уже есть EEPROM и кварц,
я забыл как называется сий продукт) ?.
Далее. Эта микросхема должна нормально определяться при некой конфигурации замкнутых ног. В необходимости
подключения EEPROM я не уверен, но лучше чтобы была
Все ли контакты нормальные? Если виндовз не видет устройство, то значит контактов нет.
Если говорит, что устройство неопознано : два варианта —
нумер раз заключается в том, что устройство прошито с левыми VID и PID. Тогда нужно подправить inf файл из драйвера
и переустановить его с этими значениями;
нумер два возможен, если драйвера были поставлены на устройство со своим VID и PID, а потом сломалась EEPROM
Без него вроде устанавливается стандартные VID и PID FTDI. Их значения я сейчас не подскажу.
Т.е. первым делом я советую поковыряться в железяке для уверенности что там везде есть контакт.
Вторым делом проверить соответствие идентификаторов устройства и драйвера.
Третим делом скачать (если еще не скачано) утиль для прошивки (MProg уазывается, у меня версия 2.8, но это
давно было) и посмотреть, что она расскажет.
Если она рассказывает что-то не то, что надо, то можно перепрошить если есть чем
Ну а потом, когда все ихни программы будут с некой степенью уверенности определять наличие устройства-
компилятор в зубы и ваять
Может, будет нелишним привести тут описание приключений устройства до тех пор как она попала к Вам в руки,
может тама что кроется...
Если будет не очень получаться, я дома могу по сусекам поскрести и отковырять программу, которую я в свое время ваял.
Удачи!
Re[6]: FTDI
От: Аноним  
Дата: 07.05.07 09:56
Оценка:
S>Ну тада давайте попробуем плясать от печки

от самой печки. Если устройство не видеться виндой(причём периодически), то косяк в устройстве, а не в винде. В инете много тем с проблемой обнаружения FTDI, после засыпания компа, либо при проблемах питания микрухи(помехи).

Советую обратиться на сайт официального постовщика этих микрух в Россию. Там был форум и обратная связь... и там все проблемы и возможные решения описаны. К сожалению не помню кто там их завозит, т.к. давно не обращались к этой микрухе.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.