0

有谁知道我下面的代码会出现什么问题?

我正在尝试创建一个可以访问外部传感器并显示正在从设备读取的数据的 Android 应用程序。我设法取回了一个字节数组,但我不确定这如何转换为我希望读取的整数。

在创建 Android 应用程序之前,我决定先在 Windows 上创建一个 java 应用程序,以尝试更好地理解问题。

我觉得项目设置正确,我已经导入了 ftdichip.win32 和 ftdichip.ftd2xx 库,并且我认为我已经设法找到了设备。

但是,我无法读取我希望传感器收集的值。我不确定这是否与无符号字节有关?

我在下面包含了我的代码,我们将不胜感激任何可以提供的帮助。

    import jd2xx.JD2XX;

以上是唯一必要的导入(据我了解?)

    JD2XX jd = new JD2XX();

    //list by Serial Number
    Object[] devs = jd.listDevicesBySerialNumber();
    for (int i = 0; i < devs.length; ++i) {
        System.out.println(devs[i]);
    }

    //List by Description
    devs = jd.listDevicesByDescription();
    for (int i = 0; i < devs.length; ++i) {
        System.out.println(devs[i]);
    }

    //List by location
    devs = jd.listDevicesByLocation();
    for (int i = 0; i < devs.length; ++i) {
        System.out.println(
                Integer.toHexString((Integer) devs[i]));
    }

    //open device
    jd.open(0);

    //configure the device
    jd.setBaudRate(38400);
    jd.setDataCharacteristics(
            8, JD2XX.STOP_BITS_1, JD2XX.PARITY_NONE);
    jd.setTimeouts(100, 100); //Set the time in ms between reads and writes (i think)
    jd.setFlowControl(JD2XX.FLOW_NONE, 0, 0);
    jd.setTimeouts(1000, 1000);

    while (true) {
    //try this 
    String msg = "So i can send it a message";
    int ret = jd.write(msg.getBytes())
    System.out.println(ret + "bytes sent.");

    //read 
    int test = jd.read()
    System.out.println("This is what is returned: " + test);
    }

如果有人能解释我没有从设备中获得任何价值的原因,那么你绝对是救命稻草。

非常感谢。

4

1 回答 1

2

您应该首先检查队列:

int status = ftDev.getQueueStatus();
byte[] data = new byte[(int) status]; 
long lngBytesReturned = ftDev.read(data,data.length);

我使用了来自 FTDI 网站的 android d2xx 库和 D2xxManager。

于 2014-05-20T20:25:35.963 回答