- ベストアンサー
シリアル通信の方法(VB)
VisualBasicを使ってシリアル通信(受信のみ)を考えている初心者です。 現在、フォームのデザイナーからSerialportをドラッグしプロパティを設定しました。 コードでは、ポートを開き、受信の命令をしていますが ".readline"の文のところでフリーズしてしまいます。 ---------- SerialPort1.Open() Dim receivedata As String = "" receivedata = SerialPort1.Readline ---------- 原因がつかめず困っています。 何がいけないのでしょうか?詳しい方、是非ご教授お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
下記URLに詳しい使い方がのってます。 http://msdn.microsoft.com/ja-jp/library/system.io.ports.serialport.readline.aspx ドキュメントには下記の内容が記述されていますがReadTimeoutプロパティは設定されていますか? ※ReadTimeoutプロパティを設定していない場合は、入力を受け取るまで待っている状態になるという事です。 ------------------------------------------------- 既定では、ReadLine メソッドは行を受け取るまでブロックします。 この動作が不適切な場合は、ReadTimeout プロパティに 0 以外の値を設定して、ポート上に行が存在しない場合は ReadLine メソッドで強制的に TimeoutException がスローされるようにします。 ------------------------------------------------- データを受け取っている筈でしたら、他のプロパティ(ポーレートやスタートビット等)が異なっている為、正常に受信出来ていないだけだと思われます。
その他の回答 (1)
- Hayashi_Trek
- ベストアンサー率44% (366/818)
テキストデータとバイナリデータの区別がよくわかっていないようです。 RealLineメソッドはテキストデータを対象にしたメソッドなので、バイナリデータに対して使用した場合の動作は保障外です。 ReadメソッドまたはReadByteメソッドを使用してください。
補足
プロパティ等は正しいようです。 元々、シリアルからのデータ形式が数字や文字列では無いため ハイパーターミナルやTeraterm上では、めちゃめちゃではありますが、受信はできます。 めちゃめちゃな字では、受信できないのでしょうか? (受信しているデータの通信速度やスタートビット,電圧等はRS232C仕様です。)