Commit 2dfbd1ea authored by tongzifang's avatar tongzifang

增加aclas scale

parent b2013561
...@@ -14,6 +14,7 @@ import com.blankj.utilcode.util.ConvertUtils ...@@ -14,6 +14,7 @@ import com.blankj.utilcode.util.ConvertUtils
import com.blankj.utilcode.util.DeviceUtils import com.blankj.utilcode.util.DeviceUtils
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.config.ZQ_END import com.qmai.zqtoolkit.config.ZQ_END
import com.qmai.zqtoolkit.config.ZQ_WEIGHT_START import com.qmai.zqtoolkit.config.ZQ_WEIGHT_START
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
...@@ -92,7 +93,6 @@ class ZqToolActivity : AppCompatActivity() { ...@@ -92,7 +93,6 @@ class ZqToolActivity : AppCompatActivity() {
// //
sp = getSharedPreferences("com.example.zqebsdksample_preferences", MODE_PRIVATE) sp = getSharedPreferences("com.example.zqebsdksample_preferences", MODE_PRIVATE)
// //
Log.v("ScaleHub", DeviceUtils.getManufacturer())
val ListPort: MutableList<String> = ArrayList() val ListPort: MutableList<String> = ArrayList()
ListPort.add("ttyS0") ListPort.add("ttyS0")
ListPort.add("ttyS1") ListPort.add("ttyS1")
......
...@@ -30,7 +30,7 @@ android { ...@@ -30,7 +30,7 @@ android {
} }
} }
group 'com.qmai.android.zqtoolkit' group 'com.qmai.android.zqtoolkit'
version '1.0.7.1' version '1.0.7.2'
gradlePublish { gradlePublish {
......
package com.qmai.zqtoolkit package com.qmai.zqtoolkit
import android.content.Context import android.content.Context
import android.os.Build
import android.util.Log
import com.blankj.utilcode.util.DeviceUtils
import com.blankj.utilcode.util.GsonUtils
import com.blankj.utilcode.util.ToastUtils
import com.qmai.zqtoolkit.base.AclasScaleKit
import com.qmai.zqtoolkit.base.SunmiScaleKit 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.config.QmScaleType
import com.qmai.zqtoolkit.utils.ScaleChecker import com.qmai.zqtoolkit.utils.ScaleChecker
import kotlinx.coroutines.* import kotlinx.coroutines.*
import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableSharedFlow
...@@ -24,19 +32,46 @@ object ScaleHub : ScaleBaseAction { ...@@ -24,19 +32,46 @@ object ScaleHub : ScaleBaseAction {
val livingWeight: SharedFlow<LivingWeight> = _livingWeight val livingWeight: SharedFlow<LivingWeight> = _livingWeight
private var connectJob: CoroutineScope? = null private var connectJob: CoroutineScope? = null
private var weightJob: CoroutineScope? = null private var weightJob: CoroutineScope? = null
private val scaleKit by lazy { private var scaleKit: ScaleBaseKit? = null
when { // private val scaleKit by lazy {
ScaleChecker.isSUNMI() -> { // when {
// ScaleChecker.isZQ() -> ZqScaleKit
// ScaleChecker.isSUNMI() -> SunmiScaleKit
// else -> AclasScaleKit
// }
// }
fun initScale(qmScaleType: QmScaleType) {
disconnect()
scaleKit = when (qmScaleType) {
QmScaleType.SUNMI -> {
SunmiScaleKit SunmiScaleKit
} }
else -> { QmScaleType.ZQEB -> {
ZqScaleKit ZqScaleKit
} }
QmScaleType.ACLAS -> {
AclasScaleKit
}
}
}
private fun tryInit(): Boolean {
scaleKit = when {
ScaleChecker.isZQ() -> ZqScaleKit
ScaleChecker.isSUNMI() -> SunmiScaleKit
else -> AclasScaleKit
} }
return scaleKit == null
} }
override fun connect(cxt: Context?, port: String?, buad: String?) { override fun connect(cxt: Context?, port: String?, buad: String?) {
// var trueCxt = cxt?.applicationContext // var trueCxt = cxt?.applicationContext
if (tryInit()) {
ToastUtils.showShort("请选择正确的电子秤")
return
}
//称只给连一个端口,其他端口用其他hub //称只给连一个端口,其他端口用其他hub
if (isScaleSuccess()) { if (isScaleSuccess()) {
return return
...@@ -45,7 +80,7 @@ object ScaleHub : ScaleBaseAction { ...@@ -45,7 +80,7 @@ object ScaleHub : ScaleBaseAction {
connectJob = CoroutineScope(EmptyCoroutineContext) connectJob = CoroutineScope(EmptyCoroutineContext)
} }
connectJob?.launch(context = Dispatchers.IO) { connectJob?.launch(context = Dispatchers.IO) {
scaleKit.connect(cxt, port, buad) scaleKit?.connect(cxt, port, buad)
if (scaleKit is ZqScaleKit) { if (scaleKit is ZqScaleKit) {
LEDHub.connect() LEDHub.connect()
} }
...@@ -54,14 +89,14 @@ object ScaleHub : ScaleBaseAction { ...@@ -54,14 +89,14 @@ object ScaleHub : ScaleBaseAction {
} }
private suspend fun collectConnectData() { private suspend fun collectConnectData() {
scaleKit.connectState.collect { scaleKit?.connectState?.collect {
_connectState.emit(it) _connectState.emit(it)
} }
} }
//断开连接 //断开连接
override fun disconnect() { override fun disconnect() {
scaleKit.disconnect() scaleKit?.disconnect()
LEDHub.clearLED() LEDHub.clearLED()
weightJob?.cancel() weightJob?.cancel()
weightJob = null weightJob = null
...@@ -72,32 +107,32 @@ object ScaleHub : ScaleBaseAction { ...@@ -72,32 +107,32 @@ object ScaleHub : ScaleBaseAction {
//置零 //置零
override fun setZero() { override fun setZero() {
scaleKit.setZero() scaleKit?.setZero()
} }
//去皮 //去皮
override fun setNetWeight() { override fun setNetWeight() {
scaleKit.setNetWeight() scaleKit?.setNetWeight()
} }
//数字去皮 //数字去皮
override fun setNetWeightByElec(tare: Double) { override fun setNetWeightByElec(tare: Double) {
scaleKit.setNetWeightByElec(tare) scaleKit?.setNetWeightByElec(tare)
} }
//清皮 //清皮
override fun clearTare() { override fun clearTare() {
scaleKit.clearTare() scaleKit?.clearTare()
} }
//读取电子秤参数 //读取电子秤参数
override fun getParameter(): Array<String> { override fun getParameter(): Array<String> {
return scaleKit.getParameter() return scaleKit?.getParameter() ?: arrayOf()
} }
//电子秤是否可用 //电子秤是否可用
override fun isScaleSuccess(): Boolean { override fun isScaleSuccess(): Boolean {
return scaleKit.isScaleSuccess() return scaleKit?.isScaleSuccess() ?: false
} }
...@@ -108,13 +143,13 @@ object ScaleHub : ScaleBaseAction { ...@@ -108,13 +143,13 @@ object ScaleHub : ScaleBaseAction {
} }
connectJob?.launch(context = Dispatchers.IO) { connectJob?.launch(context = Dispatchers.IO) {
scaleKit.readData() scaleKit?.readData()
collectWeightData() collectWeightData()
} }
} }
private suspend fun collectWeightData() { private suspend fun collectWeightData() {
scaleKit.livingWeight.collect { scaleKit?.livingWeight?.collect {
_livingWeight.emit(it) _livingWeight.emit(it)
if (it.isReadErr == false) { if (it.isReadErr == false) {
LEDHub.sendLEDWeight(it.weight) LEDHub.sendLEDWeight(it.weight)
...@@ -123,7 +158,7 @@ object ScaleHub : ScaleBaseAction { ...@@ -123,7 +158,7 @@ object ScaleHub : ScaleBaseAction {
} }
override fun stopReadData() { override fun stopReadData() {
scaleKit.stopReadData() scaleKit?.stopReadData()
LEDHub.clearLED() LEDHub.clearLED()
} }
......
...@@ -2,9 +2,11 @@ package com.qmai.zqtoolkit.base ...@@ -2,9 +2,11 @@ package com.qmai.zqtoolkit.base
import android.content.Context import android.content.Context
import android.util.Log import android.util.Log
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.base.scale.ScaleBaseKit import com.qmai.zqtoolkit.base.scale.ScaleBaseKit
/** /**
...@@ -24,16 +26,23 @@ object AclasScaleKit : ScaleBaseKit() { ...@@ -24,16 +26,23 @@ object AclasScaleKit : ScaleBaseKit() {
updateState(ConnectState(true, "打开成功")) updateState(ConnectState(true, "打开成功"))
} }
override fun onRcvData(p0: AclasScaler.WeightInfoNew?) { override fun onRcvData(weght: AclasScaler.WeightInfoNew?) {
Log.v(TAG, GsonUtils.toJson(weght))
getTare()
updateWeight(
LivingWeight(
weght?.isStable ?: false, weght.toString().replace(weght?.unit ?: "", ""),
weght?.unit ?: "", weght?.tareWeight?.toString() ?: "", weght?.netWeight == null
)
)
} }
override fun onError(p0: Int, p1: String?) { override fun onError(p0: Int, p1: String?) {
Log.v(TAG, "onError:$p0$p1")
} }
override fun onUpdateProcess(p0: Int, p1: Int) { override fun onUpdateProcess(p0: Int, p1: Int) {
Log.v(TAG, "onUpdateProcess:$p0$p1")
} }
} }
...@@ -44,7 +53,9 @@ object AclasScaleKit : ScaleBaseKit() { ...@@ -44,7 +53,9 @@ object AclasScaleKit : ScaleBaseKit() {
aclasScaler = AclasScaler(AclasScaler.Type_SerialPort, it, aclasScalerListener) aclasScaler = AclasScaler(AclasScaler.Type_SerialPort, it, aclasScalerListener)
} }
} }
aclasScaler?.AclasConnect("/dev/" + (port ?: "ttyS4"), buad?.toInt() ?: 9600, 0) val aclasConnect =
aclasScaler?.AclasConnect("/dev/" + (port ?: "ttyUSER0"), buad?.toInt() ?: 9600, 0)
Log.v(TAG, "aclasConnect:$aclasConnect")
} }
override fun disconnect() { override fun disconnect() {
...@@ -68,6 +79,13 @@ object AclasScaleKit : ScaleBaseKit() { ...@@ -68,6 +79,13 @@ object AclasScaleKit : ScaleBaseKit() {
} }
} }
private fun getTare() {
if (isScaleSuccess()) {
val getTare = aclasScaler?.AclasReadTareValue()
Log.v(TAG, "getTare:$getTare")
}
}
override fun setNetWeight() { override fun setNetWeight() {
if (isScaleSuccess()) { if (isScaleSuccess()) {
val aclasTare = aclasScaler?.AclasTare() val aclasTare = aclasScaler?.AclasTare()
...@@ -82,8 +100,12 @@ object AclasScaleKit : ScaleBaseKit() { ...@@ -82,8 +100,12 @@ object AclasScaleKit : ScaleBaseKit() {
} }
} }
//去除 除皮一个方法
override fun clearTare() { override fun clearTare() {
if (isScaleSuccess()) {
val clearTare = aclasScaler?.AclasTare()
Log.v(TAG, "clearTare:$clearTare")
}
} }
override fun getParameter(): Array<String> { override fun getParameter(): Array<String> {
......
package com.qmai.zqtoolkit.config
/**
* tongzi
* 2022/5/26
*/
enum class QmScaleType {
SUNMI, ZQEB, ACLAS
}
\ No newline at end of file
package com.qmai.zqtoolkit.utils package com.qmai.zqtoolkit.utils
import android.os.Build
import com.blankj.utilcode.util.DeviceUtils
/** /**
* tongzi * tongzi
...@@ -9,7 +11,23 @@ import android.os.Build ...@@ -9,7 +11,23 @@ import android.os.Build
object ScaleChecker { object ScaleChecker {
/** /**
* 商米 * 商米电子秤
* model :S2_CC manufacturer : SUNMI
*/
fun isSUNMI() = DeviceUtils.getManufacturer().lowercase().contains("sunmi")
&& DeviceUtils.getModel().lowercase().contains("s2_cc")
/**
* 中崎电子秤
* model :J3368 manufacturer : rockchip
* C356602 rockchip
*/
fun isZQ() = DeviceUtils.getManufacturer().lowercase().contains("rockchip")
&& (DeviceUtils.getModel().lowercase().contains("j3368") || DeviceUtils.getModel()
.lowercase().contains("c356602"))
/**
* 顶尖不是直接连接,无法判断
*/ */
fun isSUNMI() = Build.BRAND.lowercase().contains("sunmi")
} }
\ No newline at end of file
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