Я пытаюсь использовать JNA для связи через USB-устройство, подключенное к компьютеру. Используя Java и .dll, которые были предоставлены мне. У меня проблемы с функцией записи:
код 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. Я также подтвердил, что устройство работает при тестировании только с кодом C.
Я внимательно прочитал документацию JNA ... Я думаю. Любые указатели. Спасибо всем.