平台差异使用JNA读取字节值

时间:2017-01-02 22:21:37

标签: jvm jna ftdi jnaerator

我创建了一个JavaFX应用程序来从FTDI外围设备检索数据。我使用JNAerator生成API,一切都在我的开发机器(OS X)上运行得很好。但是,当在同事的盒子(Windows)上进行测试时,BirdJ Pointer.getBytes()方法返回字节数组,其中每个值都正好偏离128.

是否存在已知的平台差异或Java中的其他内容可以解释这种不一致的行为,或者这更可能是本机FTDI驱动程序中的问题?

是否有更简洁的解决方法,而不是通过引入丑陋的平台特定逻辑来修改读取或写入的每个字节?

修改

我不确定我的问题描述是否清楚。这是一个具体的例子。

我从FTDI设备请求3个字节以确认它已准备好发送数据。我得到[-91,-1,-1],它与文件说的相符“A5 FF FF”。编写我的代码是为了接受答案,一切都很顺利。

我的同事获得[37,127,127],即“25 7F 7F”。由于这不是预期值,我的代码会报告错误并退出。

1 个答案:

答案 0 :(得分:0)

调用SetDataCharacteristics以确保所有使用8位的单词解决了我的问题。