#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]; } GPIO_PinState Get_Pin(int Pin_No) { GPIO_PinState Pin_sts; switch (Pin_No) { case 0: Pin_sts = HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_14); break; case 1: Pin_sts = HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15); break; case 2: Pin_sts = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_6); break; case 3: Pin_sts = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_7); break; case 4: Pin_sts = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_8); break; case 5: Pin_sts = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_9); break; case 6: Pin_sts = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8); break; case 7: Pin_sts = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_11); break; default: break; } return Pin_sts; } void DF_State(uint8_t Cang_Num) //查询仓底阀状态 { Cang_Inf* pcang = &cang_inf; XYF_Inf* pxyf = xyf_inf; RKG_Inf* prkg = rkg_inf; HDF_Inf* phdf = hdf_inf; uint8_t i = 0,j = 0,HDF_MAX = 3,PinNo; if(pcang->HDF_Type == 0) //底阀监测器 { if(i < HDF_BUF_DEP) { PinNo = 0; if (pcang->XYF_Type == 2) { for (j = 0, HDF_MAX = 0; j < pcang->Cang_Num; ++j) { HDF_MAX += pcang->XYF_Num[j]; } for (j = 0; j < HDF_MAX; ++j) { pxyf[j + 1].XYF_State1 = Get_Pin(PinNo++); } } if (pcang->RKG_Type == 2) { for (j = 0, HDF_MAX = 0; j < pcang->Cang_Num; ++j) { HDF_MAX += pcang->RKG_Num[j]; } for (j = 0; j < HDF_MAX; ++j) { prkg[1 + j].RKDG_State = Get_Pin(PinNo++); } } for (j = 0, HDF_MAX = 0; j < pcang->Cang_Num; ++j) { HDF_MAX += pcang->HDF_Num[j]; } for (j = 0; j < HDF_MAX; ++j) { phdf[1 + j].HDF_OFData[i] = Get_Pin(PinNo++); } 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) }