现在想做个设备,PC经usb hub连接多台CH372设备,当ch372设备随机插拨时,上位机要怎么识别是哪个设备被插拨,是通过设备序号吗?要如何获取该序号,如果已有多台设备插入,再拨出一台,剩下的设备序号是否会重新排序?没找到相关资料,还望多指教,谢谢。
就拔出一台设备,剩下的设备序号不会变,如果你重新打开一下设备,序号可能会变.
补充:楼上说的不会变的前提是未打开设备的情况下
多台ch372设备的随机插拨产生的中断通知事件,在PC机端是否可用同一个中断处理程序进行处理?即如下设置中断程序 for(UINT i=0;i<10;i++) //打开所有设备 { if ( CH375OpenDevice( i ) == INVALID_HANDLE_VALUE ) // 使用之前必须打开设备 { //NotifyRoutine(CH375_DEVICE_REMOVE); //设备没打开 usbCheckBox[i] = FALSE; //打开失败 } else { m_OpenUSB = TRUE; //标记已有设备打开 // NotifyRoutine(CH375_DEVICE_ARRIVAL); //设备打开 CH375SetTimeout( i,2000,2000);
CH375SetExclusive( i, FALSE ); CH375SetIntRoutine( i, mInterruptEvent ); //设置中断 Sleep( 50 ); CH375SetExclusive( i, TRUE ); } } 所有中断事件都对应同一个中断:mInterruptEvent()是否可行?还是每一个事件都对应一个单独的中断程序?
随机插拔产生的中断可以合用一个中断服务程序.但是对于每个设备的中断端点而设的中断服务程序必须是单独的,不能合用.
谢谢ls的回答,但还有一点没想明白。 就是在随机插拔产生的中断中,PC如何取得该刚插入设备的序号?因为PC应用程序是按各设备的序号标记 进行分别处理的,一个设备对应一个处理程序。所以必须得到设备的序号,才能进行进一步的处理。
谢谢,急用,请帮忙回答一下!
关于设备的插拔产生的中断,其实他监视的是CH375接口类下的所有设备,也就是说同一ID的设备插拔通知可以只设置一次.不同的设备ID在设置插拔中断服务程序时,指定ID号,那么在有中断时会判断设备ID来决定是否产生中断. 在插拔中断服务程序里,你可以通过CH341GetDeviceName()来获取设备名来判别设备的变动.