#ifndef __FEED_SCALE_H #define __FEED_SCALE_H #include "main.h" #include /* 单次投喂量有效范围: 0 ~ 500.0 KG, 内部以 0.1 KG 为单位保存 */ #define FEED_SCALE_ONCEWT_MIN 1 /* 0.1 KG */ #define FEED_SCALE_ONCEWT_MAX 5000 /* 500.0 KG */ #define FEED_SCALE_WEIGHT_MAX 5000 /* 500.0 KG */ /* 磅秤接入控制:由 main.h 的 PRODUCT_WITH_FEED_SCALE 决定,此处做反向映射。 * 1=不接磅秤(基础四路继电器产品),feeding 指令直接控制继电器 1; * 0=接入磅秤(智能水产投料机产品),使用称重定量自动投喂逻辑 */ #define FEED_SCALE_DISABLED (!PRODUCT_WITH_FEED_SCALE) /* 投喂状态 */ typedef enum { FEED_IDLE = 0, /* 空闲 */ FEED_RUNNING, /* 投喂中: 继电器吸合,正在读485 */ FEED_DONE, /* 投喂完成 */ FEED_ERROR /* 异常结束(485失联/重量反而增加等) */ } FeedScaleState; /* 喂料秤模块 API */ void feedScaleInit(void); void feedScaleProcess(void); /* 触发/停止投喂 */ void feedScaleStart(uint16_t once_wt_100g); void feedScaleStop(void); /* 设置/获取单次投喂量(0.1KG 单位),设置后持久化到 EEPROM */ void feedScaleSetOnceWeight(uint16_t once_wt_100g); uint16_t feedScaleGetOnceWeight(void); /* 设置秤去皮重量(0.1KG 单位),并持久化到 EEPROM */ void feedScaleSetZero(uint16_t zero_100g); /* 获取当前/最近一次解析出的重量(0.1KG 单位) */ uint16_t feedScaleGetWeight(void); /* 获取最近一次 485 原始毛重(未去皮,0.1KG 单位) */ uint16_t feedScaleGetRawWeight(void); /* 获取当前去皮重量(0.1KG 单位) */ uint16_t feedScaleGetZero(void); /* 获取投喂状态 */ FeedScaleState feedScaleGetState(void); /* 获取已减少重量(0.1KG 单位),投喂结束后有效 */ uint16_t feedScaleGetReduced(void); /* 485 轮询间隔: 空闲 30s, 投喂中 1s */ #define FEED_SCALE_QUERY_IDLE_MS 30000u #define FEED_SCALE_QUERY_RUN_MS 1000u #endif /* __FEED_SCALE_H */