app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
lib/src/main/java/com/anyun/exam/lib/MyLog.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -20,6 +20,9 @@ import com.google.android.material.textfield.TextInputEditText; import com.safeluck.aykj.utils.BytesUtils; import java.io.UnsupportedEncodingException; import java.util.Date; import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.DB.criterias.CriteriaForI; import safeluck.drive.evaluation.DB.criterias.viewmodel.CriteriaIViewModel; @@ -28,6 +31,10 @@ import safeluck.drive.evaluation.platformMessage.GainStuMessage; import safeluck.drive.evaluation.platformMessage.JKClientCommonMessage; import safeluck.drive.evaluation.platformMessage.JKMessage0101; import safeluck.drive.evaluation.platformMessage.JKMessage0201; import safeluck.drive.evaluation.platformMessage.JKMessage0202; import safeluck.drive.evaluation.platformMessage.JKMessage0203; import safeluck.drive.evaluation.platformMessage.JKMessage0204; import safeluck.drive.evaluation.platformMessage.JKRegisterMessage; import safeluck.drive.evaluation.platformMessage.RegisterMessage; import safeluck.drive.evaluation.im.IMSClientBootstrap; @@ -118,8 +125,8 @@ String userId = "100002"; String token = "token_" + userId; // String hosts = "[{\"host\":\"47.93.80.84\", \"port\":12125}]"; // String hosts = "[{\"host\":\"47.93.157.103\", \"port\":2020}]"; String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]"; String hosts = "[{\"host\":\"47.93.157.103\", \"port\":2020}]"; // String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]"; IMSClientBootstrap.getInstance().init(userId,token,hosts,1); break; @@ -182,6 +189,14 @@ String str1 = jkClientCommonMessage.toString(); Log.i(TAG, "onClick1: "+ str1+" ============"); String hex = "B7 A2 B6 AF BB FA C6 F4 B6 AF BA F3 A3 AC B2 BB BC B0 CA B1 CB C9 BF AA C6 F4 B6 AF BF AA B9 D8"; String string = null; try { string = new String(BytesUtils.hexStringToBytes(hex.replace(" ","")),"GBK"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } Log.i(TAG, "onClick: string="+string); break; case R.id.btn_register: @@ -203,17 +218,60 @@ break; case R.id.btn_auth: JKMessage0101 jkMessage0101 = new JKMessage0101(); // jkMessage0101.des = jkMessage0101.messageId = 0x0101; jkMessage0101.phone = "0008618513021245"; jkMessage0101.protocalVer = 235; jkMessage0101.des ="0102030405060708"; jkMessage0101.timestamp = (int) System.currentTimeMillis(); byte[] jjk0101 = jkMessage0101.toBytes(); MessageProcessor.getInstance().sendMessage(jjk0101); break; case R.id.btn_gain: JKMessage0201 jkMessage0201 = new JKMessage0201(); jkMessage0201.protocalVer = 235; jkMessage0201.phone = "0008618513021245"; jkMessage0201.messageId = 0x0201; jkMessage0201.currentExam = 1; jkMessage0201.id = "123456789"; MessageProcessor.getInstance().sendMessage(jkMessage0201.toBytes()); break; case R.id.btn_start_exam: JKMessage0202 jkMessage0202 = new JKMessage0202(); jkMessage0202.protocalVer = 235; jkMessage0202.phone = "0008618513021245"; jkMessage0202.timeBCD = new Date(); jkMessage0202.messageId = 0x0202; jkMessage0202.curr_exam = 1; jkMessage0202.ID = "123456789"; jkMessage0202.exam_id = 123456; MessageProcessor.getInstance().sendMessage(jkMessage0202.toBytes()); break; case R.id.btn_fail: JKMessage0203 jkMessage0203 = new JKMessage0203(); jkMessage0203.messageId = 0x0203; jkMessage0203.phone = "0008618513021245"; jkMessage0203.protocalVer = 235; jkMessage0203.timeBCD = new Date(); jkMessage0203.fail_item_id = 4; jkMessage0203.fail_score = 10; jkMessage0203.fail_reason = "发动机启动后,不及时松开启动开关"; jkMessage0203.ID = "123456789"; jkMessage0203.exam_id = 123456; MessageProcessor.getInstance().sendMessage(jkMessage0203.toBytes()); break; case R.id.btn_gps: break; case R.id.btn_stop_exam: JKMessage0204 jkMessage0204 = new JKMessage0204(); jkMessage0204.messageId = 0x0204; jkMessage0204.protocalVer = 235; jkMessage0204.phone = "0008618513021245"; jkMessage0204.timeBCD = new Date(); jkMessage0204.score = 10; jkMessage0204.stop = JKMessage0204.SUCC_STOP; jkMessage0204.ID = "123456789"; jkMessage0204.exam_id = 123456; MessageProcessor.getInstance().sendMessage(jkMessage0204.toBytes()); break; } } app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java
@@ -4,10 +4,14 @@ import com.anyun.exam.lib.MyLog; import com.anyun.im_lib.util.ByteUtil; import com.safeluck.aykj.utils.BytesUtils; import safeluck.drive.evaluation.platformMessage.JK2019MessageBase; import safeluck.drive.evaluation.platformMessage.PlatFormConstant; import safeluck.drive.evaluation.platformMessage.RegisterResp; import safeluck.drive.evaluation.platformMessage.ServerCommonRsp; import safeluck.drive.evaluation.platformMessage.utils.MessageEscaper; import safeluck.drive.evaluation.platformMessage.utils.MessageManager; import safeluck.drive.evaluation.util.CThreadPoolExecutor; import safeluck.drive.evaluation.util.Utils; @@ -22,26 +26,35 @@ private static final String TAG = MessageProcessor.class.getSimpleName(); private MessageProcessor(){ messageEscaper = new MessageEscaper(); messageManager = new MessageManager(); } private static class MessageProcessorInstance{ private static final IMessageProcessor INSTANCE = new MessageProcessor(); } MessageEscaper messageEscaper; MessageManager messageManager; public static IMessageProcessor getInstance(){ return MessageProcessorInstance.INSTANCE; } @Override public void receiveMsg(byte[] message) { byte[] datas = Utils.parseMsg(message); Log.i(TAG, "receiveMsg: "+ ByteUtil.byte2HexStr(datas)); byte checkcolde=Utils.calCheckCode(ByteUtil.subArray(datas,0,datas.length-1)); if (checkcolde == datas[datas.length-1]){ Log.i(TAG, "receiveMsg: 消息正确"); parseMessage(datas); } // byte[] datas = Utils.parseMsg(message); // Log.i(TAG, "receiveMsg: "+ ByteUtil.byte2HexStr(datas)); // byte checkcolde=Utils.calCheckCode(ByteUtil.subArray(datas,0,datas.length-1)); // if (checkcolde == datas[datas.length-1]){ // Log.i(TAG, "receiveMsg: 消息正确"); // parseMessage(datas); // } //反转义 byte[] datas=messageEscaper.unescape(message); MyLog.i(PlatFormConstant.TAG,"转义过后的服务消息:"+ BytesUtils.bytesToHexString(datas)); JK2019MessageBase jk2019MessageBase = MessageManager.get(BytesUtils.bytesToHexString(datas)); } private void parseMessage(byte[] datas) { im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java
@@ -59,12 +59,19 @@ // TODO: 2019/12/4 //服务端返回消息后 ByteBuf buf = (ByteBuf) msg; byte[] req = new byte[buf.readableBytes()]; buf.readBytes(req); Log.i(TAG, "channelRead hex str: "+ ByteUtil.byte2HexStr(req)); String str = new String(req, "UTF-8"); if (req!=null && req.length>0) imsClient.getMsgDispatcher().receivedMsg( req ); int len = buf.readableBytes(); if (len>0){ byte[] req = new byte[len+2]; buf.readBytes(req,1,len); req[0] = 0x7E; req[len+1] = 0x7e; Log.i(TAG, "channelRead hex str: "+ ByteUtil.byte2HexStr(req)); // if (req!=null && req.length>0){ // // imsClient.getMsgDispatcher().receivedMsg( req ); // } } } @Override im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java
@@ -3,6 +3,8 @@ import android.text.TextUtils; import android.util.Log; import com.safeluck.aykj.utils.BytesUtils; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; @@ -71,7 +73,7 @@ byte b = (byte) a; bbt[p] = b; } Log.i(TAG, "str2Bcd: "+byte2HexStr(bbt)); // Log.i(TAG, "str2Bcd: "+byte2HexStr(bbt)); return bbt; } @@ -244,7 +246,9 @@ String time = sdf.format(System.currentTimeMillis()); byte[] timeStampBCD = ByteUtil.str2Bcd(time); // String hex = "B7 A2 B6 AF BB FA C6 F4 B6 AF BA F3 A3 AC B2 BB BC B0 CA B1 CB C9 BF AA C6 F4 B6 AF BF AA B9 D8"; // String string = new String(BytesUtils.hexStringToBytes(hex.replace(" ",""))); // System.out.println(string); } public static byte[] subArray(byte[] srcBytes, int begin, int length) { im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java
@@ -163,7 +163,6 @@ if (this.disabledFields.contains(fieldDefine.field.getName())) { continue; } Log.i("PlatFormMessage", "1field: "+fieldDefine.field.getName()); if(fieldDefine.relativeLengthField==null) continue; try { @@ -187,17 +186,12 @@ { continue; } Log.i("PlatFormMessage", "2field: "+fieldDefine.field.getName()); try { Object obj = fieldDefine.field.get(this); String hex = fieldDefine.coder.encode(obj); if(hex==null) { hex = ""; } if (fieldDefine.field.getName().equalsIgnoreCase("phone")){ Log.i("PlatFormMessage", "phone toString: "+hex ); } int defineLen = fieldDefine.getFieldLen(); lib/src/main/java/com/anyun/exam/lib/MyLog.java
@@ -1,4 +1,4 @@ package com.anyun.exam.lib; package com.anyun.im_lib.util;