From feaf4393291a1160468591d30cdf6eab29b1e94c Mon Sep 17 00:00:00 2001 From: a1012112796 <1012112796@qq.com> Date: Tue, 14 Sep 2021 11:23:55 +0800 Subject: [PATCH] =?UTF-8?q?MinSubscriber=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 继承自 MinHandler - 配置参数化 - 尝试使用launnch 文件 Signed-off-by: a1012112796 <1012112796@qq.com> --- src/test_topic/CMakeLists.txt | 2 +- .../include/test_topic/minSubscriber.h | 12 +++--- src/test_topic/launch/test1.launch | 6 +++ src/test_topic/src/minSubscriber.cpp | 37 +++++++++++++------ 4 files changed, 39 insertions(+), 18 deletions(-) create mode 100644 src/test_topic/launch/test1.launch diff --git a/src/test_topic/CMakeLists.txt b/src/test_topic/CMakeLists.txt index 1153c90..fdcb976 100644 --- a/src/test_topic/CMakeLists.txt +++ b/src/test_topic/CMakeLists.txt @@ -150,7 +150,7 @@ include_directories( include ${catkin_INCLUDE_DIRS}) add_executable(talker src/minPublisher.cpp src/WzSerialportPlus.cpp) target_link_libraries(talker ${catkin_LIBRARIES}) -add_executable(listener src/minSubscriber.cpp src/WzSerialportPlus.cpp) +add_executable(listener src/minSubscriber.cpp src/WzSerialportPlus.cpp src/minHandler.cpp) target_link_libraries(listener ${catkin_LIBRARIES}) add_executable(time_tacker src/timerPublisher.cpp) diff --git a/src/test_topic/include/test_topic/minSubscriber.h b/src/test_topic/include/test_topic/minSubscriber.h index 53b8034..4fe43ab 100644 --- a/src/test_topic/include/test_topic/minSubscriber.h +++ b/src/test_topic/include/test_topic/minSubscriber.h @@ -3,15 +3,17 @@ #include #include -#include #include "test_topic/WzSerialportPlus.h" +#include "test_topic/minHandler.h" -using MsgType = std_msgs::String; -class MinSubscriber: ros::NodeHandle { +using namespace xyfc_std; + +class MinSubscriber: public MinHandler { public: - MinSubscriber(); + MinSubscriber(int argc, char **argv); ~MinSubscriber(); - void run(const char *device); +protected: + virtual bool node_init(void); private: ros::Subscriber _sub; WzSerialportPlus _serial; diff --git a/src/test_topic/launch/test1.launch b/src/test_topic/launch/test1.launch new file mode 100644 index 0000000..ad85f00 --- /dev/null +++ b/src/test_topic/launch/test1.launch @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/test_topic/src/minSubscriber.cpp b/src/test_topic/src/minSubscriber.cpp index d42a079..551714a 100644 --- a/src/test_topic/src/minSubscriber.cpp +++ b/src/test_topic/src/minSubscriber.cpp @@ -1,8 +1,28 @@ #include "test_topic/minSubscriber.h" -MinSubscriber::MinSubscriber() +MinSubscriber::MinSubscriber(int argc, char **argv): + MinHandler(argc, argv, "serial_sender") { - _sub = this->subscribe("test_topic", 200, boost::bind(&MinSubscriber::callback, this, _1)); +} + +bool MinSubscriber::node_init(void) +{ + std::string port, topic; + int baud = 115200; + ros::param::param("~port", port, "/dev/ttyACM0"); + ros::param::param("~baud", baud, 57600); + ros::param::param("~topic", topic, "test_topic"); + + ROS_INFO("will listen '%s' tiopic", topic.c_str()); + _sub = _node->subscribe(topic, 200, boost::bind(&MinSubscriber::callback, this, _1)); + + if (!_serial.open(port, baud, 1, 8, 'N')) + { + ROS_ERROR("open serial '%s' failed!", port.c_str()); + return false; + } + + return true; } MinSubscriber::~MinSubscriber() @@ -16,18 +36,11 @@ void MinSubscriber::callback(const boost::shared_ptr &msg) _serial.send(msg->data.c_str(), strlen(msg->data.c_str())); } -void MinSubscriber::run(const char *device) -{ - _serial.open(device, 115200, 1, 8, 'N'); - ros::spin(); -} - int main(int argc, char *argv[]) { - ros::init(argc, argv, "test_sub_node"); - MinSubscriber nh; - - nh.run("/dev/ttyUSB1"); + MinSubscriber *nh = new MinSubscriber(argc, argv); + nh->run(4); + free(nh); return 0; }