While experimenting with Mono on Windows I have run across an issue in SerialPort.DiscardInBuffer and SerialPort.DiscardOutBuffer methods. I checked the source code of WinSerialStream.cs (Mono 2.11.4) and found that both methods use costant value PurgeRxClear while DiscardOutBuffer should be using PurgeTxClear instead.
Apart from that PurgeRxClear and PurgeTxClear are defined wrongly as follows
const uint PurgeRxClear = 0x0004;
const uint PurgeTxClear = 0x0008;
while according to MSDN they should be
const uint PurgeRxClear = 0x0008;
const uint PurgeTxClear = 0x0004;
Please correct this issue in WinSerialStream.cs because now it is only possible to clear the Tx buffer of the serial port. Also interoperabilty with .NET is broken due to this issue.
Fixed in master