更新记录

1.0.0(2023-05-10)

研科数码icod打印机

  1. 支持USB、串口、Wi-Fi、蓝牙连接
  2. 打印文本、图片、条码、二维码等

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


前言

研科数码icod 打印机

功能


var icodPrint = uni.requireNativePlugin("wrs-icodPrint");

方法

  • 注册USB监听

            icodPrint.registerReceiver((resp) => {
                var action = resp.action;
                switch (action) {
                    case "android.hardware.usb.action.USB_DEVICE_ATTACHED":
                        this.showMsg("插USB");
                        break;
                    case "android.hardware.usb.action.USB_DEVICE_DETACHED":
                        this.showMsg("拔USB");
                        break;
                    default:
                        break;
                }
            });
  • 初始化

             icodPrint.initUtil({
                enable: true
            });
            // 增加日志文件,true开启日志输出
            icodPrint.initPrinter({
                enable: true
            });
            //  // 添加终端日志
            icodPrint.initLogger();
  • USB连接

                var params = {};
                // params.deviceId = "xx"; // 如果不传deviceId会自动获取默认的,如果需要传deviceId, deivceId通过getUSBDevices接口获取
                icodPrint.connectUSB(params, (resp)=>{
                    var code = resp.code;
                    if(code == 0) {
                        this.showMsg("连接成功");
                    } else {
                        this.showMsg("连接失败");
                    }
                });
  • 串口连接

                var params = {};
                 params.path = "/dev/ttyS3"; // 通过getSerialPorts接口获取
                params.baudRate = 115200; // 波特率
                params.flowControl = 0; // 0(不使用流控)、1(硬件流控RTS/CTS)、2(软件流控XON/XOFF)
                icodPrint.connectSerialPort(params, (resp)=>{
                    var code = resp.code;
                    if(code == 0) {
                        this.showMsg("连接成功");
                    } else {
                        this.showMsg("连接失败");
                    }
                });
  • 蓝牙连接

                var params = {};
                params.pin = "0000"; // 厂自动配对的
                params.mac = "xxx"; // 打印机mac地址
                icodPrint.connectBluetooth(params, (resp)=>{
                    var code = resp.code;
                    if(code == 0) {
                        this.showMsg("连接成功");
                    } else {
                        this.showMsg("连接失败");
                    }
                });
  • wifi连接

                var params = {};
                params.ip = "192.168.1.0"; 
                params.port = 9100; 
                icodPrint.connectWifi(params, (resp)=>{
                    var code = resp.code;
                    if(code == 0) {
                        this.showMsg("连接成功");
                    } else {
                        this.showMsg("连接失败");
                    }
                });
  • UsbNative连接

                var params = {};
                icodPrint.connectUsbNativeAPI((resp)=>{
                    var code = resp.code;
                    if(code == 0) {
                        this.showMsg("连接成功");
                    } else {
                        this.showMsg("连接失败");
                    }
                });
  • 获取USB设备列表

icodPrint.getUSBDevices((resp)=>{
    var devices = resp.devices;

})
  • 获取串口列表

icodPrint.getSerialPorts((resp)=>{
    var devices = resp.devices;

})
  • 断开连接

                icodPrint.disconnect((resp)=>{
                    var code = resp.code;
                    if(code == 0) {
                        this.showMsg("断开成功");
                    } else {
                        this.showMsg("断开失败");
                    }
                });
  • 判断是否已经连接

                icodPrint.isConnect((resp)=>{
                    var isConnect = resp.isConnect;

                });
  • 获取状态

                icodPrint.getStatus((resp)=>{
                    var status = resp.status;
                    this.showMsg("status:" + status);
                });
  • 自检页

                icodPrint.selfTestPage((resp)=>{
                    var status = resp.status;
                    if(status == 0) {
                        this.showMsg("操作成功");
                    } else {
                        this.showMsg("操作失败");
                    }
                });
  • 打印(如需更多API请联系作者)

                var data = [];
                data.push({
                    type: "printString",
                    value: "测试打印"
                });
                data.push({
                    type: "printFeed"
                });
                data.push({
                    type: "setAlignMode",
                    value: 2
                });
                data.push({
                    type: "printString",
                    value: "测试完成!\n"
                });
                data.push({
                    type: "fontSizeSet",
                    value: 2
                });
                data.push({
                    type: "printString",
                    value: "测试完成!\n"
                });
                data.push({
                    type: "chineseFontSet",
                    value: 2
                });
                data.push({
                    type: "printString",
                    value: "测试完成!\n"
                });
                data.push({
                    type: "smallFontSizeSet"
                });
                data.push({
                    type: "printString",
                    value: "测试完成!\n"
                });
                data.push({
                    type: "printFeed"
                });
                data.push({
                    type: "cutPaper",
                    m: 66,
                    n: 0
                });

                var params = {};
                params.data = data;
                icodPrint.print(params, (resp)=> {
                    var code = resp.code;
                    if(code == 0) {
                        this.showMsg("打印完成");
                    } else {
                        this.showMsg("打印失败");
                    }
                });

打印字符串
{
    type: "printString",
    value: "xxx"
}

对齐方式

{
    type: "setAlignMode",
    value: 1 // 0 为左对齐 ,1 为居中对齐,2 为右对齐
}

字体大小
{
    type: "fontSizeSet",
    value: 1 // 
}

小字体
{
    type: "smallFontSizeSet"
}

汉字模式
{
    type: "chineseFontSet",
    value: 4 // 0 为禁止 4 允许倍宽 8 允许倍高 128 允许下划线
}

设置字体倍宽倍高的 设定字符大小
{
    type: "setCharSize",
    hsize: 0, // 0-7(正常为 0)
    vsize: 0 // 0-7(正常为 0)
}

在页模式下选择打印方向
{
    type: "pageSelectDirection",
    value: 0 //  0 从左到右 1 从底到上 2 从右到左 3 从上到下
}

 设置浓度
{
    type: "setPrintColorSize",
    value: 1 //  仅支持 1-4 浓度 一般字体加重的浓度
}

打印换行
{
    type: "printFeed"
}

发送指令
{
    type: "sendOrder",
    value: "FAFB"
}

打印条码
{
    type: "sendOrder",
    value: "1D4802"
},
{
    type: "setBarCodeWidth",
    value: 3 // [2-16] 我方打印机范围为 2-6 通用的打印机 2-16 所以有些值不管用
},
{
    type: "setBarCodeHeight",
    value: 120 //  [0-255],默认为 162
},
{
    type: "printBarCode",
    value: "1234567890",
    m: 73 //  // 使用条码系统类型
}

打印二维码
{
    type: "printQRCode",
    value: "1234567890",
    modeSize: 10, // 设置条码大小(1FAIL6) 默认为 6
    isCut: false // 打印二维码后是否切纸
}

打印光栅位图
{
    type: "printRasterBitmap",
    image: {
        type: "url",
        value: "/xaasdf/asdf/aa.png" // 本地绝对路径,不能以file开头
    }
    toGray: false // 非必填
}

 钱箱
{
    type: "openCashDrawer",
    n: 0, // 0 pin2 上输出 1 pin5 上输出
    t1: 100, // 开启时间 t1*2
    t2: 200 // 关闭时间 t2*2
}

切纸,选择裁纸模式
{
    type: "cutPaper",
    m:66, // 66 (保留一点不切)
    n: 0
}

全切
{
    type: "fullCut"
}

半切
{
    type: "halfCut"
}

设定/解除粗体打印
{
    type: "setEmphasizedMode",
    value: 0 // 最低位有效:1 为设定 0 位解除
}

设定/解除下划线
{
    type: "setEnableUnderLine",
    value: 0 // 最低位有效:1 为设定 0 位解除
}

 设置/解除顺时针 90 °旋转
{
    type: "setRotate",
    value: 0 // 0,48 解除 1,49 设置
}
  • 固件升级

                var params = {};
                params.filePath = "/xxx/aaa/xxx/";
                icodPrint.updateFirmware(params, (resp)=>{
                    var code = resp.code;
                    if(code == 0) {
                        var progress = resp.progress;
                        if(progress == 100) {
                            this.showMsg("升级完成");
                        } else {
                            this.showMsg("升级进度:" + progress);
                        }
                    } else {
                        this.showMsg("升级错误");
                    }
                });

支持定制,联系方式 QQ:252797991

如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,您的关注就是我们创作的动力!

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android: <uses-feature android:name="android.hardware.usb.host" /> <!-- WIFIManage permission --> <!-- Allows applications to access information about networks --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Allows applications to access information about Wi-Fi networks --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- Allows applications to change network connectivity state --> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- Allows applications to change network connectivity state --> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- Allows applications to enter Wi-Fi Multicast mode --> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- Internet permission --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- SDCard permission --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- If your application uses Wi-Fi, declare so with a <uses-feature> element in the manifest file --> <uses-feature android:name="android.hardware.wifi" /> <!-- Bluetooth permission --> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.RESTART_PACKAGES" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问