uni-app 群索 PDA5501 扫描打印阅证【支持自定义画布、蓝牙秤】 打印失败

uni-app 群索 PDA5501 扫描打印阅证【支持自定义画布、蓝牙秤】 打印失败

代码示例

<template>  
    <view>  
        <button @click="scanCode">扫描</button>  
        <button @click="printHis">打印医疗废物标签</button>  
        <button @click="test">测试</button>  
    </view>  
</template>  

<script>  
    const pda5501 = uni.requireNativePlugin("QS-PDA5501")  
    export default {  
        data() {  
            return {  

            }  
        },  
        onLoad() {  

            pda5501.connect({  
                checkBlack: true //checkBlack 是黑标检测 默认是开启 间隙纸需要true 非间隙纸 false  
            }, res => { //初始化成功 打印成功 和 缺纸 还有扫码结果 都在这里回调  

                var {  
                    type,  
                    result,  
                    msg  
                } = res;  

                switch (type) {  
                    case "message":  
                        if (msg == 0) {  
                            /* 0 是打印成功 1 是缺纸 注意这里文字打印成功的时候不回调*/  
                        }  
                        break;  
                    case "scancode":  
                        /*  
                          msg 是扫码的内容  
                        */  
                        break;  
                    case "connect":  
                        /*  
                          msg=complete 连接外设成功   
                        */  
                        break;  
                    default:  
                }  

                uni.showToast({  
                    icon: "none",  
                    title: JSON.stringify(res)  
                })  
                console.log(res)  
            });  

            /*  
             * 关闭  
             */  
            pda5501.close();  
        },  
        methods: {  
            scanCode() {  
                pda5501.scanCode()  
                // console.log(123)  
            },  
            printHis() {  

                pda5501.printQRCode({  
                    data: "http://www.baidu.com"  
                }, result => {  
                    uni.showToast({  
                        title: JSON.stringify(result)  
                    })  
                });  
            },  
            test() {  
                const ctx = uni.requireNativePlugin("QS-PDA5501-Canvas")  
                ctx.track(res => {  
                    console.log("track", res)  
                })  

                ctx.createCanvasContext({  
                    width: 384,  
                    height: 330,  
                    backgroundColor: "#FFFFFF",  
                    color: "#000000",  
                    textSize: 20  
                })  

                var title = "上海华美医院"  
                ctx.setColor("#000000")  
                ctx.setTextSize(25)  
                ctx.setTextAlign("center")  
                ctx.drawText(title, ctx.getWidth() / 2, 40)  

                ctx.setTextSize(21)  
                ctx.setTextAlign("left")  
                var label = {  
                    "科室": "美容科",  
                    "医废类型": "感染性",  
                    "医废重量": "12 kg",  
                    "收集人": "郑小明",  
                    "时间": "2010-05-11 12:12:44",  
                }  

                var x = 180  
                var y = 100  
                Object.keys(label).forEach(res => {  
                    ctx.setTextSize(21)  
                    ctx.drawText(res + ": ", x, y)  
                    var pos = ctx.measureText(res + ": ")  
                    ctx.setTextSize(16)  
                    ctx.drawText(label[res], x + pos, y - 2)  
                    y = y + 28  
                })  

                ctx.drawQrcode("我是二维码喽", 140, 140, 25, 80)  

                /*  
                 * 这里获取图片的 base64 直接赋值给 图片的 src 完事了  
                 * 当然你要打印的话 直接用 pda5501.printBitmap({bitmap:base64},res=>{});  
                 */  
                this.src = ctx.toDataURL()  
                pda5501.printBitmap({  
                    bitmap: this.src  
                }, res => {  
                    console.log(res)  
                });  
            }  
        }  
    }  
</script>  

<style>  

</style>

最后在点击测试按钮时pda5501.printBitmap 这个方法也返回了正确的日志,但pos机纸并没走和打印内容出来


更多关于uni-app 群索 PDA5501 扫描打印阅证【支持自定义画布、蓝牙秤】 打印失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 群索 PDA5501 扫描打印阅证【支持自定义画布、蓝牙秤】 打印失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html


针对您提到的uni-app中群索PDA5501扫描打印阅证(支持自定义画布、蓝牙秤)时遇到的打印失败问题,以下是一些可能的解决方案和代码示例。请注意,由于具体的硬件集成和API调用可能因设备和SDK的不同而有所差异,以下代码仅供参考,并需要根据实际情况进行调整。

1. 检查设备连接

首先,确保PDA5501设备已正确连接到uni-app应用,并且蓝牙秤(如果适用)也已成功配对。

// 示例:检查蓝牙连接状态(伪代码,具体实现依赖于SDK)
function checkBluetoothConnection() {
    // 假设有一个SDK提供的API来获取蓝牙连接状态
    let connectionStatus = BluetoothSDK.getConnectionStatus();
    if (!connectionStatus) {
        console.error('蓝牙连接失败,请检查设备连接状态');
        return false;
    }
    return true;
}

2. 自定义画布处理

如果打印失败与自定义画布有关,确保画布内容已正确生成并传递给打印模块。

// 示例:创建自定义画布内容
function createCustomCanvasContent() {
    let canvas = document.createElement('canvas');
    let ctx = canvas.getContext('2d');
    // 在画布上绘制内容
    ctx.fillStyle = 'red';
    ctx.fillRect(10, 10, 150, 100);
    // 将画布转换为图片数据
    return canvas.toDataURL('image/png');
}

// 将画布内容传递给打印函数(伪代码)
function printCanvasContent(content) {
    PrinterSDK.printImage(content);
}

3. 打印函数调用

确保打印函数被正确调用,并且传递了正确的参数。

// 示例:调用打印函数
function printDocument() {
    if (!checkBluetoothConnection()) {
        return;
    }
    let canvasContent = createCustomCanvasContent();
    printCanvasContent(canvasContent);
}

// 调用打印函数
printDocument();

4. 错误处理

添加错误处理逻辑,以便在打印失败时能够获取有用的错误信息。

function printCanvasContent(content) {
    try {
        PrinterSDK.printImage(content);
    } catch (error) {
        console.error('打印失败:', error.message);
        // 根据错误信息采取相应措施,如重试连接、显示错误提示等
    }
}

总结

以上代码示例展示了如何在uni-app中处理PDA5501扫描打印阅证时的打印失败问题。请根据您的具体需求和设备SDK文档进行调整和扩展。如果问题仍然存在,建议查看设备日志或联系设备供应商获取更详细的支持。

回到顶部