C#的usb通讯编程

编程

 当把U盘放插入,然后程序自动将U盘的内容复制到本地硬盘

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);
}

 

在http://www.codeproject.com/useritems/usbeject.asp找的资料
VolumeDeviceClass volumeDeviceClass = new VolumeDeviceClass();
foreach (Volume device in volumeDeviceClass.Devices)
{
// is this volume on USB disks?
if (!device.IsUsb)
continue;

// is this volume a logical disk?
if ((device.LogicalDrive == null) || (device.LogicalDrive.Length == 0))
continue;

device.Eject(true); // allow Windows to display any relevant UI
}

http://www.codeproject.com/useritems/usbeject.asp
 

 

时间: 2024-10-02 09:49:58

C#的usb通讯编程的相关文章

急求关于C# 的USB接口编程

问题描述 急求关于C# 的USB接口编程 目前在做一个项目,当单个单片机连接在PC机的USB接口上时,可以通过C#创建进程,调用批处理命令对单片机进行烧写,并且这个功能已经实现,但目前需要将若干个单片机通过USB分线器连接到PC机上,用程序控制执行批处理文件时只向其中一个USB接口烧入程序,不会向其它接口烧入,请问大家有没有什么思路或者相关代码来控制USB接口. 解决方案 C#操作USB口需要看是什么硬件. 一些硬件虽然使用USB接口和PC通讯,但是它的驱动程序将它模拟成一个COM口.网口或者大

usb-C # 打开USB接口编程 返回值总是错误

问题描述 C # 打开USB接口编程 返回值总是错误 下面是我在网上找到的搜索本机上的USB设备后再根据PNPDeceiveId打开USB设备,可是不知道为什么在自己的电脑上找不到相应设备,句柄的返回值总是-1,麻烦大家帮忙看一下哪里错了, public static IntPtr openDeceive(String PNPDeviceID) { //if (String.IsNullOrEmpty(PNPDeviceID)) return null; // 打开设备 IntPtr hHCDe

delphi-Delphi将USB通讯方式改为串口

问题描述 Delphi将USB通讯方式改为串口 怎么把usb通讯改成使用串口通讯?现在usb是使用api完成的,改成串口具体怎么实现? 解决方案 囧,看你的设备是神马类型的,如果是串口的,一样的,找协议文档,根据协议文档定制协议发送数据包就行嘛,最简单的方法就是购买一个转接口,直接讲USB转接成串口

系统-android usb通讯 大神。。。。来吧

问题描述 android usb通讯 大神....来吧 android 系统是怎样判断不同设备连接的 ? 解决方案 1,USB存储设备(如:U盘,移动硬盘): //USB存储设备 插拔监听与 SD卡插拔监听一致. private USBBroadCastReceiver mBroadcastReceiver; IntentFilter iFilter = new IntentFilter(); iFilter.addAction(Intent.ACTION_MEDIA_EJECT); iFilt

usb-hid通讯编程,如果循环readfile超时后,数据接收错乱

问题描述 hid通讯编程,如果循环readfile超时后,数据接收错乱 hid通讯编程,如果循环readfile超时后结束等待,最后一次将会将下一次上传的数据接收到,导致下一次的接收接收不到,这个有没有什么好的解决办法啊? 各位大神,谁曾经有过这方面的研究,还望指点一下,,, 解决方案 http://bbs.eeworld.com.cn/thread-120873-1-1.html

c++-关于C8051F340 USB 通讯上位机的问题?

问题描述 关于C8051F340 USB 通讯上位机的问题? 大家好, 我在学习使用上位机通过USB 传输12个十六进制的数字到C8051F340,然后我发现http://blog.csdn.net/phenixyf/article/details/7852262 非常的好用,但是我还是不是很清楚上位机编译USB通讯的话最重要的是那些?假如我设定一个按键触发数据传送,是否就是在那个按键里加入需要的程序?如果谁有这篇文章的上位机程序可以发给小弟,我不胜感激.谢谢! 邮箱:jldijdyi@gmai

TCP UDP 通讯编程

问题描述 最近的工作涉及到使用NIO进行通讯编程.也不知道用哪个框架比较好?看了XSOCKET官网说已经不跟新了.是不是最好不要用这个了?至于MINAGRIZZLY哪个更好用呢?这个需要20万的并发量,请这方面的高手指点. 解决方案 解决方案二:比较关注这种问题,等待高手来回答....解决方案三:该回复于2010-12-28 16:46:35被版主删除解决方案四:帮顶,接分哈解决方案五:新手继续顶解决方案六:没接触这方面的东西,等高手解决方案七:没接触这方面的东西,期待高手解决解决方案八:推荐m

usb通讯-USB HOST 与 USB DEVICE枚举后通讯

问题描述 USB HOST 与 USB DEVICE枚举后通讯 USB HOST 与 USB DEVICE枚举后通讯,端点需要一一对应吗? 解决方案 Host USB与USB DeviceUSB device 和 USB host区别Android USB Host与HID通讯

ACE中网络通讯编程基本架构

ACE_INET_Addr类,包装了网络地址 ACE_SOCK_Connector类,扮演主动连接角色,发起通讯连接.连接到远端的服务. ACE_SOCK_Acceptor类,扮演被动连接角色,等待连接.等待远端客户的请求. ACE_SOCK_Stream类,扮演数据通讯角色,发送和接收数据.完成客户与服务之间的通讯. 利用ACE库来开发网络通讯程序是很简单的,一个基本程序只用到以上提到的几个类,就可以完成一个基于客户端.服务器端模型的网络应用的开发.开发者无需了解Socket在不同平台上的实现