【发布时间】:2019-02-04 15:59:26
【问题描述】:
我有一块板子,我想与之交流。当我给它一些命令时,它应该返回字符串消息并应该在文本框中发布。我的问题是当设备必须返回多行文本时,只有 1 行被发布。我也尝试过使用 ReadExisting 而不是 ReadLine 但在一个命令之后我只得到空字符串。
public partial class Form1 : Form
{
private string x;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
serialPort1.Open();
timer1.Start();
}
private void button1_Click(object sender, EventArgs e)
{
serialPort1.WriteLine(textBox1.Text);
textBox1.Clear();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(x))
{
}
else
{
textBox2.AppendText(x + "\n\r");
x = "";
}
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
x = serialPort1.ReadLine();
//x = serialPort1.ReadExisting();
}
private void Form1_Closing(object sender, EventArgs e)
{
serialPort1.Close();
timer1.Stop();
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
}
【问题讨论】:
-
你应该使用
x += serialPort1.ReadExisting();,否则(没有+=)你将覆盖已经读取的数据。
标签: c# serial-port