Browse Source

<设置工作模式状态>

weizhengliang 4 years ago
parent
commit
6150d1d856

+ 5 - 0
app/src/main/java/com/wdkl/tradition/TraditionActivity.java

@@ -249,6 +249,8 @@ public class TraditionActivity extends BaseActivity implements ISerialPortListen
     protected void initData() {
         netRefresh();
         CallVoiceShowProgress();
+
+        SerialPortService.getInstance().sendRegMode(0);
     }
 
     private void CallVoiceShowProgress() {
@@ -690,6 +692,9 @@ public class TraditionActivity extends BaseActivity implements ISerialPortListen
                         int callMode = SharedPreferencesUtil.getIntSp(TraditionActivity.this, Constants.MSG_SP, SharedPreferencesUtil.CallingMode);
                         SerialPortService.getInstance().setCallMode(callMode);
                         break;
+                    case MCU_MSG_DEVICEMAC_RES: //已注册设备地址确认
+                        Log.d("wzl","已注册设备地址确认, addr: " + uartAddr);
+                        break;
                 }
             } else {//这里实际上是执行了“E”指令
                 //UdpSendUtil.sendOnlyId(content[1].substring(0, 4), content[1].substring(4, 19));//后来增加了字符

+ 37 - 0
app/src/main/java/com/wdkl/tradition/service/SerialPortService.java

@@ -237,6 +237,32 @@ public class SerialPortService implements OnOpenSerialPortListener {
         //Log.i(TAG, "onSend: sendBytes = " + sendBytes);
     }
 
+    //注册MCU
+    private long lastRegisterTimemills = 0;
+    public void registerMCU() {
+        Log.d("wzl", "registerMCU start------------");
+        if (System.currentTimeMillis() - lastRegisterTimemills > 6 * 1000) {
+            if (registerDeviceThread != null) {
+                registerDeviceThread.run();
+            }
+            lastRegisterTimemills = System.currentTimeMillis();
+        }
+
+    }
+
+    private Thread registerDeviceThread = new Thread(new Runnable() {
+        @Override
+        public void run() {
+            if (getPortOpened()) {
+                    try {
+                        initMCUDevice("F170", 1, 1);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+            }
+        }
+    });
+
     //向MCU注册设备
 /*    public void initMCUDeviceAddr(String uAddr){
         byte[] slaveAdd = SerialPortService.hexToByteArray(uAddr);
@@ -311,6 +337,17 @@ public class SerialPortService implements OnOpenSerialPortListener {
         mCallback = null;
     }
 
+    //MCU工作模式: 0-正常模式, 1-注册模式
+    public void sendRegMode(int mode) {
+        //2E C0 FF FF 89 01 01 XX
+        byte regMode = (byte) (mode & 0xff);
+        SerialModel serialModel = new SerialModel(
+                (byte) 0xFF, (byte) 0xFF,
+                SerialSignalTypeEnum.APP_MSG_REGEDIT_STATE.getDataType(), regMode
+        );
+        sendSignal(serialModel);
+    }
+
     //主机主动或回应呼叫
     public void startCall(String addr) {
         byte[] slaveAdd = SerialPortService.hexToByteArray(addr);

+ 1 - 0
app/src/main/java/com/wdkl/tradition/service/SerialSignalTypeEnum.java

@@ -12,6 +12,7 @@ public enum SerialSignalTypeEnum {
     APP_MSG_CALL_OFF_REQ((byte)0x86, "主机呼叫挂断请求"),
     APP_MSG_BROADCAST_REQ((byte)0x87, "主机发送广播请求"),
     APP_MSG_SOSOFF_REQ((byte)0x88, "主机关闭防水紧急按钮呼叫"),
+    APP_MSG_REGEDIT_STATE((byte)0x89, "工作模式状态"),
     APP_MSG_DEVICEID_REQ((byte)0x8A, "主机请求设备ID"),
     APP_MSG_DEVICEMAC_INFO((byte)0x8B, "主机发送设备MAC地址列表"),
     APP_MSG_PHONEVOL_SET((byte)0x8C, "音量调节"),