文章 三月 11, 2025

测试文章

文章字数 2.5k 阅读约需 2 mins. 阅读次数 0

var Code_Pixel = [60, 500, 930, 1340, 1800, 2250, 2700, 3150, 3600, 4200]; // 10个坐标点,每两个坐标形成一个区间
var patt = /^V01-/; // 正则表达式,用于验证条码是否以 "V01-" 开头

function onResult(decodeResults, readerProperties, output) {
    var allCodes = ["noread", "noread", "noread", "noread", "noread", "noread", "noread", "noread", "noread"]; // 初始化数组,填入占位符。
    output.content = "";
    for (var i = 0; i < decodeResults.length; i++) { // 遍历所有解码结果
        if (decodeResults[i].decoded) { // 如果条码解码成功
            var X_coordinate = decodeResults[i].symbology.center.x; // 获取条码中心点的 X 坐标
            var Y_coordinate = decodeResults[i].symbology.center.y; // 获取条码中心点的 Y 坐标
            var Code_Name = decodeResults[i].symbology.name;
            var valid = patt.test(decodeResults[i].content); // 使用正则表达式验证条码是否有效
            var Code = decodeResults[i].content.toString(); // 获取条码内容
            var splitcode = /[,|;]/;
            if (Code_Name == 'PDF417' || Code_Name == 'QR') {
                var Code = Code.split(splitcode);
                var idx = 0;
                for (var m = 0; m < Code.length; m++){
                    if(Code[m].indexOf('V01-') != -1){
                        idx = m;
                        break;
                    }		
                }
                if (typeof Code == 'object') {
                    Code = Code[idx].toString();
                    valid = patt.test(Code);
                }
            }
            if (valid && allCodes.indexOf(Code) == -1) { // 如果条码有效且不重复
                // 检查 X 坐标是否在 Code_Pixel 的某个区间内
                for (var j = 0; j < Code_Pixel.length - 1; j++) { // 确保索引不会越界
                    if (X_coordinate > Code_Pixel[j] && X_coordinate <= Code_Pixel[j + 1]) { // 判断是否在区间内
                        allCodes[j] = Code; // 将条码赋值到正确的位置
                    }
                }
            }
        }
    }
    allCodes.reverse(); // 逆序数组
    if (WcsHandler != null) {
        WcsHandler.send(STX + "104" + allCodes.join(",") + ETX); //发送数据给 WcsHandler
    }
    debugSend((STX + "104" + allCodes.join(",") + ETX)); //调试输出
    output.SetupTool = allCodes.join(";"); //设置输出内容
}
0%