【发布时间】:2012-07-30 07:37:45
【问题描述】:
我想通过 readline() 从串行端口中读取文本行
text 是 ASCII 并且在终端中一切正常(数据非常好),但是当我通过 readline 阅读时,它会返回 text 中的某处?
示例 - 这是常规的:
!!!;34;248;45;215;43;226;33;235;32;240;35;250;36;240;37;246;40;263;41;272;42;261;39;270;44;256;47;241;49;8888;50;8888;38;245;46;460;48;363
这会返回 readline() :
!!!;34;248;45;215;43;226;?33;235;32;240;35;250;36;240?;37;246;40;263;41;272;42;261?;39;270;44;256;47;241;49;888?8;50;8888;38;245;46;460;48;3?63
代码很简单:
this.serialPort1.PortName = "COM3";
this.serialPort1.BaudRate = 19200;
this.serialPort1.Parity = System.IO.Ports.Parity.Mark;
this.serialPort1.Open();
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
prectenyRadek=this.serialPort1.ReadLine();
this.Invoke(new EventHandler(DisplayText));
}
private void DisplayText(object sender, EventArgs e)
{
richTextBox1.AppendText(prectenyRadek);
}
有没有人知道,什么以及为什么加我“?”
【问题讨论】:
-
在串口上确实有这样的 ASCII 数据:0D 0A 21 21 21 3B 33 34 3B 32 34 38 3B 34 35 3B 32 31 35 3B 34 33 3B 32 32 36 3B 33 33 3B 32 33 35 3B 33 32 3B 32 32 34 30 3B 33 35 3B 32 32 33 33 33 33 33 36 32 32 32 34 30 3B 33 37 32 32 32 32 32 34 36 31 3B 33 39 3B 32 37 30 3B 34 34 3B 32 35 36 3B 34 37 3B 32 34 31 3B 34 39 3B 38 38 38 38 3B 35 30 3B 38 38 38 38 3B 33 38 3B 32 34 35 3B 34 36 3B 34 35 37 3B 34 38 3B 33 36 32 3B 0D 0A(第一个 0D 0A 是之前的 EOL 行,然后按照您在 HEX 中看到的内容并完成 0D 0A)
标签: c# serial-port readline