java - 在 Mac OS 10.8.5 上使用 Java 访问 SainSmart 4 Relay 不起作用

标签 java usb

我在 Mac (10.8.5) 上使用 SainSmart 4 Relay USB 时遇到问题。我尝试在使用 d2xx/fdti 驱动程序时通过 Java 进行访问。

这是我的 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.

哪个“回声”会切换继电器?我该如何修复异常?我真的很感谢任何帮助!

干杯, 菲利克斯

最佳答案

我在 Fedora 19 上遇到了同样的问题。

事实证明,该问题是在 64 位 JVM 上运行的 JavaFTD2XX 的问题。句柄看起来是一个整数,但对于 64 位来说它需要是

切换到 32 位 JRE 后它就可以工作了。

对于 Mac,您可能只需将 -d32 参数添加到 JVM。

关于java - 在 Mac OS 10.8.5 上使用 Java 访问 SainSmart 4 Relay 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20448032/

相关文章:

Java Class.forName 和混淆名称,java 找不到类

java - 将 itext pdf 保存为 blob,无需物理存在。

java - 使用 Java Sound API 进行多 channel USB 录音?

linux-kernel - USB 端口速度 Linux

android - Android App中获取 "USB GPS"的PVT包

java - 通过索引和特定限制检索 Mongo 文档

java - 为什么 AudioSystem.getAudioInputStream() 会抛出 IllegalArgumentException

java - 在不同的开关中使用单选按钮在android中添加变量

c++ - 在 windows xp 中获取所有已注册的 usb hid 设备的列表

android - 如何在 Android USB 主机中将字节转换为字符串?