我刚刚在这里获得了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。
谢谢!