uni-app 条形码扫描准确度不高

uni-app 条形码扫描准确度不高

类别 信息
产品分类 uniapp/App
PC开发环境 Windows
PC版本号 Win10
HBuilderX 正式
HBuilderX版本 3.1.12
手机系统 Android
手机版本号 Android 7.1.1
手机厂商 vivo
手机机型 vivo Y79A
页面类型 vue
打包方式 云端
项目创建方式 HBuilderX

示例代码:

async sacnOrder(){
uni.scanCode({
scanType: ['barCode'],
success:(async(res) => {
console.log('条码类型:'+res.scanType);
console.log('条码内容:'+res.result);
this.orderNo = res.result;
res = await this.$myRequest({
url:'/***/tmsApp/queryOrder',
data:{
orderNo:this.orderNo
},
method:'GET'
})
var item = res.data.data.receiptDTO;
if(item == undefined){
uni.showToast({
title:'未查询到此送货单',
icon:"none"
})
return
}
var flag = 0;
let swipeList = this.swipeList;
if(swipeList !==undefined && swipeList.length > 0 ){
swipeList.forEach(item1 =>{
if(item1.id == item.id ){
flag = 1;
} 
})  
}
if(flag == 1){  
uni.showToast({  
title:'此送货单已扫描',  
icon:"none"  
})  
return  
}  
let key = "options";  
let value =  [  
{  
text: '删除',  
style: {  
backgroundColor: 'rgb(255,58,49)'  
}  
}  
];  
item[key] = value;  
let date = new Date();  
let dateNew = this.dateFormat("YYYYmmddHHMM", date)  
console.log('扫描一维码,时间查看'+JSON.stringify(dateNew));  
item["inCarStartDate"] = dateNew;  
this.swipeList.push(item);  
var trayN = parseInt(this.trayAllNum);  
this.orderAllNum = this.swipeList.length;  
this.trayAllNum = trayN+parseInt(item.tray);  
console.log("result:"+JSON.stringify(swipeList, null, 2));  
}),  
})  
},

操作步骤:

  1. 制作条形码
  2. APP端扫描

预期结果:

与制作的条形码号码一致

实际结果:

偶尔一致,偶尔出现随机八位数

bug描述:

扫描条形码的时候 有时候是对的,有时候扫出来是个随机的八位数,我看了下 日志打印出来的条码类型一直在变,但我扫的都是同一个单码.希望开发者大佬们看看有没有什么办法提高下准确度。谢谢


更多关于uni-app 条形码扫描准确度不高的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 条形码扫描准确度不高的实战教程也可以访问 https://www.itying.com/category-93-b0.html


从您的描述和代码分析,条形码扫描准确度问题可能源于以下几个方面:

  1. 环境光线和角度影响:条形码扫描对光线条件敏感,建议在光线充足、无反光的环境下进行,保持手机与条形码平行,距离适中(10-20厘米)。

  2. 设备硬件限制:vivo Y79A作为中端机型,摄像头性能和自动对焦能力可能较弱,建议测试其他高端机型对比效果。

  3. 扫描参数优化:当前代码仅指定了barCode类型,可尝试扩展支持的格式:

    scanType: ['barCode', 'qrCode', 'datamatrix']
    

    虽然您只扫描条形码,但放宽类型限制有时能提高识别容错率。

  4. 图像预处理缺失:uni.scanCode依赖系统原生识别能力,若条形码打印质量不佳(如模糊、褪色),建议先通过canvas对图像进行锐化或对比度增强处理。

  5. 识别日志分析:您提到扫描类型频繁变化,这通常说明系统在尝试多种解码算法。建议在success回调中增加重试机制:

    if (res.scanType !== 'barCode') {
      // 可设置最多3次重试扫描
    }
回到顶部