我正在尝试让程序响应微控制器发送的某些字,但是当我将接收到的字与预定义字进行比较时,它总是返回false。
private void ReadData()
{
if (serialPort1.IsOpen == true)
{
if (serialPort1.BytesToRead > 0)
{
string readBuffer = serialPort1.ReadLine();
textBox2.Text = readBuffer;
if (readBuffer.Equals("A")) //MY MAIN PROBLEM
{
textBox2.Text += "YEP";
}
else
{
textBox2.Text += "NOPE";
}
}
}
}
当微控制器发送字母“A”时,它会读取它并将其存储到readBuffer
字符串中,甚至可以在textbox(textBox2)
中打印出来。我的结果始终是textbox
中的ANOPE(A是微控制器发送的,NOPE始终存在,因为if失败了)。
我最近开始使用C#并且在几天内试图弄清楚这一点,但我似乎无法找到解决这个看似简单问题的方法。
答案 0 :(得分:1)
感谢Willem Van Onsem和RenéVogt,我发现了这个问题。 在读取数据并将其存储到readBuffer之后,它还包括\ r \ n(回车),使字符串实际为“A \ r \ n”,这就是为什么它与“A”相比始终为假。
答案 1 :(得分:0)
我向你提交的两件事:
的 1。事情并非总是如此:
使用readBuffer.Trim()。等于(" A")代替。
所以归根结底,试试这个:
if(readBuffer.Trim()。ToUpper()。Equals(" A"))