CAPL(CAN Access Programming Language)是 Vector 工具链(如 CANoe、CANalyzer)中用于开发 CAN 总线仿真、测试和分析的脚本语言。CAPL 提供了丰富的内置函数,可以根据功能分为以下几类:
1. 数据库相关函数
用于加载、访问和操作 CAN 数据库(DBC 文件)中的消息、信号、环境变量等。
-
数据库加载与卸载:
dbLoadDatabase
dbUnloadDatabase
-
消息相关:
dbGetMessage
dbGetMessageName
dbGetMessageId
dbGetMessageLength
-
信号相关:
dbGetSignal
dbGetSignalRaw
dbSetSignal
dbSetSignalRaw
dbGetSignalName
dbGetSignalOffset
dbGetSignalFactor
dbGetSignalSize
-
环境变量相关:
dbGetEnvironmentVariable
dbSetEnvironmentVariable
-
节点相关:
dbGetNodeName
dbGetNodeByName
-
其他:
dbLookupMessage
dbLookupSignal
dbGetDatabaseName
2. 消息处理函数
用于发送和接收 CAN 消息,以及操作消息数据。
-
消息发送:
output
outputMessage
-
消息接收:
on message
事件this
关键字(指向当前接收的消息)
-
消息数据操作:
getByte
setByte
getWord
setWord
getDWord
setDWord
3. 定时器函数
用于创建和管理定时器,实现周期性或延迟操作。
-
定时器操作:
setTimer
cancelTimer
isTimerActive
-
定时器事件:
on timer
事件
4. 事件处理函数
用于响应特定事件(如消息接收、定时器触发、键盘输入等)。
- 事件类型:
on start
:脚本启动时触发。on preStart
:脚本启动前触发。on stop
:脚本停止时触发。on message
:接收到特定消息时触发。on timer
:定时器触发时触发。on key
:键盘按键触发。on envVar
:环境变量变化时触发。
5. 环境变量函数
用于访问和操作环境变量。
- 环境变量操作:
getEnvironmentVariable
setEnvironmentVariable
on envVar
事件
6. 数学与逻辑函数
用于数学计算、逻辑判断和数据转换。
-
数学函数:
abs
sqrt
sin
cos
tan
log
exp
-
逻辑函数:
if-else
switch-case
while
for
-
数据转换:
intToDouble
doubleToInt
hexToInt
intToHex
7. 文件操作函数
用于读写文件,记录日志或加载配置。
- 文件操作:
fileOpen
fileClose
fileWrite
fileRead
fileSeek
fileGetPos
8. 调试与输出函数
用于调试脚本和输出信息。
-
调试输出:
write
writeEx
writeLog
writeLogEx
-
调试控制:
setBreakpoint
clearBreakpoint
9. 系统与工具函数
用于访问系统信息或控制工具行为。
-
系统信息:
sysGetVariable
sysSetVariable
-
工具控制:
testWaitForTimeout
testStop
10. 网络与总线函数
用于操作 CAN 总线或其他网络。
-
总线操作:
canSetBaudrate
canSetBusOutputControl
canSetBusOff
-
网络管理:
nmGetState
nmSetState
11. 诊断函数
用于实现 UDS(Unified Diagnostic Services)诊断功能。
- 诊断操作:
diagSetParameter
diagGetParameter
diagSendRequest
diagGetResponse
12. 用户界面函数
用于与 CAPL 浏览器或面板进行交互。
- 界面操作:
setPanelValue
getPanelValue
on panel
事件
13. 多线程函数
用于创建和管理多线程任务。
- 线程操作:
createThread
terminateThread
suspendThread
resumeThread
14. 其他实用函数
-
字符串操作:
strlen
strcpy
strcmp
sprintf
-
随机数生成:
random
-
时间函数:
timeNow
timeToString
总结
CAPL 的函数库非常丰富,涵盖了从数据库操作、消息处理、定时器管理到文件操作、调试输出等多个方面。根据实际需求,可以灵活组合这些函数,实现复杂的仿真、测试和分析功能。以下是 CAPL 函数的主要分类:
- 数据库相关函数
- 消息处理函数
- 定时器函数
- 事件处理函数
- 环境变量函数
- 数学与逻辑函数
- 文件操作函数
- 调试与输出函数
- 系统与工具函数
- 网络与总线函数
- 诊断函数
- 用户界面函数
- 多线程函数
- 其他实用函数
掌握这些函数的使用方法,可以极大地提高 CAPL 脚本的开发效率和功能实现能力。