H5网页调用58热敏小票打印机实现打印小票

在微信公众号和H5网页开发中,常常需要开发调用打印机进行小票打印操作,通常的做法是调用蓝牙打印机,但是蓝牙打印机由于蓝牙连接的原因,往往稳定性差,需要客户端配合才能发挥好的效果,另外蓝牙打印机距离受限制,手机不能离蓝牙打印机太远,接下我给大家介绍一种云端方案。

云打印我的理解是打印机直连云端,打印需求方通过api调用云服务器,云服务器下发订单到打印机。此方案可以解决蓝牙打印机和usb打印机的诸多缺陷,特别适合外卖单,堂食单,网上商超,收银支付,后厨菜单,仓库订单等场景。

 

查阅网上资料得知成都优声科技出了云打印机,于是对接了他们,现分享一个网页版的demo,后端是用PHP写的,方便有需要的朋友对接学习。

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>热敏小票打印</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>
<body>
<div class="container">
    <div class="py-5 text-center">
        <img class="d-block mx-auto mb-4" src="http://www.zhongwu.co/images/logo/logo-zhongwu-black.png" alt="" width="272" height="72">
        <h2>调用打印机</h2>
        <p class="lead">优声云打印机可以通过http接口调用,以下参数请去https://www.ushengyun.com获取</p>
    </div>

    <div class="row">
        <div class="col-md-8 order-md-1">
            <h4 class="mb-3">请填写如下表单</h4>
            <form class="needs-validation" novalidate method="post" action="print.php">

                <div class="mb-3">
                    <label for="username">APPID</label>
                    <div class="input-group">
                        <input type="text" class="form-control" id="username" placeholder="请填写appid" name="appid" required>
                        <div class="invalid-feedback" style="width: 100%;">
                           请填写appid
                        </div>
                    </div>
                </div>

                <div class="mb-3">
                    <label for="email">APPSECRET</label>
                    <input type="email" class="form-control" id="email" placeholder="请填写appsecret" name="appsecret" required>
                    <div class="invalid-feedback">
                        请填写appsecret
                    </div>
                </div>

                <div class="mb-3">
                    <label for="address">打印机终端号</label>
                    <input type="text" class="form-control" id="address" placeholder="请输入打印机终端号" required name="device_id">
                    <div class="invalid-feedback">
                        请输入打印机终端号
                    </div>
                </div>

                <div class="mb-3">
                    <label for="address2">打印机秘钥</label>
                    <input type="text" class="form-control" id="address2" placeholder="请输入打印机秘钥" name="device_secret" required>
                    <div class="invalid-feedback">
                        请输入打印机秘钥
                    </div>
                </div>

                <div class="mb-3">
                    <label for="address2">打印内容</label>
                    <textarea type="text" class="form-control" id="address2" placeholder="请输入打印内容" name="printdata" required></textarea>
                    <div class="invalid-feedback">
                        请输入打印内容
                    </div>
                </div>
                <hr class="mb-4">
                <button class="btn btn-primary btn-lg btn-block" type="submit">提交打印</button>
            </form>
        </div>
    </div>

    <footer class="my-5 pt-5 text-muted text-center text-small">
        <p class="mb-1">&copy; 2017-2021 优声科技&优声云打印机</p>
        <ul class="list-inline">
            <li class="list-inline-item"><a href="https://www.ushengyun.com">技术支持</a></li>
        </ul>
    </footer>
</div>
</body>
</html>

print.php

<?php
require_once __DIR__ . "/../vendor/autoload.php";

$app_id = $_POST['appid'];

$app_secret = $_POST['appsecret'];

$device_id = $_POST['device_id'];

$device_secret = $_POST['device_secret'];

$rpc = new \ushengyun\protocol\RpcClient($app_id, $app_secret);

$Zprinter = new \ushengyun\Printer($rpc);


$printdata = empty($_POST['printdata']) ? '优声云拥有自主研发的云打印机,提供稳定高效,高可用的云打印方案' : $_POST['printdata'];


try {

    var_dump($Zprinter->set_args($device_id, $device_secret)->cloud_print($printdata));

} catch (Exception $e) {
    echo $e;
}

下载链接 SDK下载

打印效果:

 

不得不说,还是很理想的

如题所述,下面将用300字中文回答关于H5蓝牙打印小票的代码。 要实现H5蓝牙打印小票,需要使用Web Bluetooth API。首先,我们需要使用navigator.bluetooth.requestDevice()方法来请求用户选择一个蓝牙设备。我们可以通过传递一个对象来指定要搜索的蓝牙服务和特征。一旦用户选择了设备,我们可以通过device.gatt.connect()方法来连接设备。 连接成功后,我们可以使用device.gatt.getPrimaryService()方法来获取主服务。通过传递服务的UUID,我们可以获取与蓝牙设备通信的特征。然后,我们可以使用getService()方法来获取特征,并使用readValue()方法读取特征的值。 在获得特征的值后,我们可以使用writeValue()方法将打印指令发送给蓝牙设备。具体的打印指令可以根据打印机的规格进行编写。例如,可以使用ASCII码发送文本字符串。具体的指令可以参考打印机的开发文档。 在发送完打印指令后,我们可以使用device.gatt.disconnect()方法断开与蓝牙设备的连接。 以下是一个简单的示例代码: ```javascript async function printTicket() { try { const device = await navigator.bluetooth.requestDevice({ filters: [{ services: [ /* 蓝牙设备的服务UUID */ ], }], }); const server = await device.gatt.connect(); const service = await server.getPrimaryServices(); const characteristic = await service.getCharacteristics(); const value = await characteristic.readValue(); // 发送打印指令 const command = new Uint8Array([ /* 打印指令的字节 */ ]); await characteristic.writeValue(command); await server.disconnect(); } catch (error) { console.error("打印小票失败:", error); } } // 调用打印小票函数 printTicket(); ``` 请注意,以上代码只是一个简单示例,具体的实现打印指令可能会有所不同。具体实现还需根据打印机的规格和开发文档进行调整。 希望以上回答能帮到您,如果需要更详细的代码实现或其它帮助,请提供更多信息以便我们更好地协助您。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值