首页 > 其他分享 >Kvaser Memorator Pro的T脚本使用

Kvaser Memorator Pro的T脚本使用

时间:2023-12-13 10:06:08浏览次数:32  
标签:脚本 MsgFd Kvaser Pro ch2 钩子 data Memorator

广州智维


Kvaser Memorator Pro的T脚本使用_工程文件


Kvaser Memorator Pro作为Kvaser CAN中的高端产品具备离线采集的记录功能,同时在其Pro专业版中更是支持通过T脚本进行事件控制。


T脚本编辑工具

Kvaser Memorator Pro的T脚本使用_工程文件_02


在官方CANLIB包下有个TRX工具,用于T脚本编译生成可下载进 Memorator Pro的可执行文件

Kvaser Memorator Pro的T脚本使用_工程文件_03


TRX工具导入原程序文件,start运行程序会自动生成工程文件和可执行文件,start需要通过usb连接Memorator Pro。若出现错误无法start情况可以重启TRX工具。

‘xxx.t’原程序文件,’xxx.tprj’工程文件,’xxx.txe’可执行文件。


T脚本代码案例

T脚本语法类似C语言,但其程序主要靠钩子以及预定的函数实现,其运行顺序与代码出现顺序无关,但同类型钩子的运行顺序与出现顺序有关。

运行顺序为程序启动==》初始化变量==》执行start钩子==》程序运行==》执行stop钩子。

通常当设备上电就执行初始化和start钩子,下电就执行stop钩子。

Kvaser Memorator Pro的T脚本使用_Kvaser_04


根据个人理解T脚本为事件触发型语言,也就是当某个定义好的事件发送后,执行对应钩子中的语句。
例子:语句中有

Kvaser Memorator Pro的T脚本使用_Kvaser_05


T脚本中预定了一些实时库类型和函数,通过这些类型和函数可以处理常用的事件。

Kvaser Memorator Pro的T脚本使用_Kvaser_06


下面demo实现CAN转CAN FD


// 函数声明

int canWrite(int ch2, const CanMessageFd msg);

// 变量初始化

variables {

const int ch1 = 0;

const int ch2 = 1;

}

on start {

// 确保通道处于Off状态,才能配置通道

canBusOff(ch1);

canBusOff(ch2);

// 通道0(CAN1)配置

canSetBitrate(ch1,canBITRATE_500K);

canSetBusOutputControl(ch1,canDRIVER_NORMAL);

canBusOn(ch1);

// 通道1(CAN2)配置

canSetBusParams(ch2, canFD_BITRATE_500K_80P, 0, 0, 0, 0);

canSetBusParamsFd(ch2, canFD_BITRATE_2M_80P, 0, 0, 0);

canSetCommunicationMode(ch2, canMODE_CAN_FD);

canSetBusOutputControl(ch2,canDRIVER_NORMAL);

canBusOn(ch2);

}

on stop {

canBusOff(ch1);

canBusOff(ch2);

}


// 当CAN1接收到ID=0x100时,将数据转为CANFD由CAN2发出ID=0x105

on CanMessage<ch1> 0x100

{

// 声明CANFD信息变量

CanMessageFd MsgFd;

MsgFd.id =0x105;

MsgFd.dlc = 8;

MsgFd.flags = canFDMSG_FDF;

MsgFd.data[0] = this.data[0];

MsgFd.data[1] = this.data[1];

MsgFd.data[2] = this.data[2];

MsgFd.data[3] = this.data[3];

MsgFd.data[4] = this.data[4];

MsgFd.data[5] = this.data[5];

MsgFd.data[6] = this.data[6];

MsgFd.data[7] = this.data[7];

// 调用发送函数

canWrite(ch2,MsgFd);

}


通过TRX生成可运行文件后,通过对应型号的Kvaser Memorator Pro tool将T脚本程序下载进设备中。
然后拔掉USB,给设备channel 1供电(离线记录模式),此时设备中的T脚本会自动运行。

Kvaser Memorator Pro的T脚本使用_离线_07


使用CANking来监控T脚本在设备中的实际效果。

Kvaser Memorator Pro的T脚本使用_可执行文件_08


Kvaser Memorator Pro的T脚本使用_Memorator Pro_09


了解更多信息,可以搜索广州智维电子科技联系;

标签:脚本,MsgFd,Kvaser,Pro,ch2,钩子,data,Memorator
From: https://blog.51cto.com/u_16421812/8798176

相关文章

  • Prometheus 快速入门
    Prometheus&Grafana快速入门一、prometheus简介prometheus是监控多个大数据组件的监控系统。Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是GoogleBorgMon监控系统的开源版本。2016年由Google发起Linux基金会旗下的原生云......
  • docker启动容器报错:Error response from daemon: driver failed programming external
    安装的docker启动报错如下:Errorresponsefromdaemon:driverfailedprogrammingexternalconnectivityonendpointnacos(2b0f4edff8f640559af9626936d1b38d965302ef525af483716e8e8c9121583e):(iptablesfailed:iptables--wait-tnat-ADOCKER-ptcp-d0/0--dp......
  • ProduceState的使用
    前言Google将自己开发的Gemini(声称可与ChatGPT4一较高下,看了下宣传视频,确实不耐)引入到了Bard,所以关于这个问题,首先问了下Bard:我:LaunchedEffect参数key的作用?它:回答怎么样?感觉很专业对不对,其实里面暗含错误。有一本正经的胡说八道之嫌。实际写过LaunchedEffect,并检验过入参key......
  • Docker部署Nginx Proxy Manager
    更新环境aptupdate-y&&aptinstall-ycurlsocatwgetsudoBBRPLUS四合一脚本wget-N--no-check-certificate"https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh"&&chmod+xtcp.sh&&./tcp.sh安装Dockerc......
  • [-007-]-Python3+Unittest+Selenium Web UI自动化测试之@property装饰器默认值设置
    看示例:#!/usr/bin/python3#coding:utf-8__author__='csjin'#定义@property装饰器classPPTListModels(object):def__init__(self):self._tab_name="PPT模板"@propertydefhandle(self):returnself.__handle......
  • [CF1603E] A Perfect Problem
    APerfectProblem题面翻译一个序列是好的当且仅当集合最大值乘上集合最小值大于等于集合元素的加和;一个序列是完美的,当且仅当这个序列的任何子序列都是好的(包括自己不包括空集);你要求的是:长度为\(n\)的并且每一个元素都大于等于\(1\)并且小于等于\(n+1\)的完美序列的......
  • 工业生产中Profibus主站转Profinet网关优势所在
    应用案例分享:某制造企业拥有一条生产线,生产线上的多个设备之间需要进行数据通讯和相互控制。这些设备原本使用Profibus-DP总线进行通讯,但企业希望将这些设备集成到Profinet网络中,以便能够更好地实现设备监控和管理。我们为此提供了一款Profibus-DP主站转Profinet网关,将多个Profibu......
  • 《Function Programming in C++》
    说明《FunctionalProgramminginC++》书中代码练习测试以及一些笔记,部分代码需要用到C++20可以使用在线编译器编译代码地址:https://coliru.stacked-crooked.com/或者自己编译gcc-11.2及以上版本安装1介绍1.1什么是函数式编程用常用的函数范式模板代替一些循环等,比如std......
  • abc.abstractmethod + property
    abc.abstractmethod+propertyhttps://stackoverflow.com/questions/14671095/abc-abstractmethod-property importabcclassFooBase(metaclass=abc.ABCMeta):@[email protected](self):"""mustbeimpl......
  • Scheduler pelt c program 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/scheduler/text_files.html/**Thefollowingprogramisusedtogeneratetheconstantsfor*computingschedaverages.**==============================================================* Cprogram(compilewith......