zoukankan      html  css  js  c++  java
  • zz Alex's BLOG 串口连接

    using System;

    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;

    namespace ICS
    {
    public partial class FrmMain : Form
    {

    #region WndProc常量
    public const int WM_DEVICECHANGE = 0x219;
    public const int DBT_DEVICEARRIVAL = 0x8000;
    public const int DBT_CONFIGCHANGECANCELED = 0x0019;
    public const int DBT_CONFIGCHANGED = 0x0018;
    public const int DBT_CUSTOMEVENT = 0x8006;
    public const int DBT_DEVICEQUERYREMOVE = 0x8001;
    public const int DBT_DEVICEQUERYREMOVEFAILED = 0x8002;
    public const int DBT_DEVICEREMOVECOMPLETE = 0x8004;
    public const int DBT_DEVICEREMOVEPENDING = 0x8003;
    public const int DBT_DEVICETYPESPECIFIC = 0x8005;
    public const int DBT_DEVNODES_CHANGED = 0x0007;
    public const int DBT_QUERYCHANGECONFIG = 0x0017;
    public const int DBT_USERDEFINED = 0xFFFF;

    public const int DBT_DEVTYP_OEM = 0x00000000;//OEM- or IHV-defined device type
    public const int DBT_DEVTYP_PORT = 0x00000003;//Port device (serial or parallel).
    public const int DBT_DEVTYP_VOLUME = 0x00000002;//Logical volume.
    #endregion

    [StructLayout(LayoutKind.Sequential)]
    public struct DEV_BROADCASR_HDR
    {
    public int Size;
    public int DeviceType;
    public int Reserved;
    }
    public FrmMain()
    {
    InitializeComponent();
    }

    protected override void WndProc(ref Message m)
    {
    base.WndProc(ref m);//要保证这句话必须能构执行,否则会出现“创建窗口句柄时出错”,和写代码习惯有关。。
    try
    {
    if (m.Msg != WM_DEVICECHANGE) return;
    DEV_BROADCASR_HDR devHdr = (DEV_BROADCASR_HDR)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCASR_HDR));
    if (devHdr.DeviceType == DBT_DEVTYP_PORT)
    {
    AddSerialPort();
    }
    }
    catch { }
    }

    public void AddSerialPort()
    {
    cmboxSerial.Items.Clear();
    cmboxSerial.Items.AddRange(SerialPort.GetPortNames());
    }

    }

    }

  • 相关阅读:
    JQuery empty方法和remove方法的区别,使用remove清除之前的文本内容??
    乙_1023 组个最小数 (20分)
    乙_1022 D进制的A+B (20分)
    乙_1021 个位数统计 (15分)
    乙_1020 月饼 (25分)
    乙_1013 数素数 (20分)
    乙_1009 说反话 (20分)
    乙_1008 数组元素循环右移问题 (20分)
    乙_1007 素数对猜想 (20分)
    乙_1005 继续(3n+1)猜想 (25分)
  • 原文地址:https://www.cnblogs.com/https/p/9234670.html
Copyright © 2011-2022 走看看