Visual Studio windows窗体应用C#串口通信接收数据?

时间:2015-06-09 06:08:47

标签: c# winforms visual-studio-2013 arduino-uno serial-communication

我需要一个代码,它将从arduino接收串行数据并将其显示在文本框中。 我收到用逗号分隔的int类型数据。 Arduino序列数据样本:250,389,123,232,255,536,366,455,...

我需要在六个单独的文本框中显示前六个数据,然后连续数据必须替换这些文本框中已有的值。 我试了好几次,但一切都没了。有人帮助我。

1 个答案:

答案 0 :(得分:2)

我假设您正在使用System.IO.Ports命名空间和SerialPort类进行通信。我也希望BaudRate和其他通信设置符合设备的要求 如果是,那么如果重复接收数据,则可以使用ReadTo方法捕获它并将其作为参数给出。这样的阅读循环可能如下所示:

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

现在,您可能还希望一次捕获大量数据。当然你可以(比如说,捕获100个字符),但是你应该:   - 用逗号分隔字符串;
  - 保留字符串数组的最后一项(这将是拆分方法的结果)并插入下一个收到的字符包的0位置;
  - 像上面一样重复循环中的这些步骤 现在,到TextBox'es。如果有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;
}


这应该可以胜任。