【发布时间】:2016-07-12 23:22:02
【问题描述】:
我正在做一个串行通信项目,并希望根据单击哪个按钮将接收到的字符串放入文本框中以发送初始字符串并调用响应。
ReceivedText 的代码是:
PrivateSub ReceivedText(ByVal [text] As String)
Button1.Clear()
Button2.Clear()
If Button1.InvokeRequired Then
RichTextBox1.text = [text].Trim("!")
End If
If Button2.InvokeRequired Then
RichTextBox2.Text = [text].Trim("!")
End If
EndSub
这只会导致接收到的字符串进入两个框而不是其中一个。
有什么方法可以让文本进入相应的框中?
【问题讨论】:
-
你的 Clear 方法应该做什么?这不是标准按钮类型的成员。不过,如果您无法从响应文本中区分出哪个按钮被按下,那么我至少会看到几个选项。最简单的是保存点击了哪个按钮的公共变量。
-
但是,如果您可以同时按下两个按钮或在从先前命令读取响应之前按下这两个按钮,则该操作将不起作用。如果这是一个要求,那么您将为每次按下按钮启动一个线程,并传入一个包含按钮名称和命令的类,就像stackoverflow.com/questions/30162382/… 接受的答案一样,这样您就可以在完成时读回名称。
-
@topshot 我更正了 Clear 方法并将其放在适当的行中。我对此很陌生,对线程不熟悉,你可以提供一个例子吗?我想根据单击的按钮将接收到的字符串放在某个位置是相当简单的......
-
查看我上面第二条评论中的链接,了解有人如何将参数传递给线程。至于线程教程、MSDN 文档或在 VBForums.com 的 VB.Net CodeBank 部分中查找一些线程帖子(特别是 jmcilhinney 或 Niya 的帖子)
-
@topshot 除了清除功能之外,是什么阻止了文本进入正确的框?我不明白该代码的哪一部分会要求将文本放入两个框中
标签: vb.net serial-port serial-communication rs485