dispatch_communication.cpp 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  1. //
  2. // Created by huli on 2020/9/25.
  3. //
  4. #include "dispatch_communication.h"
  5. Dispatch_communication::Dispatch_communication()
  6. {
  7. }
  8. Dispatch_communication::~Dispatch_communication()
  9. {
  10. }
  11. //初始化 通信 模块。如下三选一
  12. Error_manager Dispatch_communication::communication_init()
  13. {
  14. int t_index = 0;
  15. std::vector<Snap7_buf::Variable_information> t_variable_information_vector;
  16. //往map通信缓存里面添加所需要的buf
  17. std::unique_lock<std::mutex> t_lock1(m_receive_buf_lock);
  18. std::unique_lock<std::mutex> t_lock2(m_send_buf_lock);
  19. Snap7_buf t_snap7_buf;
  20. t_index = 0;
  21. t_variable_information_vector.clear();
  22. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved50", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  23. t_index += sizeof(unsigned char)*1;
  24. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved51_69", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 19 });
  25. t_index += sizeof(unsigned char)*19;
  26. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_x", typeid(float).name(), t_index,sizeof(float), 1 });
  27. t_index += sizeof(float)*1;
  28. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_y", typeid(float).name(), t_index,sizeof(float), 1 });
  29. t_index += sizeof(float)*1;
  30. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_b", typeid(float).name(), t_index,sizeof(float), 1 });
  31. t_index += sizeof(float)*1;
  32. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_z", typeid(float).name(), t_index,sizeof(float), 1 });
  33. t_index += sizeof(float)*1;
  34. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_clamp_motion", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  35. t_index += sizeof(unsigned char)*1;
  36. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved87_89", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 3 });
  37. t_index += sizeof(unsigned char)*3;
  38. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_wheelbase", typeid(float).name(), t_index,sizeof(float), 1 });
  39. t_index += sizeof(float)*1;
  40. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_d1", typeid(float).name(), t_index,sizeof(float), 1 });
  41. t_index += sizeof(float)*1;
  42. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_d2", typeid(float).name(), t_index,sizeof(float), 1 });
  43. t_index += sizeof(float)*1;
  44. t_snap7_buf.init(CATCHER_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_1, 50, sizeof(Catcher_request_from_dispatch_to_plc_for_data), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  45. m_send_buf_map[0] = t_snap7_buf;
  46. t_snap7_buf.init(CATCHER_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_2, 50, sizeof(Catcher_request_from_dispatch_to_plc_for_data), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  47. m_send_buf_map[1] = t_snap7_buf;
  48. t_index = 0;
  49. t_variable_information_vector.clear();
  50. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_key", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 50 });
  51. t_index += sizeof(unsigned char)*50;
  52. t_snap7_buf.init(CATCHER_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_1, 0, sizeof(Catcher_request_from_dispatch_to_plc_for_key), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  53. m_send_buf_map[2] = t_snap7_buf;
  54. t_snap7_buf.init(CATCHER_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_2, 0, sizeof(Catcher_request_from_dispatch_to_plc_for_key), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  55. m_send_buf_map[3] = t_snap7_buf;
  56. t_index = 0;
  57. t_variable_information_vector.clear();
  58. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_key", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 50 });
  59. t_index += sizeof(unsigned char)*50;
  60. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_status", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  61. t_index += sizeof(unsigned char)*1;
  62. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved51_69", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 19 });
  63. t_index += sizeof(unsigned char)*19;
  64. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_x", typeid(float).name(), t_index,sizeof(float), 1 });
  65. t_index += sizeof(float)*1;
  66. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_y", typeid(float).name(), t_index,sizeof(float), 1 });
  67. t_index += sizeof(float)*1;
  68. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_b", typeid(float).name(), t_index,sizeof(float), 1 });
  69. t_index += sizeof(float)*1;
  70. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_z", typeid(float).name(), t_index,sizeof(float), 1 });
  71. t_index += sizeof(float)*1;
  72. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_clamp_motion", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  73. t_index += sizeof(unsigned char)*1;
  74. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved87_89", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 3 });
  75. t_index += sizeof(unsigned char)*3;
  76. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_wheelbase", typeid(float).name(), t_index,sizeof(float), 1 });
  77. t_index += sizeof(float)*1;
  78. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_d1", typeid(float).name(), t_index,sizeof(float), 1 });
  79. t_index += sizeof(float)*1;
  80. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_d2", typeid(float).name(), t_index,sizeof(float), 1 });
  81. t_index += sizeof(float)*1;
  82. t_snap7_buf.init(CATCHER_RESPONSE_FROM_PLC_TO_DISPATCH_DBNUMBER_1, 0, sizeof(Catcher_response_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  83. m_receive_buf_map[0] = t_snap7_buf;
  84. t_snap7_buf.init(CATCHER_RESPONSE_FROM_PLC_TO_DISPATCH_DBNUMBER_2, 0, sizeof(Catcher_response_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  85. m_receive_buf_map[1] = t_snap7_buf;
  86. t_index = 0;
  87. t_variable_information_vector.clear();
  88. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_heartbeat", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  89. t_index += sizeof(unsigned char)*1;
  90. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_safe_status", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  91. t_index += sizeof(unsigned char)*1;
  92. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_work_status", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  93. t_index += sizeof(unsigned char)*1;
  94. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_load_status", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  95. t_index += sizeof(unsigned char)*1;
  96. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved4_37", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 34 });
  97. t_index += sizeof(unsigned char)*34;
  98. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_x", typeid(float).name(), t_index,sizeof(float), 1 });
  99. t_index += sizeof(float)*1;
  100. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_y", typeid(float).name(), t_index,sizeof(float), 1 });
  101. t_index += sizeof(float)*1;
  102. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_b", typeid(float).name(), t_index,sizeof(float), 1 });
  103. t_index += sizeof(float)*1;
  104. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_z", typeid(float).name(), t_index,sizeof(float), 1 });
  105. t_index += sizeof(float)*1;
  106. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_d1", typeid(float).name(), t_index,sizeof(float), 1 });
  107. t_index += sizeof(float)*1;
  108. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_d2", typeid(float).name(), t_index,sizeof(float), 1 });
  109. t_index += sizeof(float)*1;
  110. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_clamp_motion1", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  111. t_index += sizeof(unsigned char)*1;
  112. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_clamp_motion2", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  113. t_index += sizeof(unsigned char)*1;
  114. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_clamp_motion3", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  115. t_index += sizeof(unsigned char)*1;
  116. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_clamp_motion4", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  117. t_index += sizeof(unsigned char)*1;
  118. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved66_99", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 34 });
  119. t_index += sizeof(unsigned char)*34;
  120. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_error_code", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 50 });
  121. t_index += sizeof(unsigned char)*50;
  122. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_warning_code", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 50 });
  123. t_index += sizeof(unsigned char)*50;
  124. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_error_description", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 256 });
  125. t_index += sizeof(unsigned char)*256;
  126. t_snap7_buf.init(CATCHER_STATUS_FROM_PLC_TO_DISPATCH_DBNUMBER_1, 0, sizeof(Catcher_status_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  127. m_receive_buf_map[2] = t_snap7_buf;
  128. t_snap7_buf.init(CATCHER_STATUS_FROM_PLC_TO_DISPATCH_DBNUMBER_2, 0, sizeof(Catcher_status_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  129. m_receive_buf_map[3] = t_snap7_buf;
  130. t_index = 0;
  131. t_variable_information_vector.clear();
  132. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved50", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  133. t_index += sizeof(unsigned char)*1;
  134. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved51_71", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 21 });
  135. t_index += sizeof(unsigned char)*21;
  136. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_x", typeid(float).name(), t_index,sizeof(float), 1 });
  137. t_index += sizeof(float)*1;
  138. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_y", typeid(float).name(), t_index,sizeof(float), 1 });
  139. t_index += sizeof(float)*1;
  140. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_z", typeid(float).name(), t_index,sizeof(float), 1 });
  141. t_index += sizeof(float)*1;
  142. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_y1", typeid(float).name(), t_index,sizeof(float), 1 });
  143. t_index += sizeof(float)*1;
  144. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_y2", typeid(float).name(), t_index,sizeof(float), 1 });
  145. t_index += sizeof(float)*1;
  146. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_clamp_motion", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  147. t_index += sizeof(unsigned char)*1;
  148. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_joint_motion_x", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  149. t_index += sizeof(unsigned char)*1;
  150. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_joint_motion_y", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  151. t_index += sizeof(unsigned char)*1;
  152. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved95", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  153. t_index += sizeof(unsigned char)*1;
  154. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_space_id", typeid(float).name(), t_index,sizeof(float), 1 });
  155. t_index += sizeof(int)*1;
  156. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_floor_id", typeid(float).name(), t_index,sizeof(float), 1 });
  157. t_index += sizeof(int)*1;
  158. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_wheelbase", typeid(float).name(), t_index,sizeof(float), 1 });
  159. t_index += sizeof(float)*1;
  160. t_snap7_buf.init(CARRIER_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_1, 50, sizeof(Carrier_request_from_dispatch_to_plc_for_data), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  161. m_send_buf_map[4] = t_snap7_buf;
  162. t_snap7_buf.init(CARRIER_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_2, 50, sizeof(Carrier_request_from_dispatch_to_plc_for_data), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  163. m_send_buf_map[5] = t_snap7_buf;
  164. t_snap7_buf.init(CARRIER_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_3, 50, sizeof(Carrier_request_from_dispatch_to_plc_for_data), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  165. m_send_buf_map[6] = t_snap7_buf;
  166. t_index = 0;
  167. t_variable_information_vector.clear();
  168. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_key", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 50 });
  169. t_index += sizeof(unsigned char)*50;
  170. t_snap7_buf.init(CARRIER_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_1, 0, sizeof(Carrier_request_from_dispatch_to_plc_for_key), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  171. m_send_buf_map[7] = t_snap7_buf;
  172. t_snap7_buf.init(CARRIER_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_2, 0, sizeof(Carrier_request_from_dispatch_to_plc_for_key), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  173. m_send_buf_map[8] = t_snap7_buf;
  174. t_snap7_buf.init(CARRIER_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_3, 0, sizeof(Carrier_request_from_dispatch_to_plc_for_key), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  175. m_send_buf_map[9] = t_snap7_buf;
  176. t_index = 0;
  177. t_variable_information_vector.clear();
  178. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_key", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 50 });
  179. t_index += sizeof(unsigned char)*50;
  180. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_status", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  181. t_index += sizeof(unsigned char)*1;
  182. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved51_71", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 21 });
  183. t_index += sizeof(unsigned char)*21;
  184. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_x", typeid(float).name(), t_index,sizeof(float), 1 });
  185. t_index += sizeof(float)*1;
  186. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_y", typeid(float).name(), t_index,sizeof(float), 1 });
  187. t_index += sizeof(float)*1;
  188. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_z", typeid(float).name(), t_index,sizeof(float), 1 });
  189. t_index += sizeof(float)*1;
  190. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_y1", typeid(float).name(), t_index,sizeof(float), 1 });
  191. t_index += sizeof(float)*1;
  192. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_y2", typeid(float).name(), t_index,sizeof(float), 1 });
  193. t_index += sizeof(float)*1;
  194. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_clamp_motion", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  195. t_index += sizeof(unsigned char)*1;
  196. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_joint_motion_x", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  197. t_index += sizeof(unsigned char)*1;
  198. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_joint_motion_y", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  199. t_index += sizeof(unsigned char)*1;
  200. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved95", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  201. t_index += sizeof(unsigned char)*1;
  202. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_space_id", typeid(float).name(), t_index,sizeof(float), 1 });
  203. t_index += sizeof(int)*1;
  204. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_floor_id", typeid(float).name(), t_index,sizeof(float), 1 });
  205. t_index += sizeof(int)*1;
  206. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_wheelbase", typeid(float).name(), t_index,sizeof(float), 1 });
  207. t_index += sizeof(float)*1;
  208. t_snap7_buf.init(CARRIER_RESPONSE_FROM_PLC_TO_DISPATCH_DBNUMBER_1, 0, sizeof(Carrier_response_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  209. m_receive_buf_map[4] = t_snap7_buf;
  210. t_snap7_buf.init(CARRIER_RESPONSE_FROM_PLC_TO_DISPATCH_DBNUMBER_2, 0, sizeof(Carrier_response_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  211. m_receive_buf_map[5] = t_snap7_buf;
  212. t_snap7_buf.init(CARRIER_RESPONSE_FROM_PLC_TO_DISPATCH_DBNUMBER_3, 0, sizeof(Carrier_response_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  213. m_receive_buf_map[6] = t_snap7_buf;
  214. t_index = 0;
  215. t_variable_information_vector.clear();
  216. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_heartbeat", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  217. t_index += sizeof(unsigned char)*1;
  218. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_safe_status", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  219. t_index += sizeof(unsigned char)*1;
  220. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_work_status", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  221. t_index += sizeof(unsigned char)*1;
  222. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_load_status", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  223. t_index += sizeof(unsigned char)*1;
  224. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved4_37", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 34 });
  225. t_index += sizeof(unsigned char)*34;
  226. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_x", typeid(float).name(), t_index,sizeof(float), 1 });
  227. t_index += sizeof(float)*1;
  228. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_y", typeid(float).name(), t_index,sizeof(float), 1 });
  229. t_index += sizeof(float)*1;
  230. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_z", typeid(float).name(), t_index,sizeof(float), 1 });
  231. t_index += sizeof(float)*1;
  232. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_y1", typeid(float).name(), t_index,sizeof(float), 1 });
  233. t_index += sizeof(float)*1;
  234. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_y2", typeid(float).name(), t_index,sizeof(float), 1 });
  235. t_index += sizeof(float)*1;
  236. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_clamp_motion1", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  237. t_index += sizeof(unsigned char)*1;
  238. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_clamp_motion2", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  239. t_index += sizeof(unsigned char)*1;
  240. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_small_sports_car_motion", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  241. t_index += sizeof(unsigned char)*1;
  242. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_joint_motion_x1", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  243. t_index += sizeof(unsigned char)*1;
  244. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_joint_motion_x2", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  245. t_index += sizeof(unsigned char)*1;
  246. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved63_101", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 39 });
  247. t_index += sizeof(unsigned char)*39;
  248. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_error_code", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 50 });
  249. t_index += sizeof(unsigned char)*50;
  250. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_warning_code", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 50 });
  251. t_index += sizeof(unsigned char)*50;
  252. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_error_description", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 256 });
  253. t_index += sizeof(unsigned char)*256;
  254. t_snap7_buf.init(CARRIER_STATUS_FROM_PLC_TO_DISPATCH_DBNUMBER_1, 0, sizeof(Carrier_status_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  255. m_receive_buf_map[7] = t_snap7_buf;
  256. t_snap7_buf.init(CARRIER_STATUS_FROM_PLC_TO_DISPATCH_DBNUMBER_2, 0, sizeof(Carrier_status_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  257. m_receive_buf_map[8] = t_snap7_buf;
  258. t_snap7_buf.init(CARRIER_STATUS_FROM_PLC_TO_DISPATCH_DBNUMBER_3, 0, sizeof(Carrier_status_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
  259. m_receive_buf_map[9] = t_snap7_buf;
  260. t_index = 0;
  261. t_variable_information_vector.clear();
  262. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved50", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  263. t_index += sizeof(unsigned char)*1;
  264. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved51_69", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 19 });
  265. t_index += sizeof(unsigned char)*19;
  266. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_inside_door_motion", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  267. t_index += sizeof(unsigned char)*1;
  268. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_outside_door_motion", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  269. t_index += sizeof(unsigned char)*1;
  270. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_turntable_direction", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  271. t_index += sizeof(unsigned char)*1;
  272. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_0, 50, sizeof(Passageway_request_from_dispatch_to_plc_for_data), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  273. m_send_buf_map[10] = t_snap7_buf;
  274. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_1, 50, sizeof(Passageway_request_from_dispatch_to_plc_for_data), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  275. m_send_buf_map[11] = t_snap7_buf;
  276. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_2, 50, sizeof(Passageway_request_from_dispatch_to_plc_for_data), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  277. m_send_buf_map[12] = t_snap7_buf;
  278. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_3, 50, sizeof(Passageway_request_from_dispatch_to_plc_for_data), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  279. m_send_buf_map[13] = t_snap7_buf;
  280. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_4, 50, sizeof(Passageway_request_from_dispatch_to_plc_for_data), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  281. m_send_buf_map[14] = t_snap7_buf;
  282. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_5, 50, sizeof(Passageway_request_from_dispatch_to_plc_for_data), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  283. m_send_buf_map[15] = t_snap7_buf;
  284. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_6, 50, sizeof(Passageway_request_from_dispatch_to_plc_for_data), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  285. m_send_buf_map[16] = t_snap7_buf;
  286. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_7, 50, sizeof(Passageway_request_from_dispatch_to_plc_for_data), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  287. m_send_buf_map[17] = t_snap7_buf;
  288. t_index = 0;
  289. t_variable_information_vector.clear();
  290. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_key", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 50 });
  291. t_index += sizeof(unsigned char)*50;
  292. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_0, 0, sizeof(Passageway_request_from_dispatch_to_plc_for_key), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  293. m_send_buf_map[18] = t_snap7_buf;
  294. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_1, 0, sizeof(Passageway_request_from_dispatch_to_plc_for_key), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  295. m_send_buf_map[19] = t_snap7_buf;
  296. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_2, 0, sizeof(Passageway_request_from_dispatch_to_plc_for_key), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  297. m_send_buf_map[20] = t_snap7_buf;
  298. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_3, 0, sizeof(Passageway_request_from_dispatch_to_plc_for_key), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  299. m_send_buf_map[21] = t_snap7_buf;
  300. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_4, 0, sizeof(Passageway_request_from_dispatch_to_plc_for_key), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  301. m_send_buf_map[22] = t_snap7_buf;
  302. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_5, 0, sizeof(Passageway_request_from_dispatch_to_plc_for_key), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  303. m_send_buf_map[23] = t_snap7_buf;
  304. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_6, 0, sizeof(Passageway_request_from_dispatch_to_plc_for_key), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  305. m_send_buf_map[24] = t_snap7_buf;
  306. t_snap7_buf.init(PASSAGEWAY_REQUEST_FROM_DISPATCH_TO_PLC_DBNUMBER_7, 0, sizeof(Passageway_request_from_dispatch_to_plc_for_key), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  307. m_send_buf_map[25] = t_snap7_buf;
  308. t_index = 0;
  309. t_variable_information_vector.clear();
  310. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_key", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 50 });
  311. t_index += sizeof(unsigned char)*50;
  312. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_status", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  313. t_index += sizeof(unsigned char)*1;
  314. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved51_69", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 19 });
  315. t_index += sizeof(unsigned char)*19;
  316. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_inside_door_motion", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  317. t_index += sizeof(unsigned char)*1;
  318. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_outside_door_motion", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  319. t_index += sizeof(unsigned char)*1;
  320. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_respons_turntable_direction", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  321. t_index += sizeof(unsigned char)*1;
  322. t_snap7_buf.init(PASSAGEWAY_RESPONSE_FROM_PLC_TO_DISPATCH_DBNUMBER_0, 0, sizeof(Passageway_response_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  323. m_receive_buf_map[10] = t_snap7_buf;
  324. t_snap7_buf.init(PASSAGEWAY_RESPONSE_FROM_PLC_TO_DISPATCH_DBNUMBER_1, 0, sizeof(Passageway_response_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  325. m_receive_buf_map[11] = t_snap7_buf;
  326. t_snap7_buf.init(PASSAGEWAY_RESPONSE_FROM_PLC_TO_DISPATCH_DBNUMBER_2, 0, sizeof(Passageway_response_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  327. m_receive_buf_map[12] = t_snap7_buf;
  328. t_snap7_buf.init(PASSAGEWAY_RESPONSE_FROM_PLC_TO_DISPATCH_DBNUMBER_3, 0, sizeof(Passageway_response_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  329. m_receive_buf_map[13] = t_snap7_buf;
  330. t_snap7_buf.init(PASSAGEWAY_RESPONSE_FROM_PLC_TO_DISPATCH_DBNUMBER_4, 0, sizeof(Passageway_response_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  331. m_receive_buf_map[14] = t_snap7_buf;
  332. t_snap7_buf.init(PASSAGEWAY_RESPONSE_FROM_PLC_TO_DISPATCH_DBNUMBER_5, 0, sizeof(Passageway_response_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  333. m_receive_buf_map[15] = t_snap7_buf;
  334. t_snap7_buf.init(PASSAGEWAY_RESPONSE_FROM_PLC_TO_DISPATCH_DBNUMBER_6, 0, sizeof(Passageway_response_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  335. m_receive_buf_map[16] = t_snap7_buf;
  336. t_snap7_buf.init(PASSAGEWAY_RESPONSE_FROM_PLC_TO_DISPATCH_DBNUMBER_7, 0, sizeof(Passageway_response_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  337. m_receive_buf_map[17] = t_snap7_buf;
  338. t_index = 0;
  339. t_variable_information_vector.clear();
  340. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_heartbeat", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  341. t_index += sizeof(unsigned char)*1;
  342. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_safe_status", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  343. t_index += sizeof(unsigned char)*1;
  344. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_sensor_status1", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  345. t_index += sizeof(unsigned char)*1;
  346. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_sensor_status2", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  347. t_index += sizeof(unsigned char)*1;
  348. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved4_35", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 32 });
  349. t_index += sizeof(unsigned char)*32;
  350. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_turntable_direction", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  351. t_index += sizeof(unsigned char)*1;
  352. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved37", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
  353. t_index += sizeof(unsigned char)*1;
  354. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_error_code", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 50 });
  355. t_index += sizeof(unsigned char)*50;
  356. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_warning_code", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 50 });
  357. t_index += sizeof(unsigned char)*50;
  358. t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_actual_error_description", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 256 });
  359. t_index += sizeof(unsigned char)*256;
  360. t_snap7_buf.init(PASSAGEWAY_STATUS_FROM_PLC_TO_DISPATCH_DBNUMBER_0, 0, sizeof(Passageway_status_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  361. m_receive_buf_map[18] = t_snap7_buf;
  362. t_snap7_buf.init(PASSAGEWAY_STATUS_FROM_PLC_TO_DISPATCH_DBNUMBER_1, 0, sizeof(Passageway_status_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  363. m_receive_buf_map[19] = t_snap7_buf;
  364. t_snap7_buf.init(PASSAGEWAY_STATUS_FROM_PLC_TO_DISPATCH_DBNUMBER_2, 0, sizeof(Passageway_status_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  365. m_receive_buf_map[20] = t_snap7_buf;
  366. t_snap7_buf.init(PASSAGEWAY_STATUS_FROM_PLC_TO_DISPATCH_DBNUMBER_3, 0, sizeof(Passageway_status_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  367. m_receive_buf_map[21] = t_snap7_buf;
  368. t_snap7_buf.init(PASSAGEWAY_STATUS_FROM_PLC_TO_DISPATCH_DBNUMBER_4, 0, sizeof(Passageway_status_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  369. m_receive_buf_map[22] = t_snap7_buf;
  370. t_snap7_buf.init(PASSAGEWAY_STATUS_FROM_PLC_TO_DISPATCH_DBNUMBER_5, 0, sizeof(Passageway_status_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  371. m_receive_buf_map[23] = t_snap7_buf;
  372. t_snap7_buf.init(PASSAGEWAY_STATUS_FROM_PLC_TO_DISPATCH_DBNUMBER_6, 0, sizeof(Passageway_status_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  373. m_receive_buf_map[24] = t_snap7_buf;
  374. t_snap7_buf.init(PASSAGEWAY_STATUS_FROM_PLC_TO_DISPATCH_DBNUMBER_7, 0, sizeof(Passageway_status_from_plc_to_dispatch), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
  375. m_receive_buf_map[25] = t_snap7_buf;
  376. return Snap7_communication_base::communication_init();
  377. }
  378. //反初始化 通信 模块。
  379. Error_manager Dispatch_communication::communication_uninit()
  380. {
  381. return Snap7_communication_base::communication_uninit();
  382. }
  383. //更新数据
  384. Error_manager Dispatch_communication::updata_receive_buf()
  385. {
  386. // return Error_code::SUCCESS;
  387. std::unique_lock<std::mutex> t_lock1(m_receive_buf_lock);
  388. std::unique_lock<std::mutex> t_lock2(m_data_lock);
  389. memcpy(&m_catcher_response_from_plc_to_dispatch[0], m_receive_buf_map[0].mp_buf_obverse, m_receive_buf_map[0].m_size);
  390. memcpy(&m_catcher_response_from_plc_to_dispatch[1], m_receive_buf_map[1].mp_buf_obverse, m_receive_buf_map[1].m_size);
  391. memcpy(&m_catcher_status_from_plc_to_dispatch[0], m_receive_buf_map[2].mp_buf_obverse, m_receive_buf_map[2].m_size);
  392. memcpy(&m_catcher_status_from_plc_to_dispatch[1], m_receive_buf_map[3].mp_buf_obverse, m_receive_buf_map[3].m_size);
  393. memcpy(&m_carrier_response_from_plc_to_dispatch[0], m_receive_buf_map[4].mp_buf_obverse, m_receive_buf_map[4].m_size);
  394. memcpy(&m_carrier_response_from_plc_to_dispatch[1], m_receive_buf_map[5].mp_buf_obverse, m_receive_buf_map[5].m_size);
  395. memcpy(&m_carrier_response_from_plc_to_dispatch[2], m_receive_buf_map[6].mp_buf_obverse, m_receive_buf_map[6].m_size);
  396. memcpy(&m_carrier_status_from_plc_to_dispatch[0], m_receive_buf_map[7].mp_buf_obverse, m_receive_buf_map[7].m_size);
  397. memcpy(&m_carrier_status_from_plc_to_dispatch[1], m_receive_buf_map[8].mp_buf_obverse, m_receive_buf_map[8].m_size);
  398. memcpy(&m_carrier_status_from_plc_to_dispatch[2], m_receive_buf_map[9].mp_buf_obverse, m_receive_buf_map[9].m_size);
  399. memcpy(&m_passageway_response_from_plc_to_dispatch[0], m_receive_buf_map[10].mp_buf_obverse, m_receive_buf_map[10].m_size);
  400. memcpy(&m_passageway_response_from_plc_to_dispatch[1], m_receive_buf_map[11].mp_buf_obverse, m_receive_buf_map[11].m_size);
  401. memcpy(&m_passageway_response_from_plc_to_dispatch[2], m_receive_buf_map[12].mp_buf_obverse, m_receive_buf_map[12].m_size);
  402. memcpy(&m_passageway_response_from_plc_to_dispatch[3], m_receive_buf_map[13].mp_buf_obverse, m_receive_buf_map[13].m_size);
  403. memcpy(&m_passageway_response_from_plc_to_dispatch[4], m_receive_buf_map[14].mp_buf_obverse, m_receive_buf_map[14].m_size);
  404. memcpy(&m_passageway_response_from_plc_to_dispatch[5], m_receive_buf_map[15].mp_buf_obverse, m_receive_buf_map[15].m_size);
  405. memcpy(&m_passageway_response_from_plc_to_dispatch[6], m_receive_buf_map[16].mp_buf_obverse, m_receive_buf_map[16].m_size);
  406. memcpy(&m_passageway_response_from_plc_to_dispatch[7], m_receive_buf_map[17].mp_buf_obverse, m_receive_buf_map[17].m_size);
  407. memcpy(&m_passageway_status_from_plc_to_dispatch[0], m_receive_buf_map[18].mp_buf_obverse, m_receive_buf_map[18].m_size);
  408. memcpy(&m_passageway_status_from_plc_to_dispatch[1], m_receive_buf_map[19].mp_buf_obverse, m_receive_buf_map[19].m_size);
  409. memcpy(&m_passageway_status_from_plc_to_dispatch[2], m_receive_buf_map[20].mp_buf_obverse, m_receive_buf_map[20].m_size);
  410. memcpy(&m_passageway_status_from_plc_to_dispatch[3], m_receive_buf_map[21].mp_buf_obverse, m_receive_buf_map[21].m_size);
  411. memcpy(&m_passageway_status_from_plc_to_dispatch[4], m_receive_buf_map[22].mp_buf_obverse, m_receive_buf_map[22].m_size);
  412. memcpy(&m_passageway_status_from_plc_to_dispatch[5], m_receive_buf_map[23].mp_buf_obverse, m_receive_buf_map[23].m_size);
  413. memcpy(&m_passageway_status_from_plc_to_dispatch[6], m_receive_buf_map[24].mp_buf_obverse, m_receive_buf_map[24].m_size);
  414. memcpy(&m_passageway_status_from_plc_to_dispatch[7], m_receive_buf_map[25].mp_buf_obverse, m_receive_buf_map[25].m_size);
  415. return Error_code::SUCCESS;
  416. }
  417. Error_manager Dispatch_communication::updata_send_buf()
  418. {
  419. std::unique_lock<std::mutex> t_lock1(m_send_buf_lock);
  420. std::unique_lock<std::mutex> t_lock2(m_data_lock);
  421. m_catcher_request_from_dispatch_to_plc_for_data[0].m_reserved50 = 1;
  422. m_catcher_request_from_dispatch_to_plc_for_data[1].m_reserved50 = 1;
  423. memcpy(m_send_buf_map[0].mp_buf_obverse, &m_catcher_request_from_dispatch_to_plc_for_data[0], m_send_buf_map[0].m_size);
  424. memcpy(m_send_buf_map[1].mp_buf_obverse, &m_catcher_request_from_dispatch_to_plc_for_data[1], m_send_buf_map[1].m_size);
  425. memcpy(m_send_buf_map[2].mp_buf_obverse, &m_catcher_request_from_dispatch_to_plc_for_key[0], m_send_buf_map[2].m_size);
  426. memcpy(m_send_buf_map[3].mp_buf_obverse, &m_catcher_request_from_dispatch_to_plc_for_key[1], m_send_buf_map[3].m_size);
  427. m_carrier_request_from_dispatch_to_plc_for_data[0].m_reserved50 = 1;
  428. m_carrier_request_from_dispatch_to_plc_for_data[1].m_reserved50 = 1;
  429. m_carrier_request_from_dispatch_to_plc_for_data[2].m_reserved50 = 1;
  430. memcpy(m_send_buf_map[4].mp_buf_obverse, &m_carrier_request_from_dispatch_to_plc_for_data[0], m_send_buf_map[4].m_size);
  431. memcpy(m_send_buf_map[5].mp_buf_obverse, &m_carrier_request_from_dispatch_to_plc_for_data[1], m_send_buf_map[5].m_size);
  432. memcpy(m_send_buf_map[6].mp_buf_obverse, &m_carrier_request_from_dispatch_to_plc_for_data[2], m_send_buf_map[6].m_size);
  433. memcpy(m_send_buf_map[7].mp_buf_obverse, &m_carrier_request_from_dispatch_to_plc_for_key[0], m_send_buf_map[7].m_size);
  434. memcpy(m_send_buf_map[8].mp_buf_obverse, &m_carrier_request_from_dispatch_to_plc_for_key[1], m_send_buf_map[8].m_size);
  435. memcpy(m_send_buf_map[9].mp_buf_obverse, &m_carrier_request_from_dispatch_to_plc_for_key[2], m_send_buf_map[9].m_size);
  436. m_passageway_request_from_dispatch_to_plc_for_data[0].m_reserved50 = 1;
  437. m_passageway_request_from_dispatch_to_plc_for_data[1].m_reserved50 = 1;
  438. m_passageway_request_from_dispatch_to_plc_for_data[2].m_reserved50 = 1;
  439. m_passageway_request_from_dispatch_to_plc_for_data[3].m_reserved50 = 1;
  440. m_passageway_request_from_dispatch_to_plc_for_data[4].m_reserved50 = 1;
  441. m_passageway_request_from_dispatch_to_plc_for_data[5].m_reserved50 = 1;
  442. m_passageway_request_from_dispatch_to_plc_for_data[6].m_reserved50 = 1;
  443. m_passageway_request_from_dispatch_to_plc_for_data[7].m_reserved50 = 1;
  444. memcpy(m_send_buf_map[10].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_data[0], m_send_buf_map[10].m_size);
  445. memcpy(m_send_buf_map[11].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_data[1], m_send_buf_map[11].m_size);
  446. memcpy(m_send_buf_map[12].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_data[2], m_send_buf_map[12].m_size);
  447. memcpy(m_send_buf_map[13].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_data[3], m_send_buf_map[13].m_size);
  448. memcpy(m_send_buf_map[14].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_data[4], m_send_buf_map[14].m_size);
  449. memcpy(m_send_buf_map[15].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_data[5], m_send_buf_map[15].m_size);
  450. memcpy(m_send_buf_map[16].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_data[6], m_send_buf_map[16].m_size);
  451. memcpy(m_send_buf_map[17].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_data[7], m_send_buf_map[17].m_size);
  452. memcpy(m_send_buf_map[18].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_key[0], m_send_buf_map[18].m_size);
  453. memcpy(m_send_buf_map[19].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_key[1], m_send_buf_map[19].m_size);
  454. memcpy(m_send_buf_map[20].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_key[2], m_send_buf_map[20].m_size);
  455. memcpy(m_send_buf_map[21].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_key[3], m_send_buf_map[21].m_size);
  456. memcpy(m_send_buf_map[22].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_key[4], m_send_buf_map[22].m_size);
  457. memcpy(m_send_buf_map[23].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_key[5], m_send_buf_map[23].m_size);
  458. memcpy(m_send_buf_map[24].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_key[6], m_send_buf_map[24].m_size);
  459. memcpy(m_send_buf_map[25].mp_buf_obverse, &m_passageway_request_from_dispatch_to_plc_for_key[7], m_send_buf_map[25].m_size);
  460. return Error_code::SUCCESS;
  461. }