pickup_terminal.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. // Created by zx on 2020/7/16.
  3. //
  4. #include "pickup_terminal.h"
  5. #include "Terminal_communication.h"
  6. pickup_terminal::pickup_terminal(message::Car_info car_info)
  7. {
  8. m_car_info=car_info;
  9. }
  10. pickup_terminal::~pickup_terminal()
  11. {
  12. m_exit_cond.set_pass_ever(true);
  13. }
  14. Error_manager pickup_terminal::pickup(int terminal_id)
  15. {
  16. message::Pickup_command_request_msg request;
  17. message::Base_info base_info;
  18. base_info.set_msg_type(message::ePickup_command_request_msg);
  19. base_info.set_sender(message::eTerminor);
  20. base_info.set_receiver(message::eMain);
  21. request.mutable_base_info()->CopyFrom(base_info);
  22. request.mutable_car_info()->CopyFrom(m_car_info);
  23. request.set_terminal_id(terminal_id);
  24. //发送停车请求
  25. Error_manager code;
  26. message::Pickup_command_response_msg response;
  27. code=Terminal_communication::get_instance_pointer()->pickup_request(request,response);
  28. if(code!=SUCCESS)
  29. {
  30. std::cout<<"取车请求失败:"<<code.to_string()<<std::endl;
  31. return ERROR;
  32. }
  33. //等待停车完成
  34. bool last_signal=false;
  35. message::Picking_process_statu_msg last_msg;
  36. while(m_exit_cond.wait_for_millisecond(200)==false)
  37. {
  38. message::Picking_process_statu_msg msg;
  39. code = Terminal_communication::get_instance_pointer()->get_picking_statu(m_car_info.license(), msg);
  40. if (code == SUCCESS)
  41. {
  42. last_signal=true;
  43. last_msg=msg;
  44. }
  45. if(last_signal==true&&(last_msg.completed()==true||last_msg.back_completed()==true))
  46. {
  47. //取车完成
  48. return SUCCESS;
  49. }
  50. }
  51. return FAILED;
  52. }