目的シリアルポートは、ホストコンピュータとさまざまな回路モジュール間の通信によく使用されます。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ブラウザをサポート
目次JavaScriptでは、 forループを記述する一般的な方法がいくつかあります。最初の、そして...
key_lenの意味MySQL では、次に示すように、explain を使用して SQL ステートメ...
1.ページを XML タイプとして宣言しないでください。ページでは UTF-8 または UTF-16...
目次1. 初心者が陥りがちな間違い2. Iteratorのremove()メソッドを使用する3. f...
目次前面に書かれた1. Ngixnイメージの作成2. Java Web (Tomcat) アプリケー...
この記事では、例を使用して、MySQL ストアド プロシージャでのループ ステートメント (WHIL...
1. サーバー環境の構成: 1. ディスクパーティションを確認します。最近、あるプロジェクト内のサー...
King of Glory をプレイしたことがある人なら、このページの効果をよくご存知でしょう。なぜ...
例: mysqldump –all-databases を使用すると、すべてのライブラリがエクスポー...
序文この記事では、Windows で Mysql をバックアップするための簡単な BAT スクリプト...
目次01 問題の説明02 ソリューション1. 他のスレーブライブラリを見つけてすぐに置き換える2. ...
目次インストールパッケージのダウンロードインストール環境変数の設定インストールが成功したか確認する記...
以下のように表示されます。名前説明する文字可変(n)、varchar(n)長さ制限あり、可変長文字(...
1. インデックスとは何ですか?インデックスは、ストレージ エンジンがレコードをすばやく検索するため...
導入GitLab CE または Community Edition は、主に Git リポジトリのホ...