Я пытаюсь создать приложение macOS на masOS для связи с устройством FTDI D2XX. Я использовал gcc для компиляции простого консольного приложения с кодом C, и оно хорошо работает и позволяет получить ожидаемое количество устройств. Но когда я попытался импортировать FTDI в Xcode и создал приложение с помощью Swift 5. Приложение может быть успешно скомпилировано и выполнено, но оно всегда возвращает 0 для количества устройств FTDI. Я попытался использовать два метода для импорта статической библиотеки FTDI D2XX (ftd2xx.a) в Xcode. Но оба они имеют одинаковые результаты.
- Создана оболочка C и заголовок моста для вызова FTDI D2XX API
- Создан модуль и используется «import xxx»
Код C для вызова API FTDI D2XX:
int queryDeviceCount(void)
{
FT_STATUS ftStatus;
DWORD numDevs = 999;
ftStatus = FT_CreateDeviceInfoList(&numDevs);
if (ftStatus == FT_OK) {
return numDevs;
}
return 0;
}
Когда вызывается FT_CreateDeviceInfoList, он возвращает FT_OK в ftStatus. Но numDevs всегда равен нулю (он должен получить 2 в моей настройке). Я думаю, что драйвер FTDI D2XX должен быть в порядке в моем MacBookPro, потому что он хорошо работает в консоли командной строки. Итак, мне интересно, есть ли разница в вызове API FTDI между консолью командной строки и приложением с графическим интерфейсом. Я уверен, что API-интерфейс FTDI правильно вызывается в приложении с графическим интерфейсом.
Спасибо!