我尝试通过Mac与Denkovi中继板(FTDI)进行通信。如果我尝试打开FTDevice,我会得到例外:
com.ftdi.FTD2XXException: D2XX error, ftStatus:INVALID_HANDLE
我安装了最新的FTDI驱动程序。
我发现了这篇文章: Using Java to access SainSmart 4 Relay with Mac OS 10.8.5 doesn't work
他们写道,问题出在64位JVM。但这是4年前。现在有解决方案吗?
借助Denkovi原始软件(也包括Java),我可以与开发板通信。但是我只有Jar,所以我看不到代码,他们是怎么做到的。
我的代码:
public static void main(String[] args) {
FTDevice usb16Relay;
List<FTDevice> fTDevices;
byte[] command = new byte[5];
try {
fTDevices = FTDevice.getDevices();
usb16Relay = fTDevices.get(0);
System.out.println(usb16Relay.getDevDescription());
System.out.println(usb16Relay.getDevID());
System.out.println(usb16Relay.getDevSerialNumber());
usb16Relay.open();
usb16Relay.setBaudRate(9600);
usb16Relay.setDataCharacteristics(WordLength.BITS_8, StopBits.STOP_BITS_1, Parity.PARITY_NONE);
command[0]='x';
command[1]=1;
command[2]=0;
command[3]='/';
command[4]='/';
usb16Relay.write(command);
usb16Relay.close();
} catch (FTD2XXException ex) {
ex.printStackTrace();
}
}