E015.D.011-FXLS90230/Drivers/BSP/agreement.h

159 lines
4.3 KiB
C

#ifndef __AGREEMENT_H
#define __AGREEMENT_H
#include "main.h"
#include "system.h"
#define WRITE_CMD 0x01
#define READ_CMD 0x00
#define READ_DATA_0x34 0x34//0x5A //读取实时数据
//#define READ_STORE_DATA_0x5F 0x5F //扇区地址存储间隔时间
#define HEAD_AB 0xAB
#define ADDRESS_NB 0x0A //drill colar azi gam
#define ADDRESS_NBF 0x34
#define ADDRESS_NBT 0x40 //主机地址
#define ADDRESS_HOST 0x34//0x20
#define ADDRESS_SEC 0x40//0x01
#define ADDRESS_FAR 0x41//0x01
#define ADDRESS_BROAD 0x00
//错误指令宏定义
#define ERROR_CMD 0xE1
#define NO_DATA 0xE2
#define SPEED_ERROR 0xE3
#define EEPROM_ERROR 0xE4
#define EEPROM_EMPTY 0xE5
#define RTC_ERROR 0xE6
//#define RECEIVE_BUFFSIZE 0x150
#define RECEIVE_BUFFSIZE 0x260
// typedef enum flagdata
// {
// _FALSE=0x00,
// _TRUE=0x01,
// }FLAG;
typedef union wokrtimetype
{
uint8_t wtime[4];
uint32_t iwtime;
}WTIME;
//系统工作时间
typedef volatile struct worktime
{
WTIME SUM_TIME; //总工作时间
WTIME USER_TIME; //维修后累计使用工作时间
}WORK_TIME;
typedef enum uartstarus
{
Receive_head=0x00,
Receive_addr=0x01, //接收目的地址状态
ReceiveSend_addr=0x02, //接收主地址状态
Receive_data=0x03,
Receive_crc=0x04,
Receive_busy=0x05,
}UART_STATUS;
//获得时间数据
struct tagSYSRTC
{
unsigned char Year;
unsigned char Month;
unsigned char Day;
unsigned char Hour;
unsigned char Min;
unsigned char Sec;
};
typedef struct queuedata
{
uint8_t front;
uint8_t rear;
FLAG Fullflag;
//uint8_t maxlen;//=receive_bufsize
uint8_t Buf[RECEIVE_BUFFSIZE];
}QUEUE_DATA;
typedef struct sysdata
{
UART_STATUS UartStaus;
uint8_t ReceiveBuf[RECEIVE_BUFFSIZE];
int ReceiveOffset;
FLAG ReceiveOKFlag;
uint8_t Recdata;
uint32_t FlashReadedNum;
uint32_t FlashReadedPageNum;
//数据存储地址
uint32_t uiDataHeadAddress; //数据存储首地址
uint32_t uiDataEndAddress; //数据存储尾地址
uint32_t uiDataEndAddressStoreAdd; //尾地址存储地址
uint32_t uiDataCurrentAddress; //数据存储当前位置地址
uint32_t uiDataNum; //数据存储条数
uint16_t uiChangeAddressTimes; //存储地址更改次数
uint8_t uiLoopAddressTimes; //存储地址变更次数
uint8_t uiDataOverFlowFlag; //存储器溢出标志
uint16_t Test_Page_Addr;
uint8_t ucMeasureData[20]; //存储数据
uint16_t ucRepDataLen; //待发送数据长度
uint16_t Store_Interval_times; //地址存储间隔时间
int Get_Single_SPeed; //单次钻速值
uint8_t Allow_GetData_Flag; //允许采集模式
uint8_t Allow_GetData_Count; //允许数据采集计数
struct tagSYSRTC uiCurrentTime; //时间记录
uint8_t IsTwoHostAddrFlag; //主地址是否为双地址标志
uint8_t IsOneSlaveAddrFlag; //从地址是否为双地址标志
uint8_t Get_Wob_frequency; //钻压、扭矩采集频率
uint16_t Get_Vibration_Frequency; //振动转速采集频率
uint32_t WaitStartWork_Time; //开机后等待开始工作时间
uint32_t Work_Continued_Time; //开机后持续工作时间 用于累加
uint16_t Get_PressData_Times; //压力采集持续时间
uint8_t Time_Detemine_Flag; //时间段判断允许标志
uint8_t ucSendChkCrc; //并口传输校验位
uint8_t ucAutoCalibFlag; //自动校准标志
uint16_t ucGet_Data_Count; //数据采集计数
int Round_Data; //转速值
}SYS_DATA;
extern SYS_DATA s_Data;
extern SYS_DATA USBs_Data; //USB接收数据
extern QUEUE_DATA RecQueue;
extern WORK_TIME WorkTime;
extern void SwapAddr_DataLen(uint8_t data_len);
extern void IsOneAddr_DataLen(uint8_t data_len);
extern void RecQueueInit(void);
extern void SysDataInit(void);
extern void WorkTimeInit(void);
extern void Float2char(unsigned char *Data,float Fldata);
extern uint8_t PushQueue(QUEUE_DATA *que_data,uint8_t data);
extern uint8_t PopQueue(QUEUE_DATA *que_data,uint8_t* data);
extern void AgreementService(void);
extern uint32_t Reduce_Time(unsigned char *Time);
extern unsigned char unReduce_Time(unsigned char *Time,uint32_t ReduceTime);
extern void BCD_To_HEX(unsigned char *BCD,unsigned char *HEX,unsigned char Len);
extern void HEX_To_BCD(unsigned char *HEX,unsigned char *BCD,unsigned char Len);
extern unsigned char ReloadCurrentTime(unsigned char *TimeBuffer);
extern void Send_Slave(unsigned char Data);
#endif