我正在使用供应商提供的 ActiveX 控件来读取 RFID 卡的 USB 设备。
我的应用程序是用 java 编写的,因此我使用 EZJCom 作为“桥梁” - 因此,activeX 控件的所有属性和方法都可以通过 java 类使用。
如果我查看 Windows 设备管理器,读卡器设备位于 com 端口 COM8
上。
现在,问题是由这个枚举引起的,它指示设备正在运行的 COM 端口。
typedef enum {
COM1 = 1,
COM2 = 2,
COM3 = 3,
COM4 = 4
} CommPortConstants;
我的 Java 代码可以做到这一点:
cardReader.get_DMF5Ax().setCommPort(CommPortConstants.COM4); // OK
但不是这个:
cardReader.get_DMF5Ax().setCommPort(CommPortConstants.COM8); // fails!
换句话说,由于此枚举的性质,我无法在 COM8
上查找设备(通过 java 调用 ActiveX 控件)。
对于我的问题:有没有办法“编辑”ActiveX 控件并向枚举添加值?
或者有没有更好的方法(除了EZJCom)来使用java中的activeX控件。
请注意,我没有 ActiveX 控件的源代码,并且(来自 java 世界)我也不熟悉制作它们的开发环境。
最佳答案
我对 EZJCom 一无所知(对 Java 也知之甚少),但从 ActiveX/COM 来看,我认为您应该不会遇到问题。
COM 方法(特别是自动化方法)不获取 Java 枚举。在大多数情况下,它们要么得到 LONG,而在某些情况下,它们会得到 VARIANT 或类型 I4。
看起来 CommPortConstants 只是常量,所以这应该适合您:
cardReader.get_DMF5Ax.setCommPort(8)
关于java - 可以修改第三方 ActiveX 控件中的枚举吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20024135/