lizhanwei
2020-02-18 87ab0bd072bd42c09a649759090942781ab53fcb
所有消息测试方法
6个文件已修改
130 ■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/java/com/anyun/exam/lib/MyLog.java 2 ●●● 补丁 | 查看 | 原始文档 | 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;