Documents/¼Ý¿¼Ä£ÄâϵͳҵÎñƽ̨ÐÒéÉè¼Æxc20200211.docBinary files differ
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 * ç»ç«¯æå¨å°çID * 2 * å¸å¿åID * WORD * ç»ç«¯æå¨å°å¸ID * 4 * ç»ç«¯åå· * BYTE[20] * 20个åèï¼æ¤ç»ç«¯åå·ç±å¶é åèªè¡å®ä¹ï¼ä½æ°ä¸è¶³20ä½çï¼åè¡¥â0X00â * 24 * ç»ç«¯åºååºåå· * BYTE[8] * 8个åèï¼ç±å¤§å忝忰åç»æï¼æ¤ç»ç«¯IDç±å¶é åèªè¡å®ä¹ï¼ä½æ°ä¸è¶³æ¶ï¼åè¡¥â0X00â * 32 * IMEI * BYTE[15] * å½é ç§»å¨è®¾å¤æ è¯ï¼ASCIIç */ 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; } } 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 @@ } } } 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(); } } 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); } 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: æ¶æ¯æ£ç¡®"); } } @Override 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; } /** 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); 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"); 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 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) {