123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- #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;
- }
- }
|