日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]設(shè)備控制下面以開關(guān)燈為例,通過二進制、json兩種格式簡要介紹與安卓設(shè)備通訊的例子。實際開發(fā)請只選擇以下其中一種消息格式。注意:msgCode從[64,200)范圍代表控制查詢及

設(shè)備控制

下面以開關(guān)燈為例,通過二進制、json兩種格式簡要介紹與安卓設(shè)備通訊的例子。實際開發(fā)請只選擇以下其中一種消息格式。

注意:msgCode從[64,200)范圍代表控制查詢及響應(yīng),[200,255]范圍代表消息主動上報,其他范圍為AbleCloud內(nèi)部使用,不允許重復(fù)定義。

1 使用二進制消息格式進行通訊

1.1 設(shè)備控制

以開關(guān)燈為例,協(xié)議如下:

//請求數(shù)據(jù)包

{ 68 :[

//關(guān)燈(二進制流,由廠商自己解析)

{ 0 , 0 , 0 , 0 },

//開燈(二進制流,由廠商自己解析)

{ 1 , 0 , 0 , 0 }

]}

//響應(yīng)數(shù)據(jù)包

{ 102 :[

//失敗(二進制流,由廠商自己解析)

{ 0 , 0 , 0 , 0 },

//成功(二進制流,由廠商自己解析)

{ 1 , 0 , 0 , 0 }

]}

-------------------------------------

private static final int CODE_SWITCH_REQ = 68;

private static final int CODE_SWITCH_RESP = 102;

private static final int OFF = 0;

private static final int ON = 1;

AC.handleMsg(new ACMsgHandler() {

@Override

public void handleMsg(ACDeviceMsg req, ACDeviceMsg resp) {

switch (reqMsg.getMsgCode()) {

case CODE_SWITCH_REQ:

//請求消息體

byte[] payload = reqMsg.getPayload();

if (payload[0] == ON) {

if (Light.turnLightOn()) {

respMsg.setPayload(new byte[]{1, 0, 0, 0}); //開燈成功

} else

respMsg.setPayload(new byte[]{0, 0, 0, 0}); //開燈失敗

} else {

if (Light.turnLightOff()) {

respMsg.setPayload(new byte[]{1, 0, 0, 0}); //關(guān)燈成功

} else

respMsg.setPayload(new byte[]{0, 0, 0, 0}); //關(guān)燈失敗

respMsg.setMsgCode(CODE_SWITCH_RESP);

break;

});

2 使用JSON消息格式進行通訊

2.1 設(shè)備控制

以開關(guān)燈為例,協(xié)議如下:

//請求數(shù)據(jù)包

{ 70 :[

//關(guān)燈

{"switch", 0}

//開燈

{"switch", 1}

]}

//響應(yīng)數(shù)據(jù)包--JSON格式的resp不需要設(shè)置msgCode

{

//失敗

{"result", false},

//成功

{"result", true}

]}

-----------------------------

private static final int CODE_JSON = 70;

private static final int OFF = 0;

private static final int ON = 1;

AC.handleMsg(new ACMsgHandler() {

@Override

public void handleMsg(ACDeviceMsg req, ACDeviceMsg resp) {

//JSON格式的resp不需要設(shè)置msgCode

switch (reqMsg.getMsgCode()) {

case CODE_JSON:

//請求消息體

JSONObject req = new JSONObject(reqMsg.getJsonPayload());

//請求操作類型,關(guān)燈或開燈

int value = req.getInt("switch");

//響應(yīng)消息體

JSONObject resp = new JSONObject();

if (value == ON) {

if (Light.turnLightOn()) {

resp.put("result", true);

respMsg.setJsonPayload(resp.toString()); //開燈成功

} else {

resp.put("result", false);

respMsg.setJsonPayload(resp.toString()); //開燈失敗

} else if (value == OFF) {

if (Light.turnLightOff()) {

resp.put("result", true);

respMsg.setJsonPayload(resp.toString()); //關(guān)燈成功

} else {

resp.put("result", false);

respMsg.setJsonPayload(resp.toString()); //關(guān)燈失敗

break;

});

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉