首页 > 解决方案 > 如何从 2 文本框上显示的 COM 端口接收字符串

问题描述

我有 2 个来自 COM 端口的数据字符串(例如:字符串“1data2DATA”)。我希望字符串“1data”显示在 textbox_1 中,字符串“2DATA”显示在 texttextbox_2 中。我应该怎么做?

图片: 在此处输入图像描述

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) // nhan dulieu tu cong COM
{
    string data = serialPort1.ReadExisting();
    SetText(data);
}

private void SetText(string text)
{
    //if (text[0] == 'A')        // test thử 
   // {
        if (this.tBoxCV1.InvokeRequired)
        {
            SetTextCallback d = new SetTextCallback(SetText); // khởi tạo 1 delegate mới gọi đến SetText
            this.Invoke(d, new object[] { text });
        }
        else
        {
            this.tBoxCV1.Text += text;
            if (text == "1")
            {
                this.tBoxCV1.Clear();
            }
        }
    //}
}

标签: c#winformsserial-port

解决方案


只要格式永远是

" 1一些没有数字的字符2其他没有数字的字符"

然后你可以拆分角色2

private void SetText(string text)
{
    if (this.tBoxCV1.InvokeRequired)
    {
        this.Invoke(new Action<string>(SetText), new object[] { text });
    }
    else
    {
        var results = text.Split('2');
        results[1] = '2' + results[1];

        this.tBoxCV1.Text += results[0];
        if (results[0] == "1")
            this.tBoxCV1.Clear();
        this.tBoxCV2.Text += results[1];
        if (results[1] == "2")
            this.tBoxCV2.Clear();
    }
}

但是,如果您可能在任一数据中收到 a 2,那么我看不出这是怎么可能的,1并且2会产生可怕的分隔符。


推荐阅读