| 2017-02-04 10:16:25
jquery.min.js / welinker.js
配置sdk的 loginKey 为前面注册申请的key
此开发板有4个led灯
比如需要控制 LED1 灯的开与硬件端对商定的协议命令为:
LED1=N LED2=O LED3=O LED4=O ok控制灯的命令我们已经知道,下面就通过sdk下发命令
var cmdStr = "LED1=N LED2=O LED3=O LED4=O";
//命令字符串 其于不同的设备只需改动此命令即可现实控制,前提命令是跟硬件层沟通好的
var out = new ArrayBuffer(cmdStr.length); //创建一个buffer
var u8a = new Uint8Array(out);
//通过buffer 建立一个数组 注意数据必须是Uint8Array的 sdk通过全部采用字节通信
var o = 0;
var strs = cmdStr.split("");
for (var k = 0; k < strs.length; k++) {
u8a[o++] = strs[k].charCodeAt(); //把命令封装到数组当中
};
//调用sdk下发控制命令
var deviceid = 0x10010000; //不同设备类型id不一样。
var thid = "00000064000E0001"; //设备id
var returnNum = 0; //此次命令是否需要硬件回数据的条数控制默认可以不用回
var returnWait=1000*3 //命令下达超时时间 默认3秒
welinker.DeviceControl(thid, deviceid, 0, 3000, out);
至此控制命令已经完成
如果我们界面上需要显示设备的时时状态数据,那我们就需要注册回调涵数来处理
welinker.CallBackonMessage(message); //注册信息回调函数 一句话。简单吧
//自己申请的函数。处理设备云回发的数据
function message(type, result, data) {
///参数说明
///type 回发的数据类型 login
///result 状态
///data数据 为字节
if (type == "Login") {
deviceAutoReadState = false;
if (result == 0) {
//当登录成功后 调用下读取设备的数据
SmartHomeDeviceMonitoringInformation();
} else {
alert("当前网络不可用,请检查你的网络设置!");
}
return;
}
if (type == "DeviceAutoRead") {
//判断是否要重启DeviceAutoRead机制
if (result == 0) {
deviceAutoReadState = true;
} else {
deviceAutoReadState = false
}
}
if (result == -13) { //结果是-13说明设备离线了
alert("你的设备已离线,请检查设备网络!");
}
var length = 0; //获取设备上来的数据长度
length |= data[8] << 8;
length |= data[9] << 0;
//从那个开始 到那个结束 把纯设备数据取出来
var resultData = data.slice(10, data.length);
if (result == 0) {
var val = ""; //转换出来后的字符串
for (var i = 0; i < resultData.length; i++) {
val += String.fromCharCode(resultData[i]);
}
alert("String :" + val);
//处理灯的状态显示 判断是否有LED1灯的状态
if (val.indexOf("LED1=") >= 0) {
var index = val.indexOf("LED1=") + 5;
var value = val.substr(index, 1); //取到值
alert(“LED1灯的状态:”+value);
};
//判断是否有LED2灯的状态
if (val.indexOf("LED2=") >= 0) {
var index = val.indexOf("LED2=") + 5;
var value = val.substr(index, 1);
alert(“LED2灯的状态:”+value);
};
//判断是否有LED3灯的状态
if (val.indexOf("LED3=") >= 0) {
var index = val.indexOf("LED3=") + 5;
var value = val.substr(index, 1);
alert(“LED3灯的状态:”+value);
};
//判断是否有LED4灯的状态
if (val.indexOf("LED4=") >= 0) {
var index = val.indexOf("LED4=") + 5;
var value = val.substr(index, 1);
alert(“LED4灯的状态:”+value);
};
};
};
var deviceAutoReadState = false;
function SmartHomeDeviceMonitoringInformation() {
//此为读设备状态命令
if (deviceAutoReadState == false) {
welinker.DeviceAutoRead(thid, deviceid, "LedState", 3000);
}
};
//errno 状态表示说明
//#define SBC_ERR_OK 0
//#define SBC_ERR_NOTHING -1
//#define SBC_ERR_NODEVICE -2
//#define SBC_ERR_LOCKED -3
//#define SBC_ERR_TIMEOUT -4
//#define SBC_ERR_INTASK -5
//#define SBC_ERR_CRC -6
//#define SBC_ERR_APPKEY -7
//#define SBC_ERR_INVARG -8
//#define SBC_ERR_NOMEM -9
//#define SBC_ERR_ISSLAVE -10
//#define SBC_ERR_OUTSERVICE -11
//#define SBC_ERR_UNKNOW -12
//#define SBC_ERR_OFFLINE -13
Demo 点击下载 |
在线体验