シリアル/RS232を介してLinuxホストにメッセージを送信するための一般的な「標準」はありますか?

シリアル/RS232を介してLinuxホストにメッセージを送信するための一般的な「標準」はありますか?

いくつかのタスクを実行し、結果をシリアルポートを介してLinuxを実行しているコンピュータに送信するArduinoプロジェクトがあります。これは9600ボードのRS232接続で、9ピンCOMポートに接続するか、USB / RS232アダプタを使用します(とにかく同じです)。

今すぐ利用可能ですミニコンピュータ/dev/ttyS0から直接読むことができますが、独自のソリューションを構築する前に、ある種の普遍的な標準がすでに存在しているかどうかを知りたいです。常識的には、*NIXの何十年もの間、誰かが何かを構築したことは間違いありません。しかし、これまで私が見つけたのは、ほとんどの場合、ATコマンドセットを手動で読み取ったり使用したりすることですが、これには実際には適用されません。

「RS232のシステムログ」のようなものです。私のデータ構造は柔軟であり、いくつかの標準メカニズムを使用すると、他のツールもここにリンクできます。すでに標準ソフトウェアがあり、データの最終消費者がどの標準場所でもそれを取得できる場合は、受信ソフトウェアを直接構築したくありません。

追加:データ自体は本質的にセンサーデータです(いくつかの温度センサーが接続されており、機能をオンまたはオフにするためのいくつかのボタンがあります)。結局、一部のデータで送るつもりです。オープンインジケーター形式 - しかし、私が言ったように、私は非常に柔軟で、中間標準形式(可能な限り読める形式)を使用してArduino> RS232> Linux> MyOwnConverter> EventualConsumerを実行できます。 Linux側は、受信と保存だけで実際のカスタムツールが処理を処理します。私は可能であれば、「受信と保存」部分を既存のツールで処理することを好みます。

答え1

私はLinuxの詳細を知りません。センサーデータエンジニアリングのより一般的な標準の1つは次のとおりです。モードバス

Linuxにはいくつかの便利なテストツールがあります(例:https://github.com/epsilonrt/mbpoll)そして、独自のModbusメインプログラムを書くために使用できる多くの標準ライブラリがあります。したがって、希望の言語で利用できる必要があります。

最終的には、これは独自のソフトウェアを書くことを好むという意味かもしれませんが、少なくともいくつかの構造を提供します。


Modbusは要求/応答プロトコルです。通常、ホストをマスターに設定し、センサー(Arduino)をスレーブに設定します。これは、Arduinoが継続的にデータを転送するのではなく、Arduinoを継続的にポーリングすることを意味します。

Modbusはレジスタの概念を中心に書かれています。レジスタ値を要求し、値を設定する構造を提供します。したがって、センサーハードウェアは通常、各値(たとえば、電圧、電流、AC周波数)を異なるレジスタに持ちます。これは、命令の発行がレジスタ設定の面で構造化されるのと同じです。

私が見たところ、通常は浮動小数点レジスタと整数レジスタが混在しており、複数のレジスタにわたって単一の値(64ビット値など)があります。

答え2

ペルマタ別のオプションです。これを処理できるライブラリがあります。多くのプログラミング言語

Firmata ライブラリは、ホスト上のソフトウェアと通信するために Firmata プロトコルを実装します。これにより、使用中のプログラミング環境用の独自のプロトコルとオブジェクトを作成せずにカスタムファームウェアを作成できます。

センサーを読み、デバイスに出力を書き込むだけでなく、ポーリングすることもできます。

たとえば、Python では以下を使用します。この図書館:

DIGITAL13のLEDを消してください。

board.digital[13].write(0)

シミュレーション入力を読む(反復器について):

board.analog[0].enable_reporting()
board.analog[0].read()

Arduinoでは、StandardFirmdataをアップロードし、スケッチなしですぐに作業を開始できます。

関連情報