シリアルポートとイーサネットを備えたコントローラーがあります。イベントと、このイベントに関連付けられたデータを、コントローラのシリアル ポートまたはイーサネット ポートを介してイベント ディレクトリから取得したいと考えています。指定したイベントを取得するためのパケット形式 (リクエスト パケット データ) があります。シリアルポート経由でリクエストを送信してデータを取得する方法を誰か教えてもらえますか? 私は初心者で、プログラミングにそれほど精通していません。
3 に答える
組み込みプラットフォームで何らかのプログラムを実行し、シリアル ポートをリッスンして要求に応答する必要があります。この種のプログラムは通常、「デーモン」と呼ばれます (「デーモン」と同じように発音されます。「シーザー」が「海の星」と韻を踏むように)。
デーモンが既にある場合は、デーモンが使用する形式を把握する必要があります。私はあなたが何を持っているのか分からないので、推測することさえできません.
独自のデーモンを作成する場合は、ある種のプロトコルを選択する必要があります。個人的には、シリアル プロトコルの JSON 形式が気に入っています。sscanf()
より良いライブラリが利用できない場合は、C ライブラリからを使用するだけでデータを抽出できるほど単純です。もちろん、 sprintf()
.
コントローラーは、すべてのデータ交換プロトコルをサポートする必要があります。この情報はドキュメントにあります。MODBUS または MODBUS TCP をサポートしている可能性があります。この場合、modbus と互換性のある任意のソフトウェアを使用できます。
必要なのは、POSIX オペレーティング システム用のシリアル プログラミング ガイドです。何らかの理由で Windows にバインドされている場合は、Cygwin をインストールすることで POSIX を取得できます。termios
やのようなマニュアルページに慣れることを期待してfcntl
ください。最初にシリアルポートパラメータをデバイスで動作するように設定する必要があるためです.ただし、それらはある程度標準の8-N-1になる可能性があります. 次に、ポートのファイル記述子へのバイトの読み取りと書き込みの問題です。低レベルopen()
の 、close()
、read()
、およびを使用している可能性が高く、これらは( 、、 )write()
より下のレベルであり、新しいプログラマとして慣れている可能性が高くなります。stdio
printf
fopen
stdout
最近のコンピュータには RS232 シリアル ポートがないことが多いため、必要な場合は安価な USB アダプタを見つけることができます。私の経験では、USB アダプターが必ずしも補助信号 (RTS、CTS など) の一部を実装しているとは限らないことに注意してください。
また、特定のニーズや状況に合わせてライブラリを調べてください。
より有用な回答を得るには、コントローラーを指定する必要があります。