更新记录

1.0.3(2024-12-30)

新增获取电子秤计量类型的API
新增获取电子秤服务版本的API
新增获取电子秤量程及分度值的API


平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 4.0,Android:5.0,iOS:不支持,HarmonyNext:支持 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
× × × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

概述

SunmiScaleUTS封装商米电子秤服务模块,支持商米旗下S2, S2CC, S2L CC等设备,设备应用于超市、菜市场、水果店等,用于测量商品的重量,帮助实现快捷、准确、公正的交易等一系列商业场景。

功能说明

一. 电子秤参数

型号: S2, S2CC, S2L CC
最大量程 6kg≤Max≤30kg
n(等级) 3000 (III)
检定分度 1/2g,2/5g,5/10g
工作温度 -10~+40℃

二. 计量量相关基础知识

  1. 零点

    每次智能电子秤重新上电的时候,电子秤都会自动记录初始零点作为后续称重的参考。开机重启的零点范围通常是满量程的10%。当重量超过满量程的10%的时候,电子秤将无法找到零点位置。例如,对15kg的电子秤而言,如果开机的时候秤盘的重量超过1.5kg的时候,电子秤将无法找到零点位置。如果重量小于1.5kg的时候,电子秤将默认从零点开始称量。

    推荐您在上电开机的前清空秤盘上所有的物品。

  2. 手动清零/零点设置

    在日常称重时,倘若需要回到零点时,可以通过手动清零回到初始零点位置。手动清零的范围是满量程的2%。对15kg的电子秤而言,手动清零的范围是300g。例如,在您清洁完秤盘后,可能称重显示为-0.004kg。当您点击清零按钮后,称重显示即回归“0.000kg”。

    注意:在有皮重的情况下,清零按钮将无效。

  3. 去皮

    在称重过程中,如果需要将商品包装的重量去除的时候,可以通过去皮操作执行。去皮的重量将会影响到称量的范围。例如,如果一台15kg的电子秤设置了5kg的皮重之后,那么剩余的称重范围将仅剩余10kg。

    称重去皮:先把包装放在秤盘上,点击去皮按钮后,包装的重量将自动记录为皮重;

    预置皮重如果您已知包装重量的时候,可以手动输入皮重值;

    对多量程的电子秤而言,最大去皮重量通常是Max1-e1。例如,6/15kg的电子秤,最大皮重是-5.998kg。

    注意:预置皮重的值必须准确设置。首先,预置皮重的值必须小于最大皮重;其次,预置皮重值必须按照正确的分度值设置。例如,对一台6/15kg(n=3000)的电子秤,6.005kg或者是0.019kg的预置皮重值都是不对。

  4. 净重

    净重是指消费者应该支付商品的重量值。如果商品带包装,需要先将包装作为皮重去掉。

  5. 毛重

    毛重=皮重+净重

三.电⼦秤软件开发

认证组件共由4个板块组成,分别为:

电子秤认证组件.png

1.基础信息

计量单位信息:用于展示秤AD的基础信息。

显示内容 显示数值
Max=XX/XXkg 6/15kg、3/6kg、15/30kg、15kg、30kg、6kg
Min=XXg 40g、20g、100g、100g、200g、40g
e=X/Xg 2/5g、1/2g、5/10g、5g、10g、2g
T=-XX.XXXkg -5.998kg、-2.999kg、-14.995kg、-14.995kg、-29.990kg、-5.998kg

认证组件基础信息:用于展示秤相关服务版本信息。

显示内容 显示说明
ADFW:XXX 显示称重AD版固件的版本
DISPLAY Version:XXX 显示当前秤应用的版本号
SERVICE :XXX 显示当前秤服务Scale Service的版本号

| CRC status | 显示AD秤重上的数据与上位机的数据进行校验结果匹配一致:显示绿色锁图标匹配不一致:显示未锁定图标 |

2.称重状态

显示在称重过程的事件状态。

事件 显示说明
稳定 当称重台重量稳定时,进行稳定状态提示。稳定时,状态灯显示颜色为绿色未稳定时,状态灯显示颜色为灰色
零位 当净重和皮重之和为0的时候(「net+tare=0」),进行零位状态提示。零位时,状态灯显示颜色为绿色未零位时,状态灯显示颜色为灰色
净重 当去皮操作后,皮重不为0,进行净重状态提示。进行去皮时,状态灯显示颜色为绿色未进行去皮时,状态灯显示颜色为灰色

3.称重数值

显示在称重过程的物品重量信息。

称重区域 显示说明
皮重(kg) 当有去皮操作时,对应的皮重信息数据显示在该数据栏中。皮重的重量数值信息,无物体时,数值为0.000。在实际的物理显示屏中的显示高度,不低于9.5mm。
净重(kg) 显示为实际的净重重量。当净重重量大于过载门限(皮重+净重+9*e2)时,应当显示过载提示。当净重重量低于欠载门限(皮重+净重<-20e),应当显示欠载提示。净重的重量数值信息,无物体时,数值为0.000。净重的重量数字信息,在实际的物理显示屏中的显示高度,不低于9.5mm。
单价(元/kg) 显示为当前选中商品的单价信息。价格的数值信息,无物体时,数值为0.00。单价的数字信息,在实际的物理显示屏中的显示高度,不低于9.5mm。
总价(元) 显示为当前选中商品的总价信息,重量*单价。总价的数值信息,无物体时,数值为0.00。总价的数字信息,在实际的物理显示屏中的显示高度,不低于9.5mm。

4.称重操作

可对秤进行相关业务操作。

操作 操作说明
去皮 将当前秤上的物体进行去皮操作,让皮重不计入数值。
预去皮 将当前秤上的物体进行预去皮操作,让皮重不计入数值。
置零 将当前秤上所有数值清空。
设置 对认证组件自身的参数进行设置设置小数点显示样式货币符号设置可设置货币符号人民币、美元、英镑、欧元可自定义符号主屏认证组件控制允许认证组件在主屏移动副屏图片设置可选择系统默认图片(黑色商米logo)可通过上传图片,自定义副屏背景图片展示风格设置可选择白色、黑色的颜色风格

四.电子秤服务使用方法

1.注意事项

从应用市场下载插件导入自己项目后,要先制作自定义插件后,才可以运行使用(示例程序已经打好基座,可以直接运行)

插件需在 Android 5.0 版本及以上方可正常使用

尽量使用 HBuilderX 4.0+ 以上的最新版本,以便更好在uni-app和uni-app x中使用uts插件

使用前要先调用connectScaleService()方法绑定服务,结束要及时调用onDestroy()方法断开销毁服务

2.完整代码示例

<template>
    <view  style="display: flex;justify-content: space-between;margin: 0 20px;">
        <view style="display: flex;margin:10px;flex-direction: column;font-size: 18px;">
            <view style="display: flex;">
                 {{isStable?'true稳定':'false不稳定'}} {{net===0?'零位':'净重'}}
            </view>
            <view style="display: flex;margin-top: 10px;">
                净重:{{net}} 克 
            </view>
            <view style="display: flex;margin-top: 10px;">
                皮重:{{tare}} 克 
            </view>
            <view style="display: flex;margin-top: 10px;">
                单价:{{unitPrice}} 
            </view>
            <view style="display: flex;margin-top: 10px;">
                计算重量单位:{{unit}} 
            </view>
            <view style="display: flex;margin-top: 10px;">
                计量类型:{{scaleType===0?'0公斤秤':'1磅秤'}} 
            </view>
            <view style="display: flex;margin-top: 10px;">
                固件的版本号:{{firmwareVersion}} 
            </view>
            <view style="display: flex;margin-top: 10px;">
                获取铅封状态 :{{sealState===0?'0正常':'1铅封被破坏'}} 
            </view>
            <view style="display: flex;margin-top: 10px;">
                标定按钮开关状态 :{{calStatus===0?'0未按下':'1按下'}} 
            </view>
            <view style="display: flex;margin-top: 10px;">
                加速度数据 :{{acceleData}} 
            </view>
            <view style="display: flex;margin-top: 10px;">
                电子秤参数信息 :{{calInfo}} 
            </view>
            <view style="display: flex;margin-top: 10px;">
                状态: {{isLightWeight?'电子秤过轻':''}} {{overload?'电子秤已过载,量程最大15KG':''}} {{clearZeroErr?'电子秤清零错误':''}} {{calibrationErr?'电子秤标定错误':''}}
            </view>
        </view>
        <view style="display: flex;">
            <view style="padding: 10px;">
                <button @click="connectScaleService()" style="margin-top: 10px;">服务绑定</button>
                <button @click="disconnectScaleService()" style="margin-top: 10px;">服务断开</button>
                <button @click="toRestart()" style="margin-top: 10px;">重启电子秤</button>
                <button @click="toGetScaleType()" style="margin-top: 10px;">获取计量类型</button>
                <button @click="toGetServiceVersion()" style="margin-top: 10px;">版本号</button>
                <button @click="toReadAcceleData()" style="margin-top: 10px;">加速度数据</button>
                <button @click="toReadSealState()" style="margin-top: 10px;">铅封状态</button>
                <button @click="toGetCalStatus()" style="margin-top: 10px;">标定状态</button>
                <button @click="toGetCalInfo()" style="margin-top: 10px;">秤参数信息</button>
            </view>
            <view style="padding: 10px;">
                <button @click="toTare()" style="margin-top: 10px;">去皮/清皮</button>
                <button @click="toDigitalTare(2)" style="margin-top: 10px;">数字去皮</button>
                <button @click="toZero()" style="margin-top: 10px;">清零</button>
            </view>
            <view style="padding: 10px;">
                <button @click="toSetUnitPrice('2')" style="margin-top: 10px;">设置单价</button>
                <button @click="toGetUnitPrice()" style="margin-top: 10px;">获取单价</button>
                <button @click="toSetUnit(1)" style="margin-top: 10px;">设置计算重量单位</button>
                <button @click="toGetUnit()" style="margin-top: 10px;">获取计算重量单位</button>

            </view>
        </view> 
    </view>
</template>
<script>
    import { connectScaleService,zero,tare,digitalTare,setUnitPrice,getUnitPrice,setUnit,getUnit,restart,getScaleType,getServiceVersion,getFirmwareVersion,cancelGetData,readAcceleData,readSealState,getCalStatus,getCalInfo,onDestroy} from "@/uni_modules/sunmi-scale";

    //引入方式
    export default {
        data() {
            return {
                unitPrice:'-',//单价
                unit:'-',//计算重量单位
                scaleType:'-',//0表示秤为公斤秤 1表示秤为磅秤
                firmwareVersion:'-',//固件的版本号
                sealState:'-',//铅封状态 0:正常 1:铅封被破坏
                calStatus:'-',//标定按钮开关状态  0:未按下 1:按下
                acceleData:'-',//读取加速度数据 [0][1][2]分别为 X,Y,Z方向数据
                calInfo:'-',//电子秤参数信息
                net: '-',//获取称量净重 单位:克
                tare:'-',//皮重,单位:克
                isStable:true,//秤稳定状态 true:稳定 false:浮动
                isLightWeight:false, //秤是否过轻(小于20E)
                overload:false,//秤是否过载
                clearZeroErr:false,//秤是否清零错误
                calibrationErr:false//秤是否标定错误
            }
        },
        created() {
        },
        methods: {
            // 连接Sunmi电子秤服务
            connectScaleService() {
                let _this = this
                connectScaleService({
                    //这里返回称重结果
                    getData(net,tare,isStable){
                        _this.net = net
                        _this.tare = tare
                        _this.isStable = isStable
                        // console.log('---->',net,tare,isStable)
                    },
                    //这里返回称重状态
                    getStatus(isLightWeight, overload, clearZeroErr, calibrationErr){
                        _this.isLightWeight = isLightWeight
                        _this.overload = overload
                        _this.clearZeroErr = clearZeroErr
                        _this.calibrationErr = calibrationErr
                    },
                })
            },
            // 断开Sunmi电子秤服务
            disconnectScaleService(){
                onDestroy()
            },
            //重启电子秤 
            toRestart(){
                restart()
            },
            //获取电子秤服务版本号 返回当前电子秤服务的版本号字符串
            toGetScaleType(){
                this.scaleType = getScaleType()
            },
            //获取固件版本号 接返回当前固件的版本号-五位整型数据,如10034
            toGetServiceVersion(){
                this.firmwareVersion = getFirmwareVersion()
            },
            //读取加速度数据 [0][1][2]分别为 X,Y,Z方向数据
            toReadAcceleData(){
                this.acceleData = readAcceleData()
            },
            //读取标定按钮开关状态  0:未按下 1:按下
            toGetCalStatus(){
                this.calStatus = getCalStatus()
            },
            //读取标定按钮开关状态  0:未按下 1:按下
            toReadSealState(){
                this.sealState = readSealState()
            },

            //读取电子秤参数信息
            //返回值为一个多个量程的二维数组例如量程为6/15kg e=2/5g 多量程电子秤将返回[[6, 2],[15,5]]
            toGetCalInfo(){
                this.calInfo = getCalInfo()
            },
            //清零
            toZero(){
                zero()
            },
            //去皮/清皮
            toTare(){
                tare()
            },
            //数字去皮 直接给电子秤下发去皮的重量
            toDigitalTare(i){
                digitalTare(i)
            },
            //设置单价 由电子秤服务计算价格时设置,将影响返回的计价结果
            toSetUnitPrice(unitPrice){
                setUnitPrice(unitPrice)
            },
            //获取当前已经设置的单价
            toGetUnitPrice(){
                this.unitPrice = getUnitPrice()
            },
            //设置价格计算时的重量单位  0:按g计重  1:按100g计重  2:按500g计重  3:按kg计重
            toSetUnit(unit){
                setUnit(unit)
            },
            //获取当前价格计算的重量单位
            toGetUnit(){
                this.unit = getUnit()
            }
        }
    }
</script>

商米官网地址

长期维护,持续更新,对付费用户提供终身免费技术支持

隐私、权限声明

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

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

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

暂无用户评论。

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