From aa77f25f51088af47967888c90fc3b47912a99b7 Mon Sep 17 00:00:00 2001 From: Hyun Park Date: Wed, 22 Nov 2023 17:09:15 +0900 Subject: [PATCH 1/4] =?UTF-8?q?231122=5F=EB=8F=99=EC=9E=91=EA=B0=9C?= =?UTF-8?q?=EC=84=A0=20=EB=B0=8F=20=EB=B8=94=EB=9F=AD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/KKMOO.js | 180 ++++++++++++++++++++++++++++++++++------- app/modules/KKMOO.json | 2 +- 2 files changed, 154 insertions(+), 28 deletions(-) diff --git a/app/modules/KKMOO.js b/app/modules/KKMOO.js index ec6cbb450..539c6e794 100644 --- a/app/modules/KKMOO.js +++ b/app/modules/KKMOO.js @@ -9,11 +9,13 @@ class KKMOO extends BaseModule { this.sendToEntry = ""; this.receiveData; this.isReceived = false; + this.isReceived_old = false; this.isPlaying = false; this.isPlaying_old = false; this.cmdProc = ""; this.sendBuffer = []; - this.test = 0; + this.buffercnt = 0; + // ... } /* @@ -24,12 +26,13 @@ class KKMOO extends BaseModule { init(handler, config) { this.handler = handler; this.config = config; + this.isReceived = false; + this.isReceived_old = false; } setSerialPort(sp) { this.sp = sp; } - - + /* 연결 후 초기에 송신할 데이터가 필요한 경우 사용합니다. requestInitialData 를 사용한 경우 checkInitialData 가 필수입니다. @@ -62,28 +65,42 @@ class KKMOO extends BaseModule { this.isPlaying = "false"; } } + if(received.includes("ATfinRobot")){ + console.log("ATfinRobot"); + this.buffercnt++; + if(this.sendBuffer[this.buffercnt] != null){ + this.sp.write(Buffer.from(this.sendBuffer[this.buffercnt])); + } + } } requestRemoteData(handler) { handler.write("data",this.isPlaying); - /*if(this.isPlaying != this.isPlaying_old){ - this.isPlaying_old = this.isPlaying; - handler.write("data",this.isPlaying); - }*/ } // 엔트리에서 받은 데이터에 대한 처리 handleRemoteData(handler) { - if(handler.serverData != null){ - this.receiveData = handler.read('msg'); + if(Object.keys(handler.read('msg')).length === 0){ + this.isReceived = false; } else{ - this.receiveData = null; + this.isReceived = true; } + if(this.isReceived != this.isReceived_old && this.isReceived==true){ + this.received = true; + this.receiveData = handler.read('msg'); + } + this.isReceived_old = this.isReceived; } requestLocalData(){ - if(this.receiveData != null){ + if(this.received){ + this.received = false; switch(this.receiveData.prot){ + case "RT": + var data = this.receiveData; + this.isReceived = false; + this.isReceived_old = false; + return; case "EC": var msg = ""; var data = this.receiveData.data; @@ -99,30 +116,24 @@ class KKMOO extends BaseModule { msg+=angle; var cmd = "^AN"+msg; - this.sp.write(Buffer.from(cmd)); - this.sp.flush() - console.log(cmd); - - break; + //this.sp.write(Buffer.from(cmd)); + //console.log(cmd); + return cmd; case "IR": - //console.log("!!!!!!!!!!!!ir!!!!!!!!!!!"); var cmd = "^ir" - this.sp.write(Buffer.from(cmd)) - break; + return cmd; case "PM": var msg = ""; var slot = parseInt(this.receiveData.data); msg = slot.toString(16).padStart(2,'0'); var cmd = "$PM"+msg; - this.sp.write(Buffer.from(cmd)); - break; + return cmd; case "CM": var msg = ""; var slot = parseInt(this.receiveData.data)+90; msg = slot.toString(16).padStart(2,'0'); var cmd = "$PM"+msg; - this.sp.write(Buffer.from(cmd)); - break; + return cmd; case "AD": var msg = ""; var data = this.receiveData.data; @@ -140,8 +151,122 @@ class KKMOO extends BaseModule { time = time.toString(16).padStart(4,'0'); msg += time; var cmd = "^ad"+msg; + return cmd; + case "MP": + var msg = "00"; + var data = this.receiveData.data; + var time = parseInt(data.pop()); + for(var i of data){ + var angle = parseInt(i.ANG); + angle *= 10; + if(angle<0){ + angle = 4096+angle; + msg += "f"+angle.toString(16).padStart(3,'0'); + } + else{ + msg += "0"+angle.toString(16).padStart(3,'0'); + } + + if(i.MOT == 8 || i.MOT == 17){ + msg += "000000000000"; + } + } + var cmd = "*mf"+msg; this.sp.write(Buffer.from(cmd)); - break; + this.sp.write("*mt00"+Buffer.from(time.toString(16).padStart(4,'0'))); + var cmd = "*pm01" + return cmd; + case "PT": + this.buffercnt = 0; + this.sendBuffer = []; + var frame = 0; + var data = this.receiveData.data; + for(var i of data){ + var msg = ""; + for(var key in i.data){ + var angle = parseInt(i.data[key].angle); + angle *= 10; + if(angle<0){ + angle = 4096+angle; + msg += "f"+angle.toString(16).padStart(3,'0'); + } + else{ + msg += "0"+angle.toString(16).padStart(3,'0'); + } + if(key == 8 || key == 17){ + msg += "000000000000"; + } + } + msg = "*mf"+frame.toString(16).padStart(2,'0')+msg; + var cmd_msg = msg; + var time = parseInt(i.time); + var cmd_time = "*mt"+frame.toString(16).padStart(2,'0')+Buffer.from(time.toString(16).padStart(4,'0')); + frame++; + this.sendBuffer.push(cmd_msg); + this.sendBuffer.push(cmd_time); + + //this.sp.write(Buffer.from(cmd_msg)); + console.log(cmd_msg); + //this.sp.write(Buffer.from(cmd_time)); + console.log(cmd_time); + } + if(frame >0){ + var pm = "*pm"+frame.toString(16).padStart(2,'0'); + this.sendBuffer.push(pm); + var _this = this; + for(let i in this.sendBuffer){ + setTimeout(()=> + _this.sp.write(Buffer.from(_this.sendBuffer[i])) + ,20*i); + } + return; + } + else{ + return; + } + case "SV": + this.buffercnt = 0; + this.sendBuffer = []; + var _frame = 0; + var data = this.receiveData.data; + var _slot = this.receiveData.slot; + var slot = (parseInt(_slot)+90).toString(16).padStart(2,'0'); + var _name = this.receiveData.name; + if(data.length >0){ + var framelength = data.length.toString(16).padStart(2,'0'); + var cmd_header = ">mh"+slot+_name+'00000000000'+framelength; + this.sendBuffer.push(cmd_header); + //this.sp.write(Buffer.from(cmd_header)); + for(var i of data){ + var msg = ""; + for(var key in i.data){ + var angle = parseInt(i.data[key].angle); + angle *= 10; + if(angle<0){ + angle = 4096+angle; + msg += "f"+angle.toString(16).padStart(3,'0'); + } + else{ + msg += "0"+angle.toString(16).padStart(3,'0'); + } + if(key == 8 || key == 17){ + msg += "000000000000"; + } + } + var time = parseInt(i.time).toString(16).padStart(4,'0'); + frame = _frame.toString(16).padStart(2,'0'); + var cmd_frame = ">mf"+slot+frame+time+msg; + _frame++; + this.sendBuffer.push(cmd_frame); + //this.sp.write(Buffer.from(cmd_frame)); + } + var cmd_hash = ">hs"+slot+this.receiveData.hash; + this.sendBuffer.push(cmd_hash); + return this.sendBuffer[0]; + } + else{ + return; + } } } this.receiveData = null; @@ -157,8 +282,9 @@ class KKMOO extends BaseModule { } lostController() { } - - + reset(){ + console.log("reset"); + } + } - module.exports = new KKMOO(); diff --git a/app/modules/KKMOO.json b/app/modules/KKMOO.json index 77a66fbaa..646aa1480 100644 --- a/app/modules/KKMOO.json +++ b/app/modules/KKMOO.json @@ -21,7 +21,7 @@ "hardware": { "type": "serial", "control": "slave", - "duration": 2, + "duration": 10, "vendor": [ "Silicon Lab", "wch.cn" From 0643089254dc2d5dbe77eaf7336b95683af5bd61 Mon Sep 17 00:00:00 2001 From: Hyun Park Date: Wed, 22 Nov 2023 17:29:07 +0900 Subject: [PATCH 2/4] =?UTF-8?q?231122=5F=EB=8F=99=EC=9E=91=EA=B0=9C?= =?UTF-8?q?=EC=84=A0=20=EB=B0=8F=20=EB=B8=94=EB=9F=AD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/KKMOO.js | 194 +++++++++++++++++++++---------------------- 1 file changed, 97 insertions(+), 97 deletions(-) diff --git a/app/modules/KKMOO.js b/app/modules/KKMOO.js index 539c6e794..bd29bb856 100644 --- a/app/modules/KKMOO.js +++ b/app/modules/KKMOO.js @@ -5,7 +5,7 @@ class KKMOO extends BaseModule { // 클래스 내부에서 사용될 필드들을 이곳에서 선언합니다. constructor() { super(); - + this.sendToEntry = ""; this.receiveData; this.isReceived = false; @@ -15,14 +15,14 @@ class KKMOO extends BaseModule { this.cmdProc = ""; this.sendBuffer = []; this.buffercnt = 0; - + // ... } - /* - 최초에 커넥션이 이루어진 후의 초기 설정. - handler 는 워크스페이스와 통신하 데이터를 json 화 하는 오브젝트입니다. (datahandler/json 참고) - config 은 module.json 오브젝트입니다. - */ + /* + 최초에 커넥션이 이루어진 후의 초기 설정. + handler 는 워크스페이스와 통신하 데이터를 json 화 하는 오브젝트입니다. (datahandler/json 참고) + config 은 module.json 오브젝트입니다. + */ init(handler, config) { this.handler = handler; this.config = config; @@ -32,7 +32,7 @@ class KKMOO extends BaseModule { setSerialPort(sp) { this.sp = sp; } - + /* 연결 후 초기에 송신할 데이터가 필요한 경우 사용합니다. requestInitialData 를 사용한 경우 checkInitialData 가 필수입니다. @@ -50,52 +50,52 @@ class KKMOO extends BaseModule { return null; } - + // 연결 후 초기에 수신받아서 정상연결인지를 확인해야하는 경우 사용합니다. checkInitialData(data, config) { return true; } handleLocalData(data) { const received = data.toString("ascii"); - if(received.includes("entry:")){ - if(received.includes("true")){ + if (received.includes("entry:")) { + if (received.includes("true")) { this.isPlaying = "true"; } else { this.isPlaying = "false"; } } - if(received.includes("ATfinRobot")){ - console.log("ATfinRobot"); + if (received.includes("ATfinRobot")) { + //console.log("ATfinRobot"); this.buffercnt++; - if(this.sendBuffer[this.buffercnt] != null){ + if (this.sendBuffer[this.buffercnt] != null) { this.sp.write(Buffer.from(this.sendBuffer[this.buffercnt])); } } } requestRemoteData(handler) { - handler.write("data",this.isPlaying); + handler.write("data", this.isPlaying); } - + // 엔트리에서 받은 데이터에 대한 처리 handleRemoteData(handler) { - if(Object.keys(handler.read('msg')).length === 0){ + if (Object.keys(handler.read('msg')).length === 0) { this.isReceived = false; } - else{ + else { this.isReceived = true; } - if(this.isReceived != this.isReceived_old && this.isReceived==true){ + if (this.isReceived != this.isReceived_old && this.isReceived == true) { this.received = true; this.receiveData = handler.read('msg'); } this.isReceived_old = this.isReceived; } - requestLocalData(){ - if(this.received){ + requestLocalData() { + if (this.received) { this.received = false; - switch(this.receiveData.prot){ + switch (this.receiveData.prot) { case "RT": var data = this.receiveData; this.isReceived = false; @@ -107,15 +107,15 @@ class KKMOO extends BaseModule { var motnum = parseInt(data.MOT); var angle = parseInt(data.ANG); angle *= 10; - if(angle<0){ - angle = 4096+angle; + if (angle < 0) { + angle = 4096 + angle; } - motnum = motnum.toString(16).padStart(2,'0') - msg+=motnum; - angle = angle.toString(16).padStart(3,'0') - msg+=angle; - - var cmd = "^AN"+msg; + motnum = motnum.toString(16).padStart(2, '0') + msg += motnum; + angle = angle.toString(16).padStart(3, '0') + msg += angle; + + var cmd = "^AN" + msg; //this.sp.write(Buffer.from(cmd)); //console.log(cmd); return cmd; @@ -125,14 +125,14 @@ class KKMOO extends BaseModule { case "PM": var msg = ""; var slot = parseInt(this.receiveData.data); - msg = slot.toString(16).padStart(2,'0'); - var cmd = "$PM"+msg; + msg = slot.toString(16).padStart(2, '0'); + var cmd = "$PM" + msg; return cmd; case "CM": var msg = ""; - var slot = parseInt(this.receiveData.data)+90; - msg = slot.toString(16).padStart(2,'0'); - var cmd = "$PM"+msg; + var slot = parseInt(this.receiveData.data) + 90; + msg = slot.toString(16).padStart(2, '0'); + var cmd = "$PM" + msg; return cmd; case "AD": var msg = ""; @@ -140,40 +140,40 @@ class KKMOO extends BaseModule { var motnum = parseInt(data.MOT); var angle = parseInt(data.ANG); var time = parseInt(data.TME); - angle *=10; - if(angle<0){ - angle = 4096+angle; + angle *= 10; + if (angle < 0) { + angle = 4096 + angle; } - motnum = motnum.toString(16).padStart(2,'0'); - msg+=motnum; - angle = angle.toString(16).padStart(3,'0'); - msg+=angle; - time = time.toString(16).padStart(4,'0'); + motnum = motnum.toString(16).padStart(2, '0'); + msg += motnum; + angle = angle.toString(16).padStart(3, '0'); + msg += angle; + time = time.toString(16).padStart(4, '0'); msg += time; - var cmd = "^ad"+msg; + var cmd = "^ad" + msg; return cmd; case "MP": var msg = "00"; var data = this.receiveData.data; var time = parseInt(data.pop()); - for(var i of data){ + for (var i of data) { var angle = parseInt(i.ANG); angle *= 10; - if(angle<0){ - angle = 4096+angle; - msg += "f"+angle.toString(16).padStart(3,'0'); + if (angle < 0) { + angle = 4096 + angle; + msg += "f" + angle.toString(16).padStart(3, '0'); } - else{ - msg += "0"+angle.toString(16).padStart(3,'0'); + else { + msg += "0" + angle.toString(16).padStart(3, '0'); } - - if(i.MOT == 8 || i.MOT == 17){ + + if (i.MOT == 8 || i.MOT == 17) { msg += "000000000000"; } } - var cmd = "*mf"+msg; + var cmd = "*mf" + msg; this.sp.write(Buffer.from(cmd)); - this.sp.write("*mt00"+Buffer.from(time.toString(16).padStart(4,'0'))); + this.sp.write("*mt00" + Buffer.from(time.toString(16).padStart(4, '0'))); var cmd = "*pm01" return cmd; case "PT": @@ -181,47 +181,47 @@ class KKMOO extends BaseModule { this.sendBuffer = []; var frame = 0; var data = this.receiveData.data; - for(var i of data){ + for (var i of data) { var msg = ""; - for(var key in i.data){ + for (var key in i.data) { var angle = parseInt(i.data[key].angle); angle *= 10; - if(angle<0){ - angle = 4096+angle; - msg += "f"+angle.toString(16).padStart(3,'0'); + if (angle < 0) { + angle = 4096 + angle; + msg += "f" + angle.toString(16).padStart(3, '0'); } - else{ - msg += "0"+angle.toString(16).padStart(3,'0'); + else { + msg += "0" + angle.toString(16).padStart(3, '0'); } - if(key == 8 || key == 17){ + if (key == 8 || key == 17) { msg += "000000000000"; } } - msg = "*mf"+frame.toString(16).padStart(2,'0')+msg; + msg = "*mf" + frame.toString(16).padStart(2, '0') + msg; var cmd_msg = msg; var time = parseInt(i.time); - var cmd_time = "*mt"+frame.toString(16).padStart(2,'0')+Buffer.from(time.toString(16).padStart(4,'0')); + var cmd_time = "*mt" + frame.toString(16).padStart(2, '0') + Buffer.from(time.toString(16).padStart(4, '0')); frame++; this.sendBuffer.push(cmd_msg); this.sendBuffer.push(cmd_time); //this.sp.write(Buffer.from(cmd_msg)); - console.log(cmd_msg); + //console.log(cmd_msg); //this.sp.write(Buffer.from(cmd_time)); - console.log(cmd_time); + //console.log(cmd_time); } - if(frame >0){ - var pm = "*pm"+frame.toString(16).padStart(2,'0'); + if (frame > 0) { + var pm = "*pm" + frame.toString(16).padStart(2, '0'); this.sendBuffer.push(pm); var _this = this; - for(let i in this.sendBuffer){ - setTimeout(()=> + for (let i in this.sendBuffer) { + setTimeout(() => _this.sp.write(Buffer.from(_this.sendBuffer[i])) - ,20*i); + , 20 * i); } return; } - else{ + else { return; } case "SV": @@ -230,61 +230,61 @@ class KKMOO extends BaseModule { var _frame = 0; var data = this.receiveData.data; var _slot = this.receiveData.slot; - var slot = (parseInt(_slot)+90).toString(16).padStart(2,'0'); + var slot = (parseInt(_slot) + 90).toString(16).padStart(2, '0'); var _name = this.receiveData.name; - if(data.length >0){ - var framelength = data.length.toString(16).padStart(2,'0'); - var cmd_header = ">mh"+slot+_name+'00000000000'+framelength; + if (data.length > 0) { + var framelength = data.length.toString(16).padStart(2, '0'); + var cmd_header = ">mh" + slot + _name + '00000000000' + framelength; this.sendBuffer.push(cmd_header); //this.sp.write(Buffer.from(cmd_header)); - for(var i of data){ + for (var i of data) { var msg = ""; - for(var key in i.data){ + for (var key in i.data) { var angle = parseInt(i.data[key].angle); angle *= 10; - if(angle<0){ - angle = 4096+angle; - msg += "f"+angle.toString(16).padStart(3,'0'); + if (angle < 0) { + angle = 4096 + angle; + msg += "f" + angle.toString(16).padStart(3, '0'); } - else{ - msg += "0"+angle.toString(16).padStart(3,'0'); + else { + msg += "0" + angle.toString(16).padStart(3, '0'); } - if(key == 8 || key == 17){ + if (key == 8 || key == 17) { msg += "000000000000"; } } - var time = parseInt(i.time).toString(16).padStart(4,'0'); - frame = _frame.toString(16).padStart(2,'0'); - var cmd_frame = ">mf"+slot+frame+time+msg; + var time = parseInt(i.time).toString(16).padStart(4, '0'); + frame = _frame.toString(16).padStart(2, '0'); + var cmd_frame = ">mf" + slot + frame + time + msg; _frame++; this.sendBuffer.push(cmd_frame); //this.sp.write(Buffer.from(cmd_frame)); } - var cmd_hash = ">hs"+slot+this.receiveData.hash; + var cmd_hash = ">hs" + slot + this.receiveData.hash; this.sendBuffer.push(cmd_hash); return this.sendBuffer[0]; } - else{ + else { return; } } } this.receiveData = null; - + } - disconnect(connect){ + disconnect(connect) { var cmd = "^ce"; this.sp.write(Buffer.from(cmd)); - setTimeout(()=>{ + setTimeout(() => { connect.close(); - },500); + }, 500); this.isConnect = false; - } + } lostController() { } - reset(){ - console.log("reset"); + reset() { + //console.log("reset"); } - + } module.exports = new KKMOO(); From 537592503fd24de99bb2394347a4ee3cdc7538e8 Mon Sep 17 00:00:00 2001 From: Hyun Park Date: Wed, 22 Nov 2023 17:39:16 +0900 Subject: [PATCH 3/4] =?UTF-8?q?231122=5F=EB=8F=99=EC=9E=91=EA=B0=9C?= =?UTF-8?q?=EC=84=A0=20=EB=B0=8F=20=EB=B8=94=EB=9F=AD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/KKMOO.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/modules/KKMOO.js b/app/modules/KKMOO.js index bd29bb856..a3388ed7d 100644 --- a/app/modules/KKMOO.js +++ b/app/modules/KKMOO.js @@ -57,15 +57,15 @@ class KKMOO extends BaseModule { } handleLocalData(data) { const received = data.toString("ascii"); - if (received.includes("entry:")) { - if (received.includes("true")) { - this.isPlaying = "true"; + if (received.includes('entry:')) { + if (received.includes('true')) { + this.isPlaying = 'true'; } else { - this.isPlaying = "false"; + this.isPlaying = 'false'; } } - if (received.includes("ATfinRobot")) { + if (received.includes('ATfinRobot')) { //console.log("ATfinRobot"); this.buffercnt++; if (this.sendBuffer[this.buffercnt] != null) { @@ -74,7 +74,7 @@ class KKMOO extends BaseModule { } } requestRemoteData(handler) { - handler.write("data", this.isPlaying); + handler.write('data', this.isPlaying); } // 엔트리에서 받은 데이터에 대한 처리 @@ -110,9 +110,9 @@ class KKMOO extends BaseModule { if (angle < 0) { angle = 4096 + angle; } - motnum = motnum.toString(16).padStart(2, '0') + motnum = motnum.toString(16).padStart(2, '0'); msg += motnum; - angle = angle.toString(16).padStart(3, '0') + angle = angle.toString(16).padStart(3, '0'); msg += angle; var cmd = "^AN" + msg; From 6f42497b0ad804b041f36a5a8247171114cb0951 Mon Sep 17 00:00:00 2001 From: Hyun Park Date: Thu, 23 Nov 2023 10:24:05 +0900 Subject: [PATCH 4/4] =?UTF-8?q?231122=5F=EB=8F=99=EC=9E=91=EA=B0=9C?= =?UTF-8?q?=EC=84=A0=20=EB=B0=8F=20=EB=B8=94=EB=9F=AD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/KKMOO.js | 193 ++++++++++++++++++++++--------------------- 1 file changed, 97 insertions(+), 96 deletions(-) diff --git a/app/modules/KKMOO.js b/app/modules/KKMOO.js index a3388ed7d..d42a6131a 100644 --- a/app/modules/KKMOO.js +++ b/app/modules/KKMOO.js @@ -6,13 +6,13 @@ class KKMOO extends BaseModule { constructor() { super(); - this.sendToEntry = ""; + this.sendToEntry = ''; this.receiveData; this.isReceived = false; this.isReceived_old = false; this.isPlaying = false; this.isPlaying_old = false; - this.cmdProc = ""; + this.cmdProc = ''; this.sendBuffer = []; this.buffercnt = 0; @@ -44,7 +44,7 @@ class KKMOO extends BaseModule { if (!this.sp) { this.sp = sp; } - const initTX = Buffer.from("^ET"); + const initTX = Buffer.from('^ET'); sp.write(initTX); } return null; @@ -56,12 +56,11 @@ class KKMOO extends BaseModule { return true; } handleLocalData(data) { - const received = data.toString("ascii"); + const received = data.toString('ascii'); if (received.includes('entry:')) { if (received.includes('true')) { this.isPlaying = 'true'; - } - else { + } else { this.isPlaying = 'false'; } } @@ -81,8 +80,7 @@ class KKMOO extends BaseModule { handleRemoteData(handler) { if (Object.keys(handler.read('msg')).length === 0) { this.isReceived = false; - } - else { + } else { this.isReceived = true; } if (this.isReceived != this.isReceived_old && this.isReceived == true) { @@ -96,16 +94,16 @@ class KKMOO extends BaseModule { if (this.received) { this.received = false; switch (this.receiveData.prot) { - case "RT": - var data = this.receiveData; + case 'RT': { this.isReceived = false; this.isReceived_old = false; return; - case "EC": - var msg = ""; - var data = this.receiveData.data; - var motnum = parseInt(data.MOT); - var angle = parseInt(data.ANG); + } + case 'EC': { + let msg = ''; + const data = this.receiveData.data; + let motnum = parseInt(data.MOT, 10); + let angle = parseInt(data.ANG, 10); angle *= 10; if (angle < 0) { angle = 4096 + angle; @@ -115,31 +113,38 @@ class KKMOO extends BaseModule { angle = angle.toString(16).padStart(3, '0'); msg += angle; - var cmd = "^AN" + msg; + const cmd = `^AN${msg}`; //this.sp.write(Buffer.from(cmd)); //console.log(cmd); return cmd; - case "IR": - var cmd = "^ir" + } + + case 'IR': { + const cmd = '^ir'; return cmd; - case "PM": - var msg = ""; - var slot = parseInt(this.receiveData.data); + } + + case 'PM': { + let msg = ''; + const slot = parseInt(this.receiveData.data, 10); msg = slot.toString(16).padStart(2, '0'); - var cmd = "$PM" + msg; + const cmd = `$PM${msg}`; return cmd; - case "CM": - var msg = ""; - var slot = parseInt(this.receiveData.data) + 90; + } + case 'CM': { + let msg = ''; + const slot = parseInt(this.receiveData.data, 10) + 90; msg = slot.toString(16).padStart(2, '0'); - var cmd = "$PM" + msg; + const cmd = `$PM${msg}`; return cmd; - case "AD": - var msg = ""; - var data = this.receiveData.data; - var motnum = parseInt(data.MOT); - var angle = parseInt(data.ANG); - var time = parseInt(data.TME); + } + + case 'AD': { + let msg = ''; + const data = this.receiveData.data; + let motnum = parseInt(data.MOT, 10); + let angle = parseInt(data.ANG, 10); + let time = parseInt(data.TME, 10); angle *= 10; if (angle < 0) { angle = 4096 + angle; @@ -150,57 +155,57 @@ class KKMOO extends BaseModule { msg += angle; time = time.toString(16).padStart(4, '0'); msg += time; - var cmd = "^ad" + msg; + const cmd = `^ad${msg}`; return cmd; - case "MP": - var msg = "00"; - var data = this.receiveData.data; - var time = parseInt(data.pop()); - for (var i of data) { - var angle = parseInt(i.ANG); + } + case 'MP': { + let msg = '00'; + const data = this.receiveData.data; + const time = parseInt(data.pop(), 10); + for (const i of data) { + let angle = parseInt(i.ANG, 10); angle *= 10; if (angle < 0) { angle = 4096 + angle; - msg += "f" + angle.toString(16).padStart(3, '0'); - } - else { - msg += "0" + angle.toString(16).padStart(3, '0'); + msg += `f${angle.toString(16).padStart(3, '0')}`; + } else { + msg += `0${angle.toString(16).padStart(3, '0')}`; } if (i.MOT == 8 || i.MOT == 17) { - msg += "000000000000"; + msg += '000000000000'; } } - var cmd = "*mf" + msg; + let cmd = `*mf${msg}`; this.sp.write(Buffer.from(cmd)); - this.sp.write("*mt00" + Buffer.from(time.toString(16).padStart(4, '0'))); - var cmd = "*pm01" + this.sp.write(`*mt00${Buffer.from(time.toString(16).padStart(4, '0'))}`); + cmd = '*pm01'; return cmd; - case "PT": + } + case 'PT': { this.buffercnt = 0; this.sendBuffer = []; - var frame = 0; - var data = this.receiveData.data; - for (var i of data) { - var msg = ""; - for (var key in i.data) { - var angle = parseInt(i.data[key].angle); + let frame = 0; + const data = this.receiveData.data; + for (const i of data) { + let msg = ''; + for (const key in i.data) { + let angle = parseInt(i.data[key].angle, 10); angle *= 10; if (angle < 0) { angle = 4096 + angle; - msg += "f" + angle.toString(16).padStart(3, '0'); - } - else { - msg += "0" + angle.toString(16).padStart(3, '0'); + msg += `f${angle.toString(16).padStart(3, '0')}`; + } else { + msg += `0${angle.toString(16).padStart(3, '0')}`; } if (key == 8 || key == 17) { - msg += "000000000000"; + msg += '000000000000'; } } - msg = "*mf" + frame.toString(16).padStart(2, '0') + msg; - var cmd_msg = msg; - var time = parseInt(i.time); - var cmd_time = "*mt" + frame.toString(16).padStart(2, '0') + Buffer.from(time.toString(16).padStart(4, '0')); + msg = `*mf${frame.toString(16).padStart(2, '0')}${msg}`; + const cmd_msg = msg; + const time = parseInt(i.time, 10); + const cmd_time = `*mt${frame.toString(16).padStart(2, '0')}${Buffer.from(time.toString(16).padStart(4, '0'))}`; frame++; this.sendBuffer.push(cmd_msg); this.sendBuffer.push(cmd_time); @@ -211,69 +216,66 @@ class KKMOO extends BaseModule { //console.log(cmd_time); } if (frame > 0) { - var pm = "*pm" + frame.toString(16).padStart(2, '0'); + const pm = `*pm${frame.toString(16).padStart(2, '0')}`; this.sendBuffer.push(pm); - var _this = this; - for (let i in this.sendBuffer) { + const _this = this; + for (const i in this.sendBuffer) { setTimeout(() => - _this.sp.write(Buffer.from(_this.sendBuffer[i])) - , 20 * i); + _this.sp.write(Buffer.from(_this.sendBuffer[i])), 20 * i); } return; - } - else { + } else { return; } - case "SV": + } + case 'SV': { this.buffercnt = 0; this.sendBuffer = []; - var _frame = 0; - var data = this.receiveData.data; - var _slot = this.receiveData.slot; - var slot = (parseInt(_slot) + 90).toString(16).padStart(2, '0'); - var _name = this.receiveData.name; + let _frame = 0; + const data = this.receiveData.data; + const _slot = this.receiveData.slot; + const slot = (parseInt(_slot, 10) + 90).toString(16).padStart(2, '0'); + const _name = this.receiveData.name; if (data.length > 0) { - var framelength = data.length.toString(16).padStart(2, '0'); - var cmd_header = ">mh" + slot + _name + '00000000000' + framelength; + const framelength = data.length.toString(16).padStart(2, '0'); + const cmd_header = `>mh${slot}${_name}00000000000${framelength}`; this.sendBuffer.push(cmd_header); //this.sp.write(Buffer.from(cmd_header)); - for (var i of data) { - var msg = ""; - for (var key in i.data) { - var angle = parseInt(i.data[key].angle); + for (const i of data) { + let msg = ''; + for (const key in i.data) { + let angle = parseInt(i.data[key].angle, 10); angle *= 10; if (angle < 0) { angle = 4096 + angle; - msg += "f" + angle.toString(16).padStart(3, '0'); - } - else { - msg += "0" + angle.toString(16).padStart(3, '0'); + msg += `f${angle.toString(16).padStart(3, '0')}`; + } else { + msg += `0${angle.toString(16).padStart(3, '0')}`; } if (key == 8 || key == 17) { - msg += "000000000000"; + msg += '000000000000'; } } - var time = parseInt(i.time).toString(16).padStart(4, '0'); - frame = _frame.toString(16).padStart(2, '0'); - var cmd_frame = ">mf" + slot + frame + time + msg; + const time = parseInt(i.time, 10).toString(16).padStart(4, '0'); + const frame = _frame.toString(16).padStart(2, '0'); + const cmd_frame = `>mf${slot}${frame}${time}${msg}`; _frame++; this.sendBuffer.push(cmd_frame); //this.sp.write(Buffer.from(cmd_frame)); } - var cmd_hash = ">hs" + slot + this.receiveData.hash; + const cmd_hash = `>hs${slot}${this.receiveData.hash}`; this.sendBuffer.push(cmd_hash); return this.sendBuffer[0]; - } - else { + } else { return; } + } } } this.receiveData = null; - } disconnect(connect) { - var cmd = "^ce"; + const cmd = '^ce'; this.sp.write(Buffer.from(cmd)); setTimeout(() => { connect.close(); @@ -285,6 +287,5 @@ class KKMOO extends BaseModule { reset() { //console.log("reset"); } - } module.exports = new KKMOO();