nodejs调用SerialPort简单实例

// This file is required by the index.html file and will
// be executed in the renderer process for that window.
// All of the Node.js APIs are available in this process.

const { SerialPort } = require('serialport')
// let serialportgsm = require('serialport-gsm')

// const tableify = require('tableify')

// async function listSerialPorts() {
//   await SerialPort.list().then((ports, err) => {
//     if(err) {
//       document.getElementById('error').textContent = err.message
//       return
//     } else {
//       document.getElementById('error').textContent = ''
//     }
//     console.log('ports', ports);

//     if (ports.length === 0) {
//       document.getElementById('error').textContent = 'No ports discovered'
//     }

//     tableHTML = tableify(ports)
//     document.getElementById('ports').innerHTML = tableHTML
//   })
// }

// function listPorts() {
//   listSerialPorts();
//   setTimeout(listPorts, 2000);
// }

// // Set a timeout that will check for new serialPorts every 2 seconds.
// // This timeout reschedules itself.
// setTimeout(listPorts, 2000);

// listSerialPorts()

const allPorts = []

async function listPorts(){
  await SerialPort.list().then((ports, err) => {
    if(err){
      document.getElementById('error').textContent = err.message
      return
    }else{
      document.getElementById('error').textContent = ''
    }
    if (ports.length === 0){
      document.getElementById('error').textContent = 'No ports discovered'
      return
    }
    // ports.forEach(port => {
      // console.log(port.path)
      gsmPort = new SerialPort({
        path: "COM33",
        baudRate: 115200,
        autoOpen: false
      })
      gsmPort.open(function (err){
        if(err){
          console.log('打开端口失败:',err.message)
        }
      })
      gsmPort.write('at+cnmi?\r\n')
      gsmPort.on('readable', function () {
        console.log(gsmPort.path,' readable:', gsmPort.read())
      })
      let recedata = ''
      gsmPort.on('data', function (data) {
        const rece = data.toString()
        recedata += rece
        console.log('Data:', recedata)
      })
      gsmPort.on('open', function(){
        console.log('port opened');
      })
    });
  // })
}

function gsmread(){

}

document.getElementById('findCom').addEventListener('click', listPorts)

代码是在electron环境下执行的,所以有node代码,也有document DOM元素.

仅供参考,如有需要,私信联系。

xObP8s/gudi/zrPMoaJKU7K5u7e+s7/Os8yhokpBVkHP4LnYv86zzMjn0OjSqtKyv8nS1MGqz7VRUaGjDQoNCtf31d8gUVEgNDA0NTQwMjI5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liberty888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值