#include "bgy.h" #include "config.h" Biguayou_Inf biguayou_inf[SENSOR_DEEP]; void BGY_Init(void); void BGY_state(uint16_t CangNum); void Get_Biguayou_data(void); uint16_t BGY_SetThreshold(uint8_t* pTx); uint16_t BGY_Max = 0; void BGY_Init(void) { Cang_Inf* pcang = &cang_inf; uint16_t Flash_buf[20] = {0}; uint8_t i = 0; Flash_ReadBytes(Flash_buf,ADDR_BGYSENSOR_TYPE,1); if(Flash_buf[0] != 0xFFFF) pcang->BGY_Type = Flash_buf[0]; else pcang->BGY_Type = 1; Flash_ReadBytes(Flash_buf,ADDR_BGY_NUM,8); for(i = 0;i < pcang->Cang_Num;i++) { if(Flash_buf[i] != 0xFFFF) pcang->BGY_Num[i] = Flash_buf[i]; else pcang->BGY_Num[i] = 1; } for(i = 0;i < pcang->Cang_Num;i++) BGY_Max +=pcang->BGY_Num[i]; } void BGY_state(uint16_t CangNum) { //j = 0 Biguayou_Inf* pBGY = biguayou_inf; uint8_t i = 0; for(i = 1;i <= BGY_Max;i++) { pBGY[i].BGY_State = 0; pBGY[i].BGY_Error = 0; if(pBGY[i].BGY_SVAL[0] == 0x01) pBGY[i].BGY_State = 0x01; else if(pBGY[i].BGY_SVAL[0] == 0x00) pBGY[i].BGY_State = 0x00; else { pBGY[i].BGY_SVAL[0] = 0x00; pBGY[i].BGY_ErrorCnt++; } if(pBGY[i].BGY_ErrorCnt > pBGY->BGY_StateKeepNum) pBGY[i].BGY_Error = 1; } } void Get_Biguayou_data(void) { //j = 0i = 0 uint16_t ModbusCRC=0; uint16_t receive_error = 0; Biguayou_Inf* pBGY = biguayou_inf; ModbusCRC = USART3_RX_BUF002[5]<<8; ModbusCRC |= USART3_RX_BUF002[6]; if(USART3_RX_BUF002[1]!=0x03&&USART3_RX_BUF002[1]!=0x06) //校验读写属性 { receive_error = 1; } else if(USART3_RX_BUF002[2] != 0x02) //校验数据长度 { receive_error = 1; } else if(ModbusCRC != LIB_CRC_MODBUS(USART3_RX_BUF002,5)) //校验CRC { receive_error = 1; } if(USART3_RX_BUF002[1]==0x03) { pBGY[USART3_RX_BUF002[0]-0x80].RTData_Num = 1; pBGY[USART3_RX_BUF002[0]-0x80].BGY_SSWD[0] = USART3_RX_BUF002[3]; // pBGY[USART3_RX_BUF002[0]-0x80].BGY_SVAL[0] = USART3_RX_BUF002[4]; } else if(USART3_RX_BUF002[1]==0x06) { USART3_RX_BUF002[3] = USART3_RX_BUF002[3]; } } uint16_t BGY_SetThreshold(uint8_t* pTx) { // Biguayou_Inf* pBGY = biguayou_inf; KZQ_Inf* pkzq = &kzq_inf; // uint16_t flash_buf[10] = {0}; uint8_t i = 0; uint16_t ModBusCRC = 0; if(pkzq->data_buf[7] == 0x06) { pkzq->USE_XYF = 1; ALL_TxBuf[i++] = pkzq->data_buf[17]; ALL_TxBuf[i++] = 0x06; ALL_TxBuf[i++] = 0x12; ALL_TxBuf[i++] = pkzq->data_buf[18]; ALL_TxBuf[i++] = pkzq->data_buf[19]; ALL_TxBuf[i++] = pkzq->data_buf[18]; ALL_TxBuf[i++] = pkzq->data_buf[19]; ModBusCRC = LIB_CRC_MODBUS(ALL_TxBuf,8); ALL_TxBuf[i++] = ModBusCRC>>8; ALL_TxBuf[i++] = ModBusCRC&0xff; return 1; } else { return 0; } }