如何使用Kvaser 虚拟通道,kvaser CANking怎么使用

今日头条

1097人已加入

描述

虚拟总线

每个虚拟设备的所有虚拟通道都被预设为连接到一个私用虚拟总线上 (通常为虚拟总线 #0)。当生成两个有 5 个通道的设备 , 每个设备的所有 5 个通道都被连接到虚拟总线 #0。然而,这两个虚拟设备之间没有连接,尽管它们被连接到同一个编号的虚拟总线上,虚拟通道只能和接在同一个虚拟设备上的其他通道联系。

注意:每个虚拟设备可以生成一套数量为 32 个的私用虚拟总线!

私用虚拟总线

CAN总线

如上图所示的错误,通道 2(Channel 2)不能和通道 5(channel 5)联系, 通道 3 不能和通道 4 联系, (通道 0 可以和通道 1 联系)。注意:虚拟适配器不能共享虚拟总线!用CANLib操作虚拟设备,可以在 CANLib 里打开虚拟通道, 同样使用你在操作物理 CAN 适配器时所用的命令,唯一不同之处是我们必须加一个旗标 FLAG。

CAN总线

在使用命令 canOpenChannel() 时,我们必须加旗标canOPEN_ACCEPT_VIRTUAL。你可以把旗标保留在软件里,它不妨碍你打开普通总线。每个虚拟设备有 32 个虚拟总线, 在同一个虚拟设备上,你可以将任何一个虚拟通道跟任何虚拟总线相联接。

将一个虚拟通道和一个虚拟总线断开

通过用命令 canIoCtl() 来断开一个通道的联接。

CAN总线

这里看上去不需要 BusOff() 和 BusOn(),但是如果在修改它们之前使用它们,会更好一些,尽管它们是虚拟的。另外,必须知道虚拟总线数量! 如果你忘记了总线数量,可以使用下面操作(断开所有连接):

CAN总线

现在可以确定虚拟通道已和虚拟总线断开了。将一个虚拟通道和一个虚拟总线联接起来,通过用命令 canIoCtl() 来联接一个通道 (总是要先断开通道, 有时可能会联接到多个总线),如图,联接到了虚拟总线 no 7。

CAN总线

注意:非常重要! 你必须断开一个通道!

当联接到一个 ‘新’ 虚拟总线时,通道并没有与 ‘旧’ 总线断开,所有联接和断开都是由你的软件发起控制。

示例:有五个虚拟通道的两个虚拟设备

CAN总线

建立各有五个通道的两个设备 (以下列出的编码不是完整版)。

CAN总线

虚拟设备 0。通道 CH0 和 通道 CH1 可以在 VB1 (虚拟总线 1 ) 上联系。通道 CH2, CH3 和 CH4 可以在 VB3 (虚拟总线3 ) 上联系。

虚拟设备1/b>。通道 CH5-Ch9 可以在虚拟总线 VB1 上联系。但是 CH0 和 CH1 不能和 CH5-CH9 联系, 尽管它们似乎在同一个总线上,因为它们在不同的虚拟设备上,每个虚拟设备生成一套私用虚拟总线。

问题:能用LINUX操作虚拟设备吗?是的, 在Linux里你要在源代码上做一个修改(virtualcan.h):

CAN总线

并且输入下面的命令打开该设备:/usr/sbin/virtualcan.sh start

fqj

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分