欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node.js進(jìn)行串口通信的實(shí)現(xiàn)示例

 更新時(shí)間:2025年02月13日 09:33:06   作者:像素檢測(cè)儀  
本文主要介紹了Node.js進(jìn)行串口通信的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、 安裝 serialport 庫

首先,需要安裝 serialport 庫??梢酝ㄟ^ npm 安裝:

npm install serialport

二.、實(shí)現(xiàn)方法

1.打開串口并配置參數(shù)

創(chuàng)建一個(gè)串口對(duì)象并配置串口參數(shù),例如波特率、數(shù)據(jù)位、停止位和校驗(yàn)位等。

const SerialPort = require('serialport');

// 創(chuàng)建串口對(duì)象
const port = new SerialPort('/dev/tty-usbserial1', {
  baudRate: 9600, // 波特率
  dataBits: 8,    // 數(shù)據(jù)位
  parity: 'none', // 校驗(yàn)位
  stopBits: 1,    // 停止位
  autoOpen: false // 不自動(dòng)打開串口
});

// 打開串口
port.open((err) => {
  if (err) {
    console.error('Error opening port:', err.message);
    return;
  }
  console.log('Port opened successfully');
});

2. 向串口傳遞信息

使用 write 方法向串口發(fā)送數(shù)據(jù)。

// 向串口發(fā)送數(shù)據(jù)
port.write('Hello Serial Port', (err) => {
  if (err) {
    console.error('Error on write:', err.message);
    return;
  }
  console.log('Message written');
});

3. 接收串口信息

通過監(jiān)聽 data 事件來接收串口發(fā)送的數(shù)據(jù)。

// 監(jiān)聽數(shù)據(jù)事件
port.on('data', (data) => {
  console.log('Received data:', data.toString());
});

4. 處理錯(cuò)誤

監(jiān)聽 error 事件來處理串口通信中可能出現(xiàn)的錯(cuò)誤。

// 監(jiān)聽錯(cuò)誤事件
port.on('error', (err) => {
  console.error('Error:', err.message);
});

5. 關(guān)閉串口

在完成通信后,可以關(guān)閉串口以釋放資源。

// 關(guān)閉串口
setTimeout(() => {
  port.close((err) => {
    if (err) {
      console.error('Error closing port:', err.message);
      return;
    }
    console.log('Port closed successfully');
  });
}, 10000); // 10秒后關(guān)閉串口

6. 使用解析器

為了更好地處理接收到的數(shù)據(jù),可以使用解析器。例如,使用 @serialport/parser-inter-byte-timeout 解析器來處理分包問題。

const { InterByteTimeoutParser } = require('@serialport/parser-inter-byte-timeout');

const parser = port.pipe(new InterByteTimeoutParser({ interval: 300 }));

parser.on('data', (data) => {
  console.log('Received data:', data.toString());
});

7. 獲取串口列表

可以使用 SerialPort.list() 方法獲取當(dāng)前系統(tǒng)中可用的串口列表。

SerialPort.list().then((ports) => {
  ports.forEach((port) => {
    console.log('Available port:', port.path);
  });
});

三、 完整示例代碼

以下是一個(gè)完整的示例代碼,展示了如何在 Node.js 中打開串口、發(fā)送數(shù)據(jù)和接收數(shù)據(jù):

const SerialPort = require('serialport');
const { InterByteTimeoutParser } = require('@serialport/parser-inter-byte-timeout');

// 創(chuàng)建串口對(duì)象
const port = new SerialPort('/dev/tty-usbserial1', {
  baudRate: 9600,
  dataBits: 8,
  parity: 'none',
  stopBits: 1,
  autoOpen: false
});

// 打開串口
port.open((err) => {
  if (err) {
    console.error('Error opening port:', err.message);
    return;
  }
  console.log('Port opened successfully');

  // 創(chuàng)建解析器
  const parser = port.pipe(new InterByteTimeoutParser({ interval: 300 }));

  // 監(jiān)聽數(shù)據(jù)事件
  parser.on('data', (data) => {
    console.log('Received data:', data.toString());
  });

  // 監(jiān)聽錯(cuò)誤事件
  port.on('error', (err) => {
    console.error('Error:', err.message);
  });

  // 向串口發(fā)送數(shù)據(jù)
  port.write('Hello Serial Port', (err) => {
    if (err) {
      console.error('Error on write:', err.message);
      return;
    }
    console.log('Message written');
  });

  // 關(guān)閉串口
  setTimeout(() => {
    port.close((err) => {
      if (err) {
        console.error('Error closing port:', err.message);
        return;
      }
      console.log('Port closed successfully');
    });
  }, 10000); // 10秒后關(guān)閉串口
});

到此這篇關(guān)于Node.js進(jìn)行串口通信的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Node.js 串口通信內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 詳解Node.js中path模塊的resolve()和join()方法的區(qū)別

    詳解Node.js中path模塊的resolve()和join()方法的區(qū)別

    這篇文章主要介紹了詳解Node.js中path模塊的resolve()和join()方法的區(qū)別,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • node.js中的fs.readdirSync方法使用說明

    node.js中的fs.readdirSync方法使用說明

    這篇文章主要介紹了node.js中的fs.readdirSync方法使用說明,本文介紹了fs.readdirSync方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Node.js中同步和異步編程的區(qū)別及使用方法

    Node.js中同步和異步編程的區(qū)別及使用方法

    在Node.js中,同步和異步編程是兩種不同的處理方式。同步方式會(huì)阻塞程序的執(zhí)行,而異步方式則不會(huì)。通過掌握它們的區(qū)別和使用方法,可以更好地實(shí)現(xiàn)程序的性能優(yōu)化和功能擴(kuò)展。同時(shí),需要注意異步編程中的回調(diào)地獄問題,使用Promise可以更好地處理異步編程
    2023-05-05
  • VsCode與Node.js知識(shí)點(diǎn)詳解

    VsCode與Node.js知識(shí)點(diǎn)詳解

    在本篇文章中小編給大家分享了關(guān)于VsCode與Node.js的相關(guān)知識(shí)點(diǎn)以及安裝等內(nèi)容,需要的朋友們可以參考下。
    2019-09-09
  • 淺談Nodejs應(yīng)用主文件index.js

    淺談Nodejs應(yīng)用主文件index.js

    這篇文章主要介紹了淺談Nodejs應(yīng)用主文件index.js的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • 詳解node中創(chuàng)建服務(wù)進(jìn)程

    詳解node中創(chuàng)建服務(wù)進(jìn)程

    本篇文章主要介紹了詳解node中創(chuàng)建服務(wù)進(jìn)程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • 詳解nodejs的express如何自動(dòng)生成項(xiàng)目框架

    詳解nodejs的express如何自動(dòng)生成項(xiàng)目框架

    本篇文章主要介紹了nodejs的express如何自動(dòng)生成項(xiàng)目框架,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Pycharm配置Node.js運(yùn)行js代碼詳細(xì)過程

    Pycharm配置Node.js運(yùn)行js代碼詳細(xì)過程

    在PyCharm中寫JavaScript代碼并進(jìn)行調(diào)試是非常方便的,但是有些用戶可能對(duì)如何在PyCharm中準(zhǔn)確地運(yùn)行JavaScript代碼感到困惑,這篇文章主要給大家介紹了關(guān)于Pycharm配置Node.js運(yùn)行js代碼的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • NodeJs安裝npm包一直失敗的解決方法

    NodeJs安裝npm包一直失敗的解決方法

    本篇文章主要介紹了NodeJs安裝npm包一直失敗的解決方法。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-04-04
  • Nodejs實(shí)現(xiàn)批量下載妹紙圖

    Nodejs實(shí)現(xiàn)批量下載妹紙圖

    這篇文章主要介紹了使用Nodejs實(shí)現(xiàn)批量下載妹紙圖的方法和詳細(xì)代碼,十分的實(shí)用,喜歡妹紙的小伙伴們可以參考下。
    2015-05-05

最新評(píng)論