62 lines
2.5 KiB
C
62 lines
2.5 KiB
C
/*
|
||
* 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_ */
|