You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.5 KiB
C++

3 years ago
#include <iostream>
#include <nlohmann/json.hpp>
#include <std_msgs/String.h>
#include <string>
#include <ros/ros.h>
using json = nlohmann::json;
void callBack(const std_msgs::String::ConstPtr &data){
json j_data = json::parse(data->data);
std::cout <<"original message"<< data->data << std::endl;
// std::cout <<"parse message"<< j_data << std::endl;
// std::cout <<"parse message"<< j_data["lat"] << std::endl;
3 years ago
std::string k = j_data["lat"] , q = j_data["lon"];
int lat = std::stoi(k) ,lon = std::stoi(q);
std::cout <<"lat:"<< j_data["lat"] << std::endl;
std::cout <<"lon:"<< j_data["lon"] << std::endl;
3 years ago
}
int main(int argc ,char **argv)
{
// create JSON arrays
std::string j,q,k;
std_msgs::String mes;
std::string data ="{\"lat\": \"241218859\", \"lon\": \"1206743161\", \"alt\": \"8489\", \"heading\": \"128\"}";
// std::string data = "{'lat': 241217244, 'lon': '1206741391', 'alt': '8937', 'heading': 8800}";
// std::string data ='"{"lat": "241218859", "lon": "1206743161", "alt": "8489", "heading": "128"}"';
// Init ROS node
ros::init(argc, argv, "ros_node");
ros::NodeHandle json_node;
// reate Assync spiner
ros::AsyncSpinner spinner(0);
spinner.start();
std::string rostopicName = "/uav_message";
// ros::Publisher data_pub = json_node.advertise<std_msgs::String>(rostopicName,100);
3 years ago
ros::Subscriber data_receive = json_node.subscribe<std_msgs::String>(rostopicName,100,callBack);
//ros::Subscriber data_receive1 = json_node.subscribe<std_msgs::String>("/uav_message",100,callBack);
mes.data = data;
// while(ros::ok()){
// data_pub.publish(mes);
// }
3 years ago
// json j_no_init_list = json::array();
// json j_empty_init_list = json::array({});
// json j_nonempty_init_list = json::array({1, 2, 3, 4});
// json j_list_of_pairs = json::array({ {"one", 1}, {"two", 2} });
// json j_data_list = json::parse(data) ;
// j = j_data_list["lat"];
// q = j_data_list["lon"];
// k = j_data_list["alt"];
// serialize the JSON arrays
// std::cout << j_no_init_list << '\n';
// std::cout << j_empty_init_list << '\n';
// std::cout << j_nonempty_init_list << '\n';
// std::cout << j_list_of_pairs << '\n';
// while(true){
// std::cout << j_data_list << '\n';
// std::cout << j_data_list["lat"] << '\n';
// std::cout << std::stoi(j)<< std::stoi(q)<< std::stoi(k) << "\n";
// }
ros::waitForShutdown();
return 0;
}