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