怎么添加新的CAN卡
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章主要介绍怎么添加新的CAN卡,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!简介控制器区域网络(CAN)是在许多微控制器和设备中密集使用的网络,用于在没有主计算机帮助的情
千家信息网最后更新 2025年02月04日怎么添加新的CAN卡
这篇文章主要介绍怎么添加新的CAN卡,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
简介
控制器区域网络(CAN)是在许多微控制器和设备中密集使用的网络,用于在没有主计算机帮助的情况下在设备之间传输数据。
Apollo中使用的默认CAN卡是 ESD CAN-PCIe卡。您可以使用以下步骤添加新的CAN卡:
添加新的CAN卡
添加新的CAN卡需要完成以下几个步骤:
实现新CAN卡的
CanClient
类。在
CanClientFactory
中注册新的CAN卡。更新配置文件。
以下步骤展示了如何添加新的CAN卡 - 示例添加CAN卡到您的工程。
步骤1
实现新CAN卡的CanClient类,下面的代码展示了如何实现 CANClient
类:
#include#include #include "hermes_can/include/bcan.h"#include "modules/canbus/can_client/can_client.h"#include "modules/canbus/common/canbus_consts.h"#include "modules/common/proto/error_code.pb.h"/** * @namespace apollo::canbus::can * @brief apollo::canbus::can */namespace apollo {namespace canbus {namespace can {/** * @class ExampleCanClient * @brief The class which defines a Example CAN client which inherits CanClient. */class ExampleCanClient : public CanClient { public: /** * @brief Initialize the Example CAN client by specified CAN card parameters. * @param parameter CAN card parameters to initialize the CAN client. * @return If the initialization is successful. */ bool Init(const CANCardParameter& parameter) override; /** * @brief Destructor */ virtual ~ExampleCanClient() = default; /** * @brief Start the Example CAN client. * @return The status of the start action which is defined by * apollo::common::ErrorCode. */ apollo::common::ErrorCode Start() override; /** * @brief Stop the Example CAN client. */ void Stop() override; /** * @brief Send messages * @param frames The messages to send. * @param frame_num The amount of messages to send. * @return The status of the sending action which is defined by * apollo::common::ErrorCode. */ apollo::common::ErrorCode Send(const std::vector & frames, int32_t* const frame_num) override; /** * @brief Receive messages * @param frames The messages to receive. * @param frame_num The amount of messages to receive. * @return The status of the receiving action which is defined by * apollo::common::ErrorCode. */ apollo::common::ErrorCode Receive(std::vector * const frames, int32_t* const frame_num) override; /** * @brief Get the error string. * @param status The status to get the error string. */ std::string GetErrorString(const int32_t status) override; private: ... ...};} // namespace can} // namespace canbus} // namespace apollo
步骤2
在CanClientFactory中注册新CAN卡, 在 CanClientFactory
中添加如下代码:
void CanClientFactory::RegisterCanClients() { Register(CANCardParameter::ESD_CAN, []() -> CanClient* { return new can::EsdCanClient(); }); // register the new CAN card here. Register(CANCardParameter::EXAMPLE_CAN, []() -> CanClient* { return new can::ExampleCanClient(); }); }
步骤3
接下来,需要更新配置文件 在/modules/canbus/proto/can_card_parameter.proto
添加 EXAMPLE_CAN;
message CANCardParameter { enum CANCardBrand { FAKE_CAN = 0; ESD_CAN = 1; EXAMPLE_CAN = 2; // add new CAN card here. } ... ... }
Update /modules/canbus/conf/canbus_conf.pb.txt
can_card_parameter { brand:EXAMPLE_CAN type: PCI_CARD // suppose the new can card is PCI_CARD channel_id: CHANNEL_ID_ZERO // suppose the new can card has CHANNEL_ID_ZERO}... ...
以上是"怎么添加新的CAN卡"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
步骤
代码
内容
文件
篇文章
网络
设备
帮助
更新
配置
接下来
之间
价值
兴趣
制器
区域
可以使
小伙
小伙伴
工程
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
朝阳区大型软件开发推荐
安卓软件开发需要root
联通服务器突然连不了
edg俱乐部网络安全师
江苏安来网络技术
网络技术部是什么
兼职网络安全工程师
网络安全案事件统计表
还原数据库错误怎么找回
传感器网络安全威胁分析
BT盒子怎么链接服务器
有住网络技术有限公司
远程桌面在哪里找服务器管理
网络安全考试及答案
邮件数据库空白空间
如何理解金融科技与互联网金融
hp服务器管理软件
现代信号处理技术网络安全
c 数据库系统开发案例
甘肃网络安全信息安全
畅销pos收银软件开发商
数据库被改为连接代码
数据库相关职业素养
2021国内网络安全厂商排名
兼职网络安全工程师
初中网络安全班会照片
umdb内存数据库
成都sql数据库恢复
服务器集群管理神器
计算机网络技术论文发表期刊