#ifndef __RS485_TASK_H #define __RS485_TASK_H #include "bsp.h" #include "Public.h" #define RS485_RX_BUFF_LEN_MAX 64 typedef struct { SensorComm_m Com; uint16_t SensorType; }SensorTypes_t; typedef enum { RS485_OUT_VOLTAGE_OV, RS485_OUT_VOLTAGE_5V, RS485_OUT_VOLTAGE_12V, }RS485Vol_m; typedef struct { uint8_t Header; uint8_t SlvAddr; uint8_t Cmd; uint16_t DevType; uint8_t PayloadLen; }__attribute__((packed))FrameHeader_t, *FrameHeader; typedef enum { RS485_SENSOR_CMD_NULL, RS485_SENSOR_CMD_CAIL, RS485_SENSOR_CMD_READ, RS485_SENSOR_CMD_SET_ADDR, RS485_SENSOR_CMD_QUERY, RS485_SENSOR_CMD_SET_INV_TIME, RS485_SENSOR_CMD_TIME_SYNC, RS485_SENSOR_CMD_END, }RS485SensorCmd_m; //传感器数据发送结构体 typedef struct { bool SendFlag; uint8_t SensorCnt; uint8_t SensorErrCnt[SENSOR_NUM_MAX]; uint8_t ReadSensorCnt; int32_t ReadSensorInterval; RS485SensorCmd_m Cmd; uint8_t SensorAddr; uint16_t SensorType; uint8_t CmdParaLen; uint8_t *CmdPara; uint8_t RS485RxBuff[RS485_RX_BUFF_LEN_MAX]; uint8_t RS485RxLen; uint8_t RS485TimeOutCnt; uint32_t RS485CommUnitReadTimeDelay; uint8_t SendUnitCommIdx; rt_sem_t RS485Rev_Sem; bool InitOverFlag; }SensorCommPara_t, *SensorCommPara; void RS485CmdSend(GateWayPara GateWay, uint8_t CommUintAddr, SensorCommPara SensorComm); void RS485Ch1_Thread_Entry(void *parameter); void RS485Ch2_Thread_Entry(void *parameter); void RS485RxOverhandler(void); extern SensorCommPara_t SComm1Para; extern SensorCommPara_t SComm2Para; #endif