| | |
| | | var userCodeNumber: Int = 0 // 用户卡编号(HEX) |
| | | var phoneNumber: String = "" // 手机号(BCD) |
| | | var projectCode: Int = 0 // 项目编码(HEX 1-255) |
| | | var balance: Int = 0 // 剩余金额(2位小数点,单位元) |
| | | var balance: Int = 0 // 剩余金额(2位小数点,单位分) |
| | | var surplusWater: Int = 0 // 剩余水量(2位小数点,单位立方米) |
| | | var waterPrice: Float = 0f // 水量单价(最大655.35,2位小数点。单位:m3/元) |
| | | var electricPrice: Float = 0f // 电量单价(最大655.35,2位小数点。单位: 元/度) |
| | | var waterPrice: Int = 0 // 水量单价(2位小数点,单位分/m3) |
| | | var electricPrice: Int = 0 // 电量单价(2位小数点,单位分/度) |
| | | var rechargeDate: Calendar? = null // 充值时间 |
| | | |
| | | /** |
| | |
| | | projectCode = HexUtil.get16To10LowHightByBytes(byteArrayOf(one[0])) |
| | | balance = HexUtil.get16To10LowHightByBytes(one.copyOfRange(1, 5)) |
| | | surplusWater = HexUtil.get16To10LowHightByBytes(one.copyOfRange(5, 9)) |
| | | electricPrice = HexUtil.hexToFloatLowHigh(one.copyOfRange(9, 11)) |
| | | electricPrice = HexUtil.get16To10LowHightByBytes(one.copyOfRange(9, 11)) |
| | | |
| | | // 解析充值时间 |
| | | val year = HexUtil.getBcdToInt(one[11]) |
| | |
| | | // 解析第2块 |
| | | val two = data[2] |
| | | userCard.apply { |
| | | waterPrice = HexUtil.hexToFloatLowHigh(two.copyOfRange(9, 11)) |
| | | waterPrice = HexUtil.get16To10LowHightByBytes(two.copyOfRange(9, 11)) |
| | | } |
| | | |
| | | return userCard |
| | |
| | | System.arraycopy(waterPadded, 0, data, 5, 4) |
| | | |
| | | // 设置电价 - 修复:确保数组长度正确 |
| | | val priceBytes = HexUtil.hexToByteArray(HexUtil.floatToHexLowHigh(electricPrice)) |
| | | val pricePadded = ByteArray(2) |
| | | System.arraycopy(priceBytes, 0, pricePadded, 0, minOf(priceBytes.size, 2)) |
| | | System.arraycopy(pricePadded, 0, data, 9, 2) |
| | | val electricPriceHex = HexUtil.get10To16LowHigh(electricPrice) |
| | | val electricPriceBytes = HexUtil.hexToByteArray(electricPriceHex) |
| | | val electricPricePadded = ByteArray(2) |
| | | System.arraycopy(electricPriceBytes, 0, electricPricePadded, 0, minOf(electricPriceBytes.size, 2)) |
| | | System.arraycopy(electricPricePadded, 0, data, 9, 2) |
| | | |
| | | // 设置充值时间 |
| | | rechargeDate?.let { |
| | |
| | | System.arraycopy(waterPadded, 0, data, 5, 4) |
| | | |
| | | // 设置水价 - 修复:确保数组长度正确 |
| | | val priceBytes = HexUtil.hexToByteArray(HexUtil.floatToHexLowHigh(waterPrice)) |
| | | val pricePadded = ByteArray(2) |
| | | System.arraycopy(priceBytes, 0, pricePadded, 0, minOf(priceBytes.size, 2)) |
| | | System.arraycopy(pricePadded, 0, data, 9, 2) |
| | | val waterPriceHex = HexUtil.get10To16LowHigh(waterPrice) |
| | | val waterPriceBytes = HexUtil.hexToByteArray(waterPriceHex) |
| | | val waterPricePadded = ByteArray(2) |
| | | System.arraycopy(waterPriceBytes, 0, waterPricePadded, 0, minOf(waterPriceBytes.size, 2)) |
| | | System.arraycopy(waterPricePadded, 0, data, 9, 2) |
| | | |
| | | // 设置充值时间 |
| | | rechargeDate?.let { |