商米电子秤服务插件

news2025/1/6 11:01:32

概述

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

功能说明

SDK插件下载

一. 电子秤参数

型号: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/XXkg6/15kg、3/6kg、15/30kg、15kg、30kg、6kg
Min=XXg40g、20g、100g、100g、200g、40g
e=X/Xg2/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.注意事项
1).从应用市场下载插件导入自己项目后,要先制作自定义插件后,才可以运行使用(示例程序已经打好基座,可以直接运行)
2).插件需在 Android 5.0 版本及以上方可正常使用
3).尽量使用 HBuilderX 4.0+ 以上的最新版本,以便更好在uni-app和uni-app x中使用uts插件
4).使用前要先调用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>

在这里插入图片描述
在这里插入图片描述

商米官网地址

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2270892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【开源监控工具】Uptime Kuma:几分钟设置实时监控你的网站性能

文章目录 前言1.关于Uptime Kuma2.安装Docker3.本地部署Uptime Kuma4.使用Uptime Kuma5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 大家好&#xff01;如果你是网站运维人员或者管理着多个站点&#xff0c;那么今天我要介绍的一款工具绝对…

ubuntu操作系统安装SSH服务

1、更新仓库 sudo apt-get update 2、安装SSH服务 #安装SSH服务 apt-get install openssh-server#启用SSH服务 service ssh start#查看SSH服务运行状态 service ssh status 3、修改SSH配置文件 sudo vi /etc/ssh/sshd_config 4、开启ssh端口 sudo ufw allow ssh 5、重启SSH…

二、github基础

Github基础 备用github.com网站一、用户界面-Overview&#xff08;概览&#xff09;1用户信息2 导航栏3 热门仓库4 贡献设置5贡献活动6搜索和筛选7自定义收藏8贡献统计9最近活动10其他链接 二、用户界面-Repositories&#xff08;仓库&#xff09;1 libusb_stm322 savedata3 Fi…

Flink源码解析之:如何根据JobGraph生成ExecutionGraph

Flink源码解析之&#xff1a;如何根据JobGraph生成ExecutionGraph 在上一篇Flink源码解析中&#xff0c;我们介绍了Flink如何根据StreamGraph生成JobGraph的流程&#xff0c;并着重分析了其算子链的合并过程和JobGraph的构造流程。 对于StreamGraph和JobGraph的生成来说&…

mysqll连接用时太长解决方法

1、连接用时太长分析 从客户端连接mysql服务器&#xff0c;时间长达10几秒&#xff0c;此为mysql的dns的反向解析造成&#xff0c;在局域网内如果都是用ip连接&#xff0c;可以通过在配置文件中添加skip-name-resolve&#xff0c;取消此功能&#xff0c;取消后&#xff0c;就不…

LLM(十二)| DeepSeek-V3 技术报告深度解读——开源模型的巅峰之作

近年来&#xff0c;大型语言模型&#xff08;LLMs&#xff09;的发展突飞猛进&#xff0c;逐步缩小了与通用人工智能&#xff08;AGI&#xff09;的差距。DeepSeek-AI 团队最新发布的 DeepSeek-V3&#xff0c;作为一款强大的混合专家模型&#xff08;Mixture-of-Experts, MoE&a…

办公 三之 Excel 数据限定录入与格式变换

开始-----条件格式------管理规则 IF($A4"永久",1,0) //如果A4包含永久&#xff0c;条件格式如下&#xff1a; OR($D5<60,$E5<60,$F5<60) 求取任意科目不及格数据 AND($D5<60,$E5<60,$F5<60) 若所有科目都不及格 显示为红色 IF($H4<EDATE…

【深度学习】多目标融合算法—样本Loss提权

目录 一、引言 二、样本Loss提权 2.1 技术原理 2.2 技术优缺点 三、总结 一、引言 在朴素的深度学习ctr预估模型中&#xff08;如DNN&#xff09;&#xff0c;通常以一个行为为预估目标&#xff0c;比如通过ctr预估点击率。但实际推荐系统业务场景中&#xff0c;更多是多…

mapbox进阶,添加路径规划控件

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️MapboxDirections 控件二、🍀添加路径规划控件1. ☘️实现思路2. ☘️…

日志聚类算法 Drain 的实践与改良

在现实场景中&#xff0c;业务程序输出的日志往往规模庞大并且类型纷繁复杂。我们在查询和查看这些日志时&#xff0c;平铺的日志列表会让我们目不暇接&#xff0c;难以快速聚焦找到重要的日志条目。 在观测云中&#xff0c;我们在日志页面提供了聚类分析功能&#xff0c;可以…

uniapp--HBuilder开发

提示&#xff1a;本文为学习内容&#xff0c;若有错误&#xff0c;请联系作者&#xff0c;谦虚受教。 文章目录 前言一、下载HBuilder二、添加modbus相关库1.下载nodejs2.下载modbus库3.项目添加modbus库 三、HBuilder相关功能语句1.文件夹说明2.消息信息框3.开关按钮4.选中按钮…

Unity 3D柱状图效果

1.单个柱状效果展示 2.从上到下渐变透明材质Shader Shader "Unlit/NewUnlitShader" {Properties{_MainTex ("Texture", 2D) "white" {}_Color("Color",Color) (1,1,1,1)_Alpha("Alpha",Range(0,1) ) 0.2_Alpha2("…

JavaScript的数据类型及检测方式

目录 一、JS数据类型 1.基本数据类型 2.引用数据类型 二、堆和栈 三、数据类型检测 1.typeof 2.instanceof 3.constructor 4.Object.prototype.toString.call() JavaScript 中的数据类型主要分为两大类&#xff1a;原始数据类型(也称基本数据类型)和引用数据类型。 一…

电脑中缺失的nvrtc64_90.dll文件如何修复?

一、文件丢失问题 案例&#xff1a;nvrtc64_90.dll文件缺失 问题分析&#xff1a; nvrtc64_90.dll是NVIDIA CUDA Runtime Compilation库的一部分&#xff0c;通常与NVIDIA的CUDA Toolkit或相关驱动程序一起安装。如果该文件丢失&#xff0c;可能会导致基于CUDA的应用程序&…

GIT 企业级开发学习 1

本节主要命令&#xff1a; git init ls 不能列出 .git ls -a 列出 .git 1. 初始化 Git 仓库 git init • 初始化一个新的 Git 仓库&#xff0c;在当前目录下生成一个 .git 隐藏文件夹&#xff0c;用于存储版本控制信息。 2. 查看隐藏文件 ls -a • 使用 ls -a 显示隐藏文件…

用Tkinter制作一个用于合并PDF文件的小程序

需要安装PyPDF2库&#xff0c;具体原代码如下&#xff1a; # -*- coding: utf-8 -*- """ Created on Sun Dec 29 14:44:20 2024author: YBK """import PyPDF2 import os import tkinter as tk import windndpdf_files [] def dragged_files(f…

蓝桥杯JAVA--003

需求 2.代码 public class RegularExpressionMatching {public boolean isMatch(String s, String p) {if (p.isEmpty()) {return s.isEmpty();}boolean firstMatch !s.isEmpty() && (s.charAt(0) p.charAt(0) || p.charAt(0) .);if (p.length() > 2 && p…

接口开发完后,个人对于接下来接口优化的一些思考

优化点 入参的合法性和长度范围&#xff0c;必填项的检查验证 因为没有入参&#xff0c;所以不需要考虑。 批量思想解决N1问题 // 假设要查询100个订单及其对应的用户信息 List<Order> orders orderMapper.selectList(new QueryWrapper<>().last("limit …

C403 unity打开方法

1 unity hub右键以管理员方式打开。 2 注册登录账户 如果出现 如果还是不行&#xff0c;把地址栏的网址复制&#xff0c;在google浏览器中打开 如果出现安全策略&#xff0c;就不勾选安全防护 尝试方案1 把unityhub在任务管理器中关闭 如果验证码发送成功&#xff0c;还是进不…

linux-25 文件管理(三)复制、移动文件,cp,mv

命令cp是copy的简写&#xff0c;而mv则是move的简写。那既然copy是用于实现复制文件的&#xff0c;那通常一般我们要指定其要复制的是谁&#xff1f;而且复制完以后保存在什么地方&#xff0c;对吧&#xff1f;那因此它的使用格式很简单&#xff0c;那就是cp srcfile dest&…