node-red-contrib-hasskit
Version:
hasskit for node-red
48 lines (41 loc) • 1.22 kB
JavaScript
const crc16 = require('../clowire/crc16')
const DATA_LENGTH = 10
const fns = {
switch: require('./Switch'),
climate: require('./Climate')
}
module.exports = {
/**
* 收到tcp数据预处理
* @param {*} data
*/
handleRece: function (data) {
if (data.length > DATA_LENGTH) {
data = data.slice(-DATA_LENGTH)
} else if (data.length < DATA_LENGTH) {
return
}
var crc = crc16(data.slice(0, -2));
if (data.readUInt16LE(data.length - 2, data) === crc) {
return data
}
return
},
handle_write: function (buf) {
let data = Buffer.from(buf)
if (data.length < DATA_LENGTH - 4) return
var buffer = Buffer.alloc(data.length + 2);
for (let i = 0; i < data.length; i++) {
buffer[i] = data[i]
}
buffer.writeUInt16LE(crc16(data), data.length)
console.log(buffer)
return buffer
},
getObjToBuf: function (domain) {
return fns[domain].obj2buf
},
getBufToObj: function (domain) {
return fns[domain].buf2obj
}
}