当前位置: 首页 > news >正文

dede中英文网站成全视频免费观看在线看动画

dede中英文网站,成全视频免费观看在线看动画,wordpress传入视屏黑屏,石家庄云图网站建设文章目录 1、简述2、效果图2.1、命令行#xff08;不带GUI#xff09;2.2、GUI#xff08;这里用的Qt#xff09; 3、串口硬件知识普及4、核心实现4.1、Qt的pro文件4.2、main文件4.3、SSerialPort类4.3.1、头文件4.3.2、源文件 4.4、Linux下的CMakeLists.txt 1、简述 本文… 文章目录 1、简述2、效果图2.1、命令行不带GUI2.2、GUI这里用的Qt 3、串口硬件知识普及4、核心实现4.1、Qt的pro文件4.2、main文件4.3、SSerialPort类4.3.1、头文件4.3.2、源文件 4.4、Linux下的CMakeLists.txt 1、简述 本文主要讲述 C开源库 CSerialPort 的使用主要在Windows和Linux两个平台分别应用。 有需要了解 C开源库 CSerialPort 的小伙伴可以先去这边文章下了解下为什么要用 CSerialPort 和 CSerialPort 的介绍。 文章链接【C/C】轻量级跨平台 开源串口库 CSerialPort 2、效果图 2.1、命令行不带GUI Windows效果如下Linux一样可以运行只是串口名称不一样。因为还要切换系统我就不截Linux图了 2.2、GUI这里用的Qt 放开pro里面的这两行即可注释掉就是命令行Windows效果图如下。Linux下这台没装Qt没尝试串口名称改下问题不大。 DEFINES SHASHIDI_GUI CONFIG SHASHIDI_GUI3、串口硬件知识普及 因为只测试串口的收发消息把发送和接收的两个端口短接。找一个杜邦线直接串联起来就可以这样发什么消息就收到什么消息。如图是1口和3口短接。 4、核心实现 4.1、Qt的pro文件 Qt 的 pro 文件如下。这里我用了一个宏来区分一个是Pro的区分一个是代码里面的区分 DEFINES SHASHIDI_GUI CONFIG SHASHIDI_GUISHASHIDI_GUI{ QT core gui greaterThan(QT_MAJOR_VERSION, 4): QT widgetsTARGET Demo_SerialPortSOURCES main.cpp \mainwindow.cppFORMS \mainwindow.uiHEADERS \mainwindow.h} else { TARGET Demo_SerialPort_ConsoleCONFIG console c11 CONFIG - app_bundle CONFIG - qtHEADERS \jsserialport.hSOURCES main.cpp \jsserialport.cpp }TEMPLATE appDEFINES _UNICODEinclude($$PWD/CSerialPort/CSerialPort.pri)win32*: {#about windows regLIBS $$PWD/CSerialPort/windows/x86/advapi32.lib#about windows setupapiLIBS $$PWD/CSerialPort/windows/x86/setupapi.lib }CONFIG(debug, debug|release) {DESTDIR $$PWD/bin_debug } else {DESTDIR $$PWD/bin_release }HEADERS \CommonSerialPort.h4.2、main文件 #ifdef SHASHIDI_GUI #include mainwindow.h #include QApplication #else #include jsserialport.h #include iostream using namespace std; #endif#ifdef SHASHIDI_GUI int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;w.show();return a.exec(); #else int main() {JSSerialPort js;js.doWork();return 0; #endif }4.3、SSerialPort类 4.3.1、头文件 #ifndef SSERIALPORT_H #define SSERIALPORT_H#include iostream #include CSerialPort/SerialPort.h #include CSerialPort/SerialPortInfo.h #include CommonSerialPort.husing namespace std; using namespace itas109;class SSerialPort : public CSerialPortListener { public:SSerialPort();// 工作void doWork();// 校验void doCheck(char receiveBuf[], int receiveSize);// 串口信号bool m_flag_serialport false;// 发出消息void sendMessage();// 读取全部数据void readAllData();private:// 获取端口列表vectorSerialPortInfo getSerialPortList();// 打开串口bool openSerialPort(const char *portName,int baudRate 9600,itas109::Parity parity itas109::Parity::ParityNone,itas109::DataBits dataBits itas109::DataBits::DataBits8,itas109::StopBits stopbits itas109::StopBits::StopOne,itas109::FlowControl flowControl itas109::FlowControl::FlowNone,unsigned int readBufferSize 4096, int timeout 0);// 关闭串口void closeSerialPort();// 收到消息void onReadEvent(const char *portName, unsigned int readBufferLen);// 设置串口模式 同步\异步void setSync(bool isSync);// 设置DTRvoid setDTR(bool isDTR);// 设置RTSvoid setRTS(bool isRTS);// 初始化串口void initSerialPort();// 初始化发送消息void initSendMessage(); private:CSerialPort m_SerialPort; // 串口struct TERMINAL_TO_FIRECONTROL *m_terminal_to_firecontrol; // 终端到火控struct FIRECONTROL_TO_TERMINAL *m_firecontrol_to_terminal; // 火控到终端int m_packet_frame_count 0; // 报文帧号累计int m_buffer_size 2048;int m_frame_length 34;unsigned char m_firstChar 161; // 0xA1unsigned char m_secondChar 177; // 0xB1unsigned char m_thirdChar 50; // 0x32int m_tx 0;int m_rx 0; };#endif // SSERIALPORT_H4.3.2、源文件 #include sserialport.h#include iostream #include iomanipSSerialPort::SSerialPort() { }void SSerialPort::doWork() {cout doWork: initSerialPort endl;initSerialPort();cout doWork: initSendMessage endl;initSendMessage();cout doWork: sendMessage endl;sendMessage();cout doWork: readAllData endl;readAllData(); }void SSerialPort::doCheck(char receiveBuf[], int receiveSize) {cout doCheck: start receiveSize endl;for(int i 0; i receiveSize; i) {if( ( receiveSize - i ) m_frame_length ) { //不足一帧则退出break;}cout doCheck1: receiveBuf[i] endl;if( (receiveBuf[i] m_secondChar) (receiveBuf[i1] m_firstChar) ) { //发现帧头取出一帧校验cout doCheck: receiveBuf[i] endl;string aa(receiveBuf);cout doCheck: aa endl;string tmp_s(aa, i, m_frame_length);cout doCheck: tmp_s endl;int data 0;for(int i 0; i (m_frame_length - 1); i) {data data tmp_s[i];}unsigned char data1 data 0x7f;if(data1 ! tmp_s[m_frame_length - 1]) {i i 1;continue;}//校验通过取值m_firecontrol_to_terminal-send_address tmp_s[0];m_firecontrol_to_terminal-receive_address tmp_s[1];m_firecontrol_to_terminal-packet_length tmp_s[2];m_firecontrol_to_terminal-packet_frame_number_low tmp_s[3];m_firecontrol_to_terminal-packet_frame_number_high tmp_s[4];m_firecontrol_to_terminal-light_aiming_status_word_1.all tmp_s[5];m_firecontrol_to_terminal-light_aiming_status_word_2.all tmp_s[6];m_firecontrol_to_terminal-laser_ranging_distance_low tmp_s[7];m_firecontrol_to_terminal-laser_ranging_distance_high tmp_s[8];m_firecontrol_to_terminal-servo_status_word_1.all tmp_s[9];m_firecontrol_to_terminal-servo_status_word_2.all tmp_s[10];m_firecontrol_to_terminal-speed_of_chassis tmp_s[11];m_firecontrol_to_terminal-chassis_battery_power tmp_s[12];m_firecontrol_to_terminal-front_flip_arm_angle_low tmp_s[13];m_firecontrol_to_terminal-front_flip_arm_angle_high tmp_s[14];m_firecontrol_to_terminal-back_flip_arm_angle_low tmp_s[15];m_firecontrol_to_terminal-back_flip_arm_angle_high tmp_s[16];m_firecontrol_to_terminal-relay_status_word.all tmp_s[17];m_firecontrol_to_terminal-light_azimuth_position_low tmp_s[18];m_firecontrol_to_terminal-light_azimuth_position_high tmp_s[19];m_firecontrol_to_terminal-light_pitch_position_low tmp_s[20];m_firecontrol_to_terminal-light_pitch_position_high tmp_s[21];m_firecontrol_to_terminal-weapon_azimuth_position_low tmp_s[22];m_firecontrol_to_terminal-weapon_azimuth_position_high tmp_s[23];m_firecontrol_to_terminal-weapon_pitch_position_low tmp_s[24];m_firecontrol_to_terminal-weapon_pitch_position_high tmp_s[25];m_firecontrol_to_terminal-platform_pitch tmp_s[26];m_firecontrol_to_terminal-platform_roll_angle tmp_s[27];m_firecontrol_to_terminal-residual_bullet_low tmp_s[28];m_firecontrol_to_terminal-residual_bullet_high tmp_s[29];m_firecontrol_to_terminal-rsve1 tmp_s[30];m_firecontrol_to_terminal-rsve2 tmp_s[31];m_firecontrol_to_terminal-rsve3 tmp_s[32];m_firecontrol_to_terminal-check tmp_s[33];cout doCheck: send_address tmp_s endl; // emit sig_check(data1);}} }vectorSerialPortInfo SSerialPort::getSerialPortList() {vectorSerialPortInfo portNameList CSerialPortInfo::availablePortInfos();for (size_t i 0; i portNameList.size(); i) {cout getSerialPortList: portNameList[i].portName endl;}if ( portNameList.size() 0 ) {cout getSerialPortList is Null endl;}return portNameList; }bool SSerialPort::openSerialPort(const char *portName, int baudRate, Parity parity, DataBits dataBits, StopBits stopbits, FlowControl flowControl, unsigned int readBufferSize, int timeout) {cout openSerialPort-----------------------------------start endl;bool isOpen false;if(getSerialPortList().size() 0) {m_SerialPort.init(portName, baudRate, parity, dataBits, stopbits, flowControl, readBufferSize);cout portName: portName endl;cout baudRate: baudRate endl;cout parity: parity endl;cout dataBits: dataBits endl;cout stopbits: stopbits endl;cout flowControl: flowControl endl;cout readBufferSize: readBufferSize endl;m_SerialPort.setReadIntervalTimeout(timeout);isOpen m_SerialPort.open();if(!isOpen) {cerr open port error m_SerialPort.getLastError() m_SerialPort.getLastErrorMsg() endl;}} else {cerr This Computer no avaiable port! endl;}cout openSerialPort-----------------------------------end endl;return isOpen; }void SSerialPort::closeSerialPort() {m_SerialPort.close(); }void SSerialPort::onReadEvent(const char *portName, unsigned int readBufferLen) {cout onReadEvent: portName readBufferLen endl;if(readBufferLen 0) {unsigned long recLen 0;char * str NULL;str new char[readBufferLen];recLen m_SerialPort.readData(str, readBufferLen);if(recLen 0) {// TODO: 中文需要由两个字符拼接否则显示为空cout onReadEvent: portName str recLen endl;doCheck(str, recLen);} else {}if(str) {delete[] str;str NULL;}} }void SSerialPort::sendMessage() {char message[50];if(m_SerialPort.isOpen()) {// 伺服旋转限制// 高位低位赋值m_terminal_to_firecontrol-packet_frame_number_low m_packet_frame_count 0x00ff;m_terminal_to_firecontrol-packet_frame_number_high (m_packet_frame_count 8) 0x00ff;message[0] m_firstChar;message[1] m_secondChar;message[2] m_thirdChar;cout m_terminal_to_firecontrol-packet_frame_number_low: m_terminal_to_firecontrol-packet_frame_number_low endl;message[3] m_terminal_to_firecontrol-packet_frame_number_low;message[4] m_terminal_to_firecontrol-packet_frame_number_high;message[5] m_terminal_to_firecontrol-light_aiming_control_word_1.all;//变化message[6] m_terminal_to_firecontrol-light_aiming_control_word_2.all;message[7] m_terminal_to_firecontrol-light_aiming_control_word_3.all;message[8] m_terminal_to_firecontrol-servo_control_word_1.all;message[9] m_terminal_to_firecontrol-servo_control_word_2.all;message[10] m_terminal_to_firecontrol-chassis_control_word_1.all;message[11] m_terminal_to_firecontrol-relay_control_word.all;message[12] m_terminal_to_firecontrol-light_azimuth_rotation_speed_low;message[13] m_terminal_to_firecontrol-light_azimuth_rotation_speed_high;message[14] m_terminal_to_firecontrol-light_pitch_rotation_speed_low;message[15] m_terminal_to_firecontrol-light_pitch_rotation_speed_high;message[16] m_terminal_to_firecontrol-fan_sweep_azimuth_setting_Angle;message[17] m_terminal_to_firecontrol-fan_sweep_azimuth_fu_setting_Angle;message[18] m_terminal_to_firecontrol-fan_sweep_pitch_setting_Angle;message[19] m_terminal_to_firecontrol-fan_sweep_pitch_fu_setting_Angle;message[20] m_terminal_to_firecontrol-quick_boot_azimuth_coordinates_low;message[21] m_terminal_to_firecontrol-quick_boot_azimuth_coordinates_high;message[22] m_terminal_to_firecontrol-quick_boot_pitch_coordinates_low;message[23] m_terminal_to_firecontrol-quick_boot_pitch_coordinates_high;message[24] m_terminal_to_firecontrol-left_track_speed_low;message[25] m_terminal_to_firecontrol-left_track_speed_high;message[26] m_terminal_to_firecontrol-right_track_speed_low;message[27] m_terminal_to_firecontrol-right_track_speed_high;message[28] m_terminal_to_firecontrol-forward_arm_speed;message[29] m_terminal_to_firecontrol-back_arm_speed;message[30] m_terminal_to_firecontrol-residual_low;message[31] m_terminal_to_firecontrol-residual_high;message[32] m_terminal_to_firecontrol-azimuth_correction;message[33] m_terminal_to_firecontrol-pitch_correction;message[34] m_terminal_to_firecontrol-delay_correction;message[35] m_terminal_to_firecontrol-light_aiming_control_word_4.all;message[36] m_terminal_to_firecontrol-light_aiming_control_word_5.all;message[37] m_terminal_to_firecontrol-servo_azimuth_rotation_speed_low;message[38] m_terminal_to_firecontrol-servo_azimuth_rotation_speed_high;message[39] m_terminal_to_firecontrol-servo_pitch_rotation_speed_low;message[40] m_terminal_to_firecontrol-servo_pitch_rotation_speed_high;message[41] m_terminal_to_firecontrol-firing_servo_start_low;message[42] m_terminal_to_firecontrol-firing_servo_start_high;message[43] m_terminal_to_firecontrol-firing_servo_stop_low;message[44] m_terminal_to_firecontrol-firing_servo_stop_high;message[45] m_terminal_to_firecontrol-firing_insurance_close_low;message[46] m_terminal_to_firecontrol-firing_insurance_close_high;message[47] m_terminal_to_firecontrol-firing_insurance_open_low;message[48] m_terminal_to_firecontrol-firing_insurance_open_high;int data 0;for( int i 0; i 49; i ) {cout sendMessage: message[i] endl;data data message[i];}message[49] data 0x7f;int length sizeof(message)/sizeof(char);if( !m_flag_serialport ) {// 支持中文并获取正确的长度m_SerialPort.writeData(message, length);} else {}if( m_packet_frame_count 0xffff ) {m_packet_frame_count 1;} else {m_packet_frame_count;}cout sendMessage: message length: length endl;} else {cerr please open serial port first! endl;} }void SSerialPort::readAllData() {int recLen 0;char str[4096] {0};recLen m_SerialPort.readAllData(str);if(recLen 0) {// TODO: 中文需要由两个字符拼接否则显示为空cout readAllData: str length: recLen endl;doCheck(str, recLen);} else {} }void SSerialPort::setSync(bool isSync) {if(isSync) {m_SerialPort.setOperateMode(itas109::SynchronousOperate);} else {m_SerialPort.setOperateMode(itas109::AsynchronousOperate);} }void SSerialPort::setDTR(bool isDTR) {m_SerialPort.setDtr(isDTR); }void SSerialPort::setRTS(bool isRTS) {m_SerialPort.setRts(isRTS); }void SSerialPort::initSerialPort() { #ifdef WIN32this-openSerialPort(COM3, 115200, itas109::ParityNone,itas109::DataBits8, itas109::StopOne); #elsethis-openSerialPort(/dev/ttyUSB0, 115200, itas109::ParityNone,itas109::DataBits8, itas109::StopOne); #endif }void SSerialPort::initSendMessage() {cout initSendMessage-----------------------------------start endl;m_packet_frame_count 1;m_terminal_to_firecontrol (struct TERMINAL_TO_FIRECONTROL*)malloc(sizeof(struct TERMINAL_TO_FIRECONTROL));m_firecontrol_to_terminal (struct FIRECONTROL_TO_TERMINAL*)malloc(sizeof(struct FIRECONTROL_TO_TERMINAL));m_terminal_to_firecontrol-send_address m_firstChar;m_terminal_to_firecontrol-receive_address m_secondChar;m_terminal_to_firecontrol-packet_length m_thirdChar;m_terminal_to_firecontrol-packet_frame_number_low 1;std::cout std::hex std::setw(2) std::setfill(0) static_castint(m_terminal_to_firecontrol-packet_frame_number_low)endl;m_terminal_to_firecontrol-packet_frame_number_high 0;m_terminal_to_firecontrol-light_aiming_control_word_1.all 0x01;m_terminal_to_firecontrol-light_aiming_control_word_2.all 0x00;m_terminal_to_firecontrol-light_aiming_control_word_3.all 0x00;m_terminal_to_firecontrol-servo_control_word_1.all 0x09;m_terminal_to_firecontrol-servo_control_word_2.all 0x02;m_terminal_to_firecontrol-chassis_control_word_1.all 0x00;m_terminal_to_firecontrol-relay_control_word.all 0x00;m_terminal_to_firecontrol-light_azimuth_rotation_speed_low 0x00;m_terminal_to_firecontrol-light_azimuth_rotation_speed_high 0X00;m_terminal_to_firecontrol-light_pitch_rotation_speed_low 0;m_terminal_to_firecontrol-light_pitch_rotation_speed_high 0;m_terminal_to_firecontrol-fan_sweep_azimuth_setting_Angle 0;m_terminal_to_firecontrol-fan_sweep_azimuth_fu_setting_Angle 0;m_terminal_to_firecontrol-fan_sweep_pitch_setting_Angle 0;m_terminal_to_firecontrol-fan_sweep_pitch_fu_setting_Angle 0;m_terminal_to_firecontrol-quick_boot_azimuth_coordinates_low 0;m_terminal_to_firecontrol-quick_boot_azimuth_coordinates_high 0;m_terminal_to_firecontrol-quick_boot_pitch_coordinates_low 0;m_terminal_to_firecontrol-quick_boot_pitch_coordinates_high 0;m_terminal_to_firecontrol-left_track_speed_low 0;m_terminal_to_firecontrol-left_track_speed_high 0;m_terminal_to_firecontrol-right_track_speed_low 0;m_terminal_to_firecontrol-right_track_speed_high 0;m_terminal_to_firecontrol-forward_arm_speed 0;m_terminal_to_firecontrol-back_arm_speed 0;m_terminal_to_firecontrol-residual_low 0;m_terminal_to_firecontrol-residual_high 0;m_terminal_to_firecontrol-azimuth_correction 0;m_terminal_to_firecontrol-pitch_correction 0;m_terminal_to_firecontrol-delay_correction 0;m_terminal_to_firecontrol-light_aiming_control_word_4.all 0;m_terminal_to_firecontrol-light_aiming_control_word_5.all 0;m_terminal_to_firecontrol-servo_azimuth_rotation_speed_low 0x00;m_terminal_to_firecontrol-servo_azimuth_rotation_speed_high 0x00;m_terminal_to_firecontrol-servo_pitch_rotation_speed_low 0;m_terminal_to_firecontrol-servo_pitch_rotation_speed_high 0;m_terminal_to_firecontrol-firing_servo_start_low 0;m_terminal_to_firecontrol-firing_servo_start_high 0;m_terminal_to_firecontrol-firing_servo_stop_low 0;m_terminal_to_firecontrol-firing_servo_stop_high 0;m_terminal_to_firecontrol-firing_insurance_close_low 0;m_terminal_to_firecontrol-firing_insurance_close_high 0;m_terminal_to_firecontrol-firing_insurance_open_low 0;m_terminal_to_firecontrol-firing_insurance_open_high 0;;m_terminal_to_firecontrol-check 0;cout initSendMessage-----------------------------------end endl; } 4.4、Linux下的CMakeLists.txt cmake_minimum_required(VERSION 3.0.2) project(electro_optical_system)## Compile as C11, supported in ROS Kinetic and newer add_compile_options(-stdc11)## Find catkin macros and libraries ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) ## is used, also find other catkin packages find_package(catkin REQUIRED COMPONENTSroscpprospystd_msgs )## System dependencies are found with CMakes conventions # find_package(Boost REQUIRED COMPONENTS system) find_package(OpenCV REQUIRED)## Uncomment this if the package has a setup.py. This macro ensures ## modules and global scripts declared therein get installed ## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html # catkin_python_setup()################################################ ## Declare ROS messages, services and actions ## ################################################## To declare and build messages, services or actions from within this ## package, follow these steps: ## * Let MSG_DEP_SET be the set of packages whose message types you use in ## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). ## * In the file package.xml: ## * add a build_depend tag for message_generation ## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET ## * If MSG_DEP_SET isnt empty the following dependency has been pulled in ## but can be declared for certainty nonetheless: ## * add a exec_depend tag for message_runtime ## * In this file (CMakeLists.txt): ## * add message_generation and every package in MSG_DEP_SET to ## find_package(catkin REQUIRED COMPONENTS ...) ## * add message_runtime and every package in MSG_DEP_SET to ## catkin_package(CATKIN_DEPENDS ...) ## * uncomment the add_*_files sections below as needed ## and list every .msg/.srv/.action file to be processed ## * uncomment the generate_messages entry below ## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)## Generate messages in the msg folder # add_message_files( # FILES # Message1.msg # Message2.msg # )## Generate services in the srv folder # add_service_files( # FILES # Service1.srv # Service2.srv # )## Generate actions in the action folder # add_action_files( # FILES # Action1.action # Action2.action # )## Generate added messages and services with any dependencies listed here # generate_messages( # DEPENDENCIES # std_msgs # )################################################ ## Declare ROS dynamic reconfigure parameters ## ################################################## To declare and build dynamic reconfigure parameters within this ## package, follow these steps: ## * In the file package.xml: ## * add a build_depend and a exec_depend tag for dynamic_reconfigure ## * In this file (CMakeLists.txt): ## * add dynamic_reconfigure to ## find_package(catkin REQUIRED COMPONENTS ...) ## * uncomment the generate_dynamic_reconfigure_options section below ## and list every .cfg file to be processed## Generate dynamic reconfigure parameters in the cfg folder # generate_dynamic_reconfigure_options( # cfg/DynReconf1.cfg # cfg/DynReconf2.cfg # )################################### ## catkin specific configuration ## ################################### ## The catkin_package macro generates cmake config files for your package ## Declare things to be passed to dependent projects ## INCLUDE_DIRS: uncomment this if your package contains header files ## LIBRARIES: libraries you create in this project that dependent projects also need ## CATKIN_DEPENDS: catkin_packages dependent projects also need ## DEPENDS: system dependencies of this project that dependent projects also need catkin_package( # INCLUDE_DIRS include # LIBRARIES electro_optical_system # CATKIN_DEPENDS roscpp rospy std_msgs # DEPENDS system_lib )########### ## Build ## ############# Specify additional locations of header files ## Your package locations should be listed before other locations include_directories( # include${catkin_INCLUDE_DIRS} )## Declare a C library # add_library(${PROJECT_NAME} # src/${PROJECT_NAME}/electro_optical_system.cpp # )## Add cmake target dependencies of the library ## as an example, code may need to be generated before libraries ## either from message generation or dynamic reconfigure # add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})## Declare a C executable ## With catkin_make all packages are built within a single CMake context ## The recommended prefix ensures that target names across packages dont collide # add_executable(${PROJECT_NAME}_node src/electro_optical_system_node.cpp)## Rename C executable without prefix ## The above recommended prefix causes long target names, the following renames the ## target back to the shorter version for ease of user use ## e.g. rosrun someones_pkg node instead of rosrun someones_pkg someones_pkg_node # set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX )## Add cmake target dependencies of the executable ## same as for the library above # add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})## Specify libraries to link a library or executable target against # target_link_libraries(${PROJECT_NAME}_node # ${catkin_LIBRARIES} # )############# ## Install ## ############## all install targets should use catkin DESTINATION variables # See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html## Mark executable scripts (Python etc.) for installation ## in contrast to setup.py, you can choose the destination # catkin_install_python(PROGRAMS # scripts/my_python_script # DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} # )## Mark executables for installation ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html # install(TARGETS ${PROJECT_NAME}_node # RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} # )## Mark libraries for installation ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html # install(TARGETS ${PROJECT_NAME} # ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} # LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} # RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} # )## Mark cpp header files for installation # install(DIRECTORY include/${PROJECT_NAME}/ # DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} # FILES_MATCHING PATTERN *.h # PATTERN .svn EXCLUDE # )## Mark other files for installation (e.g. launch and bag files, etc.) # install(FILES # # myfile1 # # myfile2 # DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} # )############# ## Testing ## ############### Add gtest based cpp test target and link libraries # catkin_add_gtest(${PROJECT_NAME}-test test/test_electro_optical_system.cpp) # if(TARGET ${PROJECT_NAME}-test) # target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) # endif()## Add folders to be run by python nosetests # catkin_add_nosetests(test) add_executable(EOS src/main.cpp src/jsserialport.cpp src/CSerialPort/SerialPort.cpp src/CSerialPort/SerialPortInfo.cpp src/CSerialPort/SerialPortUnixBase.cpp src/CSerialPort/SerialPortBase.cpp src/CSerialPort/SerialPortInfoUnixBase.cpp src/CSerialPort/SerialPortInfoBase.cpp) target_link_libraries(EOS ${catkin_LIBRARIES}${OpenCV_LIBS}) add_dependencies(EOS ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
http://www.zqtcl.cn/news/906170/

相关文章:

  • 移动端网站开发教程局网站建设工作征求意见
  • 浙江网站建设公司地址南京做电商网站的公司
  • 网上销售型的企业网站建行个人手机银行
  • 网站建设与规划方案书网站建设策划有哪些
  • 手机网站建设推广方案ppt模板单页企业官网模板
  • 荥阳网站建设多少钱长沙企业关键词优化哪家好
  • 网站购物流程模块怎么实现最新足球赛事
  • 网站建设后需要维护吗网站规划的案例
  • 北京造价员变更在哪个网站做免费域名申请入口
  • 百度免费收录提交入口seo wordpress theme
  • 公司付网站会员费科目怎么做wordpress 多站点 主题
  • 做深度的互联网站网站突然没收录了
  • 网站建设进度表下载周到的商城网站建设
  • 建设一个连接的网站服装企业网站源码
  • 什么网站源码做分类信息网站好域名备案企业网站内容
  • wordpress 文章显示数量淘宝seo优化怎么做
  • 响应式网站模块商务网站创建流程是什么
  • 关于服饰搭配做的比较好的网站网站后台管理默认密码
  • 用自己电脑配置服务器做网站响应式框架
  • 任经理++徐州网站建设湖南正规关键词优化
  • 哪些软件可以做网站设计农村网站建设茂名
  • 平顶山网站建设费用腾讯云轻量应用服务器
  • 外贸优秀网站廊坊seo建站
  • 站长工具seo综合查询5g网站建设整改落实情况
  • 网站建设方案 流程wordpress客户案例
  • 网站被收录的过程如何创造属于自己的软件
  • 做神马网站优化快速排国外乡村建设网站
  • 东莞网站优化服务公司天河做网站开发
  • ui在线设计网站滁州 来安县建设局网站
  • 做印尼购物网站如何发货wordpress怎么换中文