日期:2014-05-17  浏览次数:22214 次

C#读取USB设备传输的数据。
电脑连了一个ID卡读卡器,即插即用那种。
测试时,做了个窗体,一个textbox获取焦点,然后刷卡后textbox会显示度过来的ID数据(一个10位的10进制整数)。然后去库里找这个ID对应的其他数据。

现在想修改下,不用这个窗体和textbox。在主窗体开一个线程,实时监控USB端口,有数据读入时直接获取。

C#如何实现这个功能?有现成代码参考吗?谢谢了。

------解决方案--------------------
既然原来是可以读取的 你就在线程里监测系统硬件信息如果有新USB硬件就检测是不是U盘 ,然后读里面数据 执行你的操作不就行了 或者推测应该可以找到关于新硬件的一个系统事件的 把你“新USB硬件就检测是不是U盘 ,然后读里面数据 执行你的操作”这一步的操作添加到事件的关联方法里。就OK了。

没做过USB的东西 但是过程应该是大同小异的,把USB设备当做字节码的信号就明白了。
------解决方案--------------------
既然有数据过来,
那在那个窗体都监视都是回事的,
最简单的就是,你在主窗体里,整个 timer,不停里去监控,

------解决方案--------------------
[C# code]
protected override void WndProc(ref Message m)
{
#region U盘播放
if (m.Msg == 0x0219)//WM_DEVICECHANGE
{
switch (m.WParam.ToInt32())
{
case 0x8000://DBT_DEVICEARRIVAL
{
Console.WriteLine("设备接入");
break;
}
case 0x8004://DBT_DEVICEREMOVECOMPLETE
{
Console.WriteLine("设备拔出");
break;
}
}
}
base.WndProc(ref m);
}
[/code]
我都是用系统消息来检测U盘的接入和拔出的