C 中的 FTDI D2XX API 在命令行控制台上工作,但在 macOS 上由 Xcode 和 Swift 编程构建的应用程序中始终 returns 为零
FTDI D2XX API in C works on command-line console but always returns zero in application which is built by Xcode and Swift programming on macOS
我正在尝试在 masOS 上构建一个 macOS 应用程序以与 FTDI D2XX 设备通信。
我使用 gcc 使用 C 代码编译了一个简单的控制台应用程序,它运行良好并获得了预期的设备数量。
但是,当我尝试将 FTDI 导入 Xcode 并使用 Swift 5 构建应用程序时。应用程序可以成功构建和执行,但 FTDI 设备计数始终为 return 0。
我尝试使用两种方法将 FTDI D2XX 静态库 (ftd2xx.a) 导入 Xcode。但是两者的结果是一样的。
- 创建了用于调用 FTDI D2XX 的 C 包装器和桥接头文件 API
- 创建模块并使用“import xxx”
调用 FTDI D2XX API 的 C 代码是:
int queryDeviceCount(void)
{
FT_STATUS ftStatus;
DWORD numDevs = 999;
ftStatus = FT_CreateDeviceInfoList(&numDevs);
if (ftStatus == FT_OK) {
return numDevs;
}
return 0;
}
调用 FT_CreateDeviceInfoList 时,它会在 ftStatus 中 returned FT_OK。但是 numDevs 始终为零(在我的设置中它应该为 2)。
我认为 FTDI D2XX 驱动程序在我的 MacBookPro 中应该没问题,因为它在命令行控制台中运行良好。
所以,我想知道在命令行控制台和 GUI 应用程序之间调用 FTDI API 是否有任何区别。我很确定 FTDI API 在 GUI 应用程序中被正确调用。
谢谢!
我发现macOS GUI App,系统资源被保护了。我需要在 "App Sandbox" 中启用 USB 访问功能才能使用 USB 访问 API。
App Sandbox 出现在 Xcode 的 Signing & Capabilities 窗格中,显示用于配置功能的其他控件。
我正在尝试在 masOS 上构建一个 macOS 应用程序以与 FTDI D2XX 设备通信。 我使用 gcc 使用 C 代码编译了一个简单的控制台应用程序,它运行良好并获得了预期的设备数量。 但是,当我尝试将 FTDI 导入 Xcode 并使用 Swift 5 构建应用程序时。应用程序可以成功构建和执行,但 FTDI 设备计数始终为 return 0。 我尝试使用两种方法将 FTDI D2XX 静态库 (ftd2xx.a) 导入 Xcode。但是两者的结果是一样的。
- 创建了用于调用 FTDI D2XX 的 C 包装器和桥接头文件 API
- 创建模块并使用“import xxx”
调用 FTDI D2XX API 的 C 代码是:
int queryDeviceCount(void)
{
FT_STATUS ftStatus;
DWORD numDevs = 999;
ftStatus = FT_CreateDeviceInfoList(&numDevs);
if (ftStatus == FT_OK) {
return numDevs;
}
return 0;
}
调用 FT_CreateDeviceInfoList 时,它会在 ftStatus 中 returned FT_OK。但是 numDevs 始终为零(在我的设置中它应该为 2)。 我认为 FTDI D2XX 驱动程序在我的 MacBookPro 中应该没问题,因为它在命令行控制台中运行良好。 所以,我想知道在命令行控制台和 GUI 应用程序之间调用 FTDI API 是否有任何区别。我很确定 FTDI API 在 GUI 应用程序中被正确调用。
谢谢!
我发现macOS GUI App,系统资源被保护了。我需要在 "App Sandbox" 中启用 USB 访问功能才能使用 USB 访问 API。
App Sandbox 出现在 Xcode 的 Signing & Capabilities 窗格中,显示用于配置功能的其他控件。