需求说明:
CANoe诊断,报文存储于excel。直接选择/打开excel,从excel读取报文,send报文,再监测receive的报文,并将receive的报文写回excel中。
解析需求点:
使用CANoe诊断环境 选择并读写excel
解决策略/方法:
在CANoe使用.NET测试方法,解决如何选择并读写excel
操作说明:
1. 打开CANoe,new configuration,选择CAN_500kBaud_1ch.tcn 2. Configuration?Options…,弹出CANoe Options对话框:
? Programming?.NET Debugging, 设置.NET Debugger为Visual Studio 20xx(电脑已安装
版本)
? External Programs? Tools,设置.NET file editor为
‘Exec32\\Scripts\\Edit_NET_Source_with_VS_20xx.vbs’ 3. Insert .NET Test Module
4. 新建一个cs文件,右键.net test module ?configuration,点击file选择新建的cs文件。
5. 点击Edit,弹出VS操作cs文件,将下列一个发送消息的简单程序copy 到cs文件
(ID/DLC/Message信息自己定义)
using System; using Vector.Tools;
using Vector.CANoe.Runtime; using Vector.CANoe.Threading; using Vector.Diagnostics; using Vector.Scripting; using Vector.Scripting.UI; using Vector.CANoe.TFS;
publicclasstester : TestModule {
publicoverridevoid Main()
{ // test sequence definiton: SimpleTest(); }
// Test cases need to be marked with an attribute: [TestCase(\)] publicvoid SimpleTest() {
Report.TestStep(\);
byte[] data = newbyte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; CANFrame msg = new CANFrame(0x500, 4); // ID=0x500, DLC=4 msg.SetRawData(data); msg.Send();
Report.TestStepPass(\); } }
6. 在CANoe的.NET test module上compile,编译成功,运行将发送一条message
发送报文后,如何接收报文,CANoe都是以事件方式处理,定义一个报文事件类(继承
Vector.CANoe.Runtime.DynamicHandlers),在main函数中调用即可
任何报文触发:
[OnCANFrame]
public void onMessage(CANFrame frame) { … }
固定ID触发: [OnCANFrame(1, 500)]
public void Frame500Received(CANFrame frame) {…}
? 具体报文事件类代码:
public class MsgHandler : DynamicHandlers {
[OnCANFrame(1, 500)]
public void Frame500Received(CANFrame frame) {
Output.WriteLine(\接收报文事件触发:\string.Join(\,frame.Bytes)); } }
? 并在main函数中调用报文事件类即可,在main函数中第一行添加如下代码:
MsgHandler rec = new MsgHandler();
再次在CANoe编译执行,打开write窗口可以看到发送、接收的一些信息
7. 接收报文事件已经处理,但如何获取报文信息写入excel,这里使用一个CANoe环境变量来做中间桥
梁:
? CANoe菜单栏configuration?System Variable,添加namespace为test,name为temp,
data type为String
? 在Frame500Received函数最后一行添加代码:
test.temp.Value = string.Join(\,frame.Bytes); ? 在main函数最后一行添加代码:
Output.WriteLine(\接收报文:\ + test.temp.Value);
8. 接收报文已可传递,如何读写excel,.Net有很多方法,不赘述,写成一个classlibrary进行
调用。同时CANoe需要设置添加这个dll文件:右键testmodule的configuration,在Components添加dll文件即可。
CANoe还可以与CAPL互相调用,也可以调用sln,具体方法有待继续研究……
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库CANoe与NET结合在线全文阅读。
相关推荐: