Я работаю над небольшим приложением OS X, которое подключается к устройству FTDI. Я настроил свой проект в соответствии с ответом в этот вопрос (я добавил файл .dylib в качестве основы и добавил в свой проект файлы ftd2xx.h, WinTypes.h и ftd2xx.cfg).
В настоящее время я могу определить, подключено ли устройство FTDI через USB:
DWORD deviceCount = 0;
FT_STATUS ftdiPortStatus = FT_ListDevices(&deviceCount, NULL, FT_LIST_NUMBER_ONLY)
if (ftdiPortStatus == FT_OK) {
// The debugger tells me the deviceCount is now 1
...
}
Однако если я попытаюсь установить соединение с устройством, используя любой из следующих способов:
ftdiPortStatus = FT_OpenEx("FT232R USB UART",FT_OPEN_BY_DESCRIPTION,deviceHandle);
// OR
ftdiPortStatus = FT_Open(0, deviceHandle);
возвращаемый ftdiPortStatus всегда равен 3 (FT_DEVICE_NOT_OPENED).
Ответ здесь указывает, что проблема может заключаться в новом драйвере, который Apple добавила в OSX 10.9, однако, если я попытаюсь выгрузить этот kext:
sudo kextunload -b com.apple.driver.AppleUSBFTDI
ОС указывает, что такой kext не найден. У меня OSX 10.10, так что, возможно, Apple раскаялась в своих действиях и удалила этот драйвер из Yosemite (?). В любом случае, я все еще не могу подключиться ... Кто-нибудь знает, что может мешать подключению или иметь идеи о том, как я могу отследить проблему (возвращенный FT_STATUS не очень полезен...)?
ОБНОВЛЕНИЕ:
Ответ ниже решил проблему для меня. Если вы не уверены, может быть, у вас установлен второй драйвер VCP, не принадлежащий Apple, вы можете найти другие драйверы, выполнив следующую команду в терминале:
kextstat | grep FTDI
который выведет что-то вроде этого:
154 0 0xffffff7f831ee000 0x8000 0x8000 com.FTDI.driver.FTDIUSBSerialDriver (2.2.18) <96 16 5 4 3 1>
155 0 0xffffff7f831f6000 0x7000 0x7000 com.apple.driver.AppleUSBFTDI (1.0.1b12) <96 16 5 4 3>