123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- #include "hdf.h"
- void TOUCHUAN_UART_NUM(uint8_t* pTx) ;
- void Get_ZN_hdf_data(void) ;
- HDF_Inf hdf_inf[SENSOR_DEEP];
- uint16_t Uart_len_TouChuan= 0;
- uint8_t Get_DFState(uint8_t Cang_Num) //查询仓底阀状态
- {
- HDF_Inf* phdf = hdf_inf;
- return !phdf[Cang_Num].HDF_OFData[0];
- }
- void DF_State(uint8_t Cang_Num) //查询仓底阀状态
- {
- Cang_Inf* pcang = &cang_inf;
- HDF_Inf* phdf = hdf_inf;
- uint8_t i = 0,j = 0,HDF_MAX = 3;
-
- if(pcang->HDF_Type == 0) //底阀监测器
- {
- if(i < HDF_BUF_DEP)
- {
- phdf[1].HDF_OFData[i] = HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_14);
- phdf[2].HDF_OFData[i] = HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15);
- phdf[3].HDF_OFData[i] = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_6);
- phdf[4].HDF_OFData[i] = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_7);
- phdf[5].HDF_OFData[i] = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_8);
- phdf[6].HDF_OFData[i] = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_9);
- phdf[7].HDF_OFData[i] = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8);
- phdf[8].HDF_OFData[i] = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_11);
- i++;
- }
- if(i >= HDF_BUF_DEP)
- i = 0;
- }
- else if(pcang->HDF_Type == 1) //其他底阀监测
- {
- phdf[1].HDF_OFData[0] = HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_14);
- phdf[2].HDF_OFData[0] = HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15);
- phdf[3].HDF_OFData[0] = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_6);
- phdf[4].HDF_OFData[0] = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_7);
- phdf[5].HDF_OFData[0] = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_8);
- phdf[6].HDF_OFData[0] = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_9);
- phdf[7].HDF_OFData[0] = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8);
- phdf[8].HDF_OFData[0] = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_11);
- /* for(j = 1;j <= HDF_MAX;j++) //SLM HDF_MAX
- {
- if(phdf[j].HDF_ErrorCnt > phdf->HDF_StateKeepNum)
- phdf[j].HDF_Error = 1;
- }*/
- }
- }
- void Get_ZN_hdf_data(void)
- {
- uint8_t receive_error = 0;
- // uint16_t ModbusCRC = 0;
-
- // Cang_Inf* pcang = &cang_inf;
- HDF_Inf* phdf = hdf_inf;
- phdf[USART1_RX_BUF002[0]-0x20].RTData_Num = 1;
- if(USART3_RX_BUF002[0]==0x21||USART3_RX_BUF002[0]==0x22)
- {
- if(USART3_RX_BUF002[1]!=0x03&&USART3_RX_BUF002[1]!=0x06) //校验读写属性
- {
- receive_error = 1;
- }
- /* else if(ModbusCRC != LIB_CRC_MODBUS(USART3_RX_BUF002,6)) //校验CRC
- {
- receive_error = 0;
- }*/
- if((USART3_RX_BUF002[1] == 0x03)&&(receive_error == 0)) //读取数据返回
- {
- phdf[USART3_RX_BUF002[0]-0x20].HDF_ErrorCnt = 0;
- phdf[USART3_RX_BUF002[0]-0x20].RTData_Num = 1;
- // if(pcang->HDF_Type == 1)
- // phdf[USART3_RX_BUF002[0]-0x20].RTData_Num = 1; //海底阀开关数据
- phdf[USART3_RX_BUF002[0]-0x20].HDF_OFData[0] = USART3_RX_BUF002[3] ;
- // phdf[USART3_RX_BUF002[0]-0x20].HDF_OFState = USART3_RX_BUF002[4] ;
- __NOP();
- }
- else if((USART3_RX_BUF002[1] == 0x06)&&(receive_error == 0))
- {
- USART3_RX_BUF002[3] = USART3_RX_BUF002[3] ;
- }
- }
- else if(USART3_RX_BUF002[0]==0x23||USART3_RX_BUF002[0]==0x24)
- {
- if(USART3_RX_BUF002[1]!=0x03&&USART3_RX_BUF002[1]!=0x06) //校验读写属性
- {
- receive_error = 1;
- }
- /* else if(ModbusCRC != LIB_CRC_MODBUS(USART3_RX_BUF002,6)) //校验CRC
- {
- receive_error = 0;
- }*/
- if((USART3_RX_BUF002[1] == 0x03)&&(receive_error == 0)) //读取数据返回
- {
- phdf[USART3_RX_BUF002[0]-0x20].HDF_ErrorCnt = 0;
- phdf[USART3_RX_BUF002[0]-0x20].RTData_Num = 1;
- // if(pcang->HDF_Type == 1)
- // phdf[USART3_RX_BUF002[0]-0x20].RTData_Num = 1; //海底阀开关数据
- phdf[USART3_RX_BUF002[0]-0x22].HDF_Data[1] = 1;//USART3_RX_BUF002[3] ;
- phdf[USART3_RX_BUF002[0]-0x22].HDF_OFState1 = 1;//USART3_RX_BUF002[4] ;
- __NOP();
- }
- else if((USART3_RX_BUF002[1] == 0x06)&&(receive_error == 0))
- {
- USART3_RX_BUF002[3] = USART3_RX_BUF002[3] ;
- }
-
- }
- }
- void TOUCHUAN_UART_NUM(uint8_t* pTx)
- {
- KZQ_Inf* pkzq = &kzq_inf;
- int retry;
- // Cang_Inf* pcang = &cang_inf;
- // uint8_t i = 0;
- // uint16_t ModBusCRC = 0;
- // uint8_t receive_error = 0;
- // uint16_t ModbusCRC = 0;
- // HDF_Inf* phdf = hdf_inf;
- uint16_t Uart_num = 0;
- Uart_num=USART2_RX_BUF002[18];
- Uart_num = Uart_num << 8;
- Uart_num |= USART2_RX_BUF002[19];
- if(Uart_num == 1)
- {//if(Uart_num == 0x0001)
- if(pkzq->USE_XYF == 0)
- {//if(pkzq->USE_XYF == 0)
- if(pkzq->data_buf[7] == 0x06)
- {//if(pkzq->data_buf[7] == 0x06)
- pkzq->USE_XYF = 1;
- Uart_len_TouChuan=USART2_RX_BUF002[20];
- Uart_len_TouChuan = Uart_len_TouChuan << 8;
- Uart_len_TouChuan |= USART2_RX_BUF002[21];
- memcpy(XYF_TxBuf,&USART2_RX_BUF002[22],Uart_len_TouChuan);
- //osDelay(50);
- for(retry=0;retry<300;++retry)
- {
- if(flagU3Rx && (pkzq->USE_XYF==0))
- break;
- osDelay(1);
- }
- if(flagU3Rx)
- {
- pTx[20] = (data_lengthU3>>8)&0xff;
- pTx[21] = data_lengthU3&0xff;
- memcpy(pTx+22,USART3_RX_BUF002,data_lengthU3);
- flagU1Rx=0;
- }
- else
- {
- pTx[20] = 0;
- pTx[21] = 0;
- }
- }//if(pkzq->data_buf[7] == 0x06)
- }//if(pkzq->USE_XYF == 0)
-
- }//if(Uart_num == 0x0001)
- if(Uart_num == 0)
- {//if(Uart_num == 0x0001)
- if(pkzq->USE_RKG == 0)
- {//if(pkzq->USE_XYF == 0)
- if(pkzq->data_buf[7] == 0x06)
- {//if(pkzq->data_buf[7] == 0x06)
- pkzq->USE_RKG = 1;
- Uart_len_TouChuan=USART2_RX_BUF002[20];
- Uart_len_TouChuan = Uart_len_TouChuan << 8;
- Uart_len_TouChuan |= USART2_RX_BUF002[21];
- memcpy(RKG_TxBuf,&USART2_RX_BUF002[22],Uart_len_TouChuan);
- //osDelay(50);
- for(retry=0;retry<300;++retry)
- {
- if(flagU1Rx && (pkzq->USE_RKG == 0))
- break;
- osDelay(1);
- }
- if(flagU1Rx)
- {
- pTx[20] = (data_lengthU1>>8)&0xff;
- pTx[21] = data_lengthU1&0xff;
- memcpy(pTx+22,USART1_RX_BUF002,data_lengthU1);
- flagU1Rx=0;
- }
- else
- {
- pTx[20] = 0;
- pTx[21] = 0;
- }
- }//if(pkzq->data_buf[7] == 0x06)
- }//if(pkzq->USE_XYF == 0)
-
- }//if(Uart_num == 0x0001)
- }
|