我可以为我的Serialport接收活动添加第二个RichTextBox吗?

RFRESH.

活跃的成员
加入
2012年8月23日
消息
26
编程经验
1-3
我是一个相当新的c#程序员。我有一个serialport组件,我正在使用“谈话”到控制器板。

我找到了下面的代码示例,我正在使用它......它似乎正在运作正常。当我向我的设备发送CMD时,它返回的内容显示在My RichTextBoxReceiveWindow1组件中。

我现在想做的是,添加第二个RichTextBox也接收相同的数据。我不知道怎么做吗?

感谢您的任何帮助...

C#:
        private delegate void SetTextDeleg(string text);
        private void si_DataReceived(string data) { richTextBoxReceiveWindow1.Text = data.Trim(); }
        void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            Thread.Sleep(500);
            string data = serialPort.ReadExisting();
            // Invokes the delegate on the UI thread, and sends the data that was received to the invoked method.
            // ---- The "si_DataReceived" method will be executed on the UI thread which allows populating of the textbox.
            this.BeginInvoke(new SetTextDeleg(si_DataReceived), new object[] { data });
        }
 

RFRESH.

活跃的成员
加入
2012年8月23日
消息
26
编程经验
1-3
我发现了这项工作:

C#:
private void si_DataReceived(string data) { richTextBoxReceiveWindow1.Text = data.Trim(); richTextBoxReceiveWindow2.Text = data.Trim(); }
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,721
地点
悉尼,澳大利亚
编程经验
10+
我只是想确保你在正确的方式看,因为你的线程标题不是。

这不是向福彩12选5走势图添加任何东西的情况。 SerialPort对象引发了其DataReceived福彩12选5走势图,这就是它所知的一切。如果您已注册一个或多个方法来处理该福彩12选5走势图,则在提出福彩12选5走势图时将执行这些方法。

在您的情况下,您已注册“sp_datareceived”方法来处理福彩12选5走势图。这意味着它是一个福彩12选5走势图处理程序,而不是一个福彩12选5走势图。福彩12选5走势图处理程序基本上只是一种方法,尽管它必须具有适当的签名,以便能够处理任何特定的福彩12选5走势图。就像任何其他方法一样,您可以基本上将您想要在调用方法时执行的代码。

在SerialPort.Datareceived福彩12选5走势图的情况下,它会在次要线程上提出。发生这种情况,以便它不会干扰,或者受到干扰,任何您正在在UI线程上所做的任何事情。因此,您想要对UI的任何更改都无法直接在福彩12选5走势图处理程序中完成。您必须汇编到UI线程的方法调用,然后可以在该方法中更新UI。 BeginInvoke是编组的原因。

所以,一旦你到达你的'si_datareceived',它就像在UI线程上执行的任何其他方法一样。据推测,之前,您已经在同一方法中对多个控制进行了更改。这根本没有不同,因此您的解决方案看起来没有什么不同。
 
最佳 底部