我正在使用声明为:
的字节数组的数据类型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)
答案 0 :(得分:0)
我应该更好地阅读hidapi API的说明。 " data []的第一个字节必须包含报告ID。对于仅支持单个报告的设备,必须将其设置为0x0。"在我的防御中,它在我的OSX 10.7.5环境中没有这个功能就好了。我的Arduino设备得到了很好的消息,我能够从第一个元素byte [0]处理byte []数组。然而,当我在我的XP计算机上运行.jar时,HID接口正在寻找0x0第一个字节。我需要做的就是更改代码以将其作为缓冲区的第一个字节传递,并且Windows和Mac都认为写入请求正常。