讲完串口,这边再讲一个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的升级版了,最终的方向还是更快更简单(使用上的简单)。对某个部分有兴趣或有疑问的小伙伴,留言探讨哦!

原创不易,一键三连啦!

最新文章

  1. volatile与synchronized的区别
  2. 远程连接服务器for Linux
  3. Java中的接口
  4. Java hashCode
  5. 【MySQL】索引长度的一些限制
  6. java 双重检查模式
  7. 集成对象和 JSON
  8. poj1363Rails(栈模拟)
  9. php MySQLi部分函数(面向对象和过程)
  10. 第三课3、ROS的launch文件
  11. DOM知识梳理
  12. Codeforces 438D The Child and Sequence
  13. sqlserver 按照特定值排序查询结果
  14. H5_0003:JS禁用调试,禁用右键,监听F12事件的方法
  15. Scheme来实现八皇后问题(1)
  16. 打造springboot高性能服务器(spring reactor的使用)
  17. hdu1875 畅通工程再续 并查集/最小生成树
  18. [Node.js]NET模块
  19. 转义字符 HTML 字符实体 < >: &等
  20. 2014年,daliu_it 年末文章汇总清单

热门文章

  1. 【大话云原生】煮饺子与docker、kubernetes之间的关系
  2. 记一次sql注入的解决方案
  3. come on! 基于LinkedHashMap实现LRU缓存
  4. 从 jQuery 到 Vue3 的快捷通道
  5. OAuth 2.1 框架
  6. Erdos-Renyi随机图的生成方式及其特性
  7. 23. Merge k Sorted Lists - LeetCode
  8. 139_Power BI之某制造企业HR相关数据年度复盘
  9. 对 Python 中 GIL 的一点理解
  10. Nastran的应变方向