Qt窗体调用FTDI静态方法无响应问题求助
Qt按钮调用FTDI静态函数无响应的问题排查与解决
问题背景
我想用Qt窗体上的按钮驱动FTDI USB3开发板,为了让生成的值能在其他地方复用,把FTDI接口写成了静态函数。但点击按钮后,静态函数似乎没被调用,Qt调试也看不到任何反馈,求解决思路。
我写的代码
// Qt窗体按钮点击槽函数 void StarLight::on_pushBtnFind_clicked() { FT_STATUS displayDevicesMethod2(void); QApplication::processEvents(); } // 枚举已连接设备的方法2(静态函数) static FT_STATUS displayDevicesMethod2(void) { FT_STATUS ftStatus; FT_HANDLE ftHandle = NULL; // 获取并显示已连接设备列表 // 先调用FT_CreateDeviceInfoList获取设备数量 // 再调用FT_GetDeviceInfoList或FT_GetDeviceInfoDetail获取设备信息 // 设备信息包括:Flags(USB速率)、设备类型、设备ID(厂商/产品)、后续数据访问句柄 DWORD numDevs = 0; ftStatus = FT_CreateDeviceInfoList(&numDevs); // 构建设备列表并返回连接数量 if (FT_FAILED(ftStatus)) { printf("创建设备列表失败,状态码 = %lu\n", ftStatus); } printf("成功创建设备列表。\n\t已连接设备数量: %lu\n", numDevs); // 方法2:使用FT_GetDeviceInfoDetail if (!FT_FAILED(ftStatus) && numDevs > 0) { ftHandle = NULL; DWORD Flags = 0; DWORD Type = 0; DWORD ID = 0; char SerialNumber[16] = { 0 }; char Description[32] = { 0 }; for(DWORD i = 0; i <numDevs; i++) { ftStatus = FT_GetDeviceInfoDetail(i, &Flags, &Type, &ID, NULL, SerialNumber, Description, &ftHandle); if (!FT_FAILED(ftStatus)) { printf("设备[%lu] (使用FT_GetDeviceInfoDetail)\n", i); printf("\tFlags: 0x%lx %s | 类型: %lu | ID: 0x%08lX | ftHandle=0x%p\n", Flags, Flags & FT_FLAGS_SUPERSPEED? "[USB 3]": Flags & FT_FLAGS_HISPEED? "[USB 2]": Flags & FT_FLAGS_OPENED? "[已打开]": "", Type, ID, ftHandle); printf("\t序列号=%s\n", SerialNumber); printf("\t描述=%s\n", Description); } } } return ftStatus; }
解决建议
核心问题:未实际调用静态函数
槽函数里只是声明了displayDevicesMethod2,并没有执行它。把声明语句替换成函数调用:void StarLight::on_pushBtnFind_clicked() { displayDevicesMethod2(); // 直接调用函数,而非声明 // QApplication::processEvents(); 这句可以移除,槽函数本身在事件循环中执行 }调试输出不可见的问题
Qt GUI程序默认不会把printf的输出显示在Creator的应用输出面板里,建议换成Qt自带的qDebug()输出,这样能直接在调试窗口看到反馈:// 替换示例 if (FT_FAILED(ftStatus)) { qDebug() << "创建设备列表失败,状态码 =" << ftStatus; } qDebug() << "成功创建设备列表。已连接设备数量:" << numDevs;确认静态函数作用域
确保displayDevicesMethod2这个静态函数的定义在StarLight类的槽函数能访问到的范围内(比如和槽函数同一个.cpp文件,或者在头文件中声明该静态函数),否则会出现编译错误。
内容的提问来源于stack exchange,提问作者Currents
相关产品推荐
相关产品推荐

