|
cyberdog_embed_protocol package from bridges repocyberdog_grpc cyberdog_embed_protocol params protocol |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 1.0.0 |
| License | Apache License, Version 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | "ros消息服务定义文件 与app端通讯程序 can数据收发封装库" |
| Checkout URI | https://github.com/miroboticslab/bridges.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2024-01-17 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | No category tags. |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- ZhengJunyuan
Authors
EMBED_PROTOCOL
embed_protocol是一个通用的外设抽象类,可动态灵活的配置基于某种通信协议外设的数据解析方式,且所有通信协议都被抽象为一种描述文件,该文件通过外部加载的形式载入,可在不重新编译软件源代码的情况下进行更改,为防止改动出现错误,每一个描述文件都在初始编译态预置在了程序内部,当外部文件缺失或出现错误的情况下可自动载入内部预置文件(TBD)
实例通过载入不同描述文件以兼容不同的通信传输协议以及格式,简化了使用外设设备的方法,现在只需要关心消息的使用与指令数据的下发,从复杂的消息编码、解码、发送和接收中解放了出来,不同的通信传输协议也有了统一的通用接口
1.结构简介
整个功能包使用命名空间embed_protocol
功能目录结构如下:
include
├── embed_protocol
│ ├── can_protocol.hpp
│ ├── embed_protocol.hpp
│ ├── common.hpp
│ └── protocol_base.hpp
└── embed_parser
└── can_parser.hpp
- embed_protocol : 通用设备,用于存放主体代码
- common.hpp : 通用及工具代码
- embed_protocol.hpp : 对外统一接口
- protocol_base.hpp : 不同协议的基类接口
- [实现] can_protocol.hpp : CAN协议传输的功能实现,从protocol_base派生
- embed_parser : 通用解析器,用于存放协议解析代码
- [实现] can_parser.hpp : CAN协议传输的解析实现
描述文件存放目录见 : cyberdog_bridges/README.md规定
Class Protocol
该类用于对外的主要接口:
#define XNAME(x) (#x)
#define LINK_VAR(var) LinkVar( \
XNAME(var), \
cyberdog::embed::ProtocolData(sizeof((var)), static_cast<void *>(&(var))))
namespace embed
{
template<typename TDataClass>
class Protocol
{
public:
explicit Protocol(const std::string & protocol_toml_path);
std::shared_ptr<TDataClass> GetData();
// please use "#define LINK_VAR(var)" instead
void LinkVar(const std::string origin_name, const ProtocolData & var);
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
bool SendSelfData();
void SetDataCallback(std::function<void(std::shared_ptr<TDataClass>)> callback);
StateCollector & GetErrorCollector();
}; // class Protocol
} // namespace embed
构造函数,通过外部描述文件创建实例对象
explicit Protocol(const std::string & protocol_toml_path, bool for_send = false);
protocol_toml_path: 描述文件地址for_send: 通过toml描述文件发送,或通过toml描述文件接收(默认为接收)
获取自定TDataClass类型数据 : 返回指向内部数据的shared_ptr
std::shared_ptr<TDataClass> GetData();Note : 一般用于
LINK_DATA和for_send设备的数据装填,接收请使用回调函数方式
链接TDataClass数据,以便通过各种传输协议解析出变量到TDataClass中
void LinkVar(const std::string origin_name, const ProtocolData & var);Note : 一般使用宏
LINK_VAR(var)代替,详细用法见下方example
设备操作函数,下发指令及数据 : 返回是否完整发送成功
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
CMD: 指令字符串(描述文件中规定)data: 指令所携带数据
将
GetData()修改的内部数据通过解析协议发送出去 : 返回是否完整发送成功bool SendSelfData();Note : 如设备不为发送模式(即
for_send=false),设备同样可以进行发送,但不建议在非测试时使用
设置接收回调函数
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| toml | |
| cyberdog_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cyberdog_embed_protocol at Robotics Stack Exchange
|
cyberdog_embed_protocol package from bridges repocyberdog_grpc cyberdog_embed_protocol params protocol |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 1.0.0 |
| License | Apache License, Version 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | "ros消息服务定义文件 与app端通讯程序 can数据收发封装库" |
| Checkout URI | https://github.com/miroboticslab/bridges.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2024-01-17 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | No category tags. |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- ZhengJunyuan
Authors
EMBED_PROTOCOL
embed_protocol是一个通用的外设抽象类,可动态灵活的配置基于某种通信协议外设的数据解析方式,且所有通信协议都被抽象为一种描述文件,该文件通过外部加载的形式载入,可在不重新编译软件源代码的情况下进行更改,为防止改动出现错误,每一个描述文件都在初始编译态预置在了程序内部,当外部文件缺失或出现错误的情况下可自动载入内部预置文件(TBD)
实例通过载入不同描述文件以兼容不同的通信传输协议以及格式,简化了使用外设设备的方法,现在只需要关心消息的使用与指令数据的下发,从复杂的消息编码、解码、发送和接收中解放了出来,不同的通信传输协议也有了统一的通用接口
1.结构简介
整个功能包使用命名空间embed_protocol
功能目录结构如下:
include
├── embed_protocol
│ ├── can_protocol.hpp
│ ├── embed_protocol.hpp
│ ├── common.hpp
│ └── protocol_base.hpp
└── embed_parser
└── can_parser.hpp
- embed_protocol : 通用设备,用于存放主体代码
- common.hpp : 通用及工具代码
- embed_protocol.hpp : 对外统一接口
- protocol_base.hpp : 不同协议的基类接口
- [实现] can_protocol.hpp : CAN协议传输的功能实现,从protocol_base派生
- embed_parser : 通用解析器,用于存放协议解析代码
- [实现] can_parser.hpp : CAN协议传输的解析实现
描述文件存放目录见 : cyberdog_bridges/README.md规定
Class Protocol
该类用于对外的主要接口:
#define XNAME(x) (#x)
#define LINK_VAR(var) LinkVar( \
XNAME(var), \
cyberdog::embed::ProtocolData(sizeof((var)), static_cast<void *>(&(var))))
namespace embed
{
template<typename TDataClass>
class Protocol
{
public:
explicit Protocol(const std::string & protocol_toml_path);
std::shared_ptr<TDataClass> GetData();
// please use "#define LINK_VAR(var)" instead
void LinkVar(const std::string origin_name, const ProtocolData & var);
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
bool SendSelfData();
void SetDataCallback(std::function<void(std::shared_ptr<TDataClass>)> callback);
StateCollector & GetErrorCollector();
}; // class Protocol
} // namespace embed
构造函数,通过外部描述文件创建实例对象
explicit Protocol(const std::string & protocol_toml_path, bool for_send = false);
protocol_toml_path: 描述文件地址for_send: 通过toml描述文件发送,或通过toml描述文件接收(默认为接收)
获取自定TDataClass类型数据 : 返回指向内部数据的shared_ptr
std::shared_ptr<TDataClass> GetData();Note : 一般用于
LINK_DATA和for_send设备的数据装填,接收请使用回调函数方式
链接TDataClass数据,以便通过各种传输协议解析出变量到TDataClass中
void LinkVar(const std::string origin_name, const ProtocolData & var);Note : 一般使用宏
LINK_VAR(var)代替,详细用法见下方example
设备操作函数,下发指令及数据 : 返回是否完整发送成功
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
CMD: 指令字符串(描述文件中规定)data: 指令所携带数据
将
GetData()修改的内部数据通过解析协议发送出去 : 返回是否完整发送成功bool SendSelfData();Note : 如设备不为发送模式(即
for_send=false),设备同样可以进行发送,但不建议在非测试时使用
设置接收回调函数
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| toml | |
| cyberdog_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cyberdog_embed_protocol at Robotics Stack Exchange
|
cyberdog_embed_protocol package from bridges repocyberdog_grpc cyberdog_embed_protocol params protocol |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 1.0.0 |
| License | Apache License, Version 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | "ros消息服务定义文件 与app端通讯程序 can数据收发封装库" |
| Checkout URI | https://github.com/miroboticslab/bridges.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2024-01-17 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | No category tags. |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- ZhengJunyuan
Authors
EMBED_PROTOCOL
embed_protocol是一个通用的外设抽象类,可动态灵活的配置基于某种通信协议外设的数据解析方式,且所有通信协议都被抽象为一种描述文件,该文件通过外部加载的形式载入,可在不重新编译软件源代码的情况下进行更改,为防止改动出现错误,每一个描述文件都在初始编译态预置在了程序内部,当外部文件缺失或出现错误的情况下可自动载入内部预置文件(TBD)
实例通过载入不同描述文件以兼容不同的通信传输协议以及格式,简化了使用外设设备的方法,现在只需要关心消息的使用与指令数据的下发,从复杂的消息编码、解码、发送和接收中解放了出来,不同的通信传输协议也有了统一的通用接口
1.结构简介
整个功能包使用命名空间embed_protocol
功能目录结构如下:
include
├── embed_protocol
│ ├── can_protocol.hpp
│ ├── embed_protocol.hpp
│ ├── common.hpp
│ └── protocol_base.hpp
└── embed_parser
└── can_parser.hpp
- embed_protocol : 通用设备,用于存放主体代码
- common.hpp : 通用及工具代码
- embed_protocol.hpp : 对外统一接口
- protocol_base.hpp : 不同协议的基类接口
- [实现] can_protocol.hpp : CAN协议传输的功能实现,从protocol_base派生
- embed_parser : 通用解析器,用于存放协议解析代码
- [实现] can_parser.hpp : CAN协议传输的解析实现
描述文件存放目录见 : cyberdog_bridges/README.md规定
Class Protocol
该类用于对外的主要接口:
#define XNAME(x) (#x)
#define LINK_VAR(var) LinkVar( \
XNAME(var), \
cyberdog::embed::ProtocolData(sizeof((var)), static_cast<void *>(&(var))))
namespace embed
{
template<typename TDataClass>
class Protocol
{
public:
explicit Protocol(const std::string & protocol_toml_path);
std::shared_ptr<TDataClass> GetData();
// please use "#define LINK_VAR(var)" instead
void LinkVar(const std::string origin_name, const ProtocolData & var);
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
bool SendSelfData();
void SetDataCallback(std::function<void(std::shared_ptr<TDataClass>)> callback);
StateCollector & GetErrorCollector();
}; // class Protocol
} // namespace embed
构造函数,通过外部描述文件创建实例对象
explicit Protocol(const std::string & protocol_toml_path, bool for_send = false);
protocol_toml_path: 描述文件地址for_send: 通过toml描述文件发送,或通过toml描述文件接收(默认为接收)
获取自定TDataClass类型数据 : 返回指向内部数据的shared_ptr
std::shared_ptr<TDataClass> GetData();Note : 一般用于
LINK_DATA和for_send设备的数据装填,接收请使用回调函数方式
链接TDataClass数据,以便通过各种传输协议解析出变量到TDataClass中
void LinkVar(const std::string origin_name, const ProtocolData & var);Note : 一般使用宏
LINK_VAR(var)代替,详细用法见下方example
设备操作函数,下发指令及数据 : 返回是否完整发送成功
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
CMD: 指令字符串(描述文件中规定)data: 指令所携带数据
将
GetData()修改的内部数据通过解析协议发送出去 : 返回是否完整发送成功bool SendSelfData();Note : 如设备不为发送模式(即
for_send=false),设备同样可以进行发送,但不建议在非测试时使用
设置接收回调函数
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| toml | |
| cyberdog_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cyberdog_embed_protocol at Robotics Stack Exchange
|
cyberdog_embed_protocol package from bridges repocyberdog_grpc cyberdog_embed_protocol params protocol |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 1.0.0 |
| License | Apache License, Version 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | "ros消息服务定义文件 与app端通讯程序 can数据收发封装库" |
| Checkout URI | https://github.com/miroboticslab/bridges.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2024-01-17 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | No category tags. |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- ZhengJunyuan
Authors
EMBED_PROTOCOL
embed_protocol是一个通用的外设抽象类,可动态灵活的配置基于某种通信协议外设的数据解析方式,且所有通信协议都被抽象为一种描述文件,该文件通过外部加载的形式载入,可在不重新编译软件源代码的情况下进行更改,为防止改动出现错误,每一个描述文件都在初始编译态预置在了程序内部,当外部文件缺失或出现错误的情况下可自动载入内部预置文件(TBD)
实例通过载入不同描述文件以兼容不同的通信传输协议以及格式,简化了使用外设设备的方法,现在只需要关心消息的使用与指令数据的下发,从复杂的消息编码、解码、发送和接收中解放了出来,不同的通信传输协议也有了统一的通用接口
1.结构简介
整个功能包使用命名空间embed_protocol
功能目录结构如下:
include
├── embed_protocol
│ ├── can_protocol.hpp
│ ├── embed_protocol.hpp
│ ├── common.hpp
│ └── protocol_base.hpp
└── embed_parser
└── can_parser.hpp
- embed_protocol : 通用设备,用于存放主体代码
- common.hpp : 通用及工具代码
- embed_protocol.hpp : 对外统一接口
- protocol_base.hpp : 不同协议的基类接口
- [实现] can_protocol.hpp : CAN协议传输的功能实现,从protocol_base派生
- embed_parser : 通用解析器,用于存放协议解析代码
- [实现] can_parser.hpp : CAN协议传输的解析实现
描述文件存放目录见 : cyberdog_bridges/README.md规定
Class Protocol
该类用于对外的主要接口:
#define XNAME(x) (#x)
#define LINK_VAR(var) LinkVar( \
XNAME(var), \
cyberdog::embed::ProtocolData(sizeof((var)), static_cast<void *>(&(var))))
namespace embed
{
template<typename TDataClass>
class Protocol
{
public:
explicit Protocol(const std::string & protocol_toml_path);
std::shared_ptr<TDataClass> GetData();
// please use "#define LINK_VAR(var)" instead
void LinkVar(const std::string origin_name, const ProtocolData & var);
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
bool SendSelfData();
void SetDataCallback(std::function<void(std::shared_ptr<TDataClass>)> callback);
StateCollector & GetErrorCollector();
}; // class Protocol
} // namespace embed
构造函数,通过外部描述文件创建实例对象
explicit Protocol(const std::string & protocol_toml_path, bool for_send = false);
protocol_toml_path: 描述文件地址for_send: 通过toml描述文件发送,或通过toml描述文件接收(默认为接收)
获取自定TDataClass类型数据 : 返回指向内部数据的shared_ptr
std::shared_ptr<TDataClass> GetData();Note : 一般用于
LINK_DATA和for_send设备的数据装填,接收请使用回调函数方式
链接TDataClass数据,以便通过各种传输协议解析出变量到TDataClass中
void LinkVar(const std::string origin_name, const ProtocolData & var);Note : 一般使用宏
LINK_VAR(var)代替,详细用法见下方example
设备操作函数,下发指令及数据 : 返回是否完整发送成功
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
CMD: 指令字符串(描述文件中规定)data: 指令所携带数据
将
GetData()修改的内部数据通过解析协议发送出去 : 返回是否完整发送成功bool SendSelfData();Note : 如设备不为发送模式(即
for_send=false),设备同样可以进行发送,但不建议在非测试时使用
设置接收回调函数
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| toml | |
| cyberdog_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cyberdog_embed_protocol at Robotics Stack Exchange
|
cyberdog_embed_protocol package from bridges repocyberdog_grpc cyberdog_embed_protocol params protocol |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 1.0.0 |
| License | Apache License, Version 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | "ros消息服务定义文件 与app端通讯程序 can数据收发封装库" |
| Checkout URI | https://github.com/miroboticslab/bridges.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2024-01-17 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | No category tags. |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- ZhengJunyuan
Authors
EMBED_PROTOCOL
embed_protocol是一个通用的外设抽象类,可动态灵活的配置基于某种通信协议外设的数据解析方式,且所有通信协议都被抽象为一种描述文件,该文件通过外部加载的形式载入,可在不重新编译软件源代码的情况下进行更改,为防止改动出现错误,每一个描述文件都在初始编译态预置在了程序内部,当外部文件缺失或出现错误的情况下可自动载入内部预置文件(TBD)
实例通过载入不同描述文件以兼容不同的通信传输协议以及格式,简化了使用外设设备的方法,现在只需要关心消息的使用与指令数据的下发,从复杂的消息编码、解码、发送和接收中解放了出来,不同的通信传输协议也有了统一的通用接口
1.结构简介
整个功能包使用命名空间embed_protocol
功能目录结构如下:
include
├── embed_protocol
│ ├── can_protocol.hpp
│ ├── embed_protocol.hpp
│ ├── common.hpp
│ └── protocol_base.hpp
└── embed_parser
└── can_parser.hpp
- embed_protocol : 通用设备,用于存放主体代码
- common.hpp : 通用及工具代码
- embed_protocol.hpp : 对外统一接口
- protocol_base.hpp : 不同协议的基类接口
- [实现] can_protocol.hpp : CAN协议传输的功能实现,从protocol_base派生
- embed_parser : 通用解析器,用于存放协议解析代码
- [实现] can_parser.hpp : CAN协议传输的解析实现
描述文件存放目录见 : cyberdog_bridges/README.md规定
Class Protocol
该类用于对外的主要接口:
#define XNAME(x) (#x)
#define LINK_VAR(var) LinkVar( \
XNAME(var), \
cyberdog::embed::ProtocolData(sizeof((var)), static_cast<void *>(&(var))))
namespace embed
{
template<typename TDataClass>
class Protocol
{
public:
explicit Protocol(const std::string & protocol_toml_path);
std::shared_ptr<TDataClass> GetData();
// please use "#define LINK_VAR(var)" instead
void LinkVar(const std::string origin_name, const ProtocolData & var);
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
bool SendSelfData();
void SetDataCallback(std::function<void(std::shared_ptr<TDataClass>)> callback);
StateCollector & GetErrorCollector();
}; // class Protocol
} // namespace embed
构造函数,通过外部描述文件创建实例对象
explicit Protocol(const std::string & protocol_toml_path, bool for_send = false);
protocol_toml_path: 描述文件地址for_send: 通过toml描述文件发送,或通过toml描述文件接收(默认为接收)
获取自定TDataClass类型数据 : 返回指向内部数据的shared_ptr
std::shared_ptr<TDataClass> GetData();Note : 一般用于
LINK_DATA和for_send设备的数据装填,接收请使用回调函数方式
链接TDataClass数据,以便通过各种传输协议解析出变量到TDataClass中
void LinkVar(const std::string origin_name, const ProtocolData & var);Note : 一般使用宏
LINK_VAR(var)代替,详细用法见下方example
设备操作函数,下发指令及数据 : 返回是否完整发送成功
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
CMD: 指令字符串(描述文件中规定)data: 指令所携带数据
将
GetData()修改的内部数据通过解析协议发送出去 : 返回是否完整发送成功bool SendSelfData();Note : 如设备不为发送模式(即
for_send=false),设备同样可以进行发送,但不建议在非测试时使用
设置接收回调函数
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| toml | |
| cyberdog_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cyberdog_embed_protocol at Robotics Stack Exchange
|
cyberdog_embed_protocol package from bridges repocyberdog_grpc cyberdog_embed_protocol params protocol |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 1.0.0 |
| License | Apache License, Version 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | "ros消息服务定义文件 与app端通讯程序 can数据收发封装库" |
| Checkout URI | https://github.com/miroboticslab/bridges.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2024-01-17 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | No category tags. |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- ZhengJunyuan
Authors
EMBED_PROTOCOL
embed_protocol是一个通用的外设抽象类,可动态灵活的配置基于某种通信协议外设的数据解析方式,且所有通信协议都被抽象为一种描述文件,该文件通过外部加载的形式载入,可在不重新编译软件源代码的情况下进行更改,为防止改动出现错误,每一个描述文件都在初始编译态预置在了程序内部,当外部文件缺失或出现错误的情况下可自动载入内部预置文件(TBD)
实例通过载入不同描述文件以兼容不同的通信传输协议以及格式,简化了使用外设设备的方法,现在只需要关心消息的使用与指令数据的下发,从复杂的消息编码、解码、发送和接收中解放了出来,不同的通信传输协议也有了统一的通用接口
1.结构简介
整个功能包使用命名空间embed_protocol
功能目录结构如下:
include
├── embed_protocol
│ ├── can_protocol.hpp
│ ├── embed_protocol.hpp
│ ├── common.hpp
│ └── protocol_base.hpp
└── embed_parser
└── can_parser.hpp
- embed_protocol : 通用设备,用于存放主体代码
- common.hpp : 通用及工具代码
- embed_protocol.hpp : 对外统一接口
- protocol_base.hpp : 不同协议的基类接口
- [实现] can_protocol.hpp : CAN协议传输的功能实现,从protocol_base派生
- embed_parser : 通用解析器,用于存放协议解析代码
- [实现] can_parser.hpp : CAN协议传输的解析实现
描述文件存放目录见 : cyberdog_bridges/README.md规定
Class Protocol
该类用于对外的主要接口:
#define XNAME(x) (#x)
#define LINK_VAR(var) LinkVar( \
XNAME(var), \
cyberdog::embed::ProtocolData(sizeof((var)), static_cast<void *>(&(var))))
namespace embed
{
template<typename TDataClass>
class Protocol
{
public:
explicit Protocol(const std::string & protocol_toml_path);
std::shared_ptr<TDataClass> GetData();
// please use "#define LINK_VAR(var)" instead
void LinkVar(const std::string origin_name, const ProtocolData & var);
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
bool SendSelfData();
void SetDataCallback(std::function<void(std::shared_ptr<TDataClass>)> callback);
StateCollector & GetErrorCollector();
}; // class Protocol
} // namespace embed
构造函数,通过外部描述文件创建实例对象
explicit Protocol(const std::string & protocol_toml_path, bool for_send = false);
protocol_toml_path: 描述文件地址for_send: 通过toml描述文件发送,或通过toml描述文件接收(默认为接收)
获取自定TDataClass类型数据 : 返回指向内部数据的shared_ptr
std::shared_ptr<TDataClass> GetData();Note : 一般用于
LINK_DATA和for_send设备的数据装填,接收请使用回调函数方式
链接TDataClass数据,以便通过各种传输协议解析出变量到TDataClass中
void LinkVar(const std::string origin_name, const ProtocolData & var);Note : 一般使用宏
LINK_VAR(var)代替,详细用法见下方example
设备操作函数,下发指令及数据 : 返回是否完整发送成功
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
CMD: 指令字符串(描述文件中规定)data: 指令所携带数据
将
GetData()修改的内部数据通过解析协议发送出去 : 返回是否完整发送成功bool SendSelfData();Note : 如设备不为发送模式(即
for_send=false),设备同样可以进行发送,但不建议在非测试时使用
设置接收回调函数
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| toml | |
| cyberdog_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cyberdog_embed_protocol at Robotics Stack Exchange
|
cyberdog_embed_protocol package from bridges repocyberdog_grpc cyberdog_embed_protocol params protocol |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 1.0.0 |
| License | Apache License, Version 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | "ros消息服务定义文件 与app端通讯程序 can数据收发封装库" |
| Checkout URI | https://github.com/miroboticslab/bridges.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2024-01-17 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | No category tags. |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- ZhengJunyuan
Authors
EMBED_PROTOCOL
embed_protocol是一个通用的外设抽象类,可动态灵活的配置基于某种通信协议外设的数据解析方式,且所有通信协议都被抽象为一种描述文件,该文件通过外部加载的形式载入,可在不重新编译软件源代码的情况下进行更改,为防止改动出现错误,每一个描述文件都在初始编译态预置在了程序内部,当外部文件缺失或出现错误的情况下可自动载入内部预置文件(TBD)
实例通过载入不同描述文件以兼容不同的通信传输协议以及格式,简化了使用外设设备的方法,现在只需要关心消息的使用与指令数据的下发,从复杂的消息编码、解码、发送和接收中解放了出来,不同的通信传输协议也有了统一的通用接口
1.结构简介
整个功能包使用命名空间embed_protocol
功能目录结构如下:
include
├── embed_protocol
│ ├── can_protocol.hpp
│ ├── embed_protocol.hpp
│ ├── common.hpp
│ └── protocol_base.hpp
└── embed_parser
└── can_parser.hpp
- embed_protocol : 通用设备,用于存放主体代码
- common.hpp : 通用及工具代码
- embed_protocol.hpp : 对外统一接口
- protocol_base.hpp : 不同协议的基类接口
- [实现] can_protocol.hpp : CAN协议传输的功能实现,从protocol_base派生
- embed_parser : 通用解析器,用于存放协议解析代码
- [实现] can_parser.hpp : CAN协议传输的解析实现
描述文件存放目录见 : cyberdog_bridges/README.md规定
Class Protocol
该类用于对外的主要接口:
#define XNAME(x) (#x)
#define LINK_VAR(var) LinkVar( \
XNAME(var), \
cyberdog::embed::ProtocolData(sizeof((var)), static_cast<void *>(&(var))))
namespace embed
{
template<typename TDataClass>
class Protocol
{
public:
explicit Protocol(const std::string & protocol_toml_path);
std::shared_ptr<TDataClass> GetData();
// please use "#define LINK_VAR(var)" instead
void LinkVar(const std::string origin_name, const ProtocolData & var);
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
bool SendSelfData();
void SetDataCallback(std::function<void(std::shared_ptr<TDataClass>)> callback);
StateCollector & GetErrorCollector();
}; // class Protocol
} // namespace embed
构造函数,通过外部描述文件创建实例对象
explicit Protocol(const std::string & protocol_toml_path, bool for_send = false);
protocol_toml_path: 描述文件地址for_send: 通过toml描述文件发送,或通过toml描述文件接收(默认为接收)
获取自定TDataClass类型数据 : 返回指向内部数据的shared_ptr
std::shared_ptr<TDataClass> GetData();Note : 一般用于
LINK_DATA和for_send设备的数据装填,接收请使用回调函数方式
链接TDataClass数据,以便通过各种传输协议解析出变量到TDataClass中
void LinkVar(const std::string origin_name, const ProtocolData & var);Note : 一般使用宏
LINK_VAR(var)代替,详细用法见下方example
设备操作函数,下发指令及数据 : 返回是否完整发送成功
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
CMD: 指令字符串(描述文件中规定)data: 指令所携带数据
将
GetData()修改的内部数据通过解析协议发送出去 : 返回是否完整发送成功bool SendSelfData();Note : 如设备不为发送模式(即
for_send=false),设备同样可以进行发送,但不建议在非测试时使用
设置接收回调函数
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| toml | |
| cyberdog_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cyberdog_embed_protocol at Robotics Stack Exchange
|
cyberdog_embed_protocol package from bridges repocyberdog_grpc cyberdog_embed_protocol params protocol |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 1.0.0 |
| License | Apache License, Version 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | "ros消息服务定义文件 与app端通讯程序 can数据收发封装库" |
| Checkout URI | https://github.com/miroboticslab/bridges.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2024-01-17 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | No category tags. |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- ZhengJunyuan
Authors
EMBED_PROTOCOL
embed_protocol是一个通用的外设抽象类,可动态灵活的配置基于某种通信协议外设的数据解析方式,且所有通信协议都被抽象为一种描述文件,该文件通过外部加载的形式载入,可在不重新编译软件源代码的情况下进行更改,为防止改动出现错误,每一个描述文件都在初始编译态预置在了程序内部,当外部文件缺失或出现错误的情况下可自动载入内部预置文件(TBD)
实例通过载入不同描述文件以兼容不同的通信传输协议以及格式,简化了使用外设设备的方法,现在只需要关心消息的使用与指令数据的下发,从复杂的消息编码、解码、发送和接收中解放了出来,不同的通信传输协议也有了统一的通用接口
1.结构简介
整个功能包使用命名空间embed_protocol
功能目录结构如下:
include
├── embed_protocol
│ ├── can_protocol.hpp
│ ├── embed_protocol.hpp
│ ├── common.hpp
│ └── protocol_base.hpp
└── embed_parser
└── can_parser.hpp
- embed_protocol : 通用设备,用于存放主体代码
- common.hpp : 通用及工具代码
- embed_protocol.hpp : 对外统一接口
- protocol_base.hpp : 不同协议的基类接口
- [实现] can_protocol.hpp : CAN协议传输的功能实现,从protocol_base派生
- embed_parser : 通用解析器,用于存放协议解析代码
- [实现] can_parser.hpp : CAN协议传输的解析实现
描述文件存放目录见 : cyberdog_bridges/README.md规定
Class Protocol
该类用于对外的主要接口:
#define XNAME(x) (#x)
#define LINK_VAR(var) LinkVar( \
XNAME(var), \
cyberdog::embed::ProtocolData(sizeof((var)), static_cast<void *>(&(var))))
namespace embed
{
template<typename TDataClass>
class Protocol
{
public:
explicit Protocol(const std::string & protocol_toml_path);
std::shared_ptr<TDataClass> GetData();
// please use "#define LINK_VAR(var)" instead
void LinkVar(const std::string origin_name, const ProtocolData & var);
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
bool SendSelfData();
void SetDataCallback(std::function<void(std::shared_ptr<TDataClass>)> callback);
StateCollector & GetErrorCollector();
}; // class Protocol
} // namespace embed
构造函数,通过外部描述文件创建实例对象
explicit Protocol(const std::string & protocol_toml_path, bool for_send = false);
protocol_toml_path: 描述文件地址for_send: 通过toml描述文件发送,或通过toml描述文件接收(默认为接收)
获取自定TDataClass类型数据 : 返回指向内部数据的shared_ptr
std::shared_ptr<TDataClass> GetData();Note : 一般用于
LINK_DATA和for_send设备的数据装填,接收请使用回调函数方式
链接TDataClass数据,以便通过各种传输协议解析出变量到TDataClass中
void LinkVar(const std::string origin_name, const ProtocolData & var);Note : 一般使用宏
LINK_VAR(var)代替,详细用法见下方example
设备操作函数,下发指令及数据 : 返回是否完整发送成功
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
CMD: 指令字符串(描述文件中规定)data: 指令所携带数据
将
GetData()修改的内部数据通过解析协议发送出去 : 返回是否完整发送成功bool SendSelfData();Note : 如设备不为发送模式(即
for_send=false),设备同样可以进行发送,但不建议在非测试时使用
设置接收回调函数
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| toml | |
| cyberdog_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cyberdog_embed_protocol at Robotics Stack Exchange
|
cyberdog_embed_protocol package from bridges repocyberdog_grpc cyberdog_embed_protocol params protocol |
ROS Distro
|
Package Summary
| Tags | No category tags. |
| Version | 1.0.0 |
| License | Apache License, Version 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | "ros消息服务定义文件 与app端通讯程序 can数据收发封装库" |
| Checkout URI | https://github.com/miroboticslab/bridges.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2024-01-17 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | No category tags. |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- ZhengJunyuan
Authors
EMBED_PROTOCOL
embed_protocol是一个通用的外设抽象类,可动态灵活的配置基于某种通信协议外设的数据解析方式,且所有通信协议都被抽象为一种描述文件,该文件通过外部加载的形式载入,可在不重新编译软件源代码的情况下进行更改,为防止改动出现错误,每一个描述文件都在初始编译态预置在了程序内部,当外部文件缺失或出现错误的情况下可自动载入内部预置文件(TBD)
实例通过载入不同描述文件以兼容不同的通信传输协议以及格式,简化了使用外设设备的方法,现在只需要关心消息的使用与指令数据的下发,从复杂的消息编码、解码、发送和接收中解放了出来,不同的通信传输协议也有了统一的通用接口
1.结构简介
整个功能包使用命名空间embed_protocol
功能目录结构如下:
include
├── embed_protocol
│ ├── can_protocol.hpp
│ ├── embed_protocol.hpp
│ ├── common.hpp
│ └── protocol_base.hpp
└── embed_parser
└── can_parser.hpp
- embed_protocol : 通用设备,用于存放主体代码
- common.hpp : 通用及工具代码
- embed_protocol.hpp : 对外统一接口
- protocol_base.hpp : 不同协议的基类接口
- [实现] can_protocol.hpp : CAN协议传输的功能实现,从protocol_base派生
- embed_parser : 通用解析器,用于存放协议解析代码
- [实现] can_parser.hpp : CAN协议传输的解析实现
描述文件存放目录见 : cyberdog_bridges/README.md规定
Class Protocol
该类用于对外的主要接口:
#define XNAME(x) (#x)
#define LINK_VAR(var) LinkVar( \
XNAME(var), \
cyberdog::embed::ProtocolData(sizeof((var)), static_cast<void *>(&(var))))
namespace embed
{
template<typename TDataClass>
class Protocol
{
public:
explicit Protocol(const std::string & protocol_toml_path);
std::shared_ptr<TDataClass> GetData();
// please use "#define LINK_VAR(var)" instead
void LinkVar(const std::string origin_name, const ProtocolData & var);
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
bool SendSelfData();
void SetDataCallback(std::function<void(std::shared_ptr<TDataClass>)> callback);
StateCollector & GetErrorCollector();
}; // class Protocol
} // namespace embed
构造函数,通过外部描述文件创建实例对象
explicit Protocol(const std::string & protocol_toml_path, bool for_send = false);
protocol_toml_path: 描述文件地址for_send: 通过toml描述文件发送,或通过toml描述文件接收(默认为接收)
获取自定TDataClass类型数据 : 返回指向内部数据的shared_ptr
std::shared_ptr<TDataClass> GetData();Note : 一般用于
LINK_DATA和for_send设备的数据装填,接收请使用回调函数方式
链接TDataClass数据,以便通过各种传输协议解析出变量到TDataClass中
void LinkVar(const std::string origin_name, const ProtocolData & var);Note : 一般使用宏
LINK_VAR(var)代替,详细用法见下方example
设备操作函数,下发指令及数据 : 返回是否完整发送成功
bool Operate(const std::string & CMD, const std::vector<uint8_t> & data = std::vector<uint8_t>());
CMD: 指令字符串(描述文件中规定)data: 指令所携带数据
将
GetData()修改的内部数据通过解析协议发送出去 : 返回是否完整发送成功bool SendSelfData();Note : 如设备不为发送模式(即
for_send=false),设备同样可以进行发送,但不建议在非测试时使用
设置接收回调函数
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| toml | |
| cyberdog_common |