我正在将一个序列写到串行端口,告诉它向我发送数据。发送序列并尝试从串行端口读取数据后,那里什么也没有。但是,如果我关闭程序并在超级终端中打开端口,则数据会立即显示,而无需进行提示。
private string ReadSerialPort()
{
var _comPort = new SerialPort()
{
PortName = "COM2",
BaudRate = 1200,
DataBits = 7,
Parity = System.IO.Ports.Parity.Odd,
StopBits = System.IO.Ports.StopBits.One,
NewLine = Environment.NewLine,
WriteTimeout = 500,
ReadTimeout = 500,
Handshake = System.IO.Ports.Handshake.None
};
if (!_comPort.IsOpen)
{
_comPort.Open();
}
int unicode = 27;
char character = (char)unicode;
string text = character + "P";
_comPort.WriteLine(text);
//System.Threading.Thread.Sleep(200); // Didn't help
string serialData = string.Empty;
while (serialData.Length == 0)
{
serialData = _comPort.ReadLine();
}
return serialData;
}
如果我将转义序列写到串行端口3次,我的代码中什么也看不到,但是如果打开超级终端,它将出现3次。
是什么导致代码在缓冲区中看不到任何东西,但是一旦退出程序就可以看到它?