一个用枚举类型定义错误码的Demo


/**
 * Created by gfj43958   on 2017/1/6.
 */
public enum WrapperEnumError {
    //网络超时
    SOCKET_TIMEOUT("W001", "网络超时"),
    //网络链接异常
    SOCKET_CONNECT_EROOR("W002", "网络链接异常"),
    //请求参数错误
    REQUEST_ARGUMENTS_ERROR("W003", "请求参数错误"),
    //WSDL错误
    WDSL_ERROR("W004", "wsdl地址错误"),
    //Session创建失败
    SESSION_CREATE_ERROR("W006", "未知错误,session创建失败"),
    //session关闭失败
    SESSION_CLOSE_ERROR("W007", "未知错误,session关闭失败"),
    //token创建失败
    TOKEN_CREATE_ERROR("W008", "未知错误,token创建失败"),
    //token关闭失败
    TOKEN_CLOSE_ERROR("W009", "未知错误,token关闭失败"),
    //未知错误
    OTHER_ERROR("W400", "其他错误"),

    private String errorCode;
    private String errorMsg;

    private String code;
    private String msg;

    private WrapperEnumError(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    public static String getResponseMsg(String code) {
        for (WrapperEnumError wrapperEnumError : WrapperEnumError.values()) {
            if (code.equals(wrapperEnumError.getCode())) {
                return wrapperEnumError.getMsg();
            }
        }
        return OTHER_ERROR.getMsg();
    }


}
### C语言中使用枚举的示例代码(与ESP32和ESP-IDF框架相关) 在C语言中,枚举是一种非常有用的工具,尤其适用于定义一组固定的常量值。对于ESP32和ESP-IDF框架的应用场景,可以通过枚举来表示不同的硬件状态、任务优先级或其他固定选项。 以下是关于如何在ESP32项目中使用枚举的一个完整示例,其中包括定义枚举类型以及将其应用于控制LED灯的不同状态。 --- #### 1. 定义枚举类型 首先,在头文件或源文件顶部定义一个枚举类型,用来描述LED灯的各种可能状态。 ```c typedef enum { LED_OFF = 0, LED_ON, LED_BLINK_SLOW, LED_BLINK_FAST, LED_ERROR_STATE // 表示错误状态 } led_state_t; ``` 以上代码定义一个名为`led_state_t`的枚举类型,其中包含了五个成员分别代表LED灯的不同状态[^4]。 --- #### 2. 应用枚举控制LED行为 接下来展示一段具体的实现代码,演示如何根据枚举类型的值动态调整LED的行为。 ```c #include <stdio.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "driver/gpio.h" #define LED_PIN GPIO_NUM_2 // 假设LED连接至GPIO2 // 初始化GPIO函数 void init_gpio(void) { gpio_config_t io_conf = {}; io_conf.intr_type = GPIO_INTR_DISABLE; // 禁用中断 io_conf.mode = GPIO_MODE_OUTPUT; // 设置为输出模式 io_conf.pin_bit_mask = (1ULL << LED_PIN); // 只作用于指定引脚 io_conf.pull_down_en = 0; // 不启用下拉电阻 io_conf.pull_up_en = 0; // 不启用上拉电阻 gpio_config(&io_conf); } // 控制LED的任务 void control_led_task(void *pvParameters) { led_state_t current_state = *(led_state_t *)pvParameters; while (1) { switch (current_state) { case LED_OFF: gpio_set_level(LED_PIN, 0); // 关闭LED break; case LED_ON: gpio_set_level(LED_PIN, 1); // 打开LED break; case LED_BLINK_SLOW: gpio_set_level(LED_PIN, !gpio_get_level(LED_PIN)); // 切换LED状态 vTaskDelay(pdMS_TO_TICKS(500)); // 每隔500ms切换一次 break; case LED_BLINK_FAST: gpio_set_level(LED_PIN, !gpio_get_level(LED_PIN)); // 切换LED状态 vTaskDelay(pdMS_TO_TICKS(100)); // 每隔100ms切换一次 break; case LED_ERROR_STATE: gpio_set_level(LED_PIN, 0); // 错误状态下强制关闭LED printf("Error state detected!\n"); break; default: break; } vTaskDelay(pdMS_TO_TICKS(10)); // 小延迟避免CPU过载 } } ``` 上述代码片段展示了如何通过传入参数的方式让任务知晓当前应该执行哪种LED状态,并按照预设逻辑操作对应的GPIO引脚[^4]。 --- #### 3. 主函数集成 最后,在主函数中初始化GPIO并启动任务。 ```c void app_main() { led_state_t initial_state = LED_ON; // 设定初始状态为LED_ON init_gpio(); // 初始化GPIO xTaskCreate(control_led_task, // 创建任务 "Control_LED_Task", 2048, // 栈大小 &initial_state, // 参数传递给任务 1, // 任务优先级 NULL); // 返回的任务句柄未被存储 } ``` 在这里设置了默认启动时点亮LED的情况,当然也可以修改成其他任何合法的状态值[^1]。 --- ### 结论 本篇文档详细介绍了如何借助C语言中的枚举功能配合ESP-IDF开发环境下的API接口去灵活掌控外围器件的工作流程。这种设计思路有助于提高程序可读性和维护便利度的同时还能够有效减少潜在的人为失误风险[^1]. ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值