2013-12-07 48 views
0

我的Mac(10.8.5)使用SainSmart 4 Relay USB時遇到問題。我正在嘗試使用d2xx/fdti驅動程序訪問Java。使用Java訪問使用Mac OS 10.8.5的SainSmart 4 Relay不起作用

這是我的Java代碼:

public class Demo { 

    public static void main(String[] args) throws InterruptedException { 
    try { 
     List<FTDevice> fTDevices; 
     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.close(); 
     } 

    } catch (FTD2XXException ex) { 
     Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    } 
} 

而我只是得到這個異常:

com.ftdi.FTD2XXException: D2XX error, ftStatus:INVALID_HANDLE 
at com.ftdi.FTDevice.ensureFTStatus(FTDevice.java:139) 
at com.ftdi.FTDevice.setBaudRate(FTDevice.java:324) 
at de.relay.Demo.main(Demo.java:27) 

什麼是 「INVALID_HANDLE」 是什麼意思?

我也嘗試通過串口連接,它的工作原理。

# kextload -b com.FTDI.driver.FTDIUSBSerialDriver 
# cu -l /dev/tty.usbserial-XXXXXXX --baud 9600 
Connected. 

哪個「回聲」會切換繼電器?我該如何修復異常?我非常感謝任何幫助!

乾杯, 菲利克斯

回答

1

我遇到在Fedora 19

的問題同樣的問題竟然是用在64位JVM上運行JavaFTD2XX的問題。句柄似乎是一個整數整數它需要是一個爲64位。

切換到32位JRE使它工作。

對於Mac,您可能只需將-d32參數添加到JVM即可。

相關問題