【发布时间】:2015-08-08 01:44:40
【问题描述】:
我正在研究可以发送和接收某些命令的串行端口。我想实现一个重试功能,它允许我(客户端)重新发送数据,直到设备(服务器)收到并向我发送响应。
因此,我创建了一个简单的代码来说明这种功能。
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
RichTextBox1.AppendText(Environment.NewLine & "Sample")
End Sub
Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
Console.WriteLine("Trigger textchanged")
Dim totalLines As Integer = Me.RichTextBox1.Lines.Length
Dim lastLine As String = Me.RichTextBox1.Lines(totalLines - 1)
Dim CSTAT_Check As Boolean = lastLine Like "*Sample*"
If CSTAT_Check = True Then
RichTextBox1.AppendText(Environment.NewLine & "Sample")
End If
End Sub
End Class
它的工作方式是这样的,我将单击按钮将sample 字符串附加到richtextbox 然后将触发richtextbox textchange_event 导致它重新发送sample 字符串到自身,并将导致它trigger另一个textchange_event等等,直到设备收到sample字符串,作为回报,设备(服务器)将发送sample_accepted字符串到我的设备(客户端)并且因为textchanged_event 没有检测到富文本框最后一行中的sample 字符串,它将不再向richtextbox 发送另一个sample 字符串。
这有点难理解,所以我将创建一个简单的图表
客户端(我) 服务器(设备)
发送sample字符串 Doesn't detected
发送sample字符串again Doesn't detected again
发送sample字符串again Doesn't detected again
发送sample字符串again Doesn't detected again
发送sample字符串again Detected sample将send sample_accepted强>
客户端将no longer发送sample字符串,因为服务器已经检测到它。
我的代码中的问题是它似乎在第一次触发后没有再次触发textchanged_event。
【问题讨论】:
-
能否请您发布您正在进行的实际串行端口调用的接口?还有你用来调用串口的代码吗?这个富文本框示例妨碍了您获得好的答案。
-
@Enigmativity,当然。我会尝试以最简单的形式重新创建它。
标签: vb.net richtextbox textchanged