页面树结构
转至元数据结尾
转至元数据起始

在此部分主要是介绍如何最快速使用XLinkSDK,包括了以下几部分内容

  • SDK的导入与配置
  • SDK的简单初始化
  • 基本流程任务的使用

通过以下的几个简单的步骤,就可以完成基础的设备连接并控制操作,然后就可以开始体验智能互联的力量了!

更多详细信息和使用请参考进阶篇,相关API使用请参考API,常见的问题解答请参考FAQ。

SDK的导入与配置

请参考SDK集成指引

SDK简单初始化

SDK初始化的参数有相对较多的可选参数,可以根据需要设置使用。这里介绍最简单的初始化过程(使用默认参数初始化使用)。

//使用默认参数启动并运行SDK
[[XLinkSDK share] start];

SDK启动后即可进行相关功能使用。

基本流程任务使用

SDK中提供了多个模块与功能,以下仅从最常见的使用流程进行基本介绍。最常见的使用流程为:

用户授权->扫描设备->添加订阅设备->设备控制->移除设备(->同步设备列表)

用户授权

用户授权即用户的登录操作,登陆成功之后SDK会维护和云端的连接,并且维护Access-Token的有效性,该操作需要使用XLinkUserAuthorizeTask

XLinkUserAuthorizeTask *userAuthTask = [XLinkUserAuthorizeTask userAuthorizeTaskWithAccount:account
                                                                           password:password
                                                                             cropId:cropID
                                                                            timeout:20
                                                                  completionHandler:^(id result, NSError *error) {
    if (error) {
        //登录失败
    }else {
        //登录成功,在result中含有授权信息,SDK内部自动进行云端连接
    }
}];
[userAuthTask start];

扫描设备

扫描设备指的是在局域网中发现所需要的设备,需要使用XLinkScanDeviceTask。扫描设备需要使用到设备的 ProductId,即产品ID,获取方式请参考资源准备。

//新建扫描设备任务
XLinkScanDeviceTask *scanTask = [XLinkScanDeviceTask scanDeviceTaskWithProductIdArray:@[@"123456789",@"987654321"]
                                                                              timeout:90
                                                           didDiscoveredDeviceHandler:^(XDevice *device) {
    //扫描到设备回调,同一设备仅会回调一次
}
                                                                    completionHandler:^(id result, NSError *error) {
    //无论搜不搜索到设备都会回调这个方法。返回的错误是任务超时
}];

[scanTask start];



添加订阅设备

添加订阅设备时会通过云端建立当前用户与设备的绑定关系,需要使用XLinkAddDeviceTask。

XLinkAddDeviceTask *addDeviceTask = [XLinkAddDeviceTask addDeviceTaskWithDevice:device
                                                                        pinCode:pingCode //pingCode需要硬件设备支持,一般情况下可以为nil
                                                                        timeout:60
                                                              completionHandler:^(id result, NSError *error) {
    if (!error) {
        //设备添加成功
    }else{
        //设备添加失败
    }
}];
[addDeviceTask start];

设备控制

设备控制分为两个操作,分别是获取数据端点和设置数据端点操作,两个操作分别对应了两个任务。其中数据端点的详细说明可查阅附录,此处可以先理解为获取设备的控制属性。

  • 获取数据端点
XLinkGetDataPointTask *getTask = [XLinkGetDataPointTask getDataPointTaskWithDevice:device
                                                                           timeout:10.f
                                                                 completionHandler:^(id result, NSError *error) {
    if (!error) {
        //数据端点获取成功,数据端点列表会通过result返回
    }else{
        //数据端点获取失败
    }
}];
//执行查询数据端点任务
[getTask start];

  • 设置数据端点
//修改数据端点,控制设备
XLinkSetDataPointTask *setTask = [XLinkSetDataPointTask setDataPointTaskWithDevice:device
                                                                     dataPoints:dataPoints
                                                                        timeout:10.f
                                                              completionHandler:^(id result, NSError *error) {
    if (!error) {
        //设置数据端点成功
    }else{
        //设置数据端点失败
    }
}];
[setTask start];

移除设备

移除设备会将设备从设备维护列表中移除并取消用户与设备之间的绑定关系,使用XLinkRemoveDeviceTask。

//新建删除设备任务
XLinkRemoveDeviceTask *removeDeviceTask = [XLinkRemoveDeviceTask removeDeviceTaskWithDevice:device
                                                                                    timeout:10
                                                                          completionHandler:^(id result, NSError *error) {
    if (!error) {
        //删除成功
    }else{
        //删除失败
    }
}];
[removeDeviceTask start];

同步设备列表

在添加订阅成功设备之后,当前用户会与该设备存在绑定关系,在任何时候都可以从云端同步到该设备并进行设备的控制操作,使用XLinkSyncDeviceListTask。

XLinkSyncDeviceListTask *syncTask = [XLinkSyncDeviceListTask syncDeviceListTaskWithVersion:0 //目前只需要填入0即可
                                                                                   timeout:10
                                                                              connectLocal:YES //同步设备列表后是否需要和设备建立本地连接
                                                                         completionHandler:^(id result, NSError *error)  {
    if (!error) {
        //同步设备列表成功,设备列表会通过result返回
    }else{
        //同步设备列表失败
    }
}];
[syncTask start];
  • 无标签
编写评论...