使用StreamWriter时检测到C#无法访问代码

时间:2017-03-03 16:13:06

标签: c# arduino-uno

我正在做一个Arduino项目,我通过串口发送数据并在PC上读取数据。我编写了一个简单的C#代码,我可以查看数据,但我想将其写入文本文件,如果可能,从Arduino读取的某个字符串执行另一个程序。

以下是读取数据的c#代码,但在使用StreamWriter时,我收到了无法访问的代码。感谢您的帮助!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;
using System.IO;

namespace GDC_IoT_Reader
{
    class Program
    {
    static void Main(string[] args)
    {
        SerialPort myport = new SerialPort();
        myport.BaudRate = 9600;
        myport.PortName = "Com4";
        myport.Open();

        while(true)
        {
            string data_rx = myport.ReadLine();
            Console.WriteLine(data_rx);

        }
        // Write this info to text file

        StreamWriter SW = new StreamWriter(@"serialdata.txt");

       {
            SW.WriteLine(myport);
        }
        SW.Close();
    }

   }

}

2 个答案:

答案 0 :(得分:4)

你有无限while循环:

while(true)
{
    string data_rx = myport.ReadLine();
    Console.WriteLine(data_rx);
}

由于您没有设置完成循环的任何条件,并且在此循环中没有break语句,因此它永远不会完成它,并且此循环后的所有代码都无法访问。

你必须设置一些条件,即读取10行:

int line = 0
while(line < 10) // condition to finish
{
    string data_rx = myport.ReadLine();
    Console.WriteLine(data_rx);
    line += 1;
}

或者,当您阅读某些特定数据时,您可以break循环:

while(true)
{
    string data_rx = myport.ReadLine();
    Console.WriteLine(data_rx);
    if (data_rx == "exit")
    {
        break;      // break loop
    }
}

在循环内写入行到文件:

StreamWriter SW = new StreamWriter(@"serialdata.txt");
while(true)
{
    string data_rx = myport.ReadLine();
    Console.WriteLine(data_rx);
    SW.WriteLine(data_rx);       // write to file
    if (data_rx == "exit")
    {
        break;      // break loop            
    }
}
SW.Close();

答案 1 :(得分:0)

while(true)循环后无法访问 - 您需要一些方法来终止循环。例如,如果从套接字读取特定值,或者它已关闭。