基于事件可以在MATLAB通信
这个示例向您展示如何配置可以通道和消息传递信息的活动。它使用MathWorks®虚拟通道连接在一个回路配置。
这个例子是基于发送和接收消息在一个虚拟的网络,可以运行浏览器结合可能会提供一个更完整的理解代码是做什么。运行浏览器,打开,它使用相同的接口配置为接收通道的例子。确保启动前探险家开始运行示例,以便发生时看到所有的消息。
这个例子描述了工作流网络可以,但这个概念也适用于一个可以FD网络。
创建可以通道
创建渠道消息传输和接收。
txCh = canChannel (“MathWorks”,“虚拟1”1);rxCh = canChannel (“MathWorks”,“虚拟1”2);
打开DBC-file包含消息和信号定义,并将它附加到可以两个渠道。
db = canDatabase (“CANDatabaseEvent.dbc”);txCh。数据base = db; rxCh.Database = db;
创建可以消息
创建可以消息EngineMsg
使用数据库的信息。
msgEngineMsg = canMessage (db,“EngineMsg”)
msgEngineMsg =消息与属性:信息识别ProtocolMode:“可以”ID: 100扩展:0的名字:“EngineMsg”数据细节时间戳:0数据:[0 0 0 0 0 0 0 0]的信号:[1×1 struct]长度:8协议标志错误:0远程:0其他信息数据库:[1×1。数据库用户数据:[]
基于事件的传输的配置信息
支持基于事件的消息传输,使用transmitEvent
命令指定传输通道,通道上的信息登记,一个状态值。
transmitEvent (txCh msgEngineMsg,“上”);
启动基于事件的传播
开始接收和传输通道。
开始(rxCh);开始(txCh);
写新值数据
房地产和直接VehicleSpeed
信号触发自动基于事件的消息在CAN总线上的传输。
msgEngineMsg。数据= [250 100 0 0 20 0 0 0]; pause(1); msgEngineMsg.Signals.VehicleSpeed = 60; pause(1);
停止传输和接收通道。
停止(txCh);停止(rxCh);
分析基于事件的传播的行为
现在接收通道有两个可用的信息,对应两个更新,导致两个传输。
rxCh.MessagesAvailable
ans = 2
接收可用的消息。检查消息和注意,每个数据值集之前数据
财产。
msgRx =接收(rxCh,正无穷,“OutputFormat”,“时间表”)
msgRx =2×8的时间表时间ID扩展名称数据长度误差信号远程_______ ___ ________ _________________ ________________________ ______ _______专攻0.045004秒100假{‘EngineMsg} {(250 100 0 0 0 0 0)} 8 {1×1 struct}假假1.0556秒100假{‘EngineMsg} {[250 100 0 0 60 0 0 0]} 8 {1×1 struct}假假
检查信号和注意的第二个实例VehicleSpeed
数据值集之前吗VehicleSpeed
信号。
信号= canSignalTimetable (msgRx)
信号=2×2的时间表0.045004秒时间VehicleSpeed EngineRPM _______ _______ ____ 20 2835 1.0556秒60 2835
消息视图配置为基于事件的传播
看到消息上配置自动变速器的传输通道,使用transmitConfiguration
命令。
transmitConfiguration (txCh)
周期性消息事件消息ID扩展名称没有数据- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 100假EngineMsg 250 100 0 0 60 0 0 0
关闭通道和DBC-File
关闭访问渠道和DBC-file清算他们的工作空间变量。
清晰的rxChtxCh清晰的db