From ec8c6028d44e730885fd9a03994732baee260e94 Mon Sep 17 00:00:00 2001 From: endian11 <Dana_Lee1016@126.com> Date: 星期一, 30 十二月 2019 17:23:25 +0800 Subject: [PATCH] 添加消息对象(初步) --- app/src/main/java/safeluck/drive/evaluation/cEventCenter/CEvent.java | 70 ++++++++++++++ app/src/main/java/safeluck/drive/evaluation/cEventCenter/ObjectPool.java | 55 +++++++++++ app/src/main/java/safeluck/drive/evaluation/bean/DriveExamProtocol.java | 48 ++++++--- app/src/main/java/safeluck/drive/evaluation/bean/RegisterMessage.java | 1 app/src/main/java/safeluck/drive/evaluation/cEventCenter/PooledObject.java | 15 +++ app/src/main/java/safeluck/drive/evaluation/bean/KeepaliveMessage.java | 22 ++++ app/src/main/java/safeluck/drive/evaluation/bean/GainStuMessage.java | 26 +++++ app/src/main/java/safeluck/drive/evaluation/bean/StartExamMessage.java | 25 +++++ 8 files changed, 247 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/DriveExamProtocol.java b/app/src/main/java/safeluck/drive/evaluation/bean/DriveExamProtocol.java index 527c20c..06af76c 100644 --- a/app/src/main/java/safeluck/drive/evaluation/bean/DriveExamProtocol.java +++ b/app/src/main/java/safeluck/drive/evaluation/bean/DriveExamProtocol.java @@ -18,11 +18,13 @@ 鏍囪瘑浣� 娑堟伅澶� 娑堟伅浣� 鏍¢獙鐮� 鏍囪瘑浣� 0x7E 0x7E ======================**/ - // 鏍囪瘑浣� + // 鏍囪瘑浣�(瀛楄妭娴佸紑濮嬶級 private byte MESSAGE_HEAD = 0x7e; - //鏍囪瘑浣� + //鏍囪瘑浣嶏紙瀛楄妭娴佺粨鏉燂級 private byte MESSAGE_TAIL = 0x7e; -//鏍¢獙鐮� 鍏堟殏鏃跺啓姝� + + //鏍¢獙鐮佹寚浠庢秷鎭ご寮�濮嬶紝鍚屽悗涓�瀛楄妭寮傛垨锛岀洿鍒版牎楠岀爜鍓嶄竴涓瓧鑺傦紝鍗犵敤涓�涓瓧鑺� +//鏍¢獙鐮� 鍏堟殏鏃跺啓姝� todo private byte checkCode = 0x78; @@ -32,20 +34,32 @@ //娑堟伅ID private short msg_id; - //娑堟伅浣撳睘鎬� - private int msg_property; - //缁堢鎵嬫満鍙� 瀛楃涓查暱搴﹀繀椤讳负16 + /**銆�娑堟伅浣撳睘鎬ф牸寮忕粨鏋勮〃 +15 14 13 | 12 11 10 | 9 8 7 6 5 4 3 2 1 0 + 淇濈暀 鏁版嵁鍔犲瘑鏂瑰紡 娑堟伅浣撻暱搴� +**/ + //娑堟伅浣撳睘鎬� + private short msg_property =2; + + /** + * 缁堢鎵嬫満鍙� 瀛楃涓查暱搴﹀繀椤讳负16 + **/ private String phoneOnTerminal = "0008618513021245"; -//13 娑堟伅娴佹按鍙� WORD 鎸夊彂閫侀『搴忎粠0寮�濮嬪惊鐜疮鍔� + + /** + * + * 13 娑堟伅娴佹按鍙� WORD 鎸夊彂閫侀『搴忎粠0寮�濮嬪惊鐜疮鍔� + * + */ public static short msg_serial_num=0; //15 棰勭暀 BYTE 棰勭暀 - private byte reserve; + private byte reserve = 0x00; /***===========娑堟伅澶寸粨鏉�=============***/ /** - * 娑堟伅浣� + * 娑堟伅浣� 闇�瑕佸瓙绫诲疄鐜� */ protected abstract byte[] createMessageBody(); @@ -57,6 +71,10 @@ this.msg_id = msg_id; } + /** + * 娑堟伅杞负byte鏁扮粍 7E......7E + * @return + */ public byte[] toBytes(){ byte[] desBytes = new byte[1+16+2+1+1]; int pos = 0; @@ -72,25 +90,25 @@ System.arraycopy(protoVersion,0,desBytes,pos,protoVersion.length); pos +=protoVersion.length; - //娑堟伅ID + //娑堟伅ID byte[] msgIdBytes = ByteUtil.shortGetBytes(msg_id); System.arraycopy(msgIdBytes,0,desBytes,pos,msgIdBytes.length); pos+=msgIdBytes.length; - //娑堟伅浣撳睘鎬� - byte[] msg_pro_bytes = ByteUtil.shortGetBytes((short)2); + //娑堟伅浣撳睘鎬� + byte[] msg_pro_bytes = ByteUtil.shortGetBytes(msg_property); System.arraycopy(msg_pro_bytes,0,desBytes,pos,msg_pro_bytes.length); pos+=msg_pro_bytes.length; //缁堢鎵嬫満鍙� byte[] phoneBytes = ByteUtil.str2Bcd(phoneOnTerminal); System.arraycopy(phoneBytes,0,desBytes,pos,phoneBytes.length); pos+=phoneBytes.length; - //娑堟伅娴佹按鍙� + //娑堟伅娴佹按鍙� byte[] msg_serialNum = ByteUtil.shortGetBytes(msg_serial_num++); System.arraycopy(msg_serialNum,0,desBytes,pos,msg_serialNum.length); pos+=msg_serialNum.length; - //淇濈暀 - desBytes[pos] = 0; + //淇濈暀byte + desBytes[pos] = reserve; pos++; //娑堟伅浣� diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/GainStuMessage.java b/app/src/main/java/safeluck/drive/evaluation/bean/GainStuMessage.java new file mode 100644 index 0000000..74960fd --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/bean/GainStuMessage.java @@ -0,0 +1,26 @@ +package safeluck.drive.evaluation.bean; + +/** + * 鑾峰彇瀛﹀憳淇℃伅娑堟伅锛堝彂閫佽韩浠借瘉ID涓婂幓缁欏钩鍙帮級 + * MyApplication2 + * Created by lzw on 2019/12/19. 18:26:35 + * 閭锛�632393724@qq.com + * All Rights Saved! Chongqing AnYun Tech co. LTD + */ +public class GainStuMessage extends DriveExamProtocol { + // TODO: 2019/12/19 + /** + * 鏋勯�犲嚱鏁� + * + * @param msg_id 娑堟伅ID + */ + public GainStuMessage(short msg_id) { + super(msg_id); + } + + @Override + protected byte[] createMessageBody() { + + return new byte[0]; + } +} diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/KeepaliveMessage.java b/app/src/main/java/safeluck/drive/evaluation/bean/KeepaliveMessage.java new file mode 100644 index 0000000..f04f4e1 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/bean/KeepaliveMessage.java @@ -0,0 +1,22 @@ +package safeluck.drive.evaluation.bean; + +/** + * 蹇冭烦娑堟伅 + * MyApplication2 + * Created by lzw on 2019/12/19. 18:24:47 + * 閭锛�632393724@qq.com + * All Rights Saved! Chongqing AnYun Tech co. LTD + */ +public class KeepaliveMessage extends DriveExamProtocol { + +// TODO: 2019/12/19 + + public KeepaliveMessage(short msg_id) { + super(msg_id); + } + + @Override + protected byte[] createMessageBody() { + return new byte[0]; + } +} 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 37ceb2c..5565ee1 100644 --- a/app/src/main/java/safeluck/drive/evaluation/bean/RegisterMessage.java +++ b/app/src/main/java/safeluck/drive/evaluation/bean/RegisterMessage.java @@ -1,6 +1,7 @@ package safeluck.drive.evaluation.bean; /** + * 娉ㄥ唽娑堟伅 * MyApplication2 * Created by lzw on 2019/12/17. 17:51:44 * 閭锛�632393724@qq.com diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/StartExamMessage.java b/app/src/main/java/safeluck/drive/evaluation/bean/StartExamMessage.java new file mode 100644 index 0000000..37794ff --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/bean/StartExamMessage.java @@ -0,0 +1,25 @@ +package safeluck.drive.evaluation.bean; + +/** + * 缁欏钩鍙板彂閫佸紑濮嬭�冭瘯娑堟伅 + * MyApplication2 + * Created by lzw on 2019/12/19. 18:28:47 + * 閭锛�632393724@qq.com + * All Rights Saved! Chongqing AnYun Tech co. LTD + */ +public class StartExamMessage extends DriveExamProtocol { +// TODO: 2019/12/19 + /** + * 鏋勯�犲嚱鏁� + * + * @param msg_id 娑堟伅ID + */ + public StartExamMessage(short msg_id) { + super(msg_id); + } + + @Override + protected byte[] createMessageBody() { + return new byte[0]; + } +} diff --git a/app/src/main/java/safeluck/drive/evaluation/cEventCenter/CEvent.java b/app/src/main/java/safeluck/drive/evaluation/cEventCenter/CEvent.java new file mode 100644 index 0000000..fd13504 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/cEventCenter/CEvent.java @@ -0,0 +1,70 @@ +package safeluck.drive.evaluation.cEventCenter; + +/** + * 浜嬩欢妯″瀷锛岄渶瑕佷紶閫掔殑娑堟伅浜嬩欢瀵硅薄 + * MyApplication2 + * Created by lzw on 2019/12/30. 17:00:54 + * 閭锛�632393724@qq.com + * All Rights Saved! Chongqing AnYun Tech co. LTD + */ +public class CEvent implements PooledObject { + + //涓婚 + private String topic; + + private int msgCode;//娑堟伅绫诲瀷 + + private int resultCode;//棰勭暀鍙傛暟 + + private Object obj;//鍥炶皟杩斿洖鏁版嵁 + + public CEvent() { + } + + public CEvent(String topic, int msgCode, int resultCode, Object obj) { + this.topic = topic; + this.msgCode = msgCode; + this.resultCode = resultCode; + this.obj = obj; + } + + public String getTopic() { + return topic; + } + + public void setTopic(String topic) { + this.topic = topic; + } + + public int getMsgCode() { + return msgCode; + } + + public void setMsgCode(int msgCode) { + this.msgCode = msgCode; + } + + public int getResultCode() { + return resultCode; + } + + public void setResultCode(int resultCode) { + this.resultCode = resultCode; + } + + public Object getObj() { + return obj; + } + + public void setObj(Object obj) { + this.obj = obj; + } + + @Override + public void reset() { + this.obj = null; + this.msgCode = 0; + this.resultCode = 0; + this.topic = null; + } +} diff --git a/app/src/main/java/safeluck/drive/evaluation/cEventCenter/ObjectPool.java b/app/src/main/java/safeluck/drive/evaluation/cEventCenter/ObjectPool.java new file mode 100644 index 0000000..cd1478b --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/cEventCenter/ObjectPool.java @@ -0,0 +1,55 @@ +package safeluck.drive.evaluation.cEventCenter; + +/** + * 鑷畾涔夌殑瀵硅薄姹� + * MyApplication2 + * Created by lzw on 2019/12/30. 17:06:49 + * 閭锛�632393724@qq.com + * All Rights Saved! Chongqing AnYun Tech co. LTD + */ +public abstract class ObjectPool<T extends PooledObject> { + + private T[] mContainer;//瀵硅薄瀹瑰櫒 + + private final Object LOCK = new Object();//瀵硅薄閿� + + private int length;//姣忔杩斿洖瀵硅薄閮芥斁鍒版暟鎹湯绔紝length琛ㄧず鍓嶉潰鍙敤瀵硅薄鏁� + + public ObjectPool(int capacity) { + mContainer = createObjPool(capacity); + } + + /** + * 鍒涘缓瀵硅薄姹� + * @param capacity 鏈�澶ч檺搴﹀閲� + * @return + */ + protected abstract T[] createObjPool(int capacity) ; + + /** + * 鍒涘缓涓�涓柊鐨勫璞� + * @return + */ + protected abstract T createNewObj(); + + + public final T get(){ + //鍏堜粠姹犱腑鎵惧埌绌洪棽鐨勫璞★紝濡傛灉娌℃湁锛屽垯閲嶆柊鍒涘缓涓�涓璞� + T obj = findFreeObject(); + if (null == obj){ + obj = createNewObj(); + }else{ + obj.reset(); + } + return obj; + } + + /** + * 浠庢睜涓壘鍒扮┖闂茬殑瀵硅薄 + * @return + */ + private T findFreeObject() { + + return null; + } +} diff --git a/app/src/main/java/safeluck/drive/evaluation/cEventCenter/PooledObject.java b/app/src/main/java/safeluck/drive/evaluation/cEventCenter/PooledObject.java new file mode 100644 index 0000000..848548f --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/cEventCenter/PooledObject.java @@ -0,0 +1,15 @@ +package safeluck.drive.evaluation.cEventCenter; + +/** + * 瀵硅薄姹� + * MyApplication2 + * Created by lzw on 2019/12/30. 16:59:40 + * 閭锛�632393724@qq.com + * All Rights Saved! Chongqing AnYun Tech co. LTD + */ +public interface PooledObject { + /** + * 鎭㈠鍒伴粯璁ょ姸鎬� + */ + void reset(); +} -- Gitblit v1.8.0