初始化毕业设计项目
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
#ifndef __ATTENDANCE_H
|
||||
#define __ATTENDANCE_H
|
||||
|
||||
#include "stm32f10x.h"
|
||||
|
||||
// 同步状态枚举
|
||||
typedef enum {
|
||||
SYNC_PENDING = 0, // 待同步(新记录)
|
||||
SYNC_SYNCING, // 同步中
|
||||
SYNC_SYNCED, // 已同步成功
|
||||
SYNC_FAILED // 同步失败(等待重试)
|
||||
} SyncStatus;
|
||||
|
||||
// 考勤记录结构体
|
||||
typedef struct {
|
||||
char student_id[20]; // 学号
|
||||
char student_name[32]; // 学生姓名
|
||||
float confidence; // 识别置信度
|
||||
uint32_t timestamp; // 打卡时间戳(秒)
|
||||
uint8_t time_slot; // 打卡时段编号
|
||||
SyncStatus sync_status; // 同步状态
|
||||
uint8_t retry_count; // 重试次数
|
||||
uint32_t last_retry_time; // 上次重试时间(毫秒)
|
||||
} AttendanceRecord;
|
||||
|
||||
// 人脸识别结果结构体
|
||||
typedef struct {
|
||||
uint8_t success; // 识别是否成功 (1=成功, 0=失败)
|
||||
char student_id[20]; // 学号
|
||||
char student_name[32]; // 学生姓名
|
||||
float confidence; // 置信度 (0.0-1.0)
|
||||
} FaceRecognitionResult;
|
||||
|
||||
// 考勤状态
|
||||
typedef enum {
|
||||
ATTENDANCE_SUCCESS = 0, // 打卡成功
|
||||
ATTENDANCE_DUPLICATE, // 重复打卡(本时段已打卡)
|
||||
ATTENDANCE_UNKNOWN, // 未识别到人脸
|
||||
ATTENDANCE_LOW_CONFIDENCE, // 置信度过低
|
||||
ATTENDANCE_OUT_OF_TIME // 不在考勤时间段内
|
||||
} AttendanceStatus;
|
||||
|
||||
// 时间段定义结构体
|
||||
typedef struct {
|
||||
uint8_t enabled; // 是否启用该时间段(1=启用, 0=禁用)
|
||||
uint8_t start_hour; // 开始小时 (0-23)
|
||||
uint8_t start_minute; // 开始分钟 (0-59)
|
||||
uint8_t end_hour; // 结束小时 (0-23)
|
||||
uint8_t end_minute; // 结束分钟 (0-59)
|
||||
char name[20]; // 时段名称(如"上午签到")
|
||||
} TimeSlot;
|
||||
|
||||
// 函数声明
|
||||
void Attendance_Init(void);
|
||||
void Attendance_SetCurrentTime(uint8_t hour, uint8_t minute); // 设置当前时间
|
||||
void Attendance_UpdateTimeSlots(TimeSlot* slots, uint8_t count); // 更新时间段配置(从服务器下载后调用)
|
||||
uint8_t Attendance_ParseTimeSlotsJSON(const char* json_str); // 从JSON字符串解析时间段配置
|
||||
AttendanceStatus Attendance_ProcessFaceResult(FaceRecognitionResult* result);
|
||||
uint8_t Attendance_IsDuplicate(const char* student_id);
|
||||
uint8_t Attendance_IsDuplicateOnServer(const char* student_id); // 服务器端查重
|
||||
void Attendance_GetCurrentSlotTime(char* start_time, char* end_time); // 获取当前时段时间
|
||||
uint8_t Attendance_LoadTodayRecordsFromServer(void); // 新增:从服务器加载今日签到记录
|
||||
uint8_t Attendance_IsDuplicateInCache(const char* student_id); // 新增:在本地缓存中查重
|
||||
void Attendance_AddToCache(const char* student_id); // 新增:添加学号到缓存
|
||||
void Attendance_ClearCache(void); // 新增:清空缓存
|
||||
void Attendance_ClearRecords(void);
|
||||
uint16_t Attendance_GetTotalCount(void); // 获取累计考勤总数
|
||||
uint16_t Attendance_GetActiveCount(void); // 获取当前缓存记录数
|
||||
int8_t Attendance_GetCurrentTimeSlot(void); // 获取当前时段编号(-1表示不在考勤时段)
|
||||
|
||||
// 数据同步相关函数
|
||||
uint16_t Attendance_GetPendingCount(void); // 获取待同步记录数量(PENDING状态)
|
||||
AttendanceRecord* Attendance_GetNextPendingRecord(uint16_t* index); // 获取下一个待同步记录
|
||||
void Attendance_MarkSyncStatus(uint16_t index, SyncStatus status); // 更新记录的同步状态
|
||||
void Attendance_IncrementRetry(uint16_t index); // 增加重试计数
|
||||
AttendanceRecord* Attendance_GetRecordByIndex(uint16_t index); // 按索引获取记录
|
||||
void Attendance_ResetFailedRecords(void); // 将所有FAILED记录重置为PENDING
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user