VBでCom通信を行い、受信データを判定して、TextBoxの色を変える等を行いたく、ネットにあったプログラムを参考に変更したのですが、判定が不一致のみで一致しません。
以下のリストですが、どのように変更したら、正しく判定できるのでしょうか?
できれば、簡単なリストの解説も含めてお願いします。
また、もっと簡単で分かりやすいものがあれば、紹介頂ければ嬉しいです。
以上、よろしくお願いします。

'****** 受信 ************************
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
'シリアルポートをオープンしていない場合、処理を行わない.
If SerialPort1.IsOpen = False Then
Return
End If
'エラー処理
Try
SetText(SerialPort1.ReadExisting())
Catch ex As Exception
btnClose_Click(Me, e)
End Try
End Sub

Private Sub SetText(ByVal [text] As String)
If txtDataReceived.InvokeRequired Then
Dim d As New SetTextCallback(AddressOf SetText)
Invoke(d, New Object() {[text]})

'++++++++ 追加した判定文 受信データでTextBox1の背景色を変える? ++++++++
If text = "abc" Then
TextBox1.BackColor = Color.Blue
Else
TextBox1.BackColor = Color.Red
End If

Else
txtDataReceived.AppendText(text)
End If
End Sub

質問者からの補足コメント

  • うーん・・・

    ご指摘の通り、赤に固定されているので、elseの方ばかりと判断しています。
    ①受信データはtextに入っていると考えていいのですよね?
    ②変数の内容を確認する具体的な方法を教えて下さい。一応、別な受信データTextBoxには、
     送信したデータが表示されています。
    以上、お願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/12/03 08:28

A 回答 (2件)

> ①受信データはtextに入っていると考えていいのですよね?



ひとまずは、そう考えていいですが、本当にそうなっているかは、御自身で確認してください。
「そうなっているはず」という思い込みは、デバッグ作業では厳禁です。

この変数textは、SetTextメソッドの仮引数です。
どこかで SetText(〜) という形で指定しているはずです。
この〜 が受信データでないのなら、そもそもの入口で間違っている、ということになります。

> ②変数の内容を確認する具体的な方法を教えて下さい。

http://www.atmarkit.co.jp/fdotnet/chushin/vsdebu …
VS2010用なので、細かい点では違うかもしれませんが、考え方は一緒です。

> 一応、別な受信データTextBoxには、送信したデータが表示されています。

それのどこからどこまでが、一回に受信したものか、区別できるようになっていますか?
そこに「abc」と表示されていたとしても
・「a」と「bc」の2回受信したものだった
・「abc(改行)」というに「改行文字」が付いたものだった
・前の行と同時に送られた「xyz(改行)abc」というものだった
等が考えられます。
いずれも "abc"とは一致しません。
    • good
    • 0
この回答へのお礼

textの中身をMsgBoxに表示して確認したら、「a」と「bc」のように分割で受信していました。
そこで、aだけとかで受信判定したら、OKになりました。ありがとうございます!

お礼日時:2017/12/03 16:25

不一致のみ、というのは



If text = "abc" Then
TextBox1.BackColor = Color.Blue
Else
TextBox1.BackColor = Color.Red
End If

で、 elseの方ばかりになる、ということですか?

そういうことなら、 text = "abc" が不成立ということですから、 変数text の内容を確認して、どうして一致しないのかを確認するしかありません。

・複数行読み出している
・改行文字などが含まれている
・途中から/途中まで読み込んでいる
あたりが考えられます
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報