#include "SimMsg.h" #include "test9.h" #include #include #include #include using namespace std; void test9WriteLog(const std::string &msg) { std::cout << msg< parameters; string expression = "src = '"+ servername + "'"; if (nullptr == test9_part) { test9_part=new SimMsg(domainid, 3000, appname, test9WriteLog); test9_part->create_pub(topic_name_cmd); test9_part->create_pub(topic_name_tlm); test9_part->create_sub(topic_name_cmd, command_callback, expression, parameters); test9_part->create_sub(topic_name_tlm, telemetry_callback, expression, parameters); } } // 遥控接收回调函数 void command_callback(std::string src, std::string dest, std::string type, std::string reserve1, std::string reserve2, std::vector& data) { uint8_t test9_data[256] = {8}; generate_test_data(test9_data, 256); uint16_t data_len = 256; // 直接传递数组,不需要.data() test9_command_Pub(test9_data, dest, data_len); // 使用传入的dest参数 } // 遥测接收回调函数 void telemetry_callback(std::string src, std::string dest, std::string type, std::string reserve1, std::string reserve2, std::vector& data) { // 打印接收到的数据 std::cout << "Telemetry received from " << src << " to " << dest << std::endl; std::cout << "Type: " << type << std::endl; std::cout << "Data (" << data.size() << " bytes): "; for (size_t i = 0; i < data.size(); ++i) { std::cout << std::hex << std::uppercase << (int)data[i]; if (i < data.size() - 1) { std::cout << ", "; } } std::cout << std::dec << std::endl; } // AD硬件服务化遥控发布 void test9_command_Pub(uint8_t* data, string dest, uint16_t len) { test9_part->publish(topic_name_cmd, "test9_Service", dest, "command", data, len); } // AD硬件服务化遥测发布 void test9_telemetry_Pub(uint8_t* data, string dest, uint16_t len) { test9_part->publish(topic_name_tlm, "test9_Service", dest, "telemetry", data, len); }