You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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;
}

关键注意事项

  1. 初始化PTMU服务:程序启动时必须调用ptmuInit(),退出时调用ptmuExit(),否则所有PTMU相关函数都会失败:
int main() {
    gfxInitDefault();
    ptmuInit(); // 初始化电源管理服务
    
    // 业务代码,比如调用isChargerPluggedin()
    
    ptmuExit();
    gfxExit();
    return 0;
}
  1. 避免冗余的布尔比较:你之前代码中的chargeState == 1属于冗余写法,直接返回chargeState更符合C++代码规范,也更易读。

  2. 你的尝试为什么无效:使用动态分配内存或全局变量并没有解决根本问题——如果PTMU_GetAdapterState调用失败,无论变量存储位置如何,其值都是未定义的,自然会返回错误结果。

内容的提问来源于stack exchange,提问作者The epic face 007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:31:57