Loading...
墨滴

jasonj333

2021/08/16  阅读:46  主题:红绯

capl-数据库访问、E2E保护、文件功能、流量控制、调试、Logging功能

数据库访问

lookupMessage

根据消息名(字符串)在数据库中搜索消息,返回消息的dbMsg类型,dbMsg也是数据库中所有消息的类型

如果在数据库中未找到对应的消息,或不是唯一的,就会在write窗口中报错,且返回的是无效的dbMsg

可以通过在excel之类的消息表中获取字符串来批量命名dbMsg类型的消息

lookupNode

在数据库中搜索节点,返回节点的dbNode类型,使用方法和lookupMessage相同

lookupSignal

在数据库中搜索信号,返回信号的signal类型,使用方法和lookupMessage相同

lookupServiceSignal

在数据库中搜索SOME/IP服务信号

如果是搜索多个信号,可以用char类型的二维数组

char serviceSignalNames[3][70] = 
"sif_2001::TrafficSignDetection::DetectedTrafficSign[0].DistanceToSign",
  "sif_2001::TrafficSignDetection::DetectedTrafficSign[0].Reliability",
  "sif_2001::TrafficSignDetection::DetectedTrafficSign[0].SignType" };   

表示有三个char类型的集合,每个char类型的集合最多有70个char字符
如果要访问信号的值,可以调用lookupServiceSignalNumberlookupServiceSignalDatalookupServiceSignalString来访问不同类型的值

lookupSysvar

搜索系统变量,不管是自定义的,还是系统定义的

如果要访问系统变量的值,可以调用lookupSysvarDatalookupSysvarFloatlookupSysvarFloatArraylookupSysvarIntlookupSysvarIntArraylookupSysvarLongLonglookupSysvarString来访问不同类型的值

E2E Protection

End to End,端对端,所以E2E Protection,指的是数据从一端到另一端的保护

有几种计算数据CRC的方式

  • Crc_CalculateCRC8
  • Crc_CalculateCRC8H2F
  • Crc_CalculateCRC16
  • Crc_CalculateCRC32
  • Crc_CalculateCRC32P4
  • Crc_CalculateCRC64

文件功能

fileClose

关闭指定文件,当文件被打开,读写完成后,必须关闭

这里需要注意的是,传入的是文件句柄,而不是文件的路径

fileGetBinaryBlock

以二进制格式从指定文件中读取内容

二进制格式就决定了读取的文件是bin文件,读取的内容是以byte数组的形式返回

fileGetString

从指定文件中读取字符串

读取的文件是txt文件,读取的内容是以char类型的集合返回,如果遇到行尾,则返回的字符串包含换行符

fileGetStringSZ

从指定的文件中读取字符串

这个函数和flieGetString的区别是,返回的字符串不包含换行符

filePutString

在指定文件中写入字符串

把字符串写入txt文件

fileRewind

将位置指针重置到文件开头

当你用fileGetString等函数读取文件内容时,位置指针也会相应地移到读取的末尾,下次读取时会从位置指针开始的地方接着读取,而如果你想从文件开头重新读取,就可以先把位置指针重置

fileWriteBinaryBlock

在指定文件中写入字节数

文件是bin文件,写入的内容是byte类型的数据

getOfflineFileName

返回当前使用的离线源文件的完整路径

getNumOfflineFiles

返回配置的离线源文件的数量

getAbsFilePath

获取CANoe工程文件路径下的文件的绝对路径

所以需要把文件先放入和CANoe工程文件同级的路径下,然后把文件名作为参数传入函数getAbsFilePath中,就可以得到这个文件的绝对路径

getProfileArray

从指定文件的指定部分读取给定变量的值

什么意思

其实就是读取ini配置文件的内容,指定文件指的是ini文件,指定部分指的是section,给定变量指的是key

如果想获取不同类型的变量的值,还可以调用getProfileFloatgetProfileIntgetProfileString

getUserFilePath

获取用户文件的绝对路径

我理解这里的文件应该是加载到CANoe工程里的文件,比如dll文件等

Open

一般不用这个函数打开文件,用的是下面的两个函数

openFileRead

打开文件以进行读访问

打开文件可以是bin文件或者txt文件,根据传入的mode值来决定

这里为什么没有ini文件呢

因为读写ini文件并不需要打开的操作,直接用函数getProfileArray传入文件名读写

openFileWrite

打开文件以进行写访问

文件内写入内容都是覆盖后重新写入,如果你想接着文件内容末尾写入,可以传入正确的mode值

RegisterUserFile

动态注册用户文件

也就是说可以在capl脚本中根据需要来注册文件

setFilePath

设置目录的读写路径

这个函数怎么用呢

可以先用这个函数把要操作的文件的目录设置为读写的路径,那么接下来再打开文件时就只需要传入文件名即可

也可以在读写ini配置文件前先用这个函数设置ini文件的目录为读写路径

setWritePath

设置函数openFileWrite的写路径

writeProfileFloat

打开ini文件并写入内容

如果想写入不同类型的数据,还可以调用writeProfileIntwriteProfileString

流量控制

canOffline

切断节点和总线之间的连接

可以调用这个函数在capl脚本运行时让capl所在的节点离线,这样此节点就无法发送消息和命令

canOnline

恢复节点到总线之间的连接

getStartdelay

获取节点的启动延迟值,单位为ms

isOfflineFileActive

判断离线源文件是否激活

isOfflineMode

判断CANoe或CANalyzer离线还是在线

isSimulated

判断CANoe是模拟状态还是实际状态

setStartdelay

设置此节点的启动延迟值

这个函数只能在on preStart事件中调用

stop

运行的工程停止运行

如果这个函数是在事件中调用,那么必须等该事件执行完毕才会停止工程运行

语言支持和调试

elCount

获取数组中元素的个数,也可以用elcount

fileName

在写入窗口中输出CAPL程序名称,有助于调试目的

halt

停止调试和仿真

runError

触发运行错误,把错误值打印到write窗口

这个函数是为了满足某些条件时在write窗口报错

setWriteDbgLevel

设置capl函数writeDbgLevel的优先级

writeDbgLevel

以指定的优先级将消息打印到write窗口

Logging功能

可以控制Logging模块来获取logging文件,包括trace文件

setLogFileName

设置trace文件名称

setPostTrigger

设置Logging的后触发,在工程停止后还会Logging

setPreTrigger

设置Logging的预触发

startLogging

开始Logging

stopLogging

停止Logging

trigger

开始或停止所有Logging模块

triggerEx

开始或停止指定的Logging模块

writeToLog

将字符串写入ASCII logging文件

writeToLogEx

将字符串写入ASCII logging文件

与writeToLog不同的是,注释字符(“//”)和时间戳都不会打印在行首


jasonj333

2021/08/16  阅读:46  主题:红绯

作者介绍

jasonj333