我正在處理可以發送和接收某些命令的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,當然。我會盡量以最簡單的形式重新創建它。 –