浏览代码

20190104,增加laser task模块
修改laser,用以支持任务单。
优化error

huli 5 年之前
父节点
当前提交
07851bb93c
共有 6 个文件被更改,包括 90 次插入42 次删除
  1. 32 10
      CMakeLists.txt
  2. 26 6
      error_code/error_code.cpp
  3. 18 9
      error_code/error_code.h
  4. 0 4
      laser/laser.h
  5. 3 3
      task/task_command_manager.cpp
  6. 11 10
      task/task_command_manager.h

+ 32 - 10
CMakeLists.txt

@@ -20,12 +20,15 @@ set(CMAKE_BUILD_TYPE "RELEASE")
 
 include_directories(
         laser
-        plc
+#        plc
         src
-        Locate
-        /usr/local/include/modbus
-  ${PCL_INCLUDE_DIRS}
-  ${OpenCV_INCLUDE_DIRS}
+#        Locate
+
+        error_code
+
+        #        /usr/local/include/modbus
+        ${PCL_INCLUDE_DIRS}
+        ${OpenCV_INCLUDE_DIRS}
 )
 link_directories("/usr/local/lib")
 
@@ -36,10 +39,29 @@ aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/terminor TERMINOR_SRC )
 aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/task TASK_MANAGER_SRC )
 
 
-add_executable(LidarMeasure ./main.cpp ${LASER_SRC} ${PLC_SRC} ${TERMINOR_SRC} ${LOCATE_SRC} ${TASK_MANAGER_SRC})
-target_link_libraries(LidarMeasure ${OpenCV_LIBS}
-        ${GLOG_LIBRARIES} ${PCL_LIBRARIES} ${PROTOBUF_LIBRARIES} ipopt libtensorflow_cc.so
-        tf_3dcnn_api.so pointSIFT_API.so dark.so /usr/local/lib/libglog.a /usr/local/lib/libmodbus.so
-        /usr/local/lib/libgflags.a /usr/local/lib/liblivox_sdk_static.a /usr/local/apr/lib/libapr-1.a nnxx nanomsg)
+add_executable(LidarMeasure ./main.cpp ./error_code/error_code.cpp ./src/StdCondition.cpp ./src/CalibParam.pb.cc
+        ./globalmsg.pb.cc ./MeasureTopicPublisher.cpp ./laser/laser_task_command
+        ${LASER_SRC} ${PLC_SRC} ${TERMINOR_SRC} ${LOCATE_SRC} ${TASK_MANAGER_SRC} )
+
+
+
+
+target_link_libraries(LidarMeasure
+        #${OpenCV_LIBS}
+        ${GLOG_LIBRARIES}
+        ${PCL_LIBRARIES}
+        ${PROTOBUF_LIBRARIES}
+        #ipopt libtensorflow_cc.so
+        #tf_3dcnn_api.so
+        #pointSIFT_API.so
+        #dark.so
+        /usr/local/lib/libglog.a
+        ##/usr/local/lib/libmodbus.so
+        /usr/local/lib/libgflags.a
+        /usr/local/lib/liblivox_sdk_static.a
+        /usr/local/apr/lib/libapr-1.a
+        nnxx
+        nanomsg
+        )
 
 

+ 26 - 6
error_code/error_code.cpp

@@ -1,6 +1,11 @@
-//
-// Created by zx on 2019/12/30.
-//
+
+//Error_code是错误码的底层通用模块,
+//功能:用作故障分析和处理。
+
+//用法:所有的功能接口函数return错误管理类,
+//然后上层判断分析错误码,并进行故障处理。
+
+
 
 #include "error_code.h"
 
@@ -51,7 +56,12 @@ Error_manager::~Error_manager()
     free_description();
 }
 
-
+//初始化
+void Error_manager::error_manager_init()
+{
+    error_manager_clear_all();
+    return;
+}
 //初始化
 void Error_manager::error_manager_init(Error_code error_code, Error_level error_level, char* p_error_description, int description_length)
 {
@@ -342,6 +352,9 @@ void Error_manager::compare_and_cover_error( Error_manager & error_manager)
     }
 }
 
+//将所有的错误信息,格式化为字符串,用作日志打印。
+//output:p_error_description     错误汇总的字符串指针,不可以为NULL,必须要有实际的内存
+//output:description_length      错误汇总的字符串长度,不可以为0,长度最好足够大,一般256即可。
 void Error_manager::translate_error_to_string(char* p_error_aggregate, int aggregate_length )
 {
     char t_string_array[ERROR_NAMAGER_TO_STRING_FRONT_LENGTH] = {0};
@@ -373,6 +386,7 @@ void Error_manager::translate_error_to_string(char* p_error_aggregate, int aggre
         }
     }
 }
+//output:error_description_string     错误汇总的string
 void Error_manager::translate_error_to_string(std::string & error_aggregate_string)
 {
     char t_string_array[ERROR_NAMAGER_TO_STRING_FRONT_LENGTH] = {0};
@@ -388,7 +402,8 @@ void Error_manager::translate_error_to_string(std::string & error_aggregate_stri
         //error_aggregate_string += "NULL";
     }
 }
-
+//错误码转字符串的简易版,可支持cout<<
+//return     错误汇总的string
 std::string Error_manager::to_string()
 {
     std::string t_string;
@@ -399,7 +414,7 @@ std::string Error_manager::to_string()
 
 
 
-
+//释放错误描述的内存,
 void Error_manager::free_description()
 {
     if(pm_error_description != NULL)
@@ -410,6 +425,9 @@ void Error_manager::free_description()
     m_description_length = 0;
 }
 
+//重新分配错误描述的内存,并从外部拷贝新的(深拷贝)
+//input:p_error_description     错误描述的字符串指针,可以为NULL,
+//input:description_length      错误描述的字符串长度,如果为0,则从p_error_description里面获取有效的长度
 void Error_manager::reallocate_memory_and_copy_string(char* p_error_description, int description_length)
 {
     free_description();
@@ -450,6 +468,8 @@ void Error_manager::reallocate_memory_and_copy_string(char* p_error_description,
 }
 
 
+//重新分配错误描述的内存,并从外部拷贝新的(深拷贝)
+//input:error_aggregate_string     错误描述的string
 void Error_manager::reallocate_memory_and_copy_string(std::string & error_aggregate_string)
 {
     free_description();

+ 18 - 9
error_code/error_code.h

@@ -1,7 +1,9 @@
-//
-// Created by zx on 2019/12/30.
-//
 
+//Error_code是错误码的底层通用模块,
+//功能:用作故障分析和处理。
+
+//用法:所有的功能接口函数return错误管理类,
+//然后上层判断分析错误码,并进行故障处理。
 
 
 
@@ -18,22 +20,22 @@
 //进程加锁的状态,
 enum Lock_status
 {
-    UNLOCK = 0,
-    LOCK = 1,
+    UNLOCK      = 0,
+    LOCK        = 1,
 };
 
 //设备使能状态,
 enum Able_status
 {
-    UNABLE = 0,
-    ENABLE = 1,
+    UNABLE      = 0,
+    ENABLE      = 1,
 };
 
 //数据是否为空
 enum Empty_status
 {
-    NON_EMPTY = 0,
-    EMPTY = 1,
+    NON_EMPTY   = 0,
+    EMPTY       = 1,
 };
 
 
@@ -70,6 +72,11 @@ enum Error_code
 //    laser模块
     LASER_ERROR_BASE                = 0x01000000,
 
+//    laser.cpp文件
+
+    LASER_TASK_PARAMETER_ERROR      = 0x01010001,   //雷达任务输入参数错误
+
+
 //    laser_livox.cpp的错误码
     LIVOX_ERROR_BASE                = 0x01020000,
     LIVOX_START_FAILE               = 0x01020101,
@@ -131,6 +138,8 @@ public://外部接口函数
     //析构函数
     ~Error_manager();
 
+    //初始化
+    void error_manager_init();
     //初始化
     void error_manager_init(Error_code error_code, Error_level error_level = NORMAL,
                             char* p_error_description = NULL, int description_length = 0);

+ 0 - 4
laser/laser.h

@@ -1,4 +0,0 @@
-#ifndef ___LASER__HH___
-#define ___LASER__HH___
-
-#endif

+ 3 - 3
task/task_command_manager.cpp

@@ -3,7 +3,7 @@
 //
 
 #include "task_command_manager.h"
-#include "../error.h"
+#include "../error_code/error_code.h"
 
 Task_Base::Task_Base()
 {
@@ -13,7 +13,7 @@ Task_Base::~Task_Base()
 
 }
 //初始化任务单,初始任务单类型为 UNKONW_TASK
-int Task_Base::init()
+Error_manager Task_Base::init()
 {
     m_task_type=UNKNOW_TASK;
     return SUCCESS;
@@ -21,7 +21,7 @@ int Task_Base::init()
 //更新任务单
 //task_statu: 任务状态
 //statu_information:状态说明
-int Task_Base::update_statu(Task_statu task_statu,std::string statu_information)
+Error_manager Task_Base::update_statu(Task_statu task_statu,std::string statu_information)
 {
     m_task_statu=task_statu;
     m_task_statu_information=statu_information;

+ 11 - 10
task/task_command_manager.h

@@ -5,22 +5,23 @@
 #ifndef TASK_COMAND_MANAGER_H
 #define TASK_COMAND_MANAGER_H
 #include <string>
+#include "../error_code/error_code.h"
 
 //任务类型
 enum Task_type
 {
-    LASER_TASK=0,           //雷达扫描任务
-    LOCATE_TASK,            //测量任务
-    PLC_TASK,                //上传PLC任务
-    UNKNOW_TASK             //未知任务单/初始化
+    LASER_TASK              =0,             //雷达扫描任务,
+    LOCATE_TASK             =1,             //测量任务
+    PLC_TASK                =2,             //上传PLC任务
+    UNKNOW_TASK             =3              //未知任务单/初始化,默认值4
 };
 //任务状态
 enum Task_statu
 {
-    TASK_CREATED=0,     //创建状态
-    TASK_SIGNED,        //已签收
-    TASK_WORKING,       //处理中
-    TASK_OVER           //已结束
+    TASK_CREATED            =0,             //创建状态,默认值0
+    TASK_SIGNED             =1,             //已签收
+    TASK_WORKING            =2,             //处理中
+    TASK_OVER               =3,             //已结束
 };
 
 //
@@ -30,11 +31,11 @@ public:
     Task_Base();
     ~Task_Base();
     //初始化任务单,初始任务单类型为 UNKONW_TASK
-    virtual int init();
+    virtual Error_manager init();
     //更新任务单
     //task_statu: 任务状态
     //statu_information:状态说明
-    int update_statu(Task_statu task_statu,std::string statu_information="");
+    Error_manager update_statu(Task_statu task_statu,std::string statu_information="");
     //获取任务类型
     Task_type   get_task_type();
     //获取任务单状态