クリストフは正しいですが、もう少し詳しく説明します。
RS232 で通信する場合、PC と外部デバイスの 2 つのエンドポイントしかありません。コマンドを送信することでデバイスと通信します。単純な ASCII テキストまたはバイナリ/16 進コードの場合があります。2 つのデバイス間で通信する方法はプロトコルとして知られています。デバイスと「通信」できるようにするには、アプリケーションでこのプロトコルを実装する必要があります。
RS485 は、PC に接続されている同じシリアル ポートで複数のデバイスをデイジー チェーンできるという点で、RS232 とは異なります。デバイスによっては、学習して慣れる必要があることを理解する独自のプロトコルがあります。これは、接続するデバイスに付属している必要があります。
通常、プロトコルには (少なくとも) 次の情報が含まれます。
- デバイスアドレス - これを使用して、どのデバイスと話したいかを識別します。通常、ハードウェアのトグルスイッチなどで設定できます
- コマンド - ユニットに送信する実際のコマンド
- データ - 特定のコマンドに渡す必要がある追加データ
したがって、ユニットに送信するコマンドの例は次のようになります (これは単なる例であることに注意してください)。
$01FF9A
どこ:
01
はモジュールまたはデバイスの一意のアドレス
FF
です コマンドの種類
9A
はデータです
ここでは、デバイスアドレス01
を持つモジュールがコマンドを読み取り、「あなたが私に話しかけている」と推測し、コマンド情報を処理します。他のすべてのデバイスもデータを受信しますが、それ自体が宛先ではないことに気付きます。
通常、RS485 デバイスは 16 進数データを使用して通信するため、アプリケーションは 16 進数コマンドを外部デバイスに送信し、関連する応答などのために から への変換を処理する必要がありSerial.Write(byte[], int,int)
ます。
.NET シリアル ポート クラスの詳細については、http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspxを参照してください。