From 4d44ed185203088052b10a8d1e3526fcbbc88331 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期日, 15 九月 2019 18:42:31 +0800 Subject: [PATCH] obd 数据解码逻辑完成 --- src/main/kotlin/com/flightfeather/obd/socket/ServerHandler.kt | 31 +++++++++++++++++++++++++++---- 1 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/obd/socket/ServerHandler.kt b/src/main/kotlin/com/flightfeather/obd/socket/ServerHandler.kt index e1480ee..d904bca 100644 --- a/src/main/kotlin/com/flightfeather/obd/socket/ServerHandler.kt +++ b/src/main/kotlin/com/flightfeather/obd/socket/ServerHandler.kt @@ -3,6 +3,10 @@ import io.netty.channel.ChannelHandlerContext import io.netty.channel.ChannelInboundHandlerAdapter import io.netty.util.AttributeKey +import java.lang.StringBuilder +import java.text.SimpleDateFormat +import java.util.* + class ServerHandler : ChannelInboundHandlerAdapter() { @@ -10,6 +14,7 @@ override fun channelRegistered(ctx: ChannelHandlerContext?) { super.channelRegistered(ctx) +// ctx?.fireChannelActive() } override fun channelActive(ctx: ChannelHandlerContext?) { @@ -18,11 +23,28 @@ override fun channelRead(ctx: ChannelHandlerContext?, msg: Any?) { super.channelRead(ctx, msg) - val attribute = ctx?.channel()?.attr(attributeKey)?.apply { - if (get() == null) { -// set() + + val sb = StringBuilder() + + if (msg is ByteArray) { + println("------鏀跺埌鐨勫師濮嬫暟鎹細[ip:${ctx?.channel()?.remoteAddress()}] ${SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())}") + msg.forEach { + var a = 0 + a = if (it < 0) { + it + 256 + } else { + it.toInt() + } + print("${a.toString(16)} ") + sb.append(a.toString(16)).append(" ") } + sb.deleteCharAt(sb.length - 1) } + val str = sb.toString() + if (str.isNotEmpty()) { + MessageManager().dealStringMsg(str, ctx) + } + } override fun channelReadComplete(ctx: ChannelHandlerContext?) { @@ -34,6 +56,7 @@ } override fun exceptionCaught(ctx: ChannelHandlerContext?, cause: Throwable?) { - super.exceptionCaught(ctx, cause) + cause?.printStackTrace() + ctx?.close() } } \ No newline at end of file -- Gitblit v1.9.3