在Linux DLP-IO20(使用FTDI芯片)的通信

问题描述 投票:2回答:2

我试图在Linux(Ubuntu的)有个DLP-IO20板进行沟通,但每次我得到一个错误。 Windows下的同一个程序运作良好。

为了与板通信,我第一次安装所有的驱动程序FTDI,然后我生成用于Linux libjd2xx.so库

现在,当我尝试运行JD2XX.java文件我得到以下错误的主程序:

指数:0,国旗:为0x0,类型:0x5的,ID:0x4036001,位置:量0x204,序列:12345678,描述:DLP-IO20,处理:为0x0异常在线程 “主” java.io.IOException的:无效手柄(1)

正如你可以看到主板信息由程序读取,但是,当它试图发送一个命令到板上面抛出异常。是抛出一个异常的行以下代码的最后一个:

 DeviceInfo di = jd.getDeviceInfoDetail(0);
    System.out.println(di.toString());
    jd.open(0);
    String msg = "Hello dude. This is the message.";
    int ret = jd.write(msg.getBytes());

任何建议?

java ftdi
2个回答
1
投票

以下是不是Java的答案,但说明了如何与DLP-IO8非常简单和直接通信,而无需安装任何驱动程序,也许这可以帮助您与您的DLP-IO20

Linux设备上通过文件抽象(不像上如Windows,你必须调用.dll的功能,接入设备)。

所以,当我插入我的DLP-IO8的USB端口,将出现/dev/ttyUSB0文件。 (它可能会有所不同,所以你可以在终端运行dmesg,它会显示一个日志进行连接/断开,地理位置优越,所有的USB设备,这样你就能推断出那位于您的DLP-IO8)

现在你不需要任何驱动程序或任何东西。 /dev/ttyUSB0被认可和符合您的DLP-IO20所以你去好,你可以写/读,以写/dev/ttyUSB0 /读给你的DLP-IO8。

因此,从DLP文档,你必须在一115200波特率可以设置这个值波特沟通:

sudo stty -F /dev/ttyUSB0 115200

不过从DLP文档,如果你想获得信道1上的电压值,那么你必须ASCII字符'Z'发送到DLP-IO8。所以,开放两个终端,在其中的一个运行:

sudo cat /dev/ttyUSB0

为了看看有什么返回板。与另一个终端执行命令

echo -en '\x5A' > /dev/ttyUSB0

为了发送所述字符'Z'(其ASCII数字是十六进制5A)。现在你应该看到在第一终端的电压值。

所以,如果你不知道如何在纯Java做的,你总是可以执行从Java的系统命令。


0
投票

尝试运行与FTDI驱动程序所提供的读出例如程序(下释放/示例/ EEPROM /读如果我记得)。看看是否有任何问题。

如果你绝望,是否安装ftdi_sio并尝试与“rmmod的ftdi_sio”删除它(这就是worked for me

© www.soinside.com 2019 - 2024. All rights reserved.