Commit ee724c35 authored by tongzifang's avatar tongzifang

1.1.0 model

parent f23d304c
...@@ -11,16 +11,13 @@ import android.widget.* ...@@ -11,16 +11,13 @@ import android.widget.*
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.blankj.utilcode.util.ConvertUtils
import com.blankj.utilcode.util.DeviceUtils
import com.blankj.utilcode.util.GsonUtils import com.blankj.utilcode.util.GsonUtils
import com.blankj.utilcode.util.Utils import com.blankj.utilcode.util.Utils
import com.qmai.zqtoolkit.LEDHub import com.qmai.zqtoolkit.LEDHub
import com.qmai.zqtoolkit.ScaleHub import com.qmai.zqtoolkit.ScaleHub
import com.qmai.zqtoolkit.config.QmScaleType import com.qmai.zqtoolkit.ScaleInfo
import com.qmai.zqtoolkit.config.ZQ_END import com.qmai.zqtoolkit.config.QmScaleBrand
import com.qmai.zqtoolkit.config.ZQ_WEIGHT_START import com.qmai.zqtoolkit.config.ScaleAppType
import com.qmai.zqtoolkit.utils.ScaleChecker
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.util.* import java.util.*
...@@ -222,7 +219,7 @@ class ZqToolActivity : AppCompatActivity() { ...@@ -222,7 +219,7 @@ class ZqToolActivity : AppCompatActivity() {
when (v.id) { when (v.id) {
R.id.ButConnect -> { R.id.ButConnect -> {
if (!m_bConnected) { if (!m_bConnected) {
ScaleHub.connect(this) // ScaleHub.connect(this, ScaleInfo(1, ScaleAppType.SHOP_ASSITANT_2C))
// Thread { // Thread {
// if (zqeb.EB_Connect( // if (zqeb.EB_Connect(
// String.format( // String.format(
...@@ -272,13 +269,13 @@ class ZqToolActivity : AppCompatActivity() { ...@@ -272,13 +269,13 @@ class ZqToolActivity : AppCompatActivity() {
} }
} }
R.id.rb_zq -> { R.id.rb_zq -> {
ScaleHub.initScale(QmScaleType.ZQEB) ScaleHub.initScale(QmScaleBrand.ZQEB)
} }
R.id.rb_sunmi -> { R.id.rb_sunmi -> {
ScaleHub.initScale(QmScaleType.SUNMI) ScaleHub.initScale(QmScaleBrand.SUNMI)
} }
R.id.rb_dj -> { R.id.rb_dj -> {
ScaleHub.initScale(QmScaleType.ACLAS) ScaleHub.initScale(QmScaleBrand.ACLAS)
} }
R.id.ButSend -> { R.id.ButSend -> {
if (m_bConnected) { if (m_bConnected) {
......
...@@ -30,7 +30,7 @@ android { ...@@ -30,7 +30,7 @@ android {
} }
} }
group 'com.qmai.android.zqtoolkit' group 'com.qmai.android.zqtoolkit'
version '1.0.8' version '1.1.0'
gradlePublish { gradlePublish {
......
...@@ -6,7 +6,8 @@ import com.qmai.zqtoolkit.base.SunmiScaleKit ...@@ -6,7 +6,8 @@ import com.qmai.zqtoolkit.base.SunmiScaleKit
import com.qmai.zqtoolkit.base.ZqScaleKit import com.qmai.zqtoolkit.base.ZqScaleKit
import com.qmai.zqtoolkit.base.scale.ScaleBaseAction import com.qmai.zqtoolkit.base.scale.ScaleBaseAction
import com.qmai.zqtoolkit.base.scale.ScaleBaseKit import com.qmai.zqtoolkit.base.scale.ScaleBaseKit
import com.qmai.zqtoolkit.config.QmScaleType import com.qmai.zqtoolkit.config.QmScaleBrand
import com.qmai.zqtoolkit.config.ScaleAppType
import com.qmai.zqtoolkit.utils.ScaleChecker import com.qmai.zqtoolkit.utils.ScaleChecker
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
...@@ -40,59 +41,74 @@ object ScaleHub : ScaleBaseAction { ...@@ -40,59 +41,74 @@ object ScaleHub : ScaleBaseAction {
// } // }
fun initScale(qmScaleType: QmScaleType) { fun initScale(qmScaleBrand: QmScaleBrand) {
disconnect() disconnect()
scaleKit = when (qmScaleType) { scaleKit = when (qmScaleBrand) {
QmScaleType.SUNMI -> { QmScaleBrand.SUNMI -> {
SunmiScaleKit SunmiScaleKit
} }
QmScaleType.ZQEB -> { QmScaleBrand.ZQEB -> {
ZqScaleKit ZqScaleKit
} }
QmScaleType.ACLAS -> { QmScaleBrand.ACLAS -> {
AclasScaleKit AclasScaleKit
} }
} }
} }
private fun tryInitSDK2C() {
scaleKit = when {
ScaleChecker.isZQ() -> ZqScaleKit
ScaleChecker.isSUNMI() -> SunmiScaleKit
ScaleChecker.isAclas() -> AclasScaleKit
else -> ZqScaleKit
}
}
/** /**
* fix-20220707 中崎称类型多,通过DeviceUtils.getModel()判断不准确,现改为默认中崎 * fix-20220707 中崎称类型多,通过DeviceUtils.getModel()判断不准确,现改为默认中崎
*/ */
private fun tryInit(appType: Int? = 0): Boolean { private fun tryInitSDK(
scale: ScaleInfo
) {
if (scaleKit == null) { if (scaleKit == null) {
scaleKit = when { scaleKit = when {
ScaleChecker.isZQ() -> ZqScaleKit
ScaleChecker.isSUNMI() -> SunmiScaleKit ScaleChecker.isSUNMI() -> SunmiScaleKit
ScaleChecker.isAclas() -> AclasScaleKit ScaleChecker.isAclas() -> AclasScaleKit
else -> if (appType == null || appType == 0) null else ZqScaleKit else -> when (scale.brand?.brand) {
QmScaleBrand.ZQEB.brand -> ZqScaleKit
QmScaleBrand.SUNMI.brand -> SunmiScaleKit
QmScaleBrand.ACLAS.brand -> AclasScaleKit
else -> null
}
} }
} }
return scaleKit == null
} }
override fun connect(cxt: Context?, port: String?, buad: String?, appType: Int?) { override fun connect(cxt: Context?, scale: ScaleInfo) {
// var trueCxt = cxt?.applicationContext when (scale.appType) {
if (tryInit(appType)) { ScaleAppType.SHOP_ASSITANT_2C -> tryInitSDK2C()
return ScaleAppType.SHOP_ASSITANT_2B -> tryInitSDK(scale)
} }
//称只给连一个端口,其他端口用其他hub //称只给连一个端口,其他端口用其他hub
if (isScaleSuccess()) { if (isScaleSuccess()) {
return return
} }
if (connectJob == null) { scaleKit?.run {
connectJob = CoroutineScope(EmptyCoroutineContext) if (connectJob == null) {
} connectJob = CoroutineScope(EmptyCoroutineContext)
connectJob?.launch(context = Dispatchers.IO) { }
scaleKit?.connect(cxt, port, buad) connectJob?.launch(context = Dispatchers.IO) {
if (scaleKit is ZqScaleKit) { scaleKit?.connect(cxt, scale)
LEDHub.connect() if (scaleKit is ZqScaleKit) {
LEDHub.connect()
}
collectConnectData()
} }
collectConnectData()
} }
} }
private suspend fun collectConnectData() { private suspend fun collectConnectData() {
scaleKit?.connectState?.collect { scaleKit?.connectState?.collect {
_connectState.emit(it) _connectState.emit(it)
......
package com.qmai.zqtoolkit package com.qmai.zqtoolkit
import com.qmai.zqtoolkit.config.QmScaleType import com.qmai.zqtoolkit.config.QmScaleBrandValue
import com.qmai.zqtoolkit.config.QmScaleModelValue
import com.qmai.zqtoolkit.config.ScaleAppType
/** /**
* tongzi * tongzi
* 2022/6/6 * 2022/6/6
*/ */
data class ScaleInfo( data class ScaleInfo(
var port: String?, var port: String? = null,
var buad: String?, var buad: String? = null,
var qmScaleType: QmScaleType var brand: QmScaleBrandValue? = null,
var model: QmScaleModelValue? = null,
var connectType: Int?,
var appType: ScaleAppType? = ScaleAppType.SHOP_ASSITANT_2C
) )
\ No newline at end of file
package com.qmai.zqtoolkit.base package com.qmai.zqtoolkit.base
import android.content.Context import android.content.Context
import android.hardware.usb.UsbManager
import android.util.Log import android.util.Log
import androidx.constraintlayout.solver.GoalRow
import com.blankj.utilcode.util.GsonUtils import com.blankj.utilcode.util.GsonUtils
import com.example.scaler.AclasScaler import com.example.scaler.AclasScaler
import com.example.scaler.AclasScaler.AclasScalerListener import com.example.scaler.AclasScaler.AclasScalerListener
import com.qmai.zqtoolkit.ConnectState import com.qmai.zqtoolkit.ConnectState
import com.qmai.zqtoolkit.LivingWeight import com.qmai.zqtoolkit.LivingWeight
import com.qmai.zqtoolkit.ScaleInfo
import com.qmai.zqtoolkit.base.scale.ScaleBaseKit import com.qmai.zqtoolkit.base.scale.ScaleBaseKit
import com.qmai.zqtoolkit.config.ACLAS_PRODUCTID import com.qmai.zqtoolkit.config.QmScaleBrand
import com.qmai.zqtoolkit.config.ACLAS_VENDORID
import com.qmai.zqtoolkit.config.QmScaleType
import com.qmai.zqtoolkit.utils.ScaleChecker import com.qmai.zqtoolkit.utils.ScaleChecker
/** /**
...@@ -24,8 +21,8 @@ object AclasScaleKit : ScaleBaseKit() { ...@@ -24,8 +21,8 @@ object AclasScaleKit : ScaleBaseKit() {
get() = "AclasScaleKit" get() = "AclasScaleKit"
override val STABLE_COUNT: Int override val STABLE_COUNT: Int
get() = 4 get() = 4
override val SCALE_TYPE: QmScaleType override val SCALE_TYPE: QmScaleBrand
get() = QmScaleType.ACLAS get() = QmScaleBrand.ACLAS
private var aclasScaler: AclasScaler? = null private var aclasScaler: AclasScaler? = null
private var aclasScalerListener = object : AclasScalerListener { private var aclasScalerListener = object : AclasScalerListener {
override fun onDisConnected() { override fun onDisConnected() {
...@@ -57,14 +54,14 @@ object AclasScaleKit : ScaleBaseKit() { ...@@ -57,14 +54,14 @@ object AclasScaleKit : ScaleBaseKit() {
} }
override fun connect(cxt: Context?, port: String?, buad: String?, appType: Int?) {
super.connect(cxt, port, buad, appType) override fun connect(cxt: Context?, scale: ScaleInfo) {
super.connect(cxt, scale)
if (aclasScaler == null) { if (aclasScaler == null) {
cxt?.let { cxt?.let {
aclasScaler = AclasScaler(AclasScaler.Type_USB, it, aclasScalerListener) aclasScaler = AclasScaler(AclasScaler.Type_USB, it, aclasScalerListener)
} }
} }
//
val usbConnectIndex = getAclasScaleIndex() val usbConnectIndex = getAclasScaleIndex()
//val usbConnectIndex = 0 //val usbConnectIndex = 0
val aclasConnect = aclasScaler?.AclasConnect(usbConnectIndex) val aclasConnect = aclasScaler?.AclasConnect(usbConnectIndex)
......
...@@ -5,8 +5,9 @@ import android.content.Context ...@@ -5,8 +5,9 @@ import android.content.Context
import android.util.Log import android.util.Log
import com.qmai.zqtoolkit.ConnectState import com.qmai.zqtoolkit.ConnectState
import com.qmai.zqtoolkit.LivingWeight import com.qmai.zqtoolkit.LivingWeight
import com.qmai.zqtoolkit.ScaleInfo
import com.qmai.zqtoolkit.base.scale.ScaleBaseKit import com.qmai.zqtoolkit.base.scale.ScaleBaseKit
import com.qmai.zqtoolkit.config.QmScaleType import com.qmai.zqtoolkit.config.QmScaleBrand
import com.sunmi.electronicscaleservice.ScaleCallback import com.sunmi.electronicscaleservice.ScaleCallback
import com.sunmi.scalelibrary.ScaleManager import com.sunmi.scalelibrary.ScaleManager
import com.sunmi.scalelibrary.ScaleManager.ScaleServiceConnection import com.sunmi.scalelibrary.ScaleManager.ScaleServiceConnection
...@@ -22,19 +23,15 @@ object SunmiScaleKit : ScaleBaseKit() { ...@@ -22,19 +23,15 @@ object SunmiScaleKit : ScaleBaseKit() {
get() = "SunmiScaleKit" get() = "SunmiScaleKit"
override val STABLE_COUNT: Int override val STABLE_COUNT: Int
get() = 3 get() = 3
override val SCALE_TYPE: QmScaleType override val SCALE_TYPE: QmScaleBrand
get() = QmScaleType.SUNMI get() = QmScaleBrand.SUNMI
@SuppressLint("StaticFieldLeak") @SuppressLint("StaticFieldLeak")
private var mScaleManager: ScaleManager? = null private var mScaleManager: ScaleManager? = null
private val decimalFormat = DecimalFormat("0.000") private val decimalFormat = DecimalFormat("0.000")
override fun connect( override fun connect(cxt: Context?, scale: ScaleInfo ) {
cxt: Context?, super.connect(cxt, scale)
port: String?,
buad: String?, appType: Int?
) {
super.connect(cxt, port, buad, appType)
cxt?.let { cxt?.let {
mScaleManager = ScaleManager.getInstance(it) mScaleManager = ScaleManager.getInstance(it)
mScaleManager?.connectService(object : ScaleServiceConnection { mScaleManager?.connectService(object : ScaleServiceConnection {
...@@ -47,9 +44,7 @@ object SunmiScaleKit : ScaleBaseKit() { ...@@ -47,9 +44,7 @@ object SunmiScaleKit : ScaleBaseKit() {
} }
}) })
} }
} }
override fun readData() { override fun readData() {
try { try {
mScaleManager?.getData(object : ScaleCallback.Stub() { mScaleManager?.getData(object : ScaleCallback.Stub() {
......
...@@ -4,8 +4,9 @@ import android.content.Context ...@@ -4,8 +4,9 @@ import android.content.Context
import android.util.Log import android.util.Log
import com.qmai.zqtoolkit.ConnectState import com.qmai.zqtoolkit.ConnectState
import com.qmai.zqtoolkit.LivingWeight import com.qmai.zqtoolkit.LivingWeight
import com.qmai.zqtoolkit.ScaleInfo
import com.qmai.zqtoolkit.base.scale.ScaleBaseKit import com.qmai.zqtoolkit.base.scale.ScaleBaseKit
import com.qmai.zqtoolkit.config.QmScaleType import com.qmai.zqtoolkit.config.QmScaleBrand
import com.zqebsdk.zqebsdk import com.zqebsdk.zqebsdk
import com.zqprintersdk.PrinterConst import com.zqprintersdk.PrinterConst
import kotlinx.coroutines.* import kotlinx.coroutines.*
...@@ -23,13 +24,14 @@ object ZqScaleKit : ScaleBaseKit() { ...@@ -23,13 +24,14 @@ object ZqScaleKit : ScaleBaseKit() {
get() = "ZqScaleKit" get() = "ZqScaleKit"
override val STABLE_COUNT: Int override val STABLE_COUNT: Int
get() = 4 get() = 4
override val SCALE_TYPE: QmScaleType override val SCALE_TYPE: QmScaleBrand
get() = QmScaleType.ZQEB get() = QmScaleBrand.ZQEB
override fun connect(cxt: Context?, port: String?, buad: String?, appType: Int?) {
super.connect(cxt, port, buad,appType) override fun connect(cxt: Context?, scale: ScaleInfo ) {
super.connect(cxt, scale)
val ebConnect = val ebConnect =
zqeb.EB_Connect(String.format("%s:%s", port ?: "ttyS4", buad ?: "9600"), cxt) zqeb.EB_Connect(String.format("%s:%s", scale.port ?: "ttyS4", scale.buad ?: "9600"), cxt)
val msg: String = when (ebConnect) { val msg: String = when (ebConnect) {
PrinterConst.ErrorCode.SUCCESS -> { PrinterConst.ErrorCode.SUCCESS -> {
"打开成功" "打开成功"
...@@ -48,7 +50,6 @@ object ZqScaleKit : ScaleBaseKit() { ...@@ -48,7 +50,6 @@ object ZqScaleKit : ScaleBaseKit() {
updateState(ConnectState(ebConnect == PrinterConst.ErrorCode.SUCCESS, msg)) updateState(ConnectState(ebConnect == PrinterConst.ErrorCode.SUCCESS, msg))
} }
private val zqeb by lazy { private val zqeb by lazy {
zqebsdk() zqebsdk()
} }
......
...@@ -2,6 +2,7 @@ package com.qmai.zqtoolkit.base.scale ...@@ -2,6 +2,7 @@ package com.qmai.zqtoolkit.base.scale
import android.content.Context import android.content.Context
import com.qmai.zqtoolkit.ScaleInfo import com.qmai.zqtoolkit.ScaleInfo
import com.qmai.zqtoolkit.config.QmScaleBrand
/** /**
* tongzi * tongzi
...@@ -11,11 +12,12 @@ import com.qmai.zqtoolkit.ScaleInfo ...@@ -11,11 +12,12 @@ import com.qmai.zqtoolkit.ScaleInfo
interface ScaleBaseAction { interface ScaleBaseAction {
//电子秤连接 //电子秤连接
//appType 0是2B版本 //appType 0是2B版本
//20220906 brand=QmScaleType
// model=子型号
// connectType 0串口 1usb
fun connect( fun connect(
cxt: Context? = null, cxt: Context? = null,
port: String? = null, scale: ScaleInfo
buad: String? = null,
appType: Int? = 0
) )
//电子秤断开连接 //电子秤断开连接
......
...@@ -3,12 +3,8 @@ package com.qmai.zqtoolkit.base.scale ...@@ -3,12 +3,8 @@ package com.qmai.zqtoolkit.base.scale
import android.content.Context import android.content.Context
import com.qmai.zqtoolkit.ConnectState import com.qmai.zqtoolkit.ConnectState
import com.qmai.zqtoolkit.LivingWeight import com.qmai.zqtoolkit.LivingWeight
import com.qmai.zqtoolkit.ScaleHub
import com.qmai.zqtoolkit.ScaleInfo import com.qmai.zqtoolkit.ScaleInfo
import com.qmai.zqtoolkit.base.ZqScaleKit import com.qmai.zqtoolkit.config.QmScaleBrand
import com.qmai.zqtoolkit.base.scale.ScaleBaseAction
import com.qmai.zqtoolkit.base.scale.ScaleUpdateAction
import com.qmai.zqtoolkit.config.QmScaleType
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableSharedFlow
...@@ -22,7 +18,7 @@ import kotlinx.coroutines.launch ...@@ -22,7 +18,7 @@ import kotlinx.coroutines.launch
abstract class ScaleBaseKit : ScaleBaseAction, ScaleUpdateAction { abstract class ScaleBaseKit : ScaleBaseAction, ScaleUpdateAction {
abstract val TAG: String abstract val TAG: String
abstract val SCALE_TYPE: QmScaleType abstract val SCALE_TYPE: QmScaleBrand
abstract val STABLE_COUNT: Int //顶尖称有假稳定情况,设置稳定达到一定次数后再给业务发数据 abstract val STABLE_COUNT: Int //顶尖称有假稳定情况,设置稳定达到一定次数后再给业务发数据
var lastTryScale: ScaleInfo? = null var lastTryScale: ScaleInfo? = null
private var lastConnectScale: ScaleInfo? = null private var lastConnectScale: ScaleInfo? = null
...@@ -35,9 +31,11 @@ abstract class ScaleBaseKit : ScaleBaseAction, ScaleUpdateAction { ...@@ -35,9 +31,11 @@ abstract class ScaleBaseKit : ScaleBaseAction, ScaleUpdateAction {
private var stableWeight = mutableListOf<String>() private var stableWeight = mutableListOf<String>()
override fun connect(
override fun connect(cxt: Context?, port: String?, buad: String?, appType: Int?) { cxt: Context?,
lastTryScale = ScaleInfo(port, buad, SCALE_TYPE) scale: ScaleInfo
) {
lastTryScale = scale
} }
override fun disconnect() { override fun disconnect() {
......
package com.qmai.zqtoolkit.config
/**
* tongzi
* 2022/5/26
*/
enum class QmScaleBrand(
val brand: String,
) {
SUNMI("商米"), ZQEB("中崎"), ACLAS("顶尖");
companion object {
fun list(): List<QmScaleBrandValue> {
return values().map { QmScaleBrandValue(it) }
}
}
}
data class QmScaleBrandValue(val brand: String) {
constructor(sort: QmScaleBrand) : this(sort.brand)
}
enum class QmScaleModel(
val brand: String,
val model: String,
) {
DEFAULT_ZQ("中崎通用", QmScaleBrand.ZQEB.brand),
ACS15("ACS15", QmScaleBrand.ZQEB.brand),
SMART("SMART-180", QmScaleBrand.ZQEB.brand),
DEFAULT_ACLAS("顶尖通用", QmScaleBrand.ACLAS.brand),
OX2X("OX2X", QmScaleBrand.ACLAS.brand),
PX1("PX1", QmScaleBrand.ACLAS.brand),
DEFAULT_SUNMI("商米通用", QmScaleBrand.SUNMI.brand),
S2_CC("S2_CC", QmScaleBrand.SUNMI.brand);
companion object {
fun list(sort: QmScaleBrandValue): List<QmScaleModelValue> {
return values().filter {
it.brand == sort.brand
}.map {
QmScaleModelValue(it)
}
}
}
}
data class QmScaleModelValue(val brand: String, val model: String) {
constructor(scale: QmScaleModel) : this(scale.brand, scale.model)
}
...@@ -2,8 +2,10 @@ package com.qmai.zqtoolkit.config ...@@ -2,8 +2,10 @@ package com.qmai.zqtoolkit.config
/** /**
* tongzi * tongzi
* 2022/5/26 * 2022/9/6
*/ */
enum class QmScaleType {
SUNMI, ZQEB, ACLAS enum class ScaleAppType(
} ) {
\ No newline at end of file SHOP_ASSITANT_2C, SHOP_ASSITANT_2B;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment