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 Web サイトの D2xxManager で Android d2xx ライブラリを使用しました。

于 2014-05-20T20:25:35.963 に答える