我正在处理可以发送和接收某些命令的serialport。我想实现一个重试功能,它允许我(客户端)重新发送数据,直到设备(服务器)收到并向我发送响应。触发richtextbox textchanged事件,直到它检测到某些文本
因此,我创建了一个简单的代码,可以说明这种功能。
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
没有检测到richtextbox最后一行中的sample
字符串它不会lo nger发送另一个sample
字符串到richtextbox
。
这是很难理解,所以我将创建一个简单的图
客户端(我) 服务器(设备)
发送sample
串 Doesn't detected
发送sample
串again
Doesn't detected
again
发送sample
串again
Doesn't detected
again
发送sample
串again
Doesn't detected
again
发送sample
ST环again
Detected
sample
将send
sample_accepted
客户端将no longer
因为服务器检测到已发送sample
字符串。
我的代码中的问题是它似乎不会在第一次触发后再次触发textchanged_event
。
请问您可以发布您正在进行的实际串行端口调用的接口吗?还有你用来调用串口的代码?这个富文本框的例子正在阻碍你获得一个很好的答案。 – Enigmativity
@Enigmativity,当然。我会尽量以最简单的形式重新创建它。 –