数据库访问
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字符
如果要访问信号的值,可以调用lookupServiceSignalNumber、lookupServiceSignalData、lookupServiceSignalString来访问不同类型的值
lookupSysvar
搜索系统变量,不管是自定义的,还是系统定义的
如果要访问系统变量的值,可以调用lookupSysvarData、lookupSysvarFloat、lookupSysvarFloatArray、lookupSysvarInt、lookupSysvarIntArray、lookupSysvarLongLong、lookupSysvarString来访问不同类型的值
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
如果想获取不同类型的变量的值,还可以调用getProfileFloat、getProfileInt、getProfileString
getUserFilePath
获取用户文件的绝对路径
我理解这里的文件应该是加载到CANoe工程里的文件,比如dll文件等
Open
一般不用这个函数打开文件,用的是下面的两个函数
openFileRead
打开文件以进行读访问
打开文件可以是bin文件或者txt文件,根据传入的mode值来决定
这里为什么没有ini文件呢
因为读写ini文件并不需要打开的操作,直接用函数getProfileArray传入文件名读写
openFileWrite
打开文件以进行写访问
文件内写入内容都是覆盖后重新写入,如果你想接着文件内容末尾写入,可以传入正确的mode值
RegisterUserFile
动态注册用户文件
也就是说可以在capl脚本中根据需要来注册文件
setFilePath
设置目录的读写路径
这个函数怎么用呢
可以先用这个函数把要操作的文件的目录设置为读写的路径,那么接下来再打开文件时就只需要传入文件名即可
也可以在读写ini配置文件前先用这个函数设置ini文件的目录为读写路径
setWritePath
设置函数openFileWrite的写路径
writeProfileFloat
打开ini文件并写入内容
如果想写入不同类型的数据,还可以调用writeProfileInt、writeProfileString
流量控制
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不同的是,注释字符(“//”)和时间戳都不会打印在行首