labview入门到出家10(进阶)——CAN通讯
讲完串口,这边再讲一个labveiw工控程序中比较常用的CAN通讯吧。很久没有写过CAN通讯的程序了,网上一搜就是什么现场总线,控制器局域网总线,然后一堆复杂的协议。在这里还是一样的,具体的底层协议不多说,大家自行百度哦(别问,问就是忘记了)。主要还是跟大家讲一下在labview应用端如何用代码实现通讯,一般是针对汽车产品,才会用到(做汽车仪表,音响导航类的公司就会经常用到)。大厂用的CAN盒,CAN卡大多是NI的,小小的一块东西就要几千上万,小公司一般是买国内的,比如周立功这些相对便宜的CAN工具,甚至有自己拿单片机开发CAN通讯工具的,这种稳定性可能不太好,会有丢包的现象,汽车产品如果用这些CAN工具做的测试,是很难让客户认可的,希望国产的CAN工具越做越好吧。下面搬一个高速CAN 500K的一个写入和读取的例程,然后再给个读写一体的范例吧。
1、写入例程
编辑
这里不具体描述上面的函数是怎么点开的,一般装了NI的CAN驱动包后,在函数 测量I/O那里会有CAN的Frame API函数接口,在上面看一下就可以了。先配置500K的波特率,选择CAN0打开,打开一般加个延时会稳定一些。写入的数据格式如图所示,Timestamp这个时间戳这里用不上,一般用的时候是读取数据,或者在编辑DBC文件(可以理解为一个包含了产品所有通讯指令的CAN数据库)的时候可能会用到。ArbitrationId是发送指令的地址,这个一般产品端会告诉你,往哪个地址发CAN数据。IsRemote没用过,有知道的可以跟我说一下,哈哈。DataLength数据长度,一般高速500K和低速125K的大多用8位长度数据,当然也有其他更多位的,看产品端的需求吧。最后那个Data就是数据了。
2、读取例程
编辑
大致跟写入相同,就是读取函数前面要加一个读取的设置,从之前使用的经验来看,加了read entries pending 的读取配置后,能有效避免因大量数据快速导入而引起的输出异常,数据慢或少的话看不出效果。
3,读写一体
编辑
从应用上来说,labview的操作还是特别简单的,至少比C#上写winform简单多了,不过从编程的角度上来看,labview会弱化编写文本代码的能力,所以适用对象我认为还是偏硬件的技术或测试人员,当然也包括单片机开发(带操作系统的同仁就不大需要labview了,可以往QT这些方向)。这里可以尝试使用之前讲的状态机来写,我直接用了多线程的方式了。在labview里面,拉几个while循环,就是多线程了。这个从写法上来说,跟其他语言的不太一样,labview很粗暴地直接拉while循环就可以实现多线程了(labview通过跑副本的方式,也可以实现多线程,这里不扩展)。传统的CAN最高是1M波特率,后面出了超过1M的FDCAN,还有单线通讯的LIN。可以说都是CAN的升级版了,最终的方向还是更快更简单(使用上的简单)。对某个部分有兴趣或有疑问的小伙伴,留言探讨哦!
原创不易,一键三连啦!
labview入门到出家10(进阶)——CAN通讯的更多相关文章
- labview从入门到出家6(进阶篇)--移位寄存器的使用
前面介绍了如何熟悉和使用Labview自带的库函数以及调试方式,大家后期基本可以凭借这两个方式从入门到出家了,哈哈,后面就靠各位同仁99%的努力了.这篇为啥要讲移位寄存器呢,主要是之前做的项目和经验告 ...
- labview从入门到出家5(进阶篇)--程序调试以及labview函数库的运用
跟了前面几章的操作流程,相信大家对labview有了一定的认识.其实只要了解了labview的编程思路,再熟悉地运用各个变量,函数以及属性,那么我们就可以打开labview的大门了.跟其他编程语言一样 ...
- labview从入门到出家9(进阶篇)--串口通讯
Labview在工控领域,如产线,实验室等环境用得较多,其中与仪器通讯控制的方式有串口(RS232,RS485,TTL),GPIB,网口,CAN等,其中串口在仪器还有单片机控制中用来调试居多.(很 ...
- labview从入门到出家8(进阶篇)--简单好用的状态机
labview的状态机类似于一个软件框架的基本单元,好的软件框架和软件思路采用一个好的状态机,就如虎添翼了.这章给大家讲一个本人常用的一个状态机,基本上以前的项目都是建立在这个状态机上完成的,当然网上 ...
- labview从入门到出家7(进阶篇)--队列的使用
本节简单讲解队列在Labview中的使用,队列你可以认为就是一组先进先出的数据列表,在Labview中常用来缓存和传递数据.用了这么久的队列,个人认为有个方便的地方在于数据传递的把控,不管是局部变量还 ...
- labview入门到出家11(补充)——基于单片机和labview开发的虚拟示波器
之前有小伙伴提到需要虚拟示波器的资料,有些库还有文件丢失了,直接给的工程跑不起来,这里我把关键的地方讲解一下,大家可以自行开发.其实开发不难,只是有些点会耗点时间.虚拟示波器,顾名思义就是非实物的 ...
- FFmpeg从入门到出家(HEVC在RTMP中的扩展)
由金山云视频云技术团队提供:FFmpeg从入门到出家第三季: 为推进HEVC视频编码格式在直播方案中的落地,经过CDN联盟讨论,并和主流云服务厂商达成一致,规范了HEVC在RTMP/FLV中的扩展,具 ...
- RabbitMQ 入门系列:10、扩展内容:延时队列:延时队列插件及其有限的适用场景(系列大结局)。
系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...
- emacs最简单入门,只要10分钟
macs最简单入门,只要10分钟 windwiny @2013 无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了. 这次硬着头皮,打开几篇文章都看完 ...
随机推荐
- 苹果手机Safri浏览器 js 解析问题
低系统版本的苹果手机的浏览器存在很多JS问题 一 date 问题 1.new Date() {至少10.3版本已下存在这个问题} 苹果手机只能识别 new Date('2017/04/12') 这 ...
- XCTF练习题---WEB---backup
XCTF练习题---WEB---backup flag:Cyberpeace{855A1C4B3401294CB6604CCC98BDE334} 解题步骤: 1.观察题目,打开场景 2.打开以后发现是 ...
- [洛谷] P2241 统计方形(数据加强版)
点击查看代码 #include<bits/stdc++.h> using namespace std; long long n, m, total, sum1, sum2; int mai ...
- create-react-app的TS支持以及css模块化
开始: 利用官方脚手架,搭建react工程.参考:https://react.docschina.org/docs/create-a-new-react-app.html. 过程: 1.暴露webpa ...
- 浏览器获取京东cookie
电脑浏览器打开京东网址 https://m.jd.com/ 按键盘F12键打开开发者工具,然后点下图中的图标 此时是未登录状态(使用手机短信验证码登录),如已登录请忽略此步骤 使用手机短信验证码登录( ...
- 五四青年节,今天要学习。汇总5道难度不高但可能遇到的JS手写编程题
壹 ❀ 引 时间一晃,今天已是五一假期最后一天了,没有出门,没有太多惊喜与意外.今天五四青年节,脑子里突然想起鲁迅先生以及悲欢并不相通的话,我的五一经历了什么呢,忍不住想说那大概是,父母教育孩子大声嚷 ...
- content应用
- vue - Vue路由(扩展)
忙里偷闲,还在学校,趁机把后面的路由多出来的知识点学完 十.缓存路由组件 让不展示的路由组件保持挂载,不被销毁 在我们的前面案例有一个问题,都知道vue的路由当我们切换一个路由后,另一个路由就会被销毁 ...
- 软件项目管理 ——1.2.PMBOK与软件项目管理知识体系
软件项目管理 --1.2.PMBOK与软件项目管理知识体系 归档于软件项目管理初级学习路线 第一章 软件项目管理基本概念 <初级学习路线合集 > @ 目录 软件项目管理 --1.2.PMB ...
- 04 Springboot 格式化LocalDateTime
Springboot 格式化LocalDateTime 我们知道在springboot中有默认的json解析器,Spring Boot 中默认使用的 Json 解析技术框架是 jackson.我们点开 ...