干货分享 | TSMaster几种过滤器的对比及使用

news2025/1/12 20:43:39

TSMaster的4种过滤器:

//硬件过滤器:可以在硬件端针对数据位进行筛选过滤,硬件过滤。在硬件端阻止接收一部分不需要的报文,留更多带宽对其他报文进行接收。

// 数据流过滤器:过滤总线数据流,软件过滤。操作高效便捷,需要对要过滤的内容比较明确。

// 窗口过滤器:对窗口设置过滤器,软件过滤。设置方便,作用范围仅限于窗口,过滤条件较为有限。

// 编程过滤器:可以通过脚本对窗口报文进行过滤,软件过滤。过滤条件比较灵活、丰富,需要一定的编程基础。


1. 硬件过滤器

关于下图的CAN过滤器设置可以对标准帧(11位)和扩展帧(29位)进行过滤,过滤的依据是ID段的数据位。每一位共有三种状态(0:阻止,1:通过,x:任意位),通过鼠标左键点击即可切换每一位状态,在设置好后,下方会实时显示可通过的标识符列表。在对话框最下方左下角可进入帮助的视频说明文档,中间可校验某个ID在当前筛选条件下是否可以通过,右下角有确定和取消过滤器设置。

例如,要设置0x100这个报文通过,其他标识符报文全部阻止,则可以按下图设置:

那么我们如果想禁止某一个ID的报文能在这里设置吗?答案是肯定的。但由于这个是在硬件端对数据位做过滤,所以我们在限制某一位不能通过时,必然也会带着一部分其他ID的报文被限制,这也是这种过滤器的局限性。

如下图设置0x100禁止通过时,会把数据位为09这位为1的所有报文ID都给限制了:

那么我们一共可以设置多少种过滤方式呢?如之前所述,我们每一位都有3个状态可以选择,标准帧的ID有11位,扩展帧的ID有29位,所以针对这两种报文帧就有如下几种过滤方式:

标准帧:过滤方式数量=311种

扩展帧:过滤方式数量=329种

2. 数据流过滤器

配置过程

数据流过滤器实际就是报文的流向,如从左边数据源(这里可以理解为这个工程对应的总线网络)流向了报文信息、总线记录等窗口的报文是经过了过滤器筛选后才流入到了这些模块,所以这些模块下收到的报文并不一定是总线上的全部报文。

模块颜色含义

另外这些模块的颜色都是不一样的,不同颜色有对应的含义:

✔ 白色窗体:允许所有数据通过

✔ 绿色窗体:满足条件的数据通过

✔ 红色窗体:禁止所有数据通过

例如下图,我们在通道1设置了0x100这条报文的通过型过滤器,并且对CAN/CAN FD报文信息窗口、总线记录模块、曲线窗口进行了过滤,所以在发送窗口发送的两条周期报文(0x100、0x101),在报文信息窗口中只能看到通道1下发出的0x100这条报文。

这种过滤器的优点是高效、直观、可重复性使用,但相较于简单的筛选观察来说配置流程会繁琐些(这种需求选用下一个窗口过滤器会更为方便),关于数据流过滤器这块内容也可以参考TSMaster软件帮助下的《TSMaster快速入门》手册。

3. 窗口过滤器

这种过滤器比较常见,配置也比较简单,在需要过滤的窗口中直接点击漏斗按钮即可配置。适用于我们在实时总线的部分报文或者回放情况下的部分报文的监测,配置简单、方便。但也正是它的便捷所致它功能有较大的局限性,如作用域仅限于单一窗口、过滤筛选条件较少,总线记录报文和过滤窗口报文一致性较差(这种建议用数据流过滤器)等,所以这个过滤器一般是用于简单观察或与其他过滤器组合使用。

4. 编程过滤器

配置过程

下图两张图即是编程过滤器设置的步骤,编程过滤器是TSMaster较新几个版本的功能,所以在使用前建议先在帮助下更新TSMaster至最新版。

优势

那么我们在什么情况下可能会使用到这个编程过滤器呢?首先我们需要了解这个编程过滤器相较于其他三个过滤器的区别在哪:

✔ 编程过滤器是在软件端实现的过滤,可以把筛选的条件更细化,甚至可以细化到某一个数据位的筛选

✔ 编程过滤器适用于一些不常见、较为特殊情况下的筛选

✔ 编程过滤器可配置内容更为灵活,完全可以根据自己的需求进行定制化配置,且可以复用

✔ 编程过滤器可以结合其他过滤器一起使用,适配度比较高

难点

编程过滤器实际可以粗暴的理解为自己写一个过滤器,所以需要对C脚本的语法及相关结构体有一定的熟悉程度,门槛相较于另外几种过滤器会高一些。但因为有示例的缘故,只要了解C脚本的基本语法,其实也可以成为我们在提升工作效率和关键问题解决中起到较大的作用。

示例演示

以下便设置一个编程过滤器为例来演示我们如何实现按自己的需求对窗口报文进行过滤:

以报文信息窗口过滤为例,首先进入分析下报文信息窗口的编程过滤器。

打开编程过滤器的脚本,编写过滤条件并编译。

启动工程接收报文进行观察,过滤器生效。

以上我们可以清晰的看到加了编程过滤器的筛选条件均已生效。示例中仅仅是对我们的报文结构体中的通道、ID及数据位进行了筛选,除此之外我们也可以对其他信息进行筛选,如报文帧类型、收发方向、字节长度(DLC),甚至可以筛选波特率是否是会变化的报文、信号值、报文周期(在一定容错范围内)等:

本文拓展及小结

图片

以上便是在TSMaster中4种不同类型的过滤器,这几种过滤器针对我们不同的应用场景有着不同的作用,我们应该根据自己的需求来选择其中一种或者几种过滤器进行组合使用,以此来提高我们的工作效率,以可重复性、便捷有效的原则来快速解决工作中遇到的部分难题。

(彩蛋:以上都是接收过滤器,那么如何来实现发送过滤呢?思路:利用C脚本的预发送事件把不要的报文发送到不存在的通道中,如上图中的通道2(CH3)其实并不存在)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1127856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

A股风格因子看板 (2023.10 第11期)

该因子看板跟踪A股风格因子,该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子,用以分析市场风格切换、组合风格暴露等。 今日为该因子跟踪第11期,指数组合数据截止日2023-09-30,要点如下 近1年A股风格因子检验统…

gin框架初识

先引入gin的包 终端执行 go get -u github.com/gin-gonic/gin 代码 package mainimport ("github.com/gin-gonic/gin""net/http" )func main() {r : gin.Default() //默认的路由引擎r.GET("/book", func(c *gin.Context) {c.JSON(http.Statu…

muduo源码学习base——Exception(带 stack trace 的异常基类)

Exception(带 stack trace 的异常基类) 前置ExceptionCurrentThread::stackTrace() 前置 ABI: Application Binary Interface,应用程序二进制接口,可以参考:细谈ABI RTTI type_info: RTTI:Run Time Type Identificatio…

js给一段话,遇到的第一个括号处加上换行符

list.forEach((item,index0)>{const productName item.name;const index productName.indexOf(();if (index -1) {return productName;}const before productName.slice(0, index);const after productName.slice(index);item.namebefore \n after;});

算法学习(七)判断一个二叉树是否为完全二叉树

描述 给定一个二叉树,确定他是否是一个完全二叉树。 完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。&a…

值改变事件(SMART PLC梯形图FC)

值改变事件在通信速度优化上的应用,请查看下面文章链接: C#winform事件驱动 值改变事件 PLC寄存器值改变_plc数据变化触发条件_RXXW_Dor的博客-CSDN博客Modbus通讯时,设置值发生改变时,我们希望启动一次请求帧,发送写数据帧,这个功能,在C#winform里很容易实现,因为有对…

“唯品会VIP商品搜索API:尊享购物体验,一键获取心仪商品!“

唯品会按关键字搜索VIP商品API是一项面向唯品会VIP用户的API服务,它主要用于在唯品会网站上根据用户指定的关键字快速搜索到VIP商品,并提供商品详情、价格、库存量、评价等信息。这个API的核心功能是为用户提供便捷且准确的搜索服务,让用户能…

探索二次开发途径

一、什么是二次开发? 软件二次开发,也被称为定制开发或应用开发,是指在已有的软件基础上,通过编写自定义代码或应用程序来满足特定需求,扩展现有软件的功能。这种方式可在满足定制需求的同时,减少了开发新…

【会议征稿通知】第二届语言与文化传播国际学术会议(ICLCC 2024)

第二届语言与文化传播国际学术会议(ICLCC 2024) The 2nd International Conference on Language and Cultural Communication 第二届语言与文化传播国际学术会议(ICLCC 2024)的目标是将语言与文化传播领域的创新学者和行业专家聚…

利用ChatGPT自动生成基于PO的数据驱动测试框架

简介 PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个 Page 类,并以页面为单位来写测试用例,实现页面对象和测试用例的分离。 数据驱动测试(DDT)是一种方法&#xff0c…

有奖招募——2023年度清华社“荐书官”活动今日开始了!

又到“1024程序员节”了,维护网络世界稳定和平的程序员大大们,辛苦了!生活难免有bug,来给彼此个hug~ 过完1024,这一年也快要结束了,岁末回顾又要提上日程。很多人都有整理年度书单的习惯,那么这…

服务器数据恢复-服务器系统损坏启动蓝屏的数据恢复案例

服务器故障&分析: 某公司一台华为机架式服务器,运行过程中突然蓝屏。管理员将服务器进行了重启,但是服务器操作系统仍然进入蓝屏状态。 导致服务器蓝屏的原因非常多,比较常见的有:显卡/内存/cpu或者其他板卡接触不…

基于SSM的流浪动物领养信息系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

lua-web-utils和proxy程序示例

以下是一个使用lua-web-utils和https://www.duoip.cn/get_proxy的爬虫程序示例。每行代码后面都给出了详细的中文解释。 -- 导入所需的库 local http require("http") local ltn12 require("ltn12") local json require("json") local web_u…

GitLab升级16.5.0后访问提示502

系统是兼容CentOS8的TencentOS3.1 GitLab原来的版本是16.4.1 使用yum升级时发现GitLab有新版本,决定升级。 升级过程无异常,出现升级成功的提示。 可是意外的时,访问站点时提示502. GitLab比较吃资源,启动的服务较多。之前也有等会就正常的情况。 这次没那么幸运,一…

python爬虫-某政府网站反爬小记——请求参数base64加密

注意!!!!某XX网站逆向实例仅作为学习案例,禁止其他个人以及团体做谋利用途!!! 第一步,正常分析页面,可以看到请求参数被加密了 第二步, 打断点查…

imu的静止零偏噪声标定与积分

示例使用的Imu为轮趣科技 n100 mini其中imu出来的数据的坐标系是基于ROS坐标系的 Eigen::Quaterniond q_ahrs(ahrs_frame_.frame.data.data_pack.Qw,ahrs_frame_.frame.data.data_pack.Qx,ahrs_frame_.frame.data.data_pack.Qy,ahrs_frame_.frame.data.data_pack.Qz);Eigen::…

Android Kotlin 协程初探 | 京东物流技术团队

1 它是什么(协程 和 Kotlin协程) 1.1 协程是什么 维基百科:协程,英文Coroutine [kəru’tin] (可入厅),是计算机程序的一类组件,推广了协作式多任务的子程序,允许执行被…

QSPI介绍

0 Preface/Foreword 1 QSPI介绍

数据结构与算法课后题-第七章(顺序查找和折半查找)

牛刀小试,做一下小题,检查一下自己的基础知识掌握的情况。 文章目录 牛刀小试1牛刀小试2牛刀小试3牛刀小试4牛刀小试5牛刀小试6牛刀小试7牛刀小试8牛刀小试9牛刀小试10牛刀小试11牛刀小试12牛刀小试13牛刀小试14牛刀小试15 牛刀小试1 牛刀小试2 错题分析…