///* // * fsm.c // * // * Created on: Oct 18, 2024 // * Author: akeguo // */ // //#include //#include //#include //#include "msp_DAM0404D.h" //#include "BHBF_ROBOT.h" //#include "BSP/bsp_include.h" //#include "msp_DH_Roughening.h" //#include "MSP/msp_PID.h" //#include "MSP/msp_MK32_1.h" //#include "BHBF_ROBOT.h" // //// 需要一个485接口,并且能够实现接收和发送;非周期性发送 //// CAN 通讯,然后将数据发送出去 // //char job_start_flag = 0; //char job_stop_flag = 0; //char arm_position_reached_flag = 0; //char arm_end_reached_flag = 0; // // // //uint8_t arm_go_to_position[8] = //{ 0X01, 0X01, 0X01, 0X01, 0X01, 0X01, 0X01, 0X01 }; //uint8_t arm_spray_gun_on[8] = //{ 0X02, 0X02, 0X01, 0X01, 0X01, 0X01, 0X01, 0X01 }; //uint8_t arm_spray_gun_off[8] = //{ 0X03, 0X03, 0X01, 0X01, 0X01, 0X01, 0X01, 0X01 }; //uint8_t arm_get_position[8] = //{ 0X04, 0X04, 0X01, 0X01, 0X01, 0X01, 0X01, 0X01 }; // //uint8_t arm_get_reached_end[8] = //{ 0X05, 0X05, 0X01, 0X01, 0X01, 0X01, 0X01, 0X01 }; // //void klf_DecodeCAN(uint32_t canID, uint8_t *buffer, uint32_t length); //void decode_485(uint8_t *buffer, uint16_t length); // //struct UARTHandler *klf_handler; //DispacherController *klf_dispacherController; // //FDCANHandler *klf_can_controller; //DispacherController *klf_can_DispacherController; // //void fke_lai_fen_modbus_intialize(struct UARTHandler *Handler) //{ // // klf_handler = Handler; // klf_handler->UART_Decode = decode_485; // klf_handler->Wait_time = 6; //等待10ms 最低不要低于4; // klf_dispacherController = Handler->dispacherController; // klf_dispacherController->Dispacher_Enable = 0; // klf_dispacherController->DispacherCallTime = 2; // // HardWareErrorController->Add_PCOMHardWare(HardWareErrorController, // "KeLaiFen485", 0, KeLaiFen485); // //uartHandler->Insert_HardWare_Entry_UART // LOG("steering_engine_intialize"); //} // //uint8_t test_Order[8] = //{ 0X01, 0X03, 0X07, 0XD0, 0X00, 0X02, 0XC4, 0X86 }; //void klf_test() //{ // // memcpy(klf_handler->Tx_Buf, test_Order, 8); // klf_handler->TxCount = 8; // //立刻发送 // klf_handler->UART_Tx(klf_handler); // //} // //void klf_send(char *buf, char length) //{ // // memcpy(klf_handler->Tx_Buf, buf, length); // klf_handler->TxCount = length; // //立刻发送 // klf_handler->UART_Tx(klf_handler); // //} // //void decode_485(uint8_t *buffer, uint16_t length) //{ // klf_test(); // // //klf_handler->AddSendList(klf_handler,test_Order,8,2000,decode_485); // //延时立刻发送 // //klf_handler->AddSendList(klf_handler,buffer,length,2000,decode_485); // //dLT_Log_UART_Handler->AddSendList(dLT_Log_UART_Handler,DltLogData,Size,100,NULL); //// memcpy(klf_handler->Tx_Buf, buffer, length); //// klf_handler->TxCount = length; //// klf_handler->UART_Tx(klf_handler); // // /* CRC 校验 */ // uint16_t crc_check = ((buffer[length - 1] << 8) | buffer[length - 2]); // /* CRC 校验正确 */ // if (crc_check == MB_CRC16(buffer, length - 2)) // { // // HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,"KeLaiFen485",1); // // if(1) // { // arm_position_reached_flag = 1; // // // }else if(1) // { // arm_end_reached_flag = 1; // } // // // } // else // { // LOGFF(DL_ERROR,"force_sensor decoding failed"); // } // //} // //void klf_can_controller_intialize(FDCANHandler *Handler) //{ // //初始化 // // klf_can_controller = Handler; // klf_can_controller->CAN_Decode = klf_DecodeCAN; // // HardWareErrorController->Add_PCOMHardWare(HardWareErrorController, // "KeLaiFenCAN", 0, KeLaiFenCAN); // // klf_can_DispacherController = Handler->dispacherController; // klf_can_DispacherController->DispacherCallTime = 2; // klf_can_DispacherController->Dispacher_Enable = 0; // //} // //void klf_DecodeCAN(uint32_t canID, uint8_t *buffer, uint32_t length) //{ // if(1) // { // job_start_flag=1; // } // else if(1) // { // job_stop_flag=1; // } // // // HardWareErrorController->Set_PCOMHardWare(HardWareErrorController, // "KeLaiFenCAN", 1); // //// memcpy(klf_can_controller->Tx_Buf, buffer, length); //// klf_can_controller->SendLength = length; //// klf_can_controller->SendFrameID = canID; //// //立刻发送 //// klf_can_controller->CAN_Send_Data(klf_can_controller); //// //// //延时发送 //// klf_can_controller->AddCANSendList(klf_can_controller, canID, length, //// klf_can_controller->Tx_Buf, 2, klf_DecodeCAN); // //// //// job_start_flag = 1; // //} // //enum CLF_State //{ // JobStart = 1, // FirstDelay, // SprayOn, // SprayOff, // ReadArmPosition, // ReadArmReachedEnd, // SecondDelay, // JobEnd, // NoMove //}; ////定义枚举类型 enum SEASONS //enum CLF_State clf_state=NoMove; //定义了一个枚举类型变量season(类型enum SEASONS) // //void clf_loop() //{ // switch (clf_state) // { // case JobStart: // { // klf_send(arm_go_to_position, sizeof(arm_go_to_position)); //机器人运动到位置 // // //清零 // timer_handler_1.start_timer = 1; // clf_state = FirstDelay; // break; // } // case FirstDelay: // { // if (CompareTimer(40, &timer_handler_1))//计时结束 // { // clf_state = SprayOn; // } // break; // } // case SprayOn: // { // klf_send(arm_spray_gun_on, sizeof(arm_spray_gun_on)); //发送启动喷枪指令 // clf_state = ReadArmPosition; // timer_handler_1.start_timer = 1; // timer_handler_2.start_timer = 1; // break; // } // case ReadArmPosition: //周期性获取,担心数据过快 // { // if (CompareTimer(100, &timer_handler_2)) // { // klf_send(arm_get_position, sizeof(arm_get_position)); //发送启动喷枪指令 // timer_handler_2.start_timer = 1; // if (arm_position_reached_flag == 1) // { // clf_state = SprayOff; // arm_position_reached_flag =0 ; // } // // } // // break; // } // case SprayOff: // { // klf_send(arm_spray_gun_off, sizeof(arm_spray_gun_off)); //发送启动喷枪指令 // // clf_state = ReadArmReachedEnd; // // timer_handler_2.start_timer = 1; // break; // } // case ReadArmReachedEnd: // { // if (CompareTimer(20, &timer_handler_2)) // { // klf_send(arm_get_reached_end, sizeof(arm_get_reached_end)); // timer_handler_2.start_timer = 1; // if (arm_end_reached_flag == 1) // { // clf_state = SecondDelay; // timer_handler_1.start_timer = 1; // } // // } // break; // }case SecondDelay: // { // if (!CompareTimer(1000, &timer_handler_1))//计时中 // { // if (job_stop_flag == 1) // { // clf_state = JobEnd; // } // // }else//计时结束 // { // clf_state = JobStart; // } // break; // } // case JobEnd: // { // // break; // } // // } // //} //