2017-03-03 70 views
-2

我在做一个Arduino项目,我通过串口发送数据并在PC上读取它。我有一个简单的C#代码,我可以查看数据,但是我想将它写入文本文件,如果可能的话,从Arduino读取的某个字符串执行另一个程序。C#在使用StreamWriter时检测到无法访问的代码

以下是读取数据的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(); 
    } 

    } 

}

+4

你什么时候退出'while'循环?条件总是“真实的”。 – Cameron

+1

我不想听到光顾,但如果你真的试图通过这个代码,你会很快发现这个问题。在编写更高级的代码之前,也许你应该通过一些基本的C#教程? – DavidG

+0

我明白了。如上所述,我运行的代码没有试图写入一个文件,它工作正常。但我试图学习如何将它写入文件,然后对文件中的内容做出反应。正如我在开始时所说的,我是C#的新手。 –

回答

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(); 
+0

有道理罗姆......非常感谢你! –

+0

@BradJarrett,欢迎您 –

+0

它编译得很好,读取数据正常,但不会将其保存到文件中......任何想法? –

0

while(true)循环之后的任何内容都无法访问 - 你需要一些方法来终止循环。例如,如果从套接字中读取了特定的值,或者它已关闭。

+0

你能举个例子吗?我有数据字符串进来说,“大声噪声检测!”。所以一旦进来,我应该终止循环? –