主要内容

使用消息过滤器可以沟通

这个例子展示了如何使用消息过滤器只允许消息可以包含指定标识符通过一个通道。它使用MathWorks®虚拟通道连接在一个回路配置。这个例子描述了工作流网络可以,但这个概念也适用于一个可以FD网络。

创建发送和接收通道

创建一个通道发送消息和接收的另一个渠道。过滤器设置后在接收通道。

txCh = canChannel (“MathWorks”,“虚拟1”,1)
DeviceVendor txCh =通道属性:设备信息:“MathWorks”设备:“虚拟1”DeviceChannelIndex: 1 DeviceSerialNumber: 0 ProtocolMode:“可以运行的状态信息:0 MessagesAvailable: 0 MessagesReceived: 0 MessagesTransmitted: 0 InitializationAccess: 1 InitialTimestamp: [0×0 datetime] FilterHistory:“标准ID过滤器:允许所有|扩展ID过滤器:允许所有的频道信息BusStatus:“N / A”SilentMode: 0 TransceiverName:“N / A”TransceiverState:“N / A”ReceiveErrorCount: 0 TransmitErrorCount: 0 BusSpeed: 500000 SJW: [] TSEG1: [] TSEG2: [] NumOfSamples:[]其他信息数据库:[]用户数据:[]
rxCh = canChannel (“MathWorks”,“虚拟1”,2)
DeviceVendor rxCh =通道属性:设备信息:“MathWorks”设备:“虚拟1”DeviceChannelIndex: 2 DeviceSerialNumber: 0 ProtocolMode:“可以运行的状态信息:0 MessagesAvailable: 0 MessagesReceived: 0 MessagesTransmitted: 0 InitializationAccess: 1 InitialTimestamp: [0×0 datetime] FilterHistory:“标准ID过滤器:允许所有|扩展ID过滤器:允许所有的频道信息BusStatus:“N / A”SilentMode: 0 TransceiverName:“N / A”TransceiverState:“N / A”ReceiveErrorCount: 0 TransmitErrorCount: 0 BusSpeed: 500000 SJW: [] TSEG1: [] TSEG2: [] NumOfSamples:[]其他信息数据库:[]用户数据:[]

创建消息

创建一些消息被发送到接收通道在多次的例子。注意,一个消息有一个扩展标识符。

txMsgs (1) = canMessage(250年,假的,8);txMsgs (2) = canMessage(500年,假的,8);txMsgs (3) = canMessage(1000年,假的,8);txMsgs (4) = canMessage(1500年,真的,8);txMsgs (5) = canMessage(2000年,假的,8);

接收消息没有过滤

设置在线渠道,传播消息在一个频道,和接收。注意,所有发送的消息。默认情况下,新创建的配置通道没有过滤器接收所有标准和扩展标识符。

开始(rxCh);开始(txCh);传输(txCh txMsgs);暂停(0.5);rxMsgs1 =接收(rxCh,正无穷,“OutputFormat”,“时间表”)
rxMsgs1 =5×8的时间表时间ID扩展名称数据长度误差信号远程_______ ____ ________ __________ ___________________ ______ _______专攻0.038957秒250假{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假0.038959秒500假{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假0.038961秒1000假{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假0.038963秒1500真{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假0.038964秒2000假{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假

停止接收和传输通道。

停止(rxCh);停止(txCh);

情节接收的消息标识符,所有消息发送接收的频道。

阴谋(1 rxMsgs1.ID“x”甘氨胆酸)h_gca =;h_gca。XTick = 0:1:2;h_gca。XTickLabel = [”“,“传输1”,”“];轴([0 2 0 2047])包含(“信息传递”)ylabel (“标识符”)

接收消息的过滤器配置标识符

使用filterAllowOnly命令只允许指定的消息,可以标识和标识符类型。只接收通道配置为接收消息500年和2000年与标准标识符。

filterAllowOnly (rxCh (500 2000),“标准”);

显示FilterHistory渠道视图的属性的配置状态消息过滤器。

rxCh.FilterHistory
ans = '标准ID过滤器:只允许|扩展ID过滤器:允许所有的

传播的消息再次接收通道。请注意,这次少收到消息。

开始(rxCh);开始(txCh);传输(txCh txMsgs);暂停(0.5);rxMsgs2 =接收(rxCh,正无穷,“OutputFormat”,“时间表”)
rxMsgs2 =3×8的时间表时间ID扩展名称数据长度误差信号远程_______ ____ ________ __________ ___________________ ______ _______专攻0.037472秒500假{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假0.037473秒1500真{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假0.037474秒2000假{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假

停止接收和传输通道。

停止(rxCh);停止(txCh);

新收到的数据添加到情节看到哪些消息通过过滤器。1500年扩展标识符的消息是不被过滤,因为过滤器只是为标准配置标识符。

阴谋(1 rxMsgs1.ID“x”2 rxMsgs2.ID“x”);甘氨胆酸h_gca =;h_gca。XTick = 0:1:3;h_gca。XTickLabel = [”“,“传输1”,“传送2”,”“];轴([0 3 0 2047])包含(“信息传递”)ylabel (“标识符”)

重置信息过滤器

重置消息过滤器的默认状态filterAllowAll命令所有标准标识符是允许的。

filterAllowAll (rxCh“标准”);

显示FilterHistory渠道视图的属性的配置状态消息过滤器。

rxCh.FilterHistory
ans = '标准ID过滤器:允许所有|扩展ID过滤器:允许所有的

传输和接收第三次看到所有消息再次通过过滤器和接收的接收通道。

开始(rxCh);开始(txCh);传输(txCh txMsgs);暂停(0.5);rxMsgs3 =接收(rxCh,正无穷,“OutputFormat”,“时间表”)
rxMsgs3 =5×8的时间表时间ID扩展名称数据长度误差信号远程_______ ____ ________ __________ ___________________ ______ _______专攻0.037884秒250假{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假0.037885秒500假{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假0.037885秒1000假{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假0.037888秒1500真{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假0.037888秒2000假{0×0字符}{[0 0 0 0 0 0 0 0]}8 {0×0 struct}假假

停止接收和传输通道。

停止(rxCh);停止(txCh);

新数据添加到情节,观察到第一和第三传输相同的信息过滤器是完全开放在这两种情况下。

阴谋(1 rxMsgs1.ID“x”2 rxMsgs2.ID“x”3 rxMsgs3.ID“x”甘氨胆酸)h_gca =;h_gca。XTick = 0:1:4;h_gca。XTickLabel = [”“,“传输1”,“传送2”,“传送3”,”“];轴([0 4 0 2047])包含(“信息传递”)ylabel (“标识符”)

接收消息过滤器配置的名字

filterAllowOnly命令也可以使用DBC-file过滤消息的名字时。只允许消息的名字EngineMsg

db = canDatabase (“demoVNT_CANdbFiles.dbc”);rxCh。数据库=数据库;filterAllowOnly (rxCh“EngineMsg”);rxCh.FilterHistory
ans = '标准ID过滤器:只允许|扩展ID过滤器:允许所有的

阻止特定标识符类型的所有消息

filterBlockAll命令允许您轻松地设置过滤器来阻止标准或扩展标识符类型的所有消息。阻止所有消息和扩展标识符。

filterBlockAll (rxCh“扩展”);rxCh.FilterHistory
ans = '标准ID过滤器:只允许|扩展ID过滤器:屏蔽所有的

停止通道

阻止接收和传输通道和清理工作区。

停止(rxCh);停止(txCh);清晰的rxChtxCh

关闭DBC-File

关闭访问DBC-file通过清算其变量的工作区。

清晰的db