1.开启设备扫描功能
1.1定位扫描应用开启的位置
打开控制面板
点击“DataWedge”图标
双击图标打开;
1.2设置扫描格式并开启回车功能
点击“Status:”,条码扫描开启
点“Basic format...“
点”Send data Enabled“
点”7. Send ENTER key“,条码扫描后自动加回车键(根据需要也可选TAB键)
2.扫描二维码后获取到的HEX串解码
如上界面通过扫描输入来查询,若不解码显示出来的是类似“53534e303031313530383234303031”的HEX码输入条件,此种情况自然就查不出相关的记录了;
2.1解码工具类
package com.wlyd.wms.util.api;
/**
*
* @packge com.wlyd.wms.util.api.PDAHexDecoder
* @date 2015年8月26日 上午10:47:23
* @author wlyd
* @comment PDA扫描二维码HEX解码工具
* @update
*/
public class PDAHexDecoder {
/**
*
* @MethodName: hexStringToBytes
* @Description: hexString ->Bytes
* @param hexString
* @return
* @throws
*/
public static byte[] hexStringToBytes(String hexString) {
if (hexString == null || hexString.equals("")) {
return null;
}
hexString = hexString.toUpperCase();
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++) {
int pos = i * 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
return d;
}
/**
*
* @MethodName: charToByte
* @Description: char ->Byte
* @param c
* @return
* @throws
*/
private static byte charToByte(char c) {
return (byte) "0123456789ABCDEF".indexOf(c);
}
/**
*
* @MethodName: bytesToHexString
* @Description: byte——>String
* @param src
* @return
* @throws
*/
public static String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}
/**
*
* @MethodName: printHexString
* @Description: byte——>hexString
* @param b
* @return
* @throws
*/
public String printHexString(byte[] b) {
String a = "";
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
a = a + hex;
}
return a;
}
}
2.2解码测试用例
public class StringTest extends TestCase {
@Test
public void testHex() throws UnsupportedEncodingException{
String hexString="53534e303031313530383234303031";
byte[] bytes=PDAHexDecoder.hexStringToBytes(hexString);
String result=new String(bytes, "UTF-8");
System.out.println(result);
}
@Test
public void testStringToHex(){
String str="SSN001150824001";
String hexString=PDAHexDecoder.bytesToHexString(str.getBytes());
System.out.println(hexString);
}
}
2.3JavaScript处理解码
// 扫描二维码HEX解码
function decode()
{
var batchNo = $.trim($("#batchNo").val());
if (!batchNo || batchNo == "") {
return;
}
var param={"hexCode":batchNo};
$.ajax({
type : 'post',
async : false,
url : "${pageContext.request.contextPath}/pda/hex/decode.html?" + "&res=" + Math.random(),
contentType : "application/json; charset=utf-8",
dataType : 'json',
timeout:5000,
data : JSON.stringify(param),
success : function(result) {
if (result.statusCode == 101) {
$("#batchNo").val(result.data);
}else{
alert(result.reason + "!");
}
},
error : function() {
alert("解码提示:网络访问异常!");
}
});
}