我正在尝试连接到使用Android中的Java USB Utils从USB连接的条形码阅读器读取。我能够检测到USB以及制造商的详细信息,但无法读取条形码字符串。我在从条形码阅读器读取字节时使用USB Util到Hex String。 (http://javax-usb.sourceforge.net/jdoc/javax/usb/util/UsbUtil.html#toHexString(byte))
但是,上述操作的结果是随机字符串,而不是扫描的原始条形码。有人可以帮我将字符串转换为所需的有效格式吗?我相信我能够扫描条形码并且能够获得值,但数据的格式不是十进制的,并且可能是如上所述的十六进制字符串。如何将捕获的此字符串转换为所需的十进制格式?
使用的示例代码:
public class HighCardReader throws UsbException
{
StringBuffer output;
super();
this.listener = new Vector();
super.addListener(new CardObserver(){
public void readByte(byte[] data) {
/**
* parse the data. */
output= new StringBuffer();
for (int i=0; i<data.length; i++)
{
output.append(UsbUtil.toHexString(data[i]));
}
synchronized (listener) {
for (int i = 0; i < listener.size(); i++) {
if (listener.get(i) instanceof CardObserver) {
CardObserver lis = (CardObserver) listener.get(i);
/**
* convert string data into byte array.*/
System.out.println("output is = " + output.toString());
byte[] b = output.toString().getBytes();
output= new StringBuffer();
lis.readByte(b);
//The updating interval of the display is 1 second.
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
我尝试使用三个示例代码将接收到的数据字节数组转换为目标字符串,但都没有工作:
试一试:
char[] charBuffer = new String(data, Charset.forName("US-ASCII")).toCharArray();
尝试2:
byte[] decodeByteArray = Base64.decodeBase64(data);
String dataString = new String(decodeByteArray);
尝试3:
String dataString=new String(data);
我对通过条形码阅读器进行的USB Hid转换知之甚少。