![]() |
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 |