/* * uart_send.h * * Created on: 2024年11月19日 * Author: psx */ #ifndef APP_INC_UART_SEND_H_ #define APP_INC_UART_SEND_H_ #include "uart_dev.h" #define RS485_MAX_PACK_DATA_LEN 60 /* 指定对齐方式为1字节 */ #pragma pack(push,1) typedef struct _send_data_info{ device_handle device; uint8_t dataState; //储存数据的状态,1:有数据,0:无数据 uint8_t dataLen; //数据长度 uint8_t Counter; //已经发送的长度 uint8_t *data; //储存数据的内容 }send_data_info; typedef struct _uart_send_info { uint8_t insertState; //能否插入指示,大于0代表能插入 uint8_t sendStateGw:1; //能否发送指示,1:需要发送,0:不需要发送 uint8_t sendStateBat:1; //能否发送指示 uint8_t sendOverStateGw:1; //发送完成指示,1:发送完成,0:发送中 uint8_t sendOverStateBat:1; //发送完成指示 uint8_t GwState:1; //向上通信485总线空闲状态,1:空闲,0:繁忙 uint8_t idleStateGw:1; //向上通信空闲状态,1:没数据到来,0:有数据到来 uint8_t BatState:1; //向下通信485总线空闲状态 uint8_t idleStateBat:1; //向下通信空闲状态 // uint8_t sendStateGw; //能否发送指示,1:需要发送,0:不需要发送 // uint8_t sendStateBat; //能否发送指示 // uint8_t sendOverStateGw; //发送完成指示,1:发送完成,0:发送中 // uint8_t sendOverStateBat; //发送完成指示 // uint8_t GwState; //向上通信485总线空闲状态,1:空闲,0:繁忙 // uint8_t idleStateGw; //向上通信空闲状态,1:没数据到来,0:有数据到来 // uint8_t BatState; //向下通信485总线空闲状态 // uint8_t idleStateBat; //向下通信空闲状态 send_data_info *insertData; //通过该指针写入数据 send_data_info *sendDataGw; //通过该指针发送数据 send_data_info *sendDataBat; //通过该指针发送数据 send_data_info data1; //储存数据的第1个位置 send_data_info data2; //储存数据的第2个位置 send_data_info data3; //储存数据的第3个位置 }uart_send_info; /* 恢复默认的对齐设置 */ #pragma pack(pop) extern uart_send_info uart_send; void send_init(void); void check_sendState(void); void uart_interruptSend(device_handle device, uint8_t buff[], uint8_t len); void uartDMA_Init(device_handle device, uint8_t buff[], uint8_t len); #endif /* APP_INC_UART_SEND_H_ */