我正在做一个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();
}
}
}
答案 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)
循环后无法访问 - 您需要一些方法来终止循环。例如,如果从套接字读取特定值,或者它已关闭。