parkspace_client.cpp 9.7 KB

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