27,508
社区成员




public Form1()
{
InitializeComponent();
OnHandleCreated(null);
}
protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);
usb.RegisterHandle(Handle);
}
//指定设备插入事件响应
private void usb_OnSpecifiedDeviceArrived(object sender, EventArgs e)
{
OnHandleCreated(null);
}
对于C#我现在只会照着别人的程序改,初始化时调用OnHandleCreated(null)一次,后面每次重新插拔一次后也调用一次.什么原理我也不清楚,你找找你那边有没有对应的函数我用别人写的一个C#库, 里面是有个设备注册的,必须在每次指定VID/PID设备插入后注册一下,不然就很可能出现第一次能用,但重新插拔一次后就不能用了
我的也是win32,我就在主窗口的消息处理函数里拦截WM_DEVICECHANGE消息,处理DBT_DEVNODES_CHANGED事件,然后用SetupApi函数枚举USB设备,看是否USB转串口插入或拔出了。
需要 PC 端的程序监测 OnDeviceChange 消息。当设备拔掉时,关闭串口。设备重新插入后,重新打开串口。