3DS充电器插入状态检测函数返回异常的问题求助
解决3DS充电器检测函数返回错误的问题
你的问题核心可能出在两个地方:PTMU服务未初始化,或者没有检查PTMU_GetAdapterState的调用结果,导致读取的充电状态值无效。
修正后的函数实现
确保代码包含必要头文件,且在使用PTMU函数前初始化服务。以下是正确的检测函数:
#include <3ds.h> bool isChargerPluggedin() { bool chargeState = false; // 默认初始化为未插入状态 Result res = PTMU_GetAdapterState(&chargeState); // 检查函数调用是否成功 if (R_FAILED(res)) { // 调用失败时返回默认false(可根据需求自定义错误处理) return false; } // 直接返回布尔值,无需与1比较(bool类型的true等价于1,但直接返回更清晰规范) return chargeState; }
关键注意事项
- 初始化PTMU服务:程序启动时必须调用
ptmuInit(),退出时调用ptmuExit(),否则所有PTMU相关函数都会失败:
int main() { gfxInitDefault(); ptmuInit(); // 初始化电源管理服务 // 业务代码,比如调用isChargerPluggedin() ptmuExit(); gfxExit(); return 0; }
避免冗余的布尔比较:你之前代码中的
chargeState == 1属于冗余写法,直接返回chargeState更符合C++代码规范,也更易读。你的尝试为什么无效:使用动态分配内存或全局变量并没有解决根本问题——如果
PTMU_GetAdapterState调用失败,无论变量存储位置如何,其值都是未定义的,自然会返回错误结果。
内容的提问来源于stack exchange,提问作者The epic face 007
相关产品推荐
相关产品推荐

