使用消息接收回调函数可以沟通
这个例子向您展示了如何使用一个回调函数来处理消息收到一罐通道。它使用MathWorks®虚拟通道连接在一个回路配置。这个例子描述了工作流网络可以,但这个概念也适用于一个可以FD网络。
创建一个接收通道
创建一个可以通道使用canChannel
接收消息通过指定供应商名称、设备名称、设备频道索引。
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:[]其他信息数据库:[]用户数据:[]
配置回调函数
设置回调函数运行时所需的信息是可用的频道。
rxCh。MessageReceivedFcn = @receivingFcn;
配置消息收到
指定消息的数量需要在通道触发回调函数。
rxCh。MessageReceivedFcnCount = 30;
实现回调函数
回调函数的示例接收所有可用的信息渠道和情节可以标识符对每个执行的时间戳。
类型receivingFcn
函数receivingFcn (rxCh) % receivingFcn可以通道消息接收回调函数。% %,这是一个回调函数用于接收消息。%接收消息的通道RXCH和阴谋的结果。% % 2009 - 2016版权MathWorks, Inc . %接收所有可用的信息。rxMsg =接收(rxCh,正无穷,OutputFormat,“时间表”);%的阴谋反对他们的消息的时间戳的信号值。情节(rxMsg。时间,rxMsg。ID、“x”);ylim(2047[0])包含(“时间戳”);ylabel(“可以标识符”); hold all; end
启动通道
使用开始
命令设置通道网络。
开始(rxCh);
执行回调函数
这个函数generateMsgs
创建可以在各种消息和传输它们定期利率在CAN总线上创建交通。消息传播,每次回调函数执行指定的阈值属性MessageReceivedFcnCount
是满足。
generateMsgs ();
检查剩余的信息
显示MessagesAvailable
房产频道看到剩余的消息的数量。由于可用的消息数低于指定的阈值,需要更多的消息触发回调另一个时间。
rxCh.MessagesAvailable
ans = 11
停止通道
使用停止
命令设置通道离线。
停止(rxCh);