JNAを使用して、コンピュータに接続されたUSBデバイスを介して通信しようとしています。 Javaと私に提供された.dllを使用しています。JNAの参照構造による継承構造
Cコード:
typedef struct {
unsigned int id;
unsigned int timestamp;
unsigned char flags;
unsigned char len;
unsigned char data[16];
} CANMsg;
CAN_STATUS canplus_Write(
CANHANDLE handle, //long
CANMsg *msg
);
のJava等価:私は書き込み機能に問題が午前
public class CANMsg extends Structure{
public int id = 0;
public int timestamp = 0;
public byte flags = 0;
public byte len = 8;
public byte data[] = new byte[16];
}
int canplus_Write(NativeLong handle, CANMsg msg);
を私はデバイスを開閉できることを確認しました。閉じるにはNativeLongハンドルが必要です。そのため、ここではCANMsg msgが問題であると仮定しています。また、Cのみのコードでテストしたときにデバイスが動作することを確認しました。
私はJNAのドキュメントを徹底的に読みました...私は思っています。任意のポインタ。皆さんありがとう。
それで、JNAにはたくさんの例が書かれています。 翻訳の仕方structs: https://jna.dev.java.net/javadoc/overview-summary.html#structures さらにタイプの翻訳がページに表示されます。 だから彼らはそれをすることができます...なぜ私はできません!いずれかの方法。入力のおかげで。 – tyeh26