C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: SerialPortコンポーネントを使ったRS232C通信


(過去ログ 101 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■60453 / inTopicNo.1)  SerialPortコンポーネントを使ったRS232C通信
  
□投稿者/ 超初心者 (3回)-(2011/07/04(Mon) 19:39:55)

分類:[.NET 全般] 

SerialPortコンポーネントを使ったRS232C通信で教えてください。

2台のPC(2台とも同じプログラム)で通信させた場合には問題なく動作したのですが、そのプログラムを使って、PCと機器(カメラコントローラ)で通信させようとすると、うまくいきません。
(もちろん、通信ケーブルはストレート→クロスに交換してます)

PC→機器への送信はできるのですが、PC←機器への受信ができません。
機器側から信号が出ているのは確認済です。
ブレークポイントを使って確認したのですが、下記
strDataReceived = SerialPort1.ReadLine
の所で、動作が止まっている感じです。

どこがおかしいのかご教授願えませんでしょうか?

===================


SerialPort1の主要プロパティ
(機器側も同様です)

BaudRate:115200
DataBits:8
Handshake:None
Parity:None
StopBits:One



受信関連コード

Delegate Sub AddDataDelegate(ByVal str As String)
    
    Private Sub AddData(ByVal str As String)
        TextBox3.Text = TextBox3.Text + str + Chr(13) + Chr(10)
       
    End Sub

    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        
        Dim strDataReceived As String
        Dim add As New AddDataDelegate(AddressOf AddData)
    
        Try
            strDataReceived = SerialPort1.ReadLine

        Catch ex As Exception
            strDataReceived = ex.Message
        End Try
        TextBox3.Invoke(add, strDataReceived)
        

    End Sub

引用返信 編集キー/
■60454 / inTopicNo.2)  Re[1]: SerialPortコンポーネントを使ったRS232C通信
□投稿者/ 超初心者 (4回)-(2011/07/04(Mon) 19:42:48)
すいません、環境はVB.NET/VB2005 以降です。
よろしくお願いします。
引用返信 編集キー/
■60457 / inTopicNo.3)  Re[2]: SerialPortコンポーネントを使ったRS232C通信
□投稿者/ オショウ (591回)-(2011/07/04(Mon) 21:09:39)
装置の方ですが、フロー制御はどうなっています?
ハードフローの場合、DTRやRTSの信号の処理はどうじゃっていますか?

また、ストレート・クロスに関わらず、全線結線ですか?
それとも最低必要な信号線のみでしょうか・・・

装置のマニュアルをご確認ください。

以上。
引用返信 編集キー/
■60458 / inTopicNo.4)  Re[1]: SerialPortコンポーネントを使ったRS232C通信
□投稿者/ 甕星 (2回)-(2011/07/04(Mon) 21:55:03)
NewLineまたはReadTimeoutプロパティが適切に設定されていない。
NewLineの設定や使用する文字コードが適切でないために、受診データの文字列の終端を認識できない。またはReadTimeを適切に設定していないために、受信待ちのままロックしているのではないかと。
引用返信 編集キー/
■60459 / inTopicNo.5)  Re[2]: SerialPortコンポーネントを使ったRS232C通信
□投稿者/ shu (824回)-(2011/07/05(Tue) 08:05:45)
No60454 (超初心者 さん) に返信

甕星さんの内容とかぶりますが、ReadLineで読みきれるデータが送信されてきていないのでは
ないでしょうか?ReadLineではなく他のRead系メソッドの使用も考えてみてはどうでしょう。
送信されてくるデータのフォーマット、手順をよく確認してみて下さい。
引用返信 編集キー/
■60478 / inTopicNo.6)  Re[1]: SerialPortコンポーネントを使ったRS232C通信
□投稿者/ 無明 (3回)-(2011/07/05(Tue) 11:41:47)
ReadLineはNewLineで設定した改行文字がバッファに格納されるまで受信待ちをします。

なのでこの場合NewLine値の設定が誤っている可能性があります。

NewLine値を機器のマニュアルを見て正しく設定するか、
値が判明しない場合はReadExistingを利用すると良いと思われます。

ReadExistingの注意すべき点は、
呼び出された時点でバッファに溜まっている内容を全て読み出すので、
データの着信に遅れが生じた場合、
バッファ内に読み出していないデータが残る場合があることです。

また一般的な機器との接続を行う場合、
コマンドなどをやり取りする場合にはエンコードにも注意が必要です。
引用返信 編集キー/
■60491 / inTopicNo.7)  Re[2]: SerialPortコンポーネントを使ったRS232C通信
□投稿者/ 超初心者 (5回)-(2011/07/05(Tue) 21:22:25)
皆様、ご教授ありがとうございました。
最終的に、newlineプロパティでフッター設定をすれば、正常に動作しました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -