UNPKG

node-red-contrib-hasskit

Version:

hasskit for node-red

49 lines (45 loc) 1.23 kB
const crc16 = function (data) { let tmp = 0 for (let i of data) { tmp += i } return tmp & 0xff } const DATA_LENGTH = 8 const fns = { switch: require('./Switch'), climate: require('./Climate') } module.exports = { /** * 收到tcp数据预处理 * @param {*} data */ handleRece: function (data) { //大于9个字节超出克伦威尔数据帧取后9位,小于9位无效丢弃 if (data.length > DATA_LENGTH) { data = data.slice(-DATA_LENGTH) } else if (data.length < DATA_LENGTH) { return } if (data[0] !== 0xb2 || data[DATA_LENGTH - 1] !== 0x2b) return var crc = crc16(data.slice(1, -2)); if (data[DATA_LENGTH - 2] === crc) { return data } return }, handle_write: function (buf) { let data = Buffer.from(buf) if (data.length < DATA_LENGTH) return data[6] = crc16(data.slice(1, -2)) return data }, getObjToBuf: function (domain) { return fns[domain].obj2buf }, getBufToObj: function (domain) { return fns[domain].buf2obj } }