⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 win32props.cs

📁 常见的串口通信程序
💻 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 + -