Private Sub received(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived Console.WriteLine("データ受信") Console.Write(SerialPort1.ReadChar().ToString()) End Sub
のように書いてみましたが、相手側のハイパーターミナルからキーをタイプしてもまったく反応しません。
次にタイマーを使い、1秒間隔でSerialPortの状態をスキャンするようにしてみました。 Private Sub ticked(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 'Console.Write("タイマーイベント")
If SerialPort1.IsOpen() Then Console.Write(Convert.ToString(SerialPort1.BytesToRead())) Console.Write(SerialPort1.ReadExisting().ToString) End If
分類:[.NET]
はじめまして。最近Visual BASIC 2008 Express Editionを使い始めました。
VB初心者です。
さて、質問はシリアル通信に関してです。
PC2台をクロスケーブルで繋ぎ、一方のPCにハイパーターミナルを立ち上げておいてプログラムをテストしています。
テストの結果、送信の方はうまくいくのですが、受信が反応しません。
最初、SerialPortのDataReceivedイベントハンドラーを
Private Sub received(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Console.WriteLine("データ受信")
Console.Write(SerialPort1.ReadChar().ToString())
End Sub
のように書いてみましたが、相手側のハイパーターミナルからキーをタイプしてもまったく反応しません。
次にタイマーを使い、1秒間隔でSerialPortの状態をスキャンするようにしてみました。
Private Sub ticked(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'Console.Write("タイマーイベント")
If SerialPort1.IsOpen() Then
Console.Write(Convert.ToString(SerialPort1.BytesToRead()))
Console.Write(SerialPort1.ReadExisting().ToString)
End If
End Sub
この場合相手側からキーをタイプしてもずっと0が出力されます。
ちなみにSerialPortのプロパティはデフォルトのままで行っています。
何か情報をお持ちの方がおられましたら、ご教授のほどよろしくお願いいたします。