gpt4 book ai didi

java - JNA 通过引用传递结构帮助

转载 作者:搜寻专家 更新时间:2023-11-01 03:14:59 26 4
gpt4 key购买 nike

我正在尝试使用 JNA 通过插入计算机的 USB 设备进行通话。使用 Java 和提供给我的 .dll。我在使用 Write 函数时遇到问题:

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 文档……我想。任何指针。谢谢大家。

最佳答案

我对 JNA 了解不多,但当指针作为简单地址传输时,跨语言数据传输通常会失败。

如果您要发送的是它指向的数据,则可能在某处调用了打包方法。如果不是您自己编写的,也许它是由这个 JNA 框架生成的...将其添加到您的问题中可能会有用。

将 C 字符映射到 Java 字节对我来说也有点奇怪,但我知道它可能来自哪里。您在什么操作系统上运行此代码?

关于java - JNA 通过引用传递结构帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/934897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com