有谁知道我的代码会出现什么问题?
我正在尝试创建一个Android应用程序,可以访问外部传感器并显示从设备读取的数据。我已经设法恢复了一个字节数组,但我不确定这是如何转换为我希望阅读的整数。
我决定首先在Windows上创建一个java应用程序,以便在创建Android应用程序之前尝试更好地理解该问题。
我觉得项目设置正确,我已经导入了ftdichip.win32和ftdichip.ftd2xx库,我认为我已经设法找到了该设备。
但是,我无法读取希望传感器正在收集的值。我不确定它是否与无符号字节有关?
我已将我的代码包含在下面,我们将非常感谢您提供的任何帮助。
import jd2xx.JD2XX;
以上是唯一必要的导入(根据我的理解?)
JD2XX jd = new JD2XX();
//list by Serial Number
Object[] devs = jd.listDevicesBySerialNumber();
for (int i = 0; i < devs.length; ++i) {
System.out.println(devs[i]);
}
//List by Description
devs = jd.listDevicesByDescription();
for (int i = 0; i < devs.length; ++i) {
System.out.println(devs[i]);
}
//List by location
devs = jd.listDevicesByLocation();
for (int i = 0; i < devs.length; ++i) {
System.out.println(
Integer.toHexString((Integer) devs[i]));
}
//open device
jd.open(0);
//configure the device
jd.setBaudRate(38400);
jd.setDataCharacteristics(
8, JD2XX.STOP_BITS_1, JD2XX.PARITY_NONE);
jd.setTimeouts(100, 100); //Set the time in ms between reads and writes (i think)
jd.setFlowControl(JD2XX.FLOW_NONE, 0, 0);
jd.setTimeouts(1000, 1000);
while (true) {
//try this
String msg = "So i can send it a message";
int ret = jd.write(msg.getBytes())
System.out.println(ret + "bytes sent.");
//read
int test = jd.read()
System.out.println("This is what is returned: " + test);
}
如果有人能解释为什么我没有从设备中获得任何价值,那么你将是一个绝对的救命。
非常感谢。
答案 0 :(得分:2)
您应首先检查队列:
int status = ftDev.getQueueStatus();
byte[] data = new byte[(int) status];
long lngBytesReturned = ftDev.read(data,data.length);
我将android d2xx库与D2xxManager一起使用 来自FTDI网站。