desc:数据标定命令封装
parent
e0b8deff5a
commit
e6c5a02c50
@ -0,0 +1,55 @@
|
||||
package com.yinuo.safetywatcher.watcher.port.cmd
|
||||
|
||||
/**
|
||||
* 校准命令
|
||||
* @param index 传感器编号 00 01 02 03
|
||||
* @param target 目标值
|
||||
*/
|
||||
class CalibrationCmd(private val index: Int, private val target: Int) {
|
||||
val ZERO = 0x87.toByte()
|
||||
val SPAN = 0x88.toByte()
|
||||
|
||||
fun buildZeroCmd(): ByteArray {
|
||||
return build(ZERO)
|
||||
}
|
||||
|
||||
fun buildSPANCmd(): ByteArray {
|
||||
return build(SPAN)
|
||||
}
|
||||
|
||||
private fun build(cmd: Byte): ByteArray {
|
||||
var highBit: Byte = 0x00
|
||||
var lowBit: Byte = 0x00
|
||||
if (index != 0) {
|
||||
highBit = (target shr 8 and FF).toByte()
|
||||
lowBit = (target and FF).toByte()
|
||||
}
|
||||
return byteArrayOf(
|
||||
0xFF.toByte(),
|
||||
index.toByte(),
|
||||
cmd,
|
||||
highBit,
|
||||
lowBit,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00
|
||||
).calibrationSum()
|
||||
}
|
||||
}
|
||||
|
||||
private fun ByteArray.calibrationSum(): ByteArray {
|
||||
return this.plus(getCheckSum(this))
|
||||
}
|
||||
|
||||
fun getCheckSum(packet: ByteArray): Byte {
|
||||
var checksum = 0
|
||||
for (i in packet.indices) {
|
||||
if (i in 1..7) {
|
||||
checksum += packet[i]
|
||||
}
|
||||
}
|
||||
checksum = 0xffff - checksum
|
||||
checksum += 1
|
||||
return checksum.toByte()
|
||||
}
|
||||
|
Loading…
Reference in New Issue