需要。物联网技术应用与维护主要是靠代码完成的,因此物联网技术应用与维护技能大赛需要写代码,代码(code)是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。
物模型是云平台为物联网产品定义的数据模型,用于描述产品的功能。将产品抽象成数据的集合,方便云端进行控制。
物模型从 属性 、 服务 和 事件 三个维度,分别描述了该实体是什么、能做什么、可以对外提供哪些信息。定义了物模型的这三个维度,即完成了产品功能的定义。
TSL 格式是一个 JSON 格式的文件,完整的 TSL 格式可以参考: 阿里云物模型 。
嵌入式端开发固件往往只需要关注少数几个参数,可以在产品的 功能定义 页面,单击 物模型TSL , 精简物模型 里面查看。
需要关注的有 "properties","events","services",在 JSON 格式里,这三者都是数组,分别存储了该物模型的数据,事件和服务,在 C-SDK 里也就分别是 IOT_Linkkit_Report() 上报属性, IOT_Linkkit_TriggerEvent() 触发事件和注册为 ITE_SERVICE_REQUEST 的回调函数。
在上报属性时,只需要关注 "identifier" 名称对应的值(字符串),此时表示该属性在产品下的唯一标识。例如一个精简物模型属性为:
则上报的数据只需要为 {"count":10} 即可,需满足 JSON 字符串的格式,字符串内有一个名称/值对,名称为 "count"(物模型里 "identifier" 的值),值对为 10(满足物模型里数据类型为 int 的要求)。
触发事件需要关注 "identifier" 名称对应的值(字符串),表示该事件在产品下的唯一标识;还需要关注 "outputData",表示上报事件的输出值。一个精简物模型例子如下:
"outputData" 数组的使用与属性上报一致,这里就不介绍了。
服务调用需要同时关注 "identifier","inputData" 和 "outputData" 这三个名称,分别表示该服务在产品下的唯一标识,服务的输入参数,服务的输出参数。与函数调用有输入值和输出值类似,服务调用也有这些特征。
物模型数据校验方式目前有两种, 弱校验 和 免校验 。
也就是说,弱校验针对产品设备的上报数据,只要 idetifier 是一致的,且 dataType 字段满足要求,就接收该数据,并且在其他云端产品流转。
为什么云端可以设置和获取接入设备的属性呢?为什么接入设备可以上报事件给云端呢?又为什么云端可以调用接入设备提供的服务呢?这就是这一小节解释的内容。
物模型基于 MQTT 协议,MQTT 协议的介绍不在此处展开。
云端定义了一系列的 Topic,在设备接入云端时,C-SDK 向 MQTT broker 订阅了一些的 Topic,而云端需要与设备交互时,就向 MQTT broker 发布相应的 Topic,这样就完成了交互过程。同理,云端也会订阅一些 Topic,设备可以向这些 Topic 发布消息。
接入设备端订阅发布的 Topic 列表如下:
其中 ${productKey} 会替换为实际的产品名,${deviceName} 会替换为实际的设备名,${tsleventidentifier} 是事件的标识符,${tslserviceidentifier} 是服务的标识符,最大限度地保证了 Topic 的唯一性。
这些 Topic 的作用在后面用时序来描述。
C语言中mm(STU a[], STU s)的意思是表示一个函数的首部。
STU可能是编程人员定义的一个结构体,举例如下:
struct
{
char name[20];
char no[5];
int age;
}STU; // STU就是一个结构体,包含以上三个成员
void mm(STU a[], STU s) // 数组a中每个元素都是STU类型,指针s指向的地址存放的就是STU类型的数据
{
// 对数组a中第一个STU类型的数据进行初始化操作
a[0]name = "ZhangLi";
a[0]no = "2015213";
a[0]age = 20;
// 对指针s指向的地址中的STU类型的数据进行初始化操作
s->name = "ZhaoSi";
s->no = "2015342";
s->age = 21;
}
mm是个函数,此函数接受2个参数,一个是数组变量一个是指针变量,类型方面,那要根据编程者把STV定义成什么类型了。
使用#define可以可以定义符号类型,例如#define int STV。这样,STV就是int类型。
另外,这里的 a[]和 s是形式参量,可以省略。
扩展资料:
stu在C语言中没有特定的含义,既不是关键字也不是库函数的函数名。可能是编程人员自定义的一个变量名或函数名等。
通常用来表示定义一个学生结构体类型,例如:
struct stu // 定义一个结构体类型,结构体名为stu
{
int no; // 学号
char name[10]; // 姓名
char sex; // 性别
};
以上就是关于物联网技术应用与维护技能大赛需要写代码吗全部的内容,包括:物联网技术应用与维护技能大赛需要写代码吗、阿里云物联网平台 - 物模型、C语言中mm(STU a[],STU *s)是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!