src/test/kotlin/com/flightfeather/uav/Test.kt
@@ -66,4 +66,38 @@
        val list = listOf(1, 2, 3, 4, 5, 0)
        println(list.average())
    }
    @Test
    fun get_crc16(){
        val dataSegment = "QN=20210713115502858;ST=22;CN=2011;PW=555555;MN=FYHB0MH0300045;Flag=1;CP=&&DataTime=20210713115000;a34001-Avg=0.025,a34001-CPM=5.9,a34001-Flag=N;a50001-Avg=0.0,a50001-Flag=D;a01001-Avg=33.0,a01001-Flag=N;a01002-Avg=68.2,a01002-Flag=N;a01007-Avg=0.0,a01007-Flag=N;a01008-Avg=0.0,a01008-Flag=N;Period=5;Scale=0.0;SelfTemp=0.0;SelfHum=0.0;IsReplacement=N&&"
        var CRC = 0x0000ffff
        val POLYNOMIAL = 0x0000a001
        var i: Int
        var j: Int
        val bufData = dataSegment.toByteArray()
        val buflen = bufData.size
        if (buflen == 0) {
            return
        }
        i = 0
        while (i < buflen) {
            CRC = CRC xor (bufData[i].toInt() and 0x000000ff)
            j = 0
            while (j < 8) {
                if (CRC and 0x00000001 != 0) {
                    CRC = CRC shr 1
                    CRC = CRC xor POLYNOMIAL
                } else {
                    CRC = CRC shr 1
                }
                j++
            }
            i++
        }
        var strCRC = Integer.toHexString(CRC).toString()
        if (strCRC.length < 4) {
            strCRC += "0"
        }
        println(strCRC)
    }
}