[英]JNA/Java using JNAerator and ftd2xx Libraries
我對使用JNA比較陌生,並找到了JNAerator工具。 我以為這是一個簡單的方法,但是,如何生成接口和各種文件卻使我很難調試或理解為什么它可能無法正常工作。 Windows編程不是我的專長,因此JNA嘗試使自己的生活變得輕松...
頭文件在這里: http : //www.ftdichip.com/Support/Knowledgebase/index.html?ftd2xx_h.htm
並且在此處生成了以下Java 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和這樣生成的代碼將很容易實現此特定目的。
有什么線索,還是我應該回到基礎上?
我在Windows 7上,使用Eclipse(Mars)和JNAerator的網絡啟動版本。
如果您對指針沒有足夠的了解,那么您將陷入一片混亂。 您的呼叫需要一個指向DWORD
(Java int
)的指針。 您正在傳入一個,但是它的默認值為零,它與NULL指針相同。 如果使用IntByReference
,則至少可以在調用之后使用IntByReference.getValue()
,以查看傳遞給它的內存緩沖區中的本機方法“返回”給您的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.