From 4e307b0d89c9a84916bbbc2119e41d34c6badc13 Mon Sep 17 00:00:00 2001
From: lizhanwei <Dana_Lee1016@126.com>
Date: 星期五, 14 二月 2020 16:39:49 +0800
Subject: [PATCH] 修改平台协议文档;调通注册消息;
---
app/src/main/java/safeluck/drive/evaluation/im/IMSEventListener.java | 10 +
im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java | 15 ++
app/src/main/java/safeluck/drive/evaluation/im/IMessageProcessor.java | 2
Documents/驾考模拟系统业务平台协议设计xc20200211.doc | 0
app/src/main/java/safeluck/drive/evaluation/bean/RegisterMessage.java | 113 ++++++++++++++++++++++
im_lib/src/main/java/com/anyun/im_lib/MsgDispatcher.java | 2
app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java | 111 +++++++++++++++++++--
app/src/main/java/safeluck/drive/evaluation/util/Utils.java | 7 +
im_lib/src/main/java/com/anyun/im_lib/netty/NettyTcpClient.java | 2
im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java | 4
app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java | 12 ++
11 files changed, 251 insertions(+), 27 deletions(-)
diff --git "a/Documents/\351\251\276\350\200\203\346\250\241\346\213\237\347\263\273\347\273\237\344\270\232\345\212\241\345\271\263\345\217\260\345\215\217\350\256\256\350\256\276\350\256\241xc20200211.doc" "b/Documents/\351\251\276\350\200\203\346\250\241\346\213\237\347\263\273\347\273\237\344\270\232\345\212\241\345\271\263\345\217\260\345\215\217\350\256\256\350\256\276\350\256\241xc20200211.doc"
index ecc0695..08714bb 100644
--- "a/Documents/\351\251\276\350\200\203\346\250\241\346\213\237\347\263\273\347\273\237\344\270\232\345\212\241\345\271\263\345\217\260\345\215\217\350\256\256\350\256\276\350\256\241xc20200211.doc"
+++ "b/Documents/\351\251\276\350\200\203\346\250\241\346\213\237\347\263\273\347\273\237\344\270\232\345\212\241\345\271\263\345\217\260\345\215\217\350\256\256\350\256\276\350\256\241xc20200211.doc"
Binary files differ
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/RegisterMessage.java b/app/src/main/java/safeluck/drive/evaluation/bean/RegisterMessage.java
index 52ac0ce..dbfff02 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/RegisterMessage.java
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/RegisterMessage.java
@@ -1,5 +1,12 @@
package safeluck.drive.evaluation.bean;
+
+import android.text.TextUtils;
+
+import com.anyun.im_lib.util.ByteUtil;
+
+import static com.anyun.im_lib.util.ByteUtil.shortGetBytes;
+
/**
* 娉ㄥ唽娑堟伅
* MyApplication2
@@ -9,7 +16,42 @@
*/
public class RegisterMessage extends DriveExamProtocol {
- private static final int BODY_LENGTH = 2;
+ /**
+ * 1.1.1 缁堢娉ㄥ唽
+ * 娑堟伅ID锛�0x0100銆�
+ * 璧峰瀛楄妭
+ * 瀛楁
+ * 鏁版嵁绫诲瀷
+ * 鎻忚堪鍙婅姹�
+ * 0
+ * 鐪佸煙ID
+ * WORD
+ * 缁堢鎵�鍦ㄥ湴鐪両D
+ * 2
+ * 甯傚幙鍩烮D
+ * WORD
+ * 缁堢鎵�鍦ㄥ湴甯侷D
+ * 4
+ * 缁堢鍨嬪彿
+ * BYTE[20]
+ * 20涓瓧鑺傦紝姝ょ粓绔瀷鍙风敱鍒堕�犲晢鑷瀹氫箟锛屼綅鏁颁笉瓒�20浣嶇殑锛屽悗琛モ��0X00鈥�
+ * 24
+ * 缁堢鍑哄巶搴忓垪鍙�
+ * BYTE[8]
+ * 8涓瓧鑺傦紝鐢卞ぇ鍐欏瓧姣嶅拰鏁板瓧缁勬垚锛屾缁堢ID鐢卞埗閫犲晢鑷瀹氫箟锛屼綅鏁颁笉瓒虫椂锛屽悗琛モ��0X00鈥�
+ * 32
+ * IMEI
+ * BYTE[15]
+ * 鍥介檯绉诲姩璁惧鏍囪瘑锛孉SCII鐮�
+ */
+ private static final int BODY_LENGTH = 55;
+
+ private short proviceId;
+ private short cityid;
+ private String model;//缁堢鍨嬪彿
+ private String sn;//鍑哄巶搴忓垪鍙�
+ private String imei;//
+
/**
* 鏋勯�犲嚱鏁�
*
@@ -17,6 +59,50 @@
*/
public RegisterMessage(short msg_id) {
super(msg_id);
+ }
+
+ public static int getBodyLength() {
+ return BODY_LENGTH;
+ }
+
+ public short getProviceId() {
+ return proviceId;
+ }
+
+ public void setProviceId(short proviceId) {
+ this.proviceId = proviceId;
+ }
+
+ public short getCityid() {
+ return cityid;
+ }
+
+ public void setCityid(short cityid) {
+ this.cityid = cityid;
+ }
+
+ public String getModel() {
+ return model;
+ }
+
+ public void setModel(String model) {
+ this.model = model;
+ }
+
+ public String getSn() {
+ return sn;
+ }
+
+ public void setSn(String sn) {
+ this.sn = sn;
+ }
+
+ public String getImei() {
+ return imei;
+ }
+
+ public void setImei(String imei) {
+ this.imei = imei;
}
@Override
@@ -27,9 +113,30 @@
@Override
protected byte[] createMessageBody() {
+ int pos = 0;
byte[] messageBody = new byte[BODY_LENGTH];
- messageBody[0] = 0x65;
- messageBody[1] = 0x67;
+ //鐪佸煙ID
+ byte[] provinceIdBytes = ByteUtil.shortGetBytes(proviceId);
+ System.arraycopy(provinceIdBytes,0,messageBody,pos,provinceIdBytes.length);
+ pos += provinceIdBytes.length;
+ //甯傚煙ID
+ byte[] cityIdBytes = ByteUtil.shortGetBytes(cityid);
+ System.arraycopy(cityIdBytes,0,messageBody,pos,cityIdBytes.length);
+ pos += cityIdBytes.length;
+ //model
+ byte[] modelBytes = !TextUtils.isEmpty(model)?model.getBytes():"".getBytes();
+ System.arraycopy(modelBytes,0,messageBody,pos,modelBytes.length);
+ pos += 20;
+
+ //sn
+ byte[] snBytes = !TextUtils.isEmpty(sn)?sn.getBytes():"".getBytes();
+ System.arraycopy(snBytes,0,messageBody,pos,snBytes.length);
+ pos += 16;
+
+ //IMEI
+ byte[] imeiBytes = !TextUtils.isEmpty(imei)?imei.getBytes():"".getBytes();
+ System.arraycopy(imeiBytes,0,messageBody,pos,imeiBytes.length);
+
return messageBody;
}
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java
index 7ff9ebc..98b53e5 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/SignalConfigFragment.java
@@ -2,12 +2,17 @@
import android.content.Context;
import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.util.Log;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
+import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
@@ -18,6 +23,7 @@
import androidx.appcompat.widget.Toolbar;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import me.yokeyword.fragmentation.SupportFragment;
@@ -38,6 +44,7 @@
private Toolbar mToobar;
private ListView listView;
private LinearLayout linearLayout;
+ private static final String TAG = SignalConfigFragment.class.getSimpleName();
public static SupportFragment newInstance(){
return new SignalConfigFragment();
}
@@ -71,13 +78,13 @@
signalConfiglist .add(new SignalConfigBean("瀹夊叏甯�","鑴氬埞",false,true,true,false,3,4));
signalConfiglist .add(new SignalConfigBean("鐔勭伀","缁曡溅1",false,true,true,false,5,6));
signalConfiglist .add(new SignalConfigBean("闂ㄩ攣","缁曡溅2",false,true,true,false,7,8));
- signalConfiglist .add(new SignalConfigBean("鎵嬪埞","绂诲悎",true,false,true,false,1,2));
- signalConfiglist .add(new SignalConfigBean("宸﹁浆鍚�","1妗�",false,true,true,false,3,4));
- signalConfiglist .add(new SignalConfigBean("鍙宠浆鍚�","2妗�",false,true,true,false,5,6));
- signalConfiglist .add(new SignalConfigBean("杩戝厜鐏�","3妗�",false,true,true,false,7,8));
- signalConfiglist .add(new SignalConfigBean("杩滃厜鐏�","4妗�",false,true,true,false,7,8));
- signalConfiglist .add(new SignalConfigBean("闆剧伅","闆ㄥ埛",false,true,true,false,7,8));
- signalConfiglist .add(new SignalConfigBean("绀哄鐏�","鏃�",false,true,true,false,7,8));
+ signalConfiglist .add(new SignalConfigBean("鎵嬪埞","绂诲悎",true,false,true,false,9,10));
+ signalConfiglist .add(new SignalConfigBean("宸﹁浆鍚�","1妗�",false,true,true,false,11,12));
+ signalConfiglist .add(new SignalConfigBean("鍙宠浆鍚�","2妗�",false,true,true,false,13,14));
+ signalConfiglist .add(new SignalConfigBean("杩戝厜鐏�","3妗�",false,true,true,false,15,16));
+ signalConfiglist .add(new SignalConfigBean("杩滃厜鐏�","4妗�",false,true,true,false,17,18));
+ signalConfiglist .add(new SignalConfigBean("闆剧伅","闆ㄥ埛",false,true,true,false,19,20));
+ signalConfiglist .add(new SignalConfigBean("绀哄鐏�","鏃�",false,true,true,false,21,22));
listView.setAdapter(mySignalsAdapter);
@@ -111,19 +118,97 @@
}
@Override
- public View getView(int position, View convertView, ViewGroup parent) {
- ViewHolder viewHolder;
+ public View getView(final int position, View convertView, ViewGroup parent) {
+ final ViewHolder viewHolder;
if (convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.layout_signal_conf_item,null);
viewHolder = new ViewHolder(convertView);
+
+
+ viewHolder.editText1.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ Log.i(TAG, "et1 afterTextChanged: "+s.toString());
+ String str = s.toString();
+ int a = Integer.parseInt(str);
+ signalConfiglist.get(position).setPort_one(a);
+ }
+ });
+ viewHolder.editText2.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ Log.i(TAG, "et2 afterTextChanged: "+s.toString());
+ String str = s.toString();
+ int a = Integer.parseInt(str);
+ signalConfiglist.get(position).setPort_two(a);
+ }
+ });
+
+
+ viewHolder.checkBox3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox3.getTag();
+ signalConfigBean.setThree(isChecked);
+ }
+ });
+ viewHolder.checkBox4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox4.getTag();
+ signalConfigBean.setFour(isChecked);
+ }
+ });viewHolder.checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox2.getTag();
+ signalConfigBean.setTwo(isChecked);
+ }
+ });viewHolder.checkBox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ SignalConfigBean signalConfigBean = (SignalConfigBean) viewHolder.checkBox1.getTag();
+ signalConfigBean.setOne(isChecked);
+ }
+ });
convertView.setTag(viewHolder);
+ viewHolder.checkBox1.setTag(signalConfiglist.get(position));
+ viewHolder.checkBox2.setTag(signalConfiglist.get(position));
+ viewHolder.checkBox3.setTag(signalConfiglist.get(position));
+ viewHolder.checkBox4.setTag(signalConfiglist.get(position));
}else {
viewHolder = (ViewHolder) convertView.getTag();
+ viewHolder.checkBox1.setTag(signalConfiglist.get(position));
+ viewHolder.checkBox2.setTag(signalConfiglist.get(position));
+ viewHolder.checkBox3.setTag(signalConfiglist.get(position));
+ viewHolder.checkBox4.setTag(signalConfiglist.get(position));
}
-
- SignalConfigBean signalConfigItem = getItem(position);
+ viewHolder.editText1.setTag(position);
+ viewHolder.editText2.setTag(position);
+ final SignalConfigBean signalConfigItem = getItem(position);
viewHolder.textView1.setText(signalConfigItem.getSignal_name_first());
viewHolder.textView2.setText(signalConfigItem.getSignal_name_second());
+
viewHolder.editText1.setText(String.valueOf(signalConfigItem.getPort_one()));
viewHolder.editText2.setText(String.valueOf(signalConfigItem.getPort_two()));
@@ -147,7 +232,7 @@
TextView textView2;
- public ViewHolder(View convertView) {
+ public ViewHolder(final View convertView) {
checkBox1 = convertView.findViewById(R.id.signal_check_1);
checkBox2 = convertView.findViewById(R.id.signal_check_2);
checkBox3 = convertView.findViewById(R.id.signal_check_3);
@@ -162,4 +247,6 @@
}
}
+
+
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/im/IMSEventListener.java b/app/src/main/java/safeluck/drive/evaluation/im/IMSEventListener.java
index 18a7590..b2d6612 100644
--- a/app/src/main/java/safeluck/drive/evaluation/im/IMSEventListener.java
+++ b/app/src/main/java/safeluck/drive/evaluation/im/IMSEventListener.java
@@ -22,7 +22,7 @@
@Override
public void dispatchMsg(Object message) {
- MessageProcessor.getInstance().receiveMsg((String)message);
+ MessageProcessor.getInstance().receiveMsg((byte[])message);
}
@Override
@@ -71,6 +71,12 @@
@Override
public byte[] getRegisterMessage() {
- return new RegisterMessage((short) 0x802).toBytes();
+ RegisterMessage registerMessage = new RegisterMessage((short)0x0100);
+ registerMessage.setCityid((short) 1);
+ registerMessage.setProviceId((short)23);
+ registerMessage.setImei("460123874561");
+ registerMessage.setModel("123");
+ registerMessage.setSn("0314200100000004");
+ return registerMessage.toBytes();
}
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/im/IMessageProcessor.java b/app/src/main/java/safeluck/drive/evaluation/im/IMessageProcessor.java
index edc2c6c..006aece 100644
--- a/app/src/main/java/safeluck/drive/evaluation/im/IMessageProcessor.java
+++ b/app/src/main/java/safeluck/drive/evaluation/im/IMessageProcessor.java
@@ -7,6 +7,6 @@
* All Rights Saved! Chongqing AnYun Tech co. LTD
*/
public interface IMessageProcessor {
- void receiveMsg(String message);
+ void receiveMsg(byte[] message);
void sendMessage(String msg);
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java b/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java
index 2b3e333..450aac7 100644
--- a/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java
+++ b/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java
@@ -2,7 +2,10 @@
import android.util.Log;
+import com.anyun.im_lib.util.ByteUtil;
+
import safeluck.drive.evaluation.util.CThreadPoolExecutor;
+import safeluck.drive.evaluation.util.Utils;
/**
* MyApplication2
@@ -27,8 +30,13 @@
}
@Override
- public void receiveMsg(String message) {
- Log.i(TAG, "receiveMsg: "+message);
+ 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: 娑堟伅姝g‘");
+ }
}
@Override
diff --git a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
index a0548a7..f6054f2 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
@@ -68,8 +68,11 @@
}
}
temp[y++] = 0x7e;
- Log.i(TAG,"杞箟杩囧悗锛�"+ ByteUtil.byte2hex(temp));
- return temp;
+
+ byte[] tranferbytes = new byte[y];
+ System.arraycopy(temp,0,tranferbytes,0,y);
+ Log.i(TAG,"杞箟杩囧悗锛�"+ ByteUtil.byte2hex(tranferbytes));
+ return tranferbytes;
}
/**
diff --git a/im_lib/src/main/java/com/anyun/im_lib/MsgDispatcher.java b/im_lib/src/main/java/com/anyun/im_lib/MsgDispatcher.java
index 9fbc31e..cf0f2c4 100644
--- a/im_lib/src/main/java/com/anyun/im_lib/MsgDispatcher.java
+++ b/im_lib/src/main/java/com/anyun/im_lib/MsgDispatcher.java
@@ -16,7 +16,7 @@
this.onEventListener = listener;
}
- public void receivedMsg(String msg){
+ public void receivedMsg(byte[] msg){
// TODO: 2019/12/12
if (onEventListener != null){
onEventListener.dispatchMsg(msg);
diff --git a/im_lib/src/main/java/com/anyun/im_lib/netty/NettyTcpClient.java b/im_lib/src/main/java/com/anyun/im_lib/netty/NettyTcpClient.java
index 73332d6..70cd0f4 100644
--- a/im_lib/src/main/java/com/anyun/im_lib/netty/NettyTcpClient.java
+++ b/im_lib/src/main/java/com/anyun/im_lib/netty/NettyTcpClient.java
@@ -11,6 +11,7 @@
import com.anyun.im_lib.interf.IMSClientInteface;
import com.anyun.im_lib.listener.IMSConnectStatusCallback;
import com.anyun.im_lib.listener.OnEventListener;
+import com.anyun.im_lib.util.ByteUtil;
import java.nio.ByteBuffer;
import java.util.Vector;
@@ -220,6 +221,7 @@
try {
ByteBuf byteBuf = ByteBufAllocator.DEFAULT.ioBuffer();
byteBuf.writeBytes(mOnEventListener.getRegisterMessage());
+ Log.i(TAG, "鍙戦�佹秷鎭�: "+ ByteUtil.byte2HexStr(mOnEventListener.getRegisterMessage()));
channel.writeAndFlush(byteBuf);
} catch (Exception e) {
Log.i(TAG, "鍙戦�佹秷鎭け璐ワ紝reason="+e.getMessage()+"\t");
diff --git a/im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java b/im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java
index ad3116d..97a2bbc 100644
--- a/im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java
+++ b/im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java
@@ -63,8 +63,8 @@
buf.readBytes(req);
Log.i(TAG, "channelRead hex str: "+ ByteUtil.byte2HexStr(req));
String str = new String(req, "UTF-8");
-
- imsClient.getMsgDispatcher().receivedMsg( str );
+ if (req!=null && req.length>0)
+ imsClient.getMsgDispatcher().receivedMsg( req );
}
@Override
diff --git a/im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java b/im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java
index 6b0fb24..5761069 100644
--- a/im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java
+++ b/im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java
@@ -190,8 +190,8 @@
*/
public static byte[] shortGetBytes(short data) {
byte[] bytes = new byte[2];
- bytes[0] = (byte) (data & 0xff);
- bytes[1] = (byte) ((data & 0xff00) >> 8);
+ bytes[1] = (byte) (data & 0xff);
+ bytes[0] = (byte) ((data & 0xff00) >> 8);
return bytes;
}
@@ -206,6 +206,17 @@
short b = (short) 32768;
b++;
System.out.println(byte2HexStr(shortGetBytes((short) b)));
+
+
+ String model = "123";
+ byte[] messageBody = new byte[30];
+ byte[] modelBytes = new byte[20];
+ modelBytes = model.getBytes();
+ System.arraycopy(shortGetBytes((short)323),0,messageBody,0,2);
+ System.arraycopy(modelBytes,0,messageBody,2,modelBytes.length);
+ System.arraycopy(shortGetBytes((short)3),0,messageBody,22,2);
+ System.out.println(byte2HexStr(messageBody));
+
}
public static byte[] subArray(byte[] srcBytes, int begin, int length) {
--
Gitblit v1.8.0