CAPL编程实现.Ini文件的读写操作
1、Ini文件添加
1)创建一个txt文件,修改后缀为.ini,添加要记录的内容,如下图:
注意:Ini文件中提前加入要读写的参数表示,并且用“=”号赋值,比如U2Voltage=12;
2)在CANoe工程中User Files中添加,如下图所示
只有添加了.Ini文件,在程序运行之后后,才可以进行Ini文件的读写操作。
2、Ini文件读写
定义一个系统变量,用于记录测试地点,string类型
定义一个系统变量,用于记录U2电压,double类型
定义一个系统变,用于记录门开关状态,int类型
CAPL编码,为了便于阅读,使用C#环境:
/*@!Encoding:936*/
includes
{
#include "Encoding.cin"
}
variables
{
double f64DefaultU2Voltage;
double f64ReturnU2Voltage;
int i16DefaultDoorOpenFlag;
int i16ReturnDoorOpenFlag;
char TestPlace[100];
}
on start
{
readFileIni();
}
on sysvar sysvar::Test::Panel::f64U2Voltage
{
writeProfileFloat("Parameter","U2Voltage", @this,"Test.Ini");
}
on sysvar sysvar::Test::Panel::i16DoorOpenFlag
{
writeProfileInt("Parameter","DoorOpenFLag", @this,"Test.Ini");
}
on sysvar sysvar::Test::Panel::szPlace
{
//string类型的系统变量,需要先使用sysGetVariableString函数,将string类型转成Charbuff,然后再使用writeProfileString将Charbuff写入到ini文件中
sysGetVariableString(sysvar::Test::Panel::szPlace,TestPlace,elCount(TestPlace));
/*
long getProfileString(char section[], char entry[], char def[], char buff[], long buffsize, char filename[]); // form 1
long getProfileString(char section[], char entry[], char def[], char buff[], long buffsize, char filename[], dword utf16); // form 2
1)需要输入中文时,使用form格式,并且要在include中添加引用:#include "Encoding.cin";
2)不需要输入中文时,使用form1格式string类型;
3)如果用from1格式输入中文,显示乱码,读取出来也是乱码;
*/
writeProfileString("Parameter","Place",TestPlace,"Test.Ini",CP_UTF8);//string类型有中文
// writeProfileString("Parameter","Place",TestPlace,"Test.Ini");//string类型无中文
}
//从ini文件读取参数,赋值给系统变量
void readFileIni(void)
{
f64ReturnU2Voltage = getProfileFloat("Parameter","U2Voltage",f64DefaultU2Voltage,"Config//Test.Ini");
@sysvar::Test::Panel::f64U2Voltage = f64ReturnU2Voltage;
i16ReturnDoorOpenFlag = getProfileInt("Parameter","DoorOpenFLag",i16DefaultDoorOpenFlag,"Config//Test.Ini");
@sysvar::Test::Panel::i16DoorOpenFlag = i16ReturnDoorOpenFlag;
sysGetVariableString(sysvar::Test::Panel::szPlace,TestPlace,elCount(TestPlace));
writeProfileString ("Parameter","Place",TestPlace,"Config//Test.Ini",CP_UTF8);
}
读写测试验证:
①启动CANoe软件,进行写入测试验证,查看配置文件是否写入;
②打开配置文件修改参数,启动CANoe软件,进行读取验证;
3、Encoding.cin
CAPL编码中,帮助文档中搜索Encoding.cin,查看CAPL字符串编码:
includes
{
#include "Encoding.cin"
}
...
{
int result;
char text[4] = "äöü";
byte stream[10];
long len;
result = EncodeString(stream, len, 10, text, CP_UTF8);
// on German Windows, len is now 7, stream is now {0xC3, 0xA4, 0xC3, 0xB6, 0xC3, 0xBC, 0};
if (result == 0) {...}
}