/* * @Description: 模拟主程序发送车位分配请求,并监听状态信息 * @Author: yct * @Date: 2020-07-08 15:44:43 * @LastEditTime: 2020-07-22 18:15:55 * @LastEditors: yct */ #include #include #include #include #include "unistd.h" #include "parkspace_allocation_message.pb.h" #include #define CAR_LICENSE "鄂D12345" std::string send_allocation_request(int n) { // 发送车位分配请求 message::Error_manager error_code; message::Base_info base_info; message::Car_info car_info; message::Parkspace_allocation_request_msg request; base_info.set_msg_type(message::Message_type::eParkspace_allocation_request_msg); base_info.set_sender(message::eMain); base_info.set_receiver(message::eParkspace); base_info.set_timeout_ms(2000); car_info.set_car_height(1.94); car_info.set_car_width(1.94); car_info.set_license(CAR_LICENSE); request.mutable_base_info()->CopyFrom(base_info); request.set_command_key(std::to_string(n)); request.set_terminal_id(1); request.mutable_car_info()->CopyFrom(car_info); // socket.send(request.SerializeAsString()); return request.SerializeAsString(); } std::string send_search_requests(int n, std::string license=CAR_LICENSE) { // 发送车位查询请求 message::Error_manager error_code; message::Base_info base_info; message::Car_info car_info; message::Parkspace_search_request_msg request; base_info.set_msg_type(message::Message_type::eParkspace_search_request_msg); base_info.set_sender(message::eMain); base_info.set_receiver(message::eParkspace); base_info.set_timeout_ms(10); car_info.set_car_height(2.0); car_info.set_car_width(2.0); car_info.set_license(license); request.mutable_base_info()->CopyFrom(base_info); request.set_command_key(std::to_string(n)); request.mutable_car_info()->CopyFrom(car_info); // socket.send(request.SerializeAsString()); return request.SerializeAsString(); } std::string send_release_request(int n) { // 发送车位释放请求 message::Error_manager error_code; message::Base_info base_info; message::Car_info car_info; message::Parkspace_info space_info; message::Parkspace_release_request_msg request; base_info.set_msg_type(message::Message_type::eParkspace_release_request_msg); base_info.set_sender(message::eMain); base_info.set_receiver(message::eParkspace); base_info.set_timeout_ms(2000); car_info.set_car_height(1.5); car_info.set_car_width(1.85); car_info.set_license(CAR_LICENSE); space_info.set_parkingspace_index_id(1); space_info.set_parkingspace_room_id(1); space_info.set_parkingspace_direction(message::Direction::eForward); space_info.set_parkingspace_floor_id(3); space_info.set_parkingspace_height(1.5); space_info.set_parkingspace_width(1.5); space_info.set_parkingspace_status(message::Parkspace_status::eParkspace_occupied); space_info.mutable_car_info()->CopyFrom(car_info); request.mutable_base_info()->CopyFrom(base_info); request.set_command_key(std::to_string(n)); // socket.send(request.SerializeAsString()); return request.SerializeAsString(); } std::string send_confirm_request(int n) { // 发送车位确认请求 message::Error_manager error_code; message::Base_info base_info; message::Car_info car_info; message::Parkspace_info space_info; message::Parkspace_confirm_alloc_request_msg request; base_info.set_msg_type(message::Message_type::eParkspace_confirm_alloc_request_msg); base_info.set_sender(message::eMain); base_info.set_receiver(message::eParkspace); base_info.set_timeout_ms(2000); car_info.set_car_height(1.5); car_info.set_car_width(1.85); car_info.set_license(CAR_LICENSE); space_info.set_parkingspace_index_id(1); space_info.set_parkingspace_room_id(1); space_info.set_parkingspace_direction(message::Direction::eForward); space_info.set_parkingspace_floor_id(33); space_info.set_parkingspace_width(1.5); space_info.set_parkingspace_height(1.5); space_info.set_parkingspace_status(message::Parkspace_status::eParkspace_occupied); space_info.mutable_car_info()->CopyFrom(car_info); request.mutable_base_info()->CopyFrom(base_info); request.set_command_key(std::to_string(n)); // socket.send(request.SerializeAsString()); return request.SerializeAsString(); } int main() { nnxx::socket socket{nnxx::SP, nnxx::BUS}; // socket.bind("tcp://127.0.0.1:7000"); // socket.connect("tcp://192.168.2.113:30008"); // socket.connect("tcp://127.0.0.1:30005"); socket.connect("tcp://192.168.2.113:30008"); // int n = 0; message::Base_msg base_msg; usleep(1000 * 1000); std::string alloc_req = send_allocation_request(1); socket.send(alloc_req); usleep(1000 * 500); // std::string confirm_req = send_confirm_request(1); // socket.send(confirm_req); // usleep(1000 * 500); // // std::string search_req = send_search_requests(1); // socket.send(search_req); // usleep(1000 * 500); // // std::string release_req = send_release_request(1); // socket.send(release_req); // usleep(1000 * 500); // usleep(1000*200); // search_req = send_search_requests(3); // socket.send(search_req); // release_req = send_release_request(3); // socket.send(release_req); // while (1) // { // // std::string alloc_req = send_allocation_request(n); // // std::string search_req = send_search_requests(n); // // // std::string alloc_req = send_allocation_request(n); // // socket.send(alloc_req); // // usleep(1000*2000); // // std::string search_req = send_search_requests(n); // // socket.send(search_req); // // // usleep(1000*2000); // // std::string release_req = send_release_request(n); // // socket.send(release_req); // // usleep(1000*2000); // // for (size_t i = 0; i < 5; i++) // { // // 接收消息 // std::string t_receive_string = socket.recv(1); // if (t_receive_string.length() > 0) // { // bool result = base_msg.ParseFromString(t_receive_string); // // 接收并打印车位状态信息 // std::cout << "========================" << result << "============================" << std::endl; // std::cout << "cycle " << n << std::endl; // if (base_msg.base_info().msg_type() == message::Message_type::eParkspace_allocation_status_msg) // { // message::Parkspace_allocation_status_msg parkspace_status; // std::cout << "----------------- 车位状态 -----------------" << std::endl; // parkspace_status.ParseFromString(t_receive_string); // std::cout << parkspace_status.DebugString() << std::endl; // // continue; // } // else if (base_msg.base_info().msg_type() == message::Message_type::eParkspace_allocation_response_msg) // { // message::Parkspace_allocation_response_msg response; // response.ParseFromString(t_receive_string); // std::cout << "----------------- 分配车位结果 -----------------" << std::endl; // std::cout << response.DebugString() << std::endl; // } // else if (base_msg.base_info().msg_type() == message::Message_type::eParkspace_search_response_msg) // { // message::Parkspace_search_response_msg response; // response.ParseFromString(t_receive_string); // std::cout << "----------------- 查询车辆位置结果 -----------------" << std::endl; // std::cout << response.DebugString() << std::endl; // } // else if (base_msg.base_info().msg_type() == message::Message_type::eParkspace_release_response_msg) // { // message::Parkspace_release_response_msg response; // response.ParseFromString(t_receive_string); // std::cout << "----------------- 释放车位结果 -----------------" << std::endl; // std::cout << response.DebugString() << std::endl; // } // else if (base_msg.base_info().msg_type() == message::Message_type::eParkspace_confirm_alloc_response_msg) // { // message::Parkspace_confirm_alloc_response_msg response; // response.ParseFromString(t_receive_string); // std::cout << "----------------- 确认占用车位结果 -----------------" << std::endl; // std::cout << response.DebugString() << std::endl; // } // } // } // // // std::this_thread::yield(); // n++; // usleep(1000 * 1000); // } }