h3c - fan 报警

  • 收到了这个报警
2017-09-19T08:58:43+08:00 2017 SW-A-4 %%10DEV/1/FAN_DIRECTION_NOT_PREFERRED: -Slot=2; Fan 2 airflow direction is not preferred on slot 2, please check it.
  • 检查
[SW-A-4]dis fan
 Slot 1:
 Fan 1: 
 State    : Normal
 Airflow Direction: Port-to-power
 Prefer Airflow Direction: Port-to-power
 Fan 2: 
 State    : Normal
 Airflow Direction: Port-to-power
 Prefer Airflow Direction: Port-to-power

 Slot 2:
 Fan 1: 
 State    : FanDirectionFault
 Airflow Direction: Port-to-power
 Prefer Airflow Direction: Power-to-port
 Fan 2: 
 State    : FanDirectionFault
 Airflow Direction: Port-to-power
 Prefer Airflow Direction: Power-to-port
 ```

* 优化调整

[SW-A-4]fan prefer-direction slot 2 port-to-power


* 效果查看

[SW-A-4]dis fan
Slot 1:
Fan 1:
State : Normal
Airflow Direction: Port-to-power
Prefer Airflow Direction: Port-to-power
Fan 2:
State : Normal
Airflow Direction: Port-to-power
Prefer Airflow Direction: Port-to-power

Slot 2:
Fan 1:
State : Normal
Airflow Direction: Port-to-power
Prefer Airflow Direction: Port-to-power
Fan 2:
State : Normal
Airflow Direction: Port-to-power
Prefer Airflow Direction: Port-to-power

“`

#include "main.h" #include "stm32f1xx_hal.h" #include <stdio.h> #include <string.h> /* 硬件定义 ------------------------------------------------------------*/ #define LCD_RS_PIN GPIO_PIN_0 #define LCD_RW_PIN GPIO_PIN_1 #define LCD_EN_PIN GPIO_PIN_2 #define LCD_DATA_PORT GPIOB #define KEY_UP_PIN GPIO_PIN_3 #define KEY_DOWN_PIN GPIO_PIN_4 #define KEY_OK_PIN GPIO_PIN_5 #define BUZZER_PIN GPIO_PIN_13 #define RELAY_PIN GPIO_PIN_12 /* 全局变量 ------------------------------------------------------------*/ typedef enum { UP, DOWN, OK, NONE } KeyState; typedef struct { float temperature; float humidity; uint16_t light; } EnvData; EnvData env; uint8_t menu_index = 0; const char* menu_items[] = {"LED1", "LED2", "FAN", "BUZZER"}; char lcd_buffer[20]; /* 函数声明 ------------------------------------------------------------*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_ADC_Init(void); static void MX_TIM_Init(void); void LCD_Init(void); void LCD_WriteString(uint8_t x, uint8_t y, const char* str); void LCD_Clear(void); KeyState KEY_Scan(void); void Buzzer_Beep(uint16_t duration); void Relay_Control(uint8_t state); void System_Init(void); void Menu_Display(void); void Sensor_Update(void); void DHT11_Read(void); /* 主程序 --------------------------------------------------------------*/ int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_ADC_Init(); MX_TIM_Init(); System_Init(); LCD_Init(); // 主循环 while (1) { KeyState key = KEY_Scan(); Sensor_Update(); // 按键处理 switch(key) { case UP: if(menu_index == 0) menu_index = 3; else menu_index--; break; case DOWN: if(menu_index == 3) menu_index = 0; else menu_index++; break; case OK: // 执行设备控制 if(menu_index == 3) Buzzer_Beep(200); else Relay_Control(1); break; } // 显示更新 Menu_Display(); // 报警逻辑 if(env.temperature > 40.0f) { Relay_Control(1); Buzzer_Beep(1000); } HAL_Delay(200); } } /* 系统初始化 ----------------------------------------------------------*/ void System_Init(void) { // 外设初始化 HAL_TIM_Base_Start(&htim2); HAL_ADC_Start(&hadc1); // 初始状态 menu_index = 0; memset(&env, 0, sizeof(EnvData)); } /* 传感器数据更新 ------------------------------------------------------*/ void Sensor_Update(void) { DHT11_Read(); } /* 读取DHT11传感器数据 --------------------------------------------------*/ void DHT11_Read(void) { // 这里假设有一个DHT11读取函数,实际应使用相应的库函数 // 例如使用第三方库或HAL库实现DHT11读取 // 示例代码: uint8_t data[5]; // DHT11读取数据函数调用 if (HAL_DHT11_ReadData(data)) { env.temperature = data[2]; // 温度 env.humidity = data[0]; // 湿度 } } /* 菜单显示 ------------------------------------------------------------*/ void Menu_Display(void) { LCD_Clear(); // 显示环境参数 sprintf(lcd_buffer, "T:%.1fC H:%.1f%%", env.temperature, env.humidity); LCD_WriteString(0, 0, lcd_buffer); // 显示菜单项 for(uint8_t i = 0; i < 4; i++) { LCD_WriteString(0, 1 + i, menu_items[i]); if(i == menu_index) { LCD_WriteString(10, 1 + i, "->"); } } } /* 按键扫描 ------------------------------------------------------------*/ KeyState KEY_Scan(void) { // 上键消抖 if(HAL_GPIO_ReadPin(GPIOA, KEY_UP_PIN) == GPIO_PIN_SET) { HAL_Delay(20); if(HAL_GPIO_ReadPin(GPIOA, KEY_UP_PIN) == GPIO_PIN_SET) { while(HAL_GPIO_ReadPin(GPIOA, KEY_UP_PIN) == GPIO_PIN_SET); return UP; } } // 下键消抖 if(HAL_GPIO_ReadPin(GPIOA, KEY_DOWN_PIN) == GPIO_PIN_SET) { HAL_Delay(20); if(HAL_GPIO_ReadPin(GPIOA, KEY_DOWN_PIN) == GPIO_PIN_SET) { while(HAL_GPIO_ReadPin(GPIOA, KEY_DOWN_PIN) == GPIO_PIN_SET); return DOWN; } } // 确认键消抖 if(HAL_GPIO_ReadPin(GPIOA, KEY_OK_PIN) == GPIO_PIN_SET) { HAL_Delay(20); if(HAL_GPIO_ReadPin(GPIOA, KEY_OK_PIN) == GPIO_PIN_SET) { while(HAL_GPIO_ReadPin(GPIOA, KEY_OK_PIN) == GPIO_PIN_SET); return OK; } } return NONE; } /* 设备控制 ------------------------------------------------------------*/ void Buzzer_Beep(uint16_t duration) { HAL_GPIO_WritePin(GPIOC, BUZZER_PIN, GPIO_PIN_SET); HAL_Delay(duration); HAL_GPIO_WritePin(GPIOC, BUZZER_PIN, GPIO_PIN_RESET); } void Relay_Control(uint8_t state) { HAL_GPIO_WritePin(GPIOC, RELAY_PIN, state ? GPIO_PIN_SET : GPIO_PIN_RESET); } /* LCD驱动实现(示例)--------------------------------------------------*/ void LCD_WriteCommand(uint8_t cmd) { // 实现LCD命令写入 } void LCD_WriteData(uint8_t data) { // 实现LCD数据写入 } void LCD_WriteString(uint8_t x, uint8_t y, const char* str) { // 实现字符串显示 } void LCD_Clear(void) { // 清屏实现 } /* 硬件初始化代码(由STM32CubeMX生成)----------------------------------*/ void SystemClock_Config(void) { // 时钟配置代码 } static void MX_GPIO_Init(void) { // GPIO初始化代码 } static void MX_ADC_Init(void) { // ADC初始化代码 } static void MX_TIM_Init(void) { // 定时器初始化代码 }可以将图片中的代码整合到上述代码中吗
最新发布
05-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值