广告招募

当前位置:全球资源网 > 技术中心 > 所有分类

环境变量简介(1/3)

2025年11月12日 10:10:33      来源:广州智维电子科技有限公司 >> 进入该公司展台      阅读量:0

分享:

这是关于t程序环境变量3篇系列文章的篇

1. 环境变量简介

2. 从CANlib访问环境变量

3. KvaserTRX和环境变量

篇文章介绍环境变量,以及如何在t程序中应用环境变量。

环境变量用于在不同的t程序之间通信,或者使用CANlibPC通信。 图表1展示了Kvaser设备上正在运行的三个脚本。当脚本1设置一个环境变量,其它脚本或使用了CANlib的电脑也可以读取新数值。除此以外,脚本可以设定一个钩子(hook),达到特定环境变量值时触发。


图表1:有关环境变量值的信息如何分布的概述。

术语“envvar”通常用作较长环境变量的简写。有关完整的文档,请阅读Kvaser t编程语言文档 1

环境变量只能在t程序的envvar段中定义。就像在variables部分中定义的变量一样,环境变量在全局是可见的。这相当于在C程序中定义全局范围内的事项,即变量在声明和编译结束之间是可见的。

环境变量的类型可以是int,float或char数组。

envvar

{

char Message[128];int Severity;int HostIdRequest;

int HostIdConnected;

}


环境变量的大小限制于ENVVAR_MAX_SIZE(t编译程序3.2版本中为4096字节),你最多可以定义32个环境变量。

与普通变量不同,环境变量不能在t程序中初始化或直接访问。相反,它们是使用envvarSetValue() envvarGetValue()来访问的。

void setHostIdConnected (int value)

{

hostIdConnected = value;

envvarSetValue(HostIdConnected, value);

}

函数envvarSetValue()可以设置环境变量的值。实际的更新将需要排队,因此会被延迟,直到当前钩子的执行完成。环境变量已更新的通知随后将传播到已声明相同环境变量并具有相应的 on envvar钩子的所有程序。在此上下文中,更新包括与之前相同的值的设置。

由于环境变量的实际更新被延迟,因此可以在该延迟期间启动相同环境变量的新的更新。在这种情况下,较旧的值会丢失。所以每次你读取环境变量,你得到的都是它的值,如果你想确保能看到每次变化,你需要使用至少两个环境变量实施握手方案。

// Print incoming messages

on envvar Message {

char msg[128];

int severity;

envvarGetValue(Message, msg);

envvarGetValue(Severity, &severity);

printf("Severity: %d - %s", severity, msg);

}

函数envvarGetValue()检索环境变量的个已知值。如果环境变量未初始化,结果为未定义。完整的程序列表见http://github.com/Kvaser/developer-blog


版权与免责声明:
1.凡本网注明"来源:全球资源网"的所有作品,版权均属于全球资源网,转载请必须注明全球资源网。违反者本网将追究相关法律责任。
2.企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
3.本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。 4.如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系。