目的シリアルポートは、ホストコンピュータとさまざまな回路モジュール間の通信によく使用されます。Node.js でシリアルポートを操作するには、SerialPort モジュールを使用できます。この記事では、その使い方について簡単に説明します。 公式サイト: https://serialport.io/ 現在のSerialPortモジュールのバージョンは9.2.7です モジュールのインストールSerialPort モジュールをインストールするには、次のコマンドを使用します。 npm シリアルポートをインストール SerialPort モジュール関数の一部は C/C++ で実装されているため、異なるプラットフォームでは、そのプラットフォームで実行するためのバイナリ ファイルが必要になります。一般的なプラットフォームでは、通常、事前にコンパイルされたバイナリ ファイルがあります。そうでない場合は、通常は node-gyp (Python 3.x に依存) を使用してコンパイルを試みます。通常、パッケージ マネージャーは関連する事項を自動的に処理します。 場合によっては、または一部のプラットフォームでは、手動でのコンパイルが必要になることがあります。コンパイルには、プラットフォーム上の対応するコンパイル ツールが必要です。記事「Node.js 入門 02: パッケージ マネージャー npm」のモジュール コンパイルの章を参照してください。 コンパイル ツールをインストールした後、SerialPort モジュールを再インストールするか、手動でコンパイルすることができます。詳細については、SerialPort モジュールのドキュメントの「SerialPort のインストール」セクションを参照してください: https://serialport.io/docs/guide-installation/ 基本的な使い方SerialPort モジュールをインストールしたら、 ポートをスキャンする次のデモのように 定数 SerialPort = require('serialport'); SerialPort.list().then((ポート) => { console.log(ports); // シリアルポートリストを出力します }).catch((err) => { コンソールログ(エラー); }); このリストには同じポートが繰り返し表示される場合があることに注意してください。 上記のメソッドを async / await を使用して使用することもできます。 定数 SerialPort = require('serialport'); (非同期() => { 試す { ポートを待機します。SerialPort.list(); console.log(ports); // シリアルポートリストを出力 } catch (error) { コンソール.log(エラー); } })(); 開いているポートデフォルトでは、SerialPort オブジェクトを作成すると、次のようにポートが開きます。 定数 SerialPort = require('serialport'); const port = new SerialPort('COM6', (err) => { もし(エラー){ console.log('ポートのオープンに失敗しました!'); 戻る; } console.log('ポートが正常に開かれました!'); }); SerialPort クラスのコンストラクターには、オブジェクトの作成時にポートが自動的に開かれるかどうかを制御する autoOpen オプションがあります。デフォルトではポートが自動的に開かれますが、後で手動でポートを開くことができるようにオフにすることもできます。 定数 SerialPort = require('serialport'); const port = new SerialPort('COM6', { autoOpen: false }); ポート.open(関数(エラー) { もし(エラー){ console.log('ポートのオープンに失敗しました!'); 戻る; } console.log('ポートが正常に開かれました!'); }); SerialPort クラスのコンストラクターでは、baudRate オプションを使用してシリアル ポート通信のボー レートを設定できます。デフォルトは 9600 です。 定数 SerialPort = require('serialport'); const port = new SerialPort('COM6', { baudRate: 115200 }); // ボーレートを115200に設定する 詳細については、SerialPort クラスの構築方法に関する次のセクションを参照してください。 データの送信SerialPort オブジェクトの 定数 SerialPort = require('serialport'); const ポート = 新しい SerialPort('COM6'); port.write('Hello world!\n'); // 文字列を送信 port.write(Buffer.from('Hey!\n')); // バッファー データを送信 port.write(new Uint8Array([0x48, 0x69, 0x21, 0x0A])); // バイト配列を送信 定数 SerialPort = require('serialport'); const ポート = 新しい SerialPort('COM6'); port.write('Hello world!\n', (err) => { もし(エラー){ console.log('書き込み操作に失敗しました!'); 戻る; } console.log('書き込み操作が成功しました!'); }); 上記のコールバック関数が異常でない状態でトリガーされた場合、それは 定数 SerialPort = require('serialport'); const ポート = 新しい SerialPort('COM6'); port.write('こんにちは世界!\n'); ポート.drain(err => { (エラー) の場合、戻ります。 console.log('送信が完了しました!'); }); データの受信データを受信するには、次の方法を使用できます。 定数 SerialPort = require('serialport'); const ポート = 新しい SerialPort('COM6'); // 一時停止モードで受信データをリッスンし、アクティブにデータを読み取ります port.on('readable', () => { console.log(port.read()); // データを読み込むには read メソッドを使用します。読み込むバイト数を指定できます}); // フローモードで受信したデータをリッスンする port.on('data', (data) => { コンソールにログ出力します。 }); 上記の方法に加えて、 エラー処理SerialPort オブジェクトのほとんどの操作にはコールバック関数があり、コールバック関数の最初のパラメーターは例外オブジェクトです。さらに、エラー イベントを使用して例外を均一に処理することもできます。 定数 SerialPort = require('serialport'); const ポート = 新しい SerialPort('COM6'); ポート.on('エラー', err => { コンソールログ(エラー); }); データパーサーSerialPort モジュールには、受信したシリアル ポート データの一般的な形式を処理するために主に使用されるいくつかのデータ パーサーが用意されています。提供される主な機能は次のとおりです。 バイト長パーサー 定数 SerialPort = require('serialport'); const ポート = 新しい SerialPort('COM6'); 定数 ByteLength = require('@serialport/parser-byte-length'); const parser = port.pipe(new ByteLength({ length: 8 })); // トリガー parser.on('data', chunk => { console.log(chunk); // 受信したデータを出力します }); ccTalk パーサー 区切り文字パーサー 定数 SerialPort = require('serialport'); const ポート = 新しい SerialPort('COM6'); const デリミタ = require('@serialport/parser-delimiter'); const parser = port.pipe(new Delimiter({ delimiter: '\n' })); // \n で区切られたデータを処理します parser.on('data', chunk => { console.log(chunk.toString()); // 受信したデータを出力します }); 区切り文字オプションは、string|Buffer|number[] にすることができます。includeDelimiter オプションは、区切り文字がデータに含まれるかどうかを示します。デフォルトでは区切り文字は含まれません。 InterByteTimeout パーサー 定数 SerialPort = require('serialport'); const ポート = 新しい SerialPort('COM6'); const InterByteTimeout = require('@serialport/parser-inter-byte-timeout'); const parser = port.pipe(new InterByteTimeout({interval: 2000})); // 2000ミリ秒間データが受信されないと parser.on('data', chunk => { console.log(chunk); // 受信したデータを出力します }); maxBufferSize オプションは、タイムアウトがない場合でも、この量のデータを受信した後にアクションがトリガーされることを指定するために使用されます。 Readline パーサー 準備完了パーサー 正規表現パーサー SerialPort クラスSerialPort モジュールの主な用途は、SerialPort モジュール ドキュメントのストリーム インターフェイスの章で紹介されている SerialPort クラスを使用することです: https://serialport.io/docs/api-stream。ここでは、その内容の一部を簡単に抜粋します。 施工方法
コンストラクターはシリアル ポート オブジェクトを作成するために使用され、path はシリアル ポート番号、openCallback は自動オープンが失敗した場合のコールバック関数です。 openOptions の一般的なオプションは次のとおりです。
財産SerialPort には、読み取るための次のプロパティがあります。 イベントSerialPort によってトリガーされるイベントは次のとおりです。
方法SerialPort で使用できるメソッドの一部を以下に示します。
コマンドラインツールSerialPort モジュールは、コマンド ライン インターフェイスで直接使用できるコマンド ライン ツールもいくつか提供します。以下は、公式サイトのホームページの使用例です。 詳細については、SerialPort モジュールのドキュメントの「コマンドライン ツール」セクションを参照してください: https://serialport.io/docs/guide-cli 要約するNode.js の SerialPort モジュールの主な使用方法は上記の内容になります。 もう一つの注目すべき点は、SerialPort モジュールはシリアル ポートを直接操作するのではなく、各プラットフォームの基盤となるインターフェイスを呼び出してシリアル ポートを使用するということです。関連コンテンツを開発している場合や特別なニーズがある場合は、SerialPort モジュール ドキュメントの Binding 関連コンテンツを参照してください。 Node.js での SerialPort (シリアルポート) モジュールの使用に関するこの記事はこれで終わりです。Node.js SerialPort に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: CSSは指定された長さの文字列を自動的にインターセプトし、末尾を表示します...FFブラウザをサポート
1. vue-cliをインストールする vue.js で vue.js を実行します。 2. プロジ...
最近、ポップアップ広告に取り組んでいました。デフォルト ページには z-index が設定されていな...
各 Web ページには、URL () で識別されるアドレスがあります。通常、Web サイト内でリンク...
Reactのdiffアルゴリズムの理解diffアルゴリズムは、 Virtual DOMの変更された部...
目次1. Windows システムでの Nginx のインストールと起動プロセス: 2. 起動時にN...
今日、CentOS6.2 をインストールしていたところ、ハード ドライブの検出段階を通過できませんで...
今日ふと、HTML でチェックボックスのスタイルを変更できる範囲が限られていることと、チェックボック...
このセクションから、http モジュールの実装原理について説明します。http モジュールで非常に重...
目次アポロ コンフィギュレーション センターとは何ですか?アポロの特徴クライアントアーキテクチャアー...
一時テーブルの概要一時テーブルとは: MySQL は中間結果セットを保存するために使用されます。一時...
Nginx 502 Bad Gateway エラーに何度か遭遇しました。ここでメモしておこうと思いま...
IntelliJ IDEA が Tomcat を使用して Javaweb プロジェクトをデプロイし...
DockerイメージからDockerfileを取得する docker 履歴 --format {{....
ここ数日、ウェブサイトを初めて開いたときにアクセスが非常に遅いのですが、その後はページが正常に開きま...
新しいバージョンの設定インターフェースを作る際に、vueフレームワークを使用して実装しました。ページ...