📄 win32props.cs
字号:
namespace SerialPorts
{
using System;
using System.Runtime.InteropServices;
using System.Text;
internal class Win32Props
{
// Methods
internal Win32Props()
{
this.cp = new COMMPROP();
}
internal bool Get(IntPtr handle)
{
if (!Win32Props.GetCommProperties(handle, out this.cp))
{
this.SetFault("GetCommProperties()");
return false;
}
return true;
}
[DllImport("kernel32.dll")]
private static extern bool GetCommProperties(IntPtr hFile, out COMMPROP cp);
internal string QueueString()
{
StringBuilder builder1 = new StringBuilder("The RX max/cur queue sizes are: ", 80);
if (this.cp.dwMaxRxQueue == 0)
{
builder1.Append("variable/");
}
else
{
builder1.Append(this.cp.dwMaxRxQueue.ToString());
}
if (this.cp.dwCurrentRxQueue == 0)
{
builder1.Append("unavailable.");
}
else
{
builder1.Append(this.cp.dwCurrentRxQueue.ToString());
}
builder1.Append("\r\n");
builder1.Append("The TX max/cur queue sizes are: ");
if (this.cp.dwMaxTxQueue == 0)
{
builder1.Append("variable/");
}
else
{
builder1.Append(this.cp.dwMaxTxQueue.ToString());
}
if (this.cp.dwCurrentTxQueue == 0)
{
builder1.Append("unavailable.");
}
else
{
builder1.Append(this.cp.dwCurrentTxQueue.ToString());
}
builder1.Append("\r\n");
return builder1.ToString();
}
internal bool Set(IntPtr handle, uint rxSize, uint txSize)
{
if (!Win32Props.SetupComm(handle, rxSize, txSize))
{
this.SetFault("SetupComm()");
return false;
}
return true;
}
private void SetFault(string who)
{
int num1 = Marshal.GetLastWin32Error();
this.fault = who + "Failed. System Returned Error Code: " + num1.ToString();
}
[DllImport("kernel32.dll")]
internal static extern bool SetupComm(IntPtr hFile, uint dwInQueue, uint dwOutQueue);
// Properties
protected internal COMMPROP CommProperties
{
get
{
return this.cp;
}
}
internal string Fault
{
get
{
return this.fault;
}
}
protected internal uint RxCurSize
{
get
{
return this.cp.dwCurrentRxQueue;
}
}
protected internal uint RxMaxSize
{
get
{
return this.cp.dwMaxRxQueue;
}
}
protected internal uint TxCurSize
{
get
{
return this.cp.dwCurrentTxQueue;
}
}
protected internal uint TxMaxSize
{
get
{
return this.cp.dwMaxTxQueue;
}
}
// Fields
private COMMPROP cp;
private string fault;
// Nested Types
[StructLayout(LayoutKind.Sequential)]
internal protected struct COMMPROP
{
internal ushort wPacketLength;
internal ushort wPacketVersion;
internal uint dwServiceMask;
internal uint dwReserved1;
internal uint dwMaxTxQueue;
internal uint dwMaxRxQueue;
internal uint dwMaxBaud;
internal uint dwProvSubType;
internal uint dwProvCapabilities;
internal uint dwSettableParams;
internal uint dwSettableBaud;
internal ushort wSettableData;
internal ushort wSettableStopParity;
internal uint dwCurrentTxQueue;
internal uint dwCurrentRxQueue;
internal uint dwProvSpec1;
internal uint dwProvSpec2;
internal byte wcProvChar;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -