Visual Studio windows窗体应用程序c#串行通信接收数据

本文关键字:通信 数据 Studio windows 窗体 应用程序 Visual | 更新日期: 2023-09-27 17:54:36

我需要一个代码,将从arduino接收串行数据并在文本框中显示它们。我正在接收由逗号分隔的int类型数据。Arduino串行数据示例:250,389,123,232,255,536,366,455,…

我需要在六个单独的文本框中显示前六个数据,然后连续的数据必须替换这些文本框中已经存在的值。我试了几次,但都白费了。谁来帮帮我。

Visual Studio windows窗体应用程序c#串行通信接收数据

我假设您正在使用System.IO.Ports名称空间和SerialPort类进行通信。我也希望波特率和其他通信设置符合设备的预期。
如果是,那么如果您反复接收数据,您可以通过使用ReadTo方法并给它一个逗号作为参数来捕获它。这样的读取循环可能像这样:

while(true) // replace it with some wiser condition
{
    string textRead = serialPort.ReadTo(",");
    // do the rest here
}

现在,您可能还希望一次捕获更大量的数据。当然你可以(比如,捕获100个字符),但是你应该:
-用逗号分隔字符串;
-保留字符串数组的最后一项(这将是分割方法的结果),并插入下一个接收到的字符包的0位置;
-在循环中重复上述步骤。
现在,到文本框。如果有N个,并且我们考虑了第一种捕获方法,您可以这样做:

TextBox[] tboxes = new TextBox[N]; // your number is 6, I know
int boxIndex = 0;
while(true) // again, use a reasonable condition
{
    string textRead = serialPort.ReadTo(",");
    tboxes[boxIndex].Text = textRead.Trim(',');
    if(++boxIndex >= tboxes.Length)
        boxIndex = 0;
}