1


1

シリアル通信

シリアル通信を介してマトリックススイッチと通信する必要があるC#でアプリケーションを開発しています。

string value = "abc";
serialPort1.Open();
serialPort1.WriteTimeout = 500;
serialPort1.WriteLine(value);
serialPort1.Close();

マトリックスボックスの状態は、「WriteLine(value)」によって変化することになっています。

これが私の問題です。 文字列値を送信しても、マトリックスボックスの状態は変わりません。 ただし、Putty経由で(シリアル通信を介して)同じ文字列を送信すると、マトリックスボックスは正しく応答します。 すべてのシリアルプロパティは同一です(BaudRate、DataBits、PortNameなど)。

試してみるべき解決策は何ですか?

3 Answer


3


「SerialPort」を設定した場所にコードを投稿できますか? _all_プロパティが、マトリックススイッチが期待するとおりであることを確認する必要があります。 例えば:

// Setup port
SerialPort serialPort = new SerialPort();
serialPort.PortName = portName; //eg. COM1
serialPort.BaudRate = 9600;
serialPort.StopBits = StopBits.One;
serialPort.Parity = Parity.None;
serialPort.DataBits = 8;
serialPort.Handshake = Handshake.None;
serialPort.NewLine = "\r\n";
serialPort.ReadTimeout = 2000;
serialPort.WriteTimeout = 1000;

ポートで `Open()`を呼び出した後、 `serialPort.IsOpen`プロパティでオープンまたはクローズのステータスを確認できます。


2


PortMon http://technet.microsoft.com/en-us/sysinternals/bb896644.aspxをダウンロードし、Puttyを使用してシリアル通信を正常に実行し、PCとデバイス間のすべてのデータ交換を探ります。 次に、プログラムを実行し、交換ログを比較します。 これはあなたの答え、あなたのプログラムで何が間違っているかを与えるはずです。


1


シリアルポートのエンコードプロパティを確認します。 デフォルトはASCIIのようです。 あなたのデバイスはユニコードを期待しているのでしょうか?