|
|
@@ -0,0 +1,36 @@
|
|
|
+const { SerialPort } = require('serialport')
|
|
|
+const { ByteLengthParser } = require('@serialport/parser-byte-length')
|
|
|
+const port = new SerialPort({ path: 'COM5', baudRate: 115200 })
|
|
|
+const parser = port.pipe(new ByteLengthParser({ length: 12 }))
|
|
|
+
|
|
|
+
|
|
|
+// 切片
|
|
|
+
|
|
|
+const sliceTo55 = (buffer) => {
|
|
|
+ const num = buffer.indexOf(0x55)
|
|
|
+ if (num === 0) {
|
|
|
+ const newBuffer = buffer.slice(num, num + 11)
|
|
|
+ if (newBuffer[1] === 0x50) {
|
|
|
+ const time = `${newBuffer[2].toString()}年${newBuffer[3].toString()}月${newBuffer[4].toString()}日 ${newBuffer[5].toString()}:${newBuffer[6].toString()}:${newBuffer[7].toString()}`
|
|
|
+ console.log('时间', time);
|
|
|
+ } else if (newBuffer[1] === 0x58) {
|
|
|
+ const gps = `${((newBuffer[9] << 24) | (newBuffer[8] << 16) | (newBuffer[7] << 8) | (newBuffer[6])) / 1000}`
|
|
|
+ console.log('GPS地速', gps);
|
|
|
+ } else if (newBuffer[1] === 0x51) {
|
|
|
+ const C = `${(newBuffer[9] << 8 | newBuffer[8]) / 100}`
|
|
|
+ console.log('温度', C);
|
|
|
+ } else if (newBuffer[1] === 0x53) {
|
|
|
+ const P = `${(newBuffer[9] << 8 | newBuffer[8])}`
|
|
|
+ console.log('版本号', P);
|
|
|
+ } else if (newBuffer[1] === 0x53) {
|
|
|
+ const P = `${(newBuffer[9] << 8 | newBuffer[8])}`
|
|
|
+ console.log('版本号', P);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+parser.on('data', data => {
|
|
|
+ sliceTo55(data)
|
|
|
+})
|