Tag: 红外线

发现多个USB-IrDA设备,打开并连接每个插槽

对于任何好的套接字程序员: 是否可以使用套接字通过USB端口枚举连接到PC的多个活动IrDA设备? 如果是这样,怎么样? 这是我的主要问题。 该post的其余部分详细说明了我所尝试的内容。 我正在使用Microsoft SDK和ANSI C编译器在Windows 7上开发应用程序。 应用程序设计要求它检测范围内的任何IrDA设备,使用套接字连接,并通过多个IrDA加密狗(每个设备一个加密狗)与多个设备通信,每个加密狗通过USB连接到PC。 注意:应避免使用虚拟COM端口。 我已成功使用套接字调用来枚举 ,创建套接字,连接并与单个IrDA设备通信。 这很好用。 但是,我不确定如何设置代码以成功枚举多个IrDA设备。 到目前为止,我一次只能连接到一个设备。 即使很明显Windows正在“ 发现 ”三个IrDA加密狗,如下图所示 – 整体情景(第一张图片),设备管理器(第二张图片),设备属性(第三张图片): 图1:总体情况: 图2:从设备管理器: 图3:每个“找到的”IrDA设备的属性 (包含后两个箭头以显示所有三个设备的Port-Hub地址) 我正在使用的简单场景: (某些变量名称与上面的场景描述不同,但在代码中是一致的) 第一个 – 我将两个有效的IrDA设备放在两个加密狗的前面(由几英尺隔开,因此两个设备之间没有信号模糊)现在只使用2来保持简单。 第二 – 我创建了2个IrDA套接字,使用两个句柄:socket(AF_IRDA,SOCK_STREAM,0); 3号 – 我打电话: if ((errorCode = getsockopt(gSocketHandle[0], SOL_IRLMP, IRLMP_ENUMDEVICES, (char*)pDeviceList, &deviceListLength)) == SOCKET_ERROR) 4 – 然后我用pDeviceList和中的新信息填充destinIrdaDeviceAddr memcpy(&destinIrdaDeviceAddr.irdaDeviceID[0], &pDevList->Device[0].irdaDeviceID[0], 4); 5号 – 致电: […]