一、关于F1自带函数
1.CAN报文查询是不是DBC中的报文
on message *{
if(DBLookup(this))
{
// DBC中的报文
}
}
2.获取DBC的message的属性
message 0x0 triggerMessage={fdf=0,brs=0};
DBLookup(triggerMessage).GenMsgCycleTime;
DBLookup(triggerMessage).DLC;
DBC自定义属性,工程未添加DBC会报错(GenMsgCycleTime),使用以下方法获取
GetMessageAttrInt(triggerMessage,"GenMsgCycleTime");
3.获取signal的属性
DBLookup(lookupSignal(signalname)).bitstart;
获取信号值
getSignal(lookupSignal(signalname));
4.读文件OpenFileRead
file_handle = OpenFileRead(Filename, 0);
if(file_handle != 0)
{
while(fileGetStringSZ(RowData, elcount(RowData),file_handle) != 0) // Read all lines
{
testWaitForTimeout(10); //增加每行读取延时,避免负载过高读取数据丢失
}
}
5.仿真节点发报文 TestSetEcuOnline
需要工程添加好节点
TestSetEcuOnline(“ECU”); //启动模拟仿真节点
6.获取enum枚举的字符串名称
enum Func_Type {
NR = 0x01, //1
}
for(i=0;i<0xff;i++)
write("%s",((enum Func_Type)i).name());
二、其他
1.编写一个oython中split函数
/*********************************************************************************
*Function: parseString
*Description:根据分隔符号分割字符串
*Input: str:需要呗分割的字符串,sign:分隔符号,tokens返回二维数组(如python中split)
*Output: /
*Return: 分裂的字符串个数
**********************************************************************************/
int parseString(char str[],char sign,char tokens[][])
{
int i,j,k,l,tokenCount;
i = 0;
j = 0;
k = 0;
l = 0;
tokenCount = 0;
// 清空tokens
for (k = 0; k < elcount(tokens); k++)
{
for (l = 0; l < elcount(tokens[k]); l++)
{
tokens[k][l] = 0;
}
}
// 解析字符串
while (str[i] != 0)
{
// 如果遇到空格或字符串结束,开始解析下一个token
if (str[i] == sign|| str[i] == 0)
{
tokenCount++;
j = 0;
// 跳过空格
if (str[i] == sign)
{
i++;
}
}
else
{
tokens[tokenCount][j] = str[i];
i++;
j++;
}
}
return tokenCount + 1;
}