JY61P+GPS.JS 1.4 KB

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