本文介绍如何移植Link SDK到Windows操作系统,在Windows下运行设备Demo程序连接到阿里云物联网平台。
本文的示例中将涉及以下功能点:
使用MQTT连接阿里云物联网平台,不使能TLS加密。
使用一机一密方式对设备进行认证。
属性上报、事件上报。
如何实现相关HAL。
本文基于Link SDK 3.0.1版本介绍设备接入。
开发环境描述
操作系统版本 | Win7 |
IDE | Eclipse IDE for C/C++ Developers,版本:2019-03 (4.11.0) |
包管理工具 | MSYS2 |
Toolchain | mingw-w64-x86_64-toolchain |
若用户未安装Eclipse开发环境,可参考Eclipse开发工具官网,了解如何安装Eclipse、MSYS2、MinGW来在Windows环境下编译C程序。
Example程序功能描述
示例程序(output\examples\linkkit_example_solo.c
)连接到阿里云物联网平台之后,将会每2秒钟上报一次设备的属性,每10次上报一次事件到物联网平台。
物联网平台云端操作
设备端开发过程
SDK获取
获取Link SDK3.0.1代码。
SDK配置
因为不同的SDK功能依赖的HAL不一样,为了减少设备开发时对接HAL的数量,开发者只需要选中需要支持的功能即可。
运行SDK根目录下的config.bat
,进行SDK功能配置:
请确保以下配置被选中:
PLATFORM_HAS_STDINT
PLATFORM_HAS_DYNMEM
PLATFORM_HAS_OS
FEATURE_MQTT_COMM_ENABLED
FEATURE_MQTT_DEFAULT_IMPL
FEATURE_MQTT_DIRECT
FEATURE_DEVICE_MODEL_ENABLED
功能配置之后,选择“Exit”,并进行配置保存。
SDK代码抽取
运行SDK根目录下的extract.bat
,将选中功能的代码抽取出来,如下图所示:
抽取出来的代码将放置在SDK的output
目录下。
Eclipse工程创建与配置
在Eclipse IDE中创建一个Eclipse C工程。
单击Next后,对工程进行命名,设置
Toolchains
,如下图所示:单击Finish,完成工程创建后,右键单击工程显示工程菜单。
单击Import后,弹出Import对话框。
在General中选择File System,然后单击Next。
单击上图中的Browse...,选择SDK抽取出来的
output
目录:将
output
目录下eng下的所有子目录均选中,如上图所示。output
目录下的examples
目录只选中linkkit_example_solo.c
,如上图右边的橙色框所示。
单击Finish后,Eclipse将把相关代码复制到Eclipse的工程下面,如下图所示:
在工程上右键单击显示菜单,并单击Properties。
单击Properties,将会显示如下图所示的窗口:
在窗口左边的树形菜单中选择
,在右边的Settings中设置编译时头文件查找目录,将output/eng
下的所有目录、output/eng
下面的sdk_include.h
加入,并单击窗口下方的Apply保存配置。继续单击Settings窗口中的Libraries菜单,把库wsock32加入,加入后的显示如下图所示:
单击窗口下方的Apply and Close完成配置。
HAL实现
wrapper.c
中包含SDK运行时需要目标平台进行支持的HAL函数,这些函数需要开发者自行实现。
本文提供了wrapper.c参考实现,需要注意的是开发者一定需要将下面的HAL进行修改来返回设备的身份信息:
HAL_GetProductKey()
HAL_GetProductSecret()
HAL_GetDeviceName()
HAL_GetDeviceSecret()
编译与调试
设备端
右键单击项目显示菜单,并单击其中的Build Project,如下图所示:
如果一切正常,编译完成之后在Eclipse的console中会显示:
然后在Eclipse之中将项目以Local C/C++ Application
运行,下面是正确运行时的console中的显示:
其中:mqtt Connect Success
表示MQTT连接云端成功,设备认证已通过。
物联网平台端
开发者也可以在物联网平台上查看设备的运行状态,如果设备已正常连接云端,那么云端显示如下图所示:
单击物模型数据,可以看见设备端上报属性的时间,以及当前counter的数值,如下图所示:
单击事件管理页签,可以看见设备上报事件的时间以及内容,如下图所示