parkspace_client.cpp 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. /*
  2. * @Description: 模拟主程序发送车位分配请求,并监听状态信息
  3. * @Author: yct
  4. * @Date: 2020-07-08 15:44:43
  5. * @LastEditTime: 2020-07-22 18:15:55
  6. * @LastEditors: yct
  7. */
  8. #include <iostream>
  9. #include <nnxx/message>
  10. #include <nnxx/socket.h>
  11. #include <nnxx/bus.h>
  12. #include "unistd.h"
  13. #include "parkspace_allocation_message.pb.h"
  14. #include <thread>
  15. #define CAR_LICENSE "鄂D12345"
  16. std::string send_allocation_request(int n)
  17. {
  18. // 发送车位分配请求
  19. message::Error_manager error_code;
  20. message::Base_info base_info;
  21. message::Car_info car_info;
  22. message::Parkspace_allocation_request_msg request;
  23. base_info.set_msg_type(message::Message_type::eParkspace_allocation_request_msg);
  24. base_info.set_sender(message::eMain);
  25. base_info.set_receiver(message::eParkspace);
  26. base_info.set_timeout_ms(2000);
  27. car_info.set_car_height(1.0);
  28. car_info.set_car_width(1.0);
  29. car_info.set_license(CAR_LICENSE);
  30. request.mutable_base_info()->CopyFrom(base_info);
  31. request.set_command_key(std::to_string(n));
  32. request.set_terminal_id(1);
  33. request.mutable_car_info()->CopyFrom(car_info);
  34. // socket.send(request.SerializeAsString());
  35. return request.SerializeAsString();
  36. }
  37. std::string send_search_requests(int n, std::string license=CAR_LICENSE)
  38. {
  39. // 发送车位查询请求
  40. message::Error_manager error_code;
  41. message::Base_info base_info;
  42. message::Car_info car_info;
  43. message::Parkspace_search_request_msg request;
  44. base_info.set_msg_type(message::Message_type::eParkspace_search_request_msg);
  45. base_info.set_sender(message::eMain);
  46. base_info.set_receiver(message::eParkspace);
  47. base_info.set_timeout_ms(10);
  48. car_info.set_car_height(2.0);
  49. car_info.set_car_width(2.0);
  50. car_info.set_license(license);
  51. request.mutable_base_info()->CopyFrom(base_info);
  52. request.set_command_key(std::to_string(n));
  53. request.mutable_car_info()->CopyFrom(car_info);
  54. // socket.send(request.SerializeAsString());
  55. return request.SerializeAsString();
  56. }
  57. std::string send_release_request(int n)
  58. {
  59. // 发送车位释放请求
  60. message::Error_manager error_code;
  61. message::Base_info base_info;
  62. message::Car_info car_info;
  63. message::Parkspace_info space_info;
  64. message::Parkspace_release_request_msg request;
  65. base_info.set_msg_type(message::Message_type::eParkspace_release_request_msg);
  66. base_info.set_sender(message::eMain);
  67. base_info.set_receiver(message::eParkspace);
  68. base_info.set_timeout_ms(2000);
  69. car_info.set_car_height(1.5);
  70. car_info.set_car_width(1.85);
  71. car_info.set_license(CAR_LICENSE);
  72. space_info.set_parkspace_id(1);
  73. space_info.set_index(1);
  74. space_info.set_direction(message::Direction::eForward);
  75. space_info.set_floor(33);
  76. space_info.set_width(1.5);
  77. space_info.set_height(1.5);
  78. space_info.set_parkspace_status(message::Parkspace_status::eParkspace_occupied);
  79. space_info.mutable_car_info()->CopyFrom(car_info);
  80. request.mutable_base_info()->CopyFrom(base_info);
  81. request.set_command_key(std::to_string(n));
  82. request.mutable_release_space_info()->CopyFrom(space_info);
  83. // socket.send(request.SerializeAsString());
  84. return request.SerializeAsString();
  85. }
  86. std::string send_confirm_request(int n)
  87. {
  88. // 发送车位释放请求
  89. message::Error_manager error_code;
  90. message::Base_info base_info;
  91. message::Car_info car_info;
  92. message::Parkspace_info space_info;
  93. message::Parkspace_confirm_alloc_request_msg request;
  94. base_info.set_msg_type(message::Message_type::eParkspace_confirm_alloc_request_msg);
  95. base_info.set_sender(message::eMain);
  96. base_info.set_receiver(message::eParkspace);
  97. base_info.set_timeout_ms(2000);
  98. car_info.set_car_height(1.5);
  99. car_info.set_car_width(1.85);
  100. car_info.set_license(CAR_LICENSE);
  101. space_info.set_parkspace_id(1);
  102. space_info.set_index(1);
  103. space_info.set_direction(message::Direction::eForward);
  104. space_info.set_floor(33);
  105. space_info.set_width(1.5);
  106. space_info.set_height(1.5);
  107. space_info.set_parkspace_status(message::Parkspace_status::eParkspace_occupied);
  108. space_info.mutable_car_info()->CopyFrom(car_info);
  109. request.mutable_base_info()->CopyFrom(base_info);
  110. request.set_command_key(std::to_string(n));
  111. request.mutable_confirm_space_info()->CopyFrom(space_info);
  112. // socket.send(request.SerializeAsString());
  113. return request.SerializeAsString();
  114. }
  115. int main()
  116. {
  117. nnxx::socket socket{nnxx::SP, nnxx::BUS};
  118. // socket.bind("tcp://127.0.0.1:7000");
  119. socket.connect("tcp://192.168.1.38:30005");
  120. // socket.connect("tcp://127.0.0.1:30005");
  121. // socket.connect("tcp://192.168.2.127:30005");
  122. //
  123. int n = 0;
  124. message::Base_msg base_msg;
  125. usleep(1000 * 1000);
  126. std::string alloc_req = send_allocation_request(1);
  127. socket.send(alloc_req);
  128. usleep(1000 * 500);
  129. std::string confirm_req = send_confirm_request(1);
  130. socket.send(confirm_req);
  131. usleep(1000 * 500);
  132. //
  133. std::string search_req = send_search_requests(1);
  134. socket.send(search_req);
  135. usleep(1000 * 500);
  136. //
  137. std::string release_req = send_release_request(1);
  138. socket.send(release_req);
  139. usleep(1000 * 500);
  140. // usleep(1000*200);
  141. // search_req = send_search_requests(3);
  142. // socket.send(search_req);
  143. // release_req = send_release_request(3);
  144. // socket.send(release_req);
  145. // while (1)
  146. // {
  147. // // std::string alloc_req = send_allocation_request(n);
  148. // // std::string search_req = send_search_requests(n);
  149. //
  150. // // std::string alloc_req = send_allocation_request(n);
  151. // // socket.send(alloc_req);
  152. // // usleep(1000*2000);
  153. // // std::string search_req = send_search_requests(n);
  154. // // socket.send(search_req);
  155. // // // usleep(1000*2000);
  156. // // std::string release_req = send_release_request(n);
  157. // // socket.send(release_req);
  158. // // usleep(1000*2000);
  159. //
  160. // for (size_t i = 0; i < 5; i++)
  161. // {
  162. // // 接收消息
  163. // std::string t_receive_string = socket.recv<std::string>(1);
  164. // if (t_receive_string.length() > 0)
  165. // {
  166. // bool result = base_msg.ParseFromString(t_receive_string);
  167. // // 接收并打印车位状态信息
  168. // std::cout << "========================" << result << "============================" << std::endl;
  169. // std::cout << "cycle " << n << std::endl;
  170. // if (base_msg.base_info().msg_type() == message::Message_type::eParkspace_allocation_status_msg)
  171. // {
  172. // message::Parkspace_allocation_status_msg parkspace_status;
  173. // std::cout << "----------------- 车位状态 -----------------" << std::endl;
  174. // parkspace_status.ParseFromString(t_receive_string);
  175. // std::cout << parkspace_status.DebugString() << std::endl;
  176. // // continue;
  177. // }
  178. // else if (base_msg.base_info().msg_type() == message::Message_type::eParkspace_allocation_response_msg)
  179. // {
  180. // message::Parkspace_allocation_response_msg response;
  181. // response.ParseFromString(t_receive_string);
  182. // std::cout << "----------------- 分配车位结果 -----------------" << std::endl;
  183. // std::cout << response.DebugString() << std::endl;
  184. // }
  185. // else if (base_msg.base_info().msg_type() == message::Message_type::eParkspace_search_response_msg)
  186. // {
  187. // message::Parkspace_search_response_msg response;
  188. // response.ParseFromString(t_receive_string);
  189. // std::cout << "----------------- 查询车辆位置结果 -----------------" << std::endl;
  190. // std::cout << response.DebugString() << std::endl;
  191. // }
  192. // else if (base_msg.base_info().msg_type() == message::Message_type::eParkspace_release_response_msg)
  193. // {
  194. // message::Parkspace_release_response_msg response;
  195. // response.ParseFromString(t_receive_string);
  196. // std::cout << "----------------- 释放车位结果 -----------------" << std::endl;
  197. // std::cout << response.DebugString() << std::endl;
  198. // }
  199. // else if (base_msg.base_info().msg_type() == message::Message_type::eParkspace_confirm_alloc_response_msg)
  200. // {
  201. // message::Parkspace_confirm_alloc_response_msg response;
  202. // response.ParseFromString(t_receive_string);
  203. // std::cout << "----------------- 确认占用车位结果 -----------------" << std::endl;
  204. // std::cout << response.DebugString() << std::endl;
  205. // }
  206. // }
  207. // }
  208. //
  209. // // std::this_thread::yield();
  210. // n++;
  211. // usleep(1000 * 1000);
  212. // }
  213. }