在我的SerialPort.DataReceived事件处理程序中,我正在检查SerialData.Eof:
void DataReceived(object sender, SerialDataReceivedEventArgs e) {
if (e.EventType == SerialData.Eof)
throw new NotImplementedException("SerialData.Eof");
// ... Read
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,在我的整个开发过程中,我从未遇到过这种异常.但今天,当处理不同的协议时,它就会受到影响.
我的问题是,究竟是什么SerialData.Eof意思?MSDN说:
收到文件结束字符并将其放入输入缓冲区.
我正在处理二进制数据.什么是"文件结束字符"?
这篇MSDN论坛帖子说明了这一点
该
DCB.EofChar成员始终初始化为0x1A(Ctrl + Z)
在参考源的SerialStream类,在1343线,我们看到的确是:
dcb.EofChar = NativeMethods.EOFCHAR;
Run Code Online (Sandbox Code Playgroud)
并在Microsoft.Win32.NativeMethods:
internal const byte EOFCHAR = (byte) 26;
Run Code Online (Sandbox Code Playgroud)
那么这是否意味着我的设备发送一个0x1A字节,我会得到一个SerialData.Eof事件?如果是这种情况,我应该完全停止测试吗?