`
hugh-lin
  • 浏览: 72922 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

[转]C#的usb通讯编程

阅读更多
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace U盘更新
{
    public partial class Form1 : Form
    {
        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 Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        protected override void WndProc(ref Message m)
        {
            try
            {
                if (m.Msg == WM_DEVICECHANGE)
                {
                    switch (m.WParam.ToInt32())
                    {
                        case WM_DEVICECHANGE:
                            break;
                        case DBT_DEVICEARRIVAL://U盘插入
                            DriveInfo[] s = DriveInfo.GetDrives();
                            foreach (DriveInfo drive in s)
                            {
                                if (drive.DriveType == DriveType.Removable)
                                {
                                    listBox1.Items.Add("U盘已插入,盘符为:" + drive.Name.ToString());
                                    break;
                                }
                            }
                            break;
                        case DBT_CONFIGCHANGECANCELED:
                            break;
                        case DBT_CONFIGCHANGED:
                            break;
                        case DBT_CUSTOMEVENT:
                            break;
                        case DBT_DEVICEQUERYREMOVE:
                            break;
                        case DBT_DEVICEQUERYREMOVEFAILED:
                            break;
                        case DBT_DEVICEREMOVECOMPLETE: //U盘卸载
                            break;
                        case DBT_DEVICEREMOVEPENDING:
                            break;
                        case DBT_DEVICETYPESPECIFIC:
                            break;
                        case DBT_DEVNODES_CHANGED:
                            break;
                        case DBT_QUERYCHANGECONFIG:
                            break;
                        case DBT_USERDEFINED:
                            break;
                        default:
                            break;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            base.WndProc(ref m);
        }
    }
}
分享到:
评论

相关推荐

    C#版USB通信编程(接收和发送数据)

    在C#编程环境中,USB通信是一个重要的领域,特别是在嵌入式系统、自动化设备以及数据采集系统等应用中。本文将详细讲解如何使用C#进行USB通信编程,包括如何捕捉USB设备的插入和拔出事件,以及如何列出系统中的USB...

    C# 串口和USB通信编程 (串口和USB通信,U盘) 包括转串口、并口、usb打印口

    本文将深入探讨C#在串口和USB通信中的应用,包括转串口、并口以及USB打印口的相关知识。 首先,让我们来看看串口通信。串口,通常指的是RS-232接口,是一种广泛用于计算机和外设之间通信的接口。在C#中,我们可以...

    C# usb Hid 访问上位机USB通讯实例 实现设备在线和离线和发送接收数据通讯

    C#本身并不直接支持USB通讯,但可以通过.NET Framework中的System.IO.Ports命名空间或第三方库如libusb、SharpHID等来实现。在这个实例中,很可能是利用了SharpHID这样的库来访问HID设备。 1. **设备识别**:在开始...

    C# USB数据接收与发送

    学习"C# USB数据接收与发送"不仅要求掌握C#编程基础,还需要理解USB协议和Windows操作系统中的设备驱动原理。通过实践这些步骤和研究提供的示例代码,开发者可以构建自己的USB通信应用程序,实现与各种USB设备的有效...

    C#利用VISA与仪器通讯编程实例.zip

    C#利用VISA与仪器通讯编程实例,VISA通讯包含USB/串口/GPIB/LAN,通讯,一般电子类测量仪器都是采用这些通讯方式,比如泰克,keithley,是德,安捷伦,普源等等知名仪器公司都是采用VISA标准来设计软件和仪器通讯,...

    CSharp.rar_c# usb通讯_usb摄像头csharp_图片抠像_实时抠像

    USB通讯是计算机与USB设备之间的数据交换,C#提供了System.IO.Ports命名空间,其中包含SerialPort类,方便开发者进行串行通信。通过USB摄像头,开发者可以调用特定的库,例如AForge.NET或Emgu CV,来获取和处理来自...

    C#(.NET)开发USB通用库 USB Library.

    完全的通用USB开发库,完全的C#调用接口和帮助文档,本人开发USB上位机软件包时,发现都是非托管的C++调用库,C#调用库非常少。所以收集了这个,供用.NET方式开发USB的朋友使用。

    C#使用usb通讯libusbdotnet

    在C#编程环境中,USB通信是一个常见的需求,特别是在设备控制、数据传输以及嵌入式系统交互等场景。`libusbdotnet`是一个强大的库,它为.NET开发者提供了与USB设备进行通信的能力。这个库是基于开源的libusb库封装的...

    C#USBHID完整例程

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用时。"C# USB HID完整例程"是一个针对C#环境下的USB设备通信的示例项目,重点在于利用HID(Human Interface Device)类接口进行数据的收发。HID是...

    C# USB HID示例

    在本文中,我们将深入探讨"C# USB HID示例"这一主题,这是一项针对初学者的USB人机交互设备(Human Interface Device, HID)编程实践。HID设备包括键盘、鼠标、游戏控制器等,它们通过USB接口与计算机进行通信。C#是...

    C#USB通讯.rar

    在IT行业中,C#是一种广泛使用的编程语言,尤其在...总的来说,"C# USB通讯"涵盖了C#编程、USB设备交互、异步编程等多个技术领域。通过学习和实践,开发者能够创建出能够高效、稳定地与USB设备进行通信的C#应用程序。

    usbCan(c#实例)

    在C#编程环境下,USBCan提供了访问CAN网络的功能,使得开发者能够创建应用程序来发送和接收CAN消息。在给定的“usbCan(c#实例)”中,主要解决的是在一次操作中只能接收一条数据的限制,这通常涉及到多线程处理、数据...

Global site tag (gtag.js) - Google Analytics