gpt4 book ai didi

Java scsi访问

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:53 24 4
gpt4 key购买 nike

我想将 Linux C 程序移植到 Java。该程序控制使用 USB 电缆连接到 PC 的相机。 C 代码使用 Linux SCSI Generic (sg)。

C 程序的示例代码:

#include <linux/../scsi/sg.h>

...

static int scsi_write(int sg_fd, uint8_t *cmd, uint32_t cmdLen,
uint8_t *buf, uint32_t bufLen) {

sg_io_hdr_t io;
int r;

memset(&io, 0, sizeof(io));

io.interface_id = 'S';
io.cmd_len = cmdLen;

...
r = ioctl(sg_fd, SG_IO, &io);
...
}

有没有办法将此程序移植到 Java?我正在寻找为 Java 编写的跨平台 SCSI 库,但没有找到。我也在寻找基于 SCSI/sg 的 JNI,但也不走运。

最佳答案

虽然 Java 支持很多 POSIX API,但 ioctl 系统调用并不是它的一部分。您需要做的是使用 JNI 允许 Java 调用函数,例如您在问题中编写的 scsi_write 。考虑到您无论如何都在谈论与外部硬件的接口(interface),使用更多垫片的额外成本是微乎其微的。 cmdbuf 参数自然地映射到 Java 字节数组(并且由于 Java 的数组知道它们的长度,因此您不会对 cmdLenbufLen Java 级别的参数)。

关于Java scsi访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4497711/

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