#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