1

我正在使用声明为的字节数组数据类型:

byte[] sendbuf= new byte[64];

后来,我打电话:

dev.write(sendbuf);  // see class code below for this

谁能告诉我为什么在 OSX 10.7.5 下一切正常,但在 Windows XP 下我得到一个异常“参数不正确”?两个操作系统之间的数据类型有区别吗?

HIDDevice.class 是:

public native int write(byte[] data) throws IOException;

/**
 * Read an Input Report to a HID device.
 *
 * @param buf a buffer to put the read data into
 * @return the actual number of bytes read 
 * @throws IOException if read error occured
 */

这是错误:

java.io.IOException: The parameter is incorrect.
    at com.codeminders.hidapi.HIDDevice.write(Native Method)
    at HIDTesting2.hidData.run(hidData.java:96)
4

1 回答 1

0

我应该更好地阅读 hidapi API 的说明。“data[] 的第一个字节必须包含报告 ID。对于仅支持单个报告的设备,必须将其设置为 0x0。” 在我的辩护中,它在我的 OSX 10.7.5 环境中运行得很好。我的 Arduino 设备收到了很好的消息,我能够从第一个元素 byte[0] 处理 byte[] 数组。但是,当我在 XP 计算机上运行 .jar 时,HID 接口正在寻找第一个 0x0 字节。我需要做的就是更改代码以将其作为缓冲区的第一个字节传递,Windows 和 Mac 都可以正常看到写入请求。

于 2018-05-13T02:36:44.910 回答