• ベストアンサー

シリアル通信の方法(VB)

VisualBasicを使ってシリアル通信(受信のみ)を考えている初心者です。 現在、フォームのデザイナーからSerialportをドラッグしプロパティを設定しました。 コードでは、ポートを開き、受信の命令をしていますが ".readline"の文のところでフリーズしてしまいます。 ---------- SerialPort1.Open() Dim receivedata As String = "" receivedata = SerialPort1.Readline ---------- 原因がつかめず困っています。 何がいけないのでしょうか?詳しい方、是非ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • YUI_AI
  • ベストアンサー率45% (303/661)
回答No.1

下記URLに詳しい使い方がのってます。 http://msdn.microsoft.com/ja-jp/library/system.io.ports.serialport.readline.aspx ドキュメントには下記の内容が記述されていますがReadTimeoutプロパティは設定されていますか? ※ReadTimeoutプロパティを設定していない場合は、入力を受け取るまで待っている状態になるという事です。 ------------------------------------------------- 既定では、ReadLine メソッドは行を受け取るまでブロックします。 この動作が不適切な場合は、ReadTimeout プロパティに 0 以外の値を設定して、ポート上に行が存在しない場合は ReadLine メソッドで強制的に TimeoutException がスローされるようにします。 ------------------------------------------------- データを受け取っている筈でしたら、他のプロパティ(ポーレートやスタートビット等)が異なっている為、正常に受信出来ていないだけだと思われます。

Macchomu
質問者

補足

プロパティ等は正しいようです。 元々、シリアルからのデータ形式が数字や文字列では無いため ハイパーターミナルやTeraterm上では、めちゃめちゃではありますが、受信はできます。 めちゃめちゃな字では、受信できないのでしょうか? (受信しているデータの通信速度やスタートビット,電圧等はRS232C仕様です。)

その他の回答 (1)

回答No.2

テキストデータとバイナリデータの区別がよくわかっていないようです。 RealLineメソッドはテキストデータを対象にしたメソッドなので、バイナリデータに対して使用した場合の動作は保障外です。 ReadメソッドまたはReadByteメソッドを使用してください。

関連するQ&A

専門家に質問してみよう