CANOpen协议详解(一):CANfestival源码分析
CANFestival-3源码详解一:重要结构体
有几点需要说明:
1.使用的是官网下载的canfestival-3源代码,下载的压缩包文件名是:Mongo-canfestival-3-asc-1a25f5151a8d.zip,使用的是源码里面自带的对象字典编辑器来生成对象字典文件;
2.主要解析源码里面与DS 301协议有关的代码,DS 301协议参考文档为301_v04000201.pdf;
3.推荐一个文档叫《CANopen轻松入门》,介绍了CANopen的基础知识,广州致远电子出品,写的非常好。还推荐一个文档《CANopen high-level protocol for CAN-bus》。
4.本文默认读者对CANopen有所了解,不涉及CANopen的基础知识。
1.CANOpen node structure
canfestival里面最核心的一个结构体,就是这个节点数据结构体,这个结构体包含了一个CANOpen节点(node)需要用到的所有数据信息。这个结构体定义在data.h文件中,源码如下:
struct struct_CO_Data {/* Object dictionary */UNS8 *bDeviceNodeId;const indextable *objdict;s_PDO_status *PDO_status;TIMER_HANDLE *RxPDO_EventTimers;void (*RxPDO_EventTimers_Handler)(CO_Data*, UNS32);const quick_index *firstIndex;const quick_index *lastIndex;
CANOpen协议详解(一):CANfestival源码分析相关推荐
- FPGA学习之路—接口(3)—SPI详解及Verilog源码分析
FPGA学习之路--SPI详解及Verilog源码分析 概述 SPI = Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线. 优点 支持全 ...
- 【Swagger】配置信息详解(涉及源码分析)
先来说说 Swagger 有什么用,相较于使用 markdown 或者 word 写接口文档,Swagger 自动生成 API 文档,然后在 web 端暴露,并且 API 文档与 API 定义同步更新 ...
- 【Java 代码实例 14】BeanUtils用法详解,附源码分析
目录 一.org.apache.commons.beanutils.BeanUtils简介 二.使用的前置条件 三.添加pom 四.org.apache.commons.beanutils.BeanU ...
- @AliasFor注解详解(结合源码分析)
一. 概述 网上关于该注解的描述大都抄来抄去,没有涉及到最本质的源码问题, 下面是笔者结合注解源码, 以及其他常用的注解源码, 来分析@AliasFor注解的主要功能以及展示实际使用场景 描述:@Al ...
- 详解JSP——从源码分析
何为JSP Java Server Pages:java服务器端页面 和Servlet一样 用于动态web技术 特点: 跟在写HTML一样 区别: HTML只给用户提供静态的数据 JSP页面中可以嵌入 ...
- android WebView详解,常见漏洞详解和安全源码(下)
上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑. 上篇:android WebView详解,常见漏洞详解和安全源码(上) 转载请注明出处:http ...
- android WebView详解,常见漏洞详解和安全源码(上)
这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析. 由于博客内容长度,这次将分为上下两篇,上篇详解 WebView ...
- faster rcnn fpn_Faster-RCNN详解和torchvision源码解读(三):特征提取
我们使用ResNet-50-FPN提取特征 model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True) ...
- 【Python】基金/股票 最大回撤率计算与绘图详解(附源码和数据)
如果你想找的是求最大回撤的算法,请跳转:[Python] 使用动态规划求解最大回撤详解 [Python]基金/股票 最大回撤率计算与绘图详解(附源码和数据) 0. 起因 1. 大成沪深300指数A 5 ...
- 生成对抗网络入门详解及TensorFlow源码实现--深度学习笔记
生成对抗网络入门详解及TensorFlow源码实现–深度学习笔记 一.生成对抗网络(GANs) 生成对抗网络是一种生成模型(Generative Model),其背后最基本的思想就是从训练库里获取很多 ...
最新文章
- 干货 | MTCNN实时人脸检测网络详解与代码演示
- 小米 samba linux,不折腾会死:CentOS7访问小米路由(Samba服务)
- 修改oracle数据库默认时间格式
- HTML DOM - 修改 HTML 内容
- 基于Google测试框架实现自己的测试框架
- Lighttpd 的安装配置(web服务器软件)
- Ubuntu 禁用 触摸板
- CFile和CStdioFile的文件读写使用方法
- kafka 0.8.2版本配置选项翻译
- 几种java反编译软件的安装以及使用总结
- java.lang.reflect.Field常用方法
- 98% after emitting CopyPlugin vue启动停止的原因
- java 时间减法(结束时间-开始时间,时分秒)
- Kafka 消息中间件
- 物联网价值链中只有软件或者平台/服务才会赚大钱?
- android360浏览器卸载,三款主流安卓浏览器横评!删掉APP全靠它?
- 智能楼宇3D虚拟仿真实训平台
- python中幂运算_python里幂运算
- Python爬虫入门与进阶
- 用 vs 2017创建 windows 服务
热门文章
- 用摄像管替换电视机电路里的显现管的摄像机
- 用程序 揭秘 用手机号尾号暴露你年龄的 骗局
- 易企秀把作品转赠给别人,让别人可以编辑
- 统计知识基础(三)常用构造估计量的两种方法——矩估计、最大似然估计
- 性价比最高处理器和国产处理器I.MX6UL/A40I/T3对比
- dedecms织梦后台系统用户管理授权栏目BUG修正
- [CF850E]Random Elections
- error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was
- gnutls_handshake() failed: A TLS packet with unexpected length was received
- 【值得读】自动机器学习: 最新进展综述与开放挑战 | AutoML