2016-05-04 4 views
0

私は比較的新しいJNAを使い、JNAeratorツールを見つけました。私はそれが簡単な方法だと思っていましたが、私はどのように私は私のインターフェイスとさまざまなファイルを生成するために難しいと私はそれが動作していない可能性がありますデバッグや理解を見つけることです。 http://www.ftdichip.com/Support/Knowledgebase/index.html?ftd2xx_h.htmJNAeratorとftd2xxライブラリを使用するJNA/Java

そして、それはここで、以下のJava JNAファイルを生成:Windowsプログラミングは、ヘッダファイルはここにある...自分自身の生活を容易にするJNAとそれゆえ試み、

私の得意ではありませんhttp://pastebin.com/hpJgSRMk

今私のサンプルアプリケーションは、単純に

..私は、その後の周りの反復となどを操作することができ、これらの接続されたデバイスを、一覧表示しようとしている
import com.sun.jna.NativeLong; 

import ft2xx.Ftd2xxLibrary; 
import ft2xx.Ftd2xxLibrary.LPDWORD; 

public class Test { 
    public static void main(String[] args){ 
     LPDWORD lpd = new LPDWORD(); 
     NativeLong nl = Ftd2xxLibrary.INSTANCE.FT_CreateDeviceInfoList(lpd); 
     System.out.println("Call State: " + nl); 
    } 
} 

私はここで読んでいるものを、次のこの:http://www.ftdichip.com/Support/Documents/ProgramGuides/D2XX_Programmer's_Guide(FT_000071).pdfどのように接続されたデバイスをリストする方法を詳しく説明します。

したがって、私のメソッドは6を返します。これは無効なパラメータを示しますが、私はコードを自動生成し、スタックしていない、私は少し進歩する方法については無知だ。

実装して使用する必要のあるメソッドがあればJNAeratorを使用しましたが、この特定の目的のためにJNAとこのように生成されたコードは簡単だと信じていました。

すべての手がかり、または基本に戻る必要がありますか?

私はEclipse(Mars)とWeb Start版のJNAeratorを使用してWindows 7を使用しています。

答えて

0

ポインタをよく理解していなければ、混乱の世界に入ります。呼び出しにはDWORD(Java int)へのポインタが必要です。あなたは1を渡していますが、デフォルト値は0です。これはNULLポインタと同じです。 IntByReferenceを使用する場合は、呼び出し後に少なくともIntByReference.getValue()を使用して、ネイティブメソッドが渡されたメモリバッファに "返された"ものを確認することができます。