PDA扫描设置参考: http://blog.csdn.net/wang_cel/article/details/46845731
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 {@Testpublic void testHex() throws UnsupportedEncodingException{String hexString="53534e303031313530383234303031";byte[] bytes=PDAHexDecoder.hexStringToBytes(hexString);String result=new String(bytes, "UTF-8");System.out.println(result);}@Testpublic 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("解码提示:网络访问异常!");}});}