云服务器内容精选

  • 原型 1 2 3 4 5 6 7 8 SQLRETURN SQLGetDiagRec(SQLSMALLINT HandleType SQLHANDLE Handle, SQLSMALLINT RecNumber, SQLCHAR *SQLState, SQLINTEGER *NativeErrorPtr, SQLCHAR *MessageText, SQLSMALLINT BufferLength SQLSMALLINT *TextLengthPtr);
  • 参数 表1 SQLGetDiagRec参数 关键字 参数说明 HandleType 句柄类型标识符,它说明诊断所要求的句柄类型。必须为下列值之一: SQL_HANDLE_ENV SQL_HANDLE_DBC SQL_HANDLE_STMT SQL_HANDLE_DESC Handle 诊断数据结构的句柄,其类型由HandleType来指出。如果HandleType是SQL_HANDLE_ENV,Handle可以是共享的或非共享的环境句柄。 RecNumber 指出应用从查找信息的状态记录。状态记录从1开始编号。 SQLState 输出参数:指向缓冲区的指针,该缓冲区存储着有关RecNumber的五字符的SQLSTATE码。 NativeErrorPtr 输出参数:指向缓冲区的指针,该缓冲区存储着本地的错误码。 MessageText 指向缓冲区的指针,该缓冲区存储着诊断信息文本串。 BufferLength MessageText的长度。 TextLengthPtr 输出参数:指向缓冲区的指针,返回MessageText中的字节总数。如果返回字节数大于BufferLength,则MessageText中的诊断信息文本被截断成BufferLength减去NULL结尾字符的长度。
  • 注意事项 SQLGetDiagRec不发布自己的诊断记录。它用下列返回值来报告它自己的执行结果: SQL_SUC CES S:函数成功返回诊断信息。 SQL_SUCCESS_WITH_INFO:*MessageText太小以致不能容纳所请求的诊断信息。没有诊断记录生成。 SQL_INVALID_HANDLE:由HandType和Handle所指出的句柄是不合法句柄。 SQL_ERROR:RecNumber小于等于0或BufferLength小于0。 如果调用ODBC函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO,可调用SQLGetDiagRec返回诊断信息值SQLSTATE,SQLSTATE值的如下表。 表2 SQLSTATE值 SQLSATATE 错误 描述 HY000 一般错误 未定义特定的SQLSTATE所产生的一个错误。 HY001 内存分配错误 驱动程序不能分配所需要的内存来支持函数的执行或完成。 HY008 取消操作 调用SQLCancel取消执行语句后,依然在StatementHandle上调用函数。 HY010 函数系列错误 在为执行中的所有数据参数或列发送数据前就调用了执行函数。 HY013 内存管理错误 不能处理函数调用,可能由当前内存条件差引起。 HYT01 连接超时 数据源响应请求之前,连接超时。 IM001 驱动程序不支持此函数 调用了StatementHandle相关的驱动程序不支持的函数
  • 注意事项 SQLGetDiagRec不发布自己的诊断记录。它用下列返回值来报告它自己的执行结果: SQL_SUCCESS:函数成功返回诊断信息。 SQL_SUCCESS_WITH_INFO:*MessageText太小以致不能容纳所请求的诊断信息。没有诊断记录生成。 SQL_INVALID_HANDLE:由HandType和Handle所指出的句柄是不合法句柄。 SQL_ERROR:RecNumber小于等于0或BufferLength小于0。 如果调用ODBC函数返回SQL_ERROR或SQL_SUCCESS_WITH_INFO,可调用SQLGetDiagRec返回诊断信息值SQLSTATE,SQLSTATE值的如下表。 表2 SQLSTATE值 SQLSATATE 错误 描述 HY000 一般错误 未定义特定的SQLSTATE所产生的一个错误。 HY001 内存分配错误 驱动程序不能分配所需要的内存来支持函数的执行或完成。 HY008 取消操作 调用SQLCancel取消执行语句后,依然在StatementHandle上调用函数。 HY010 函数系列错误 在为执行中的所有数据参数或列发送数据前就调用了执行函数。 HY013 内存管理错误 不能处理函数调用,可能由当前内存条件差引起。 HYT01 连接超时 数据源响应请求之前,连接超时。 IM001 驱动程序不支持此函数 调用了StatementHandle相关的驱动程序不支持的函数
  • 参数 表1 SQLGetDiagRec参数 关键字 参数说明 HandleType 句柄类型标识符,它说明诊断所要求的句柄类型。必须为下列值之一: SQL_HANDLE_ENV SQL_HANDLE_DBC SQL_HANDLE_STMT SQL_HANDLE_DESC Handle 诊断数据结构的句柄,其类型由HandleType来指出。如果HandleType是SQL_HANDLE_ENV,Handle可以是共享的或非共享的环境句柄。 RecNumber 指出应用从查找信息的状态记录。状态记录从1开始编号。 SQLState 输出参数:指向缓冲区的指针,该缓冲区存储着有关RecNumber的五字符的SQLSTATE码。 NativeErrorPtr 输出参数:指向缓冲区的指针,该缓冲区存储着本地的错误码。 MessageText 指向缓冲区的指针,该缓冲区存储着诊断信息文本串。 BufferLength MessageText的长度。 TextLengthPtr 输出参数:指向缓冲区的指针,返回MessageText中的字节总数。如果返回字节数大于BufferLength,则MessageText中的诊断信息文本被截断成BufferLength减去NULL结尾字符的长度。
  • 原型 1 2 3 4 5 6 7 8 SQLRETURN SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLINT RecNumber, SQLCHAR *SQLState, SQLINTEGER *NativeErrorPtr, SQLCHAR *MessageText, SQLSMALLINT BufferLength, SQLSMALLINT *TextLengthPtr);
  • 请求示例 假设最终通过编解码插件编码后的二进制value为c4 0d 5a 6e 96 0b c3 0e 2b 30 37,则下发样例如下: CON-PUT MID=48587, Token=2d82e7f54b, OptionSet={"Uri-Path":["19","1","0"], "Content-Format":"application/octet-stream"}, c4 0d 5a 6e 96 0b c3 0e 2b 30 37
  • LwM2M对象资源 物联网平台 向设备下发异步设备命令,物联网平台通过LwM2M的/19/1/0资源对象将命令打包到LwM2M write消息的payload里下发给设备。 Operation CoAP Method URI Success Failure Write PUT /19/1/0 2.04 Changed 4.00 Bad Request, 4.04 Not Found, 4.01 Unauthorized, 4.05 Method Not Allowed, 4.06 Not Acceptable 1、使用LwM2M协议接入的设备,物联网平台只支持下发异步设备命令。 2、物联网平台接收到命令之后会调用用户的在物联网平台上传的编解码插件进行编码后下发给设备,参考编解码插件开发。
  • 使用限制 上行Topic是指设备向平台发送请求,或上报数据,或回复响应。 下行Topic是指平台向设备下发指令,或回复响应。 设备与平台建立连接后,需要订阅下行Topic(华为云平台中具有隐式订阅功能,若通信质量为Qos0,平台的系统topic无需订阅。),否则无法收到平台下发的指令或回复的响应。应用侧接口的调用,需要设备侧的配合,例如应用侧下发命令,设备侧需要先订阅“平台命令下发”的下行Topic,否则设备无法收到平台命令,应用下发命令的接口也会报超时。
  • 主要控制报文类型 常见MQTT消息类型主要有CONNECT、SUBSCRIBE、PUBLISH、PINGREQ。 CONNECT:指客户端请求和服务端连接。有效载荷(Payload)的主要参数,参考设备连接鉴权填写。 SUBSCRIBE:订阅包括主题筛选器(Topic Filter)和最大服务质量(QoS),一个会话可以进行多个订阅。向平台订阅可以参考:Topic定义。 PUBLISH:是指从客户端向服务端或者服务端向客户端传输一个应用消息。 可变报头(Variable header)中的主要参数“Topic name”,指服务端或客户端的发布主题。详细请参考Topic定义。 有效载荷(Payload)中的主要参数为完整的数据上报和命令下发的消息内容,一般是一个JSON或字符串对象。 PINGREQ:指客户端发给服务端的心跳请求。主要用于告知服务端客户端还活着、确认网络连接没有断开。约定的发送周期由协商的Keep Alive决定。
  • 数据包组成 MQTT消息由固定报头(Fixed header)、可变报头(Variable header)和有效载荷(Payload)三部分组成。在MQTT规范中有说明,建议使用设备侧SDK进行接入。 其中固定报头(Fixed header)和可变报头(Variable header)格式的填写请参考MQTT标准规范。有效载荷(Payload)的格式由应用定义,即设备和物联网平台之间的定义。 固定报头:每个 MQTT 控制报文都包含一个固定报头可变报头,用于决定控制报文类型、在PUBLISH中还用于决定最大服务质量(QoS),如:建链、订阅、发布。 可变报头:某些 MQTT 控制报文包含一个可变报头部分。它在固定报头和负载之间。可变报头的内容根据报文类型的不同而不同。包含可变报头的报文标识符(Packet Identifier),用于区分同一链路的不同数据包。 有效载荷:某些 MQTT 控制报文在报文的最后部分包含一个有效载荷,对于 PUBLISH 来说有效载荷就是应用消息(由用户自己定义)。 MQTT的语法和接口细节,请以MQTT标准规范为准。
  • 设备鉴权 API 说明 设备鉴权 设备鉴权接口,鉴权通过后建立设备与平台间才能处理业务连接。鉴权成功后平台返回access_token。调用属性上报、消息上报等其他接口时,都需要携带access_token信息。如果access_token超期,需要重新认证设备获取access_token。如果access_token未超期重复获取access_token,老的access_token在未超期前保留30s,30s之后失效。
  • Topic定义 设备使用MQTT协议接入平台时,平台和设备通过Topic进行通信。平台预置的topic列表如下: Topic分类 Topic Publisher(发布者) Subscriber(订阅者) 用途 设备消息相关Topic $oc/devices/{device_id}/sys/messages/up 设备 平台 设备消息上报 $oc/devices/{device_id}/sys/messages/down 平台 设备 平台下发消息 设备命令相关Topic $oc/devices/{device_id}/sys/commands/request_id={request_id} 平台 设备 平台下发命令 $oc/devices/{device_id}/sys/commands/response/request_id={request_id} 设备 平台 设备返回命令响应 设备属性相关Topic $oc/devices/{device_id}/sys/properties/report 设备 平台 设备上报属性 $oc/devices/{device_id}/sys/gateway/sub_devices/properties/report 设备 平台 网关批量上报属性 $oc/devices/{device_id}/sys/properties/set/request_id={request_id} 平台 设备 平台设置设备属性 $oc/devices/{device_id}/sys/properties/set/response/request_id={request_id} 设备 平台 属性设置的响应结果 $oc/devices/{device_id}/sys/properties/get/request_id={request_id} 平台 设备 平台查询设备属性 $oc/devices/{device_id}/sys/properties/get/response/request_id={request_id} 设备 平台 属性查询响应结果 $oc/devices/{device_id}/sys/shadow/get/request_id={request_id} 设备 平台 设备侧主动获取平台的设备影子数据 $oc/devices/{device_id}/sys/shadow/get/response/request_id={request_id} 平台 设备 设备侧主动获取平台设备影子数据的响应 设备事件相关Topic $oc/devices/{device_id}/sys/events/up 设备 平台 设备事件上报与平台事件下发,可用于:设备网关管理、软固件升级、文件上传/下载、设备时间同步、设备信息上报、设备日志收集、远程配置 $oc/devices/{device_id}/sys/events/down 平台 设备 {device_id}用于标识Topic路由的目标设备,设备侧订阅该topic或往topic推送消息时,该值需要替换为设备与平台建立MQTT连接时使用的设备ID参数值。 {request_id}用于唯一标识这次请求。设备侧发起的消息带该参数时,需要保证设备侧该参数值的唯一性,可以用递增的数字或者UUID来实现。当设备收到平台下发的topic中包含request_id时,设备侧响应的request_id需要跟平台下发的保持一致。 设备侧订阅带{request_id}参数的topic时,可以使用通配#。如设备侧订阅命令下发请求的topic $oc/devices/{device_id}/sys/commands/request_id={request_id}时,可以用$oc/devices/{device_id}/sys/commands/#。 平台采用了隐式订阅的功能,对于下行的系统topic,设备无需订阅,平台默认该设备订阅了qos为0的系统topic。如果需要qos为1的下行系统topic,需要设备自行订阅。 除了device_id、request_id其他均为系统字段。 父主题: 设备侧MQTT/MQ TTS 接口参考
  • 概述 LwM2M(Lightweight M2M,轻量级M2M),由开发移动联盟(OMA)提出,是一种轻量级的、标准通用的物联网设备管理协议,可用于快速部署客户端/服务器模式的物联网业务。LwM2M为物联网设备的管理和应用建立了一套标准,它提供了轻便小巧的安全通信接口及高效的数据模型,以实现M2M设备管理和服务支持。物联网平台支持加密与非加密两种接入设备接入方式,其中加密业务数据交互端口为5684端口,采用DTLS+CoAP协议通道接入,非加密端口为5683,接入协议为CoAP。 LwM2M的语法和接口细节,请以此标准规范为准。 物联网平台支持协议规定的plain text, opaque, Core Link ,TLV , JSON编码格式。在多字段操作时(比如写多个资源),默认用TLV格式。
  • https接口介绍 物联网平台的接口如下表所示: 接口分类 用途 接口 设备鉴权相关接口 设备鉴权 /v5/device-auth 设备消息相关接口 设备消息上报 /v5/devices/{device_id}/sys/messages/up 设备属性相关接口 设备属性上报 /v5/devices/{device_id}/sys/properties/report 网关上报子设备属性 /v5/devices/{device_id}/sys/gateway/sub-devices/properties/report