trim HttpHeaders
石头 编写于 2024-06-22 08:55:23
X
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Management;
using System.Text;

namespace XCom
{
    static class IOHelper
    {
        /// <summary>向字节数组写入一片数据</summary>
        /// <param name="data"></param>
        /// <param name="srcOffset"></param>
        /// <param name="buf"></param>
        /// <param name="offset">偏移</param>
        /// <param name="count">数量</param>
        /// <returns></returns>
        public static Byte[] Write(this Byte[] data, Int32 srcOffset, Byte[] buf, Int32 offset = 0, Int32 count = -1)
        {
            if (count <= 0) count = data.Length - offset;

            Buffer.BlockCopy(buf, srcOffset, data, offset, count);

            return data;
        }

        public static String[] GetPortNames()
        {
            var names = SerialPort.GetPortNames();
            if (names == null || names.Length < 1) return names;

            var dic = MulGetHardwareInfo();
            for (int i = 0; i < names.Length; i++)
            {
                var des = "";
                if (dic.TryGetValue(names[i], out des))
                    names[i] = String.Format("{0}({1})", names[i], des);
            }

            return names;
        }

        /// <summary>取硬件信息</summary>
        /// <returns></returns>
        static Dictionary<String, String> MulGetHardwareInfo()
        {
            var dic = new Dictionary<String, String>();
            var searcher = new ManagementObjectSearcher("select * from Win32_SerialPort");
            var moc = searcher.Get();
            foreach (var hardInfo in moc)
            {
                //foreach (var item in hardInfo.Properties)
                //{
                //    var name2 = item.Name;
                //    var obj = item.Value;
                //    name2 = name2 + " " + obj + "";
                //}
                var name = hardInfo.Properties["DeviceID"].Value.ToString();
                if (!String.IsNullOrEmpty(name))
                {
                    //dic.Add(name, hardInfo.Properties["Caption"].Value.ToString());
                    dic.Add(name, hardInfo.Properties["Description"].Value.ToString());
                }

            }
            return dic;
        }
    }
}