当前位置: 首页> 教育> 就业 > 山东平台网站建设找哪家_营销咨询顾问_免费二级域名建站_合肥seo推广公司哪家好

山东平台网站建设找哪家_营销咨询顾问_免费二级域名建站_合肥seo推广公司哪家好

时间:2025/7/9 2:08:31来源:https://blog.csdn.net/WE_BIG/article/details/146161110 浏览次数:1次
山东平台网站建设找哪家_营销咨询顾问_免费二级域名建站_合肥seo推广公司哪家好

1.1 创建系统变量最基本的函数

CAPL内部定义系统变量,需要通过调用CAPL封装好的函数,函数一共4个,其中2个函数比较重要,一个是用来创建namespace,一个是在已经定义的namespace中定义具体的系统变量

解析以下代码

void MainTest()

{

sysDefineNamespace("Testp");     //定义命名空间“Testp”

sysDefineVariableInt("Testp","test1",0);  //命名空间“Testp,创建int类型的系统变量

}

注意点1:sysDefineNamespace(),和sysDefineVariableInt(),顺序一定不能错

注意点2:sysDefineNamespace(),函数内的形参,可以是直接指定的常量,如代码中的"Testp"。

也可以是定义的char类型字符串。如 :

char NameSpace[]="Testp";

sysDefineNamespace(NameSpace);  //注意不要有"",也不要有NameSpace[]这种形参格式

注意点3: sysDefineVariableInt(),函数中存在3个形参变量,本例中调用时"Testp","test1",0

使用这3个实参对应,第个变量是namespace,第个变量是创建系统变量的名称,第个是初始值。

注意点4:sysDefineVariablefloat,sysDefineVariablelong,sysDefineVariablearray,等等,具体如下图:

1.2 修饰系统变量的函数

sysSetVariableDescriptionForValue("testp", "test1", 0, "off"); sysSetVariableDescriptionForValue("testp", "test1", 1, "on");

四个参数,相当于给已经创建好的函数赋ValueTable,前两个函数依次是namespace、变量名称。最后两个是指定数值,和数值对应的“解释”。

这两个函数并不是必要的函数,可以不调用,并不影响函数的调用。

1.3 代码运行后,系统变量被创建

完整代码如下

void MainTest()
{long result;// 定义命名空间result = sysDefineNamespace("Testp");if (result != 0){write("命名空间 Testp 定义失败,错误码: %d", result);return;}// 定义整数类型的变量result = sysDefineVariableInt("Testp", "test1", 0);if (result != 0){write("变量 test1 定义失败,错误码: %d", result);return;}// 为变量的取值设置描述信息result = sysSetVariableDescriptionForValue("Testp", "test1", 0, "off");if (result != 0){write("为变量 test1 的值 0 设置描述信息失败,错误码: %d", result);return;}result = sysSetVariableDescriptionForValue("Testp", "test1", 1, "on");if (result != 0){write("为变量 test1 的值 1 设置描述信息失败,错误码: %d", result);return;}
}

 目前所有的创建系统变量的函数,返回值=0代表函数调用失败。

运行comple之后,点击运行,等到运行结束,如下图观察

 

2、CAPL内部定义系统变量注意点

手动定义系统变量

和手动在CANoe的SystemVariable中定义系统变量不同,手动定义的系统变量有如下特点

(手动定义特点1):先定义后使用。

(手动定义特点2):定义后,在CAPL中任意地方都可以使用。

2.1  CAPL内部通过函数定义的系统变量的特别之处

(特别点1)、函数中必须,先创建后才能被使用

CAPL内部通过函数定义的系统变量,有一些特别点需要注意

(注意1:) 创建函数后,不能立即使用这个系统变量,如如下代码,

void MainTest()

{

sysDefineNamespace("Testp");    

sysDefineVariableInt("Testp","test1",0);  

write("打印test1的值=%d",@Testp::test1);   //该语句编译时直接会报错,报错原因是找不到这个系统变量,  或找不到这个namespace

}

也很好理解,因为只有前2条语句执行后,才能创建系统变量,而编译时,系统变量还没有被创建。

(特别点2)工程停止后,CAPL定义的系统变量依然存在,再次开启,系统变量失效

我们再home界面停止工程运行,

再查看系统变量,发现还存在 

停止工程后,系统变量存在

 

再起开启,系统变量丢失

3、CAPL脚本内,删除先前定义的系统变量和namespace

sysUndefineNamespace();

 sysUndefineVariable();

两个函数直接执行,注意这两个函数不仅仅可以删除CAPL定义的,还可以删除手动定义的系统变量。

关键字:山东平台网站建设找哪家_营销咨询顾问_免费二级域名建站_合肥seo推广公司哪家好

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: