8 Channel Relay不支持JavaFTD2xx OS错误

时间:2015-09-25 23:56:01

标签: java

我刚刚在这里获得了8通道Sain智能USB继电器:http://www.amazon.com/SainSmart-Eight-Channel-Relay-Automation/dp/B0093Y89DE/ref=sr_1_sc_1?ie=UTF8&qid=1443224362&sr=8-1-spell&keywords=8+channel+relay+sain+smart

我正在尝试使用java连接到我的Windows 64位计算机上的设备。我已经下载了JAVAFTD2xx项目的所有源代码,该项目应该使用位于github上的ftd2xx驱动程序。

我下载的ftd2xx驱动程序位于http://www.ftdichip.com/Drivers/D2XX.htm

我下载了64位Windows版本并运行了可执行文件。

然后我在netbeans中打开了JAVAFTD2xx项目并创建了一个主类。这是我主要课程的代码。

 List<FTDevice> fTDevices;
     //fTDevices= FTDevice.getDevices(true);
     fTDevices = FTDevice.getDevices();
     for (FTDevice fTDevice : fTDevices) {

        System.out.println("fTDevice:" + fTDevice);
        System.out.println("fTDevice.DevType:" + fTDevice.getDevType());
        System.out.println("fTDevice.DevID:" + fTDevice.getDevID());
        System.out.println("fTDevice.DevLocationID:" + fTDevice.getDevLocationID());

        fTDevice.open();
        fTDevice.setBaudRate(9600);
        fTDevice.setDataCharacteristics(WordLength.BITS_8, StopBits.STOP_BITS_1, Parity.PARITY_NONE);
        fTDevice.setTimeouts(1000, 1000);

        fTDevice.setBitMode((byte)0xFF, BitModes.BITMODE_SYNC_BITBANG);

        // Set true (energised) or false (not energised) for each relay (1 to 4)
        boolean relayStates[] = { true, true, true, true };

        int value = 0;
        for (int i=0; i < relayStates.length; i++) {
           if (relayStates[i]) value += (1 << i);
        }
        fTDevice.write(value);

        fTDevice.close();
     } 

我得到的错误是不支持操作系统。当我进一步研究代码时,问题是输入流对于下面的代码为空。

if (Platform.isWindows()) {
                in = Loader.class.getResourceAsStream(
                        "/natives/i386/ftd2xx.dll");
            }

我已经检查过,而Platform.isWindows()确实返回true。我还检查了文件夹中是否存在该文件(我将文件夹复制并粘贴到我的项目中),它确实看到了该文件。但是,Loader.class.getResourseAsStream设置为null。有人可以请帮助我实现这一目标或提供其他语言的其他解决方案。我不介意用另一种语言来做这件事,但最好是java。

谢谢!

0 个答案:

没有答案