From 6de509d70e99c2c037fa3995f5939db56365fa4c Mon Sep 17 00:00:00 2001 From: UnknownObject Date: Thu, 15 Dec 2022 16:28:41 +0800 Subject: [PATCH] add task button --- .../communication/WifiTransferCore.java | 1 + .../com/uns/maincar/constants/Commands.java | 13 + .../java/com/uns/maincar/constants/Flags.java | 1 + .../com/uns/maincar/gui/MainActivity.java | 72 ++- app/src/main/res/layout/activity_main.xml | 449 +++++++++++------- .../generate_cxx_metadata_222_timing.txt | 6 + .../generate_cxx_metadata_31_timing.txt | 2 + .../generate_cxx_metadata_447_timing.txt | 2 + .../arm64-v8a/metadata_generation_record.json | 6 +- .../cxx/abi_configuration_311k5o12.log | 2 +- .../cxx/create_cxx_tasks_298_timing.txt | 12 + .../cxx/create_cxx_tasks_31_timing.txt | 62 +++ .../cxx/create_cxx_tasks_598_timing.txt | 13 + .../cxx/ndk_locator_record_50t213g5.log | 12 +- 14 files changed, 461 insertions(+), 192 deletions(-) diff --git a/app/src/main/java/com/uns/maincar/communication/WifiTransferCore.java b/app/src/main/java/com/uns/maincar/communication/WifiTransferCore.java index c102a82..5834996 100644 --- a/app/src/main/java/com/uns/maincar/communication/WifiTransferCore.java +++ b/app/src/main/java/com/uns/maincar/communication/WifiTransferCore.java @@ -175,6 +175,7 @@ public class WifiTransferCore implements DataTransferCore else { SendExDataBack = false; + cb_data = null; return true; } } diff --git a/app/src/main/java/com/uns/maincar/constants/Commands.java b/app/src/main/java/com/uns/maincar/constants/Commands.java index 631502a..ef4f21b 100644 --- a/app/src/main/java/com/uns/maincar/constants/Commands.java +++ b/app/src/main/java/com/uns/maincar/constants/Commands.java @@ -61,6 +61,19 @@ public class Commands public static byte OCR_TEXT_DATA = (byte) 0xD9; public static byte OCR_TEXT_FINISH = (byte) 0xE9; + //运行指定任务 + public static byte RUN_SINGE_TASK = (byte) 0xA0; + public static byte TASK_NUMBER_0 = 0x00; + public static byte TASK_NUMBER_1 = 0x01; + public static byte TASK_NUMBER_2 = 0x02; + public static byte TASK_NUMBER_3 = 0x03; + public static byte TASK_NUMBER_4 = 0x04; + public static byte TASK_NUMBER_5 = 0x05; + public static byte TASK_NUMBER_6 = 0x06; + public static byte TASK_NUMBER_7 = 0x07; + public static byte TASK_NUMBER_8 = 0x08; + public static byte TASK_NUMBER_9 = 0x09; + //全自动模式 public static final byte RECEIVE_FULL_AUTO = (byte) 0xA0; diff --git a/app/src/main/java/com/uns/maincar/constants/Flags.java b/app/src/main/java/com/uns/maincar/constants/Flags.java index 8101f64..df2165b 100644 --- a/app/src/main/java/com/uns/maincar/constants/Flags.java +++ b/app/src/main/java/com/uns/maincar/constants/Flags.java @@ -11,6 +11,7 @@ public class Flags //日志TAG public static final String CLIENT_TAG = "MAIN-CAR-CLIENT"; + public static final String CLIENT_SEND_EX = "SEND-EX-RECEIVED"; //摄像头控制指令 public static final int CAMERA_UP = 0; diff --git a/app/src/main/java/com/uns/maincar/gui/MainActivity.java b/app/src/main/java/com/uns/maincar/gui/MainActivity.java index f76b1a7..3e87c04 100644 --- a/app/src/main/java/com/uns/maincar/gui/MainActivity.java +++ b/app/src/main/java/com/uns/maincar/gui/MainActivity.java @@ -121,6 +121,7 @@ public class MainActivity extends AppCompatActivity //接收内部消息的处理器,用于处理内部消息 recvHandler = new Handler() { + @SuppressLint("SetTextI18n") @Override public void handleMessage(Message msg) { @@ -128,6 +129,20 @@ public class MainActivity extends AppCompatActivity //内部消息:收到图片;执行操作:更新GUI上的图片 if (msg.what == Flags.RECEIVED_IMAGE) pic_received.setImageBitmap(currImage); + //内部消息:打印数组;操作:打印收到的数组 + if (msg.what == Flags.PRINT_DATA_ARRAY) + { + byte[] data = (byte[]) msg.obj; + if (data != null) + ToastLog("SEND: [" + ByteArray2String(data) + "]", false, false); + } + //内部消息:打印日志;操作:打印收到的日志 + if (msg.what == Flags.PRINT_SYSTEM_LOG) + { + String str = (String) msg.obj; + if (str != null) + ToastLog(str, false, false); + } //内部消息:收到主车数据;执行操作:解析指令并执行 if (msg.what == Flags.RECEIVED_CAR_DATA) { @@ -135,7 +150,7 @@ public class MainActivity extends AppCompatActivity if (recv != null) { //打印接收到的指令 - ToastLog("RECV: [" + ByteArray2String(recv) + "]", true, false); + ToastLog("RECV: [" + ByteArray2String(recv) + "]", false, false); //解析指令 CommandDecoder decoder = new CommandDecoder(recv); if (decoder.CommandReady()) @@ -201,21 +216,6 @@ public class MainActivity extends AppCompatActivity //收到NULL,输出日志,不做操作 else ToastLog("NULL Received", true, false); - - } - //内部消息:打印数组;操作:打印收到的数组 - if (msg.what == Flags.PRINT_DATA_ARRAY) - { - byte[] data = (byte[]) msg.obj; - if (data != null) - ToastLog("SEND: [" + ByteArray2String(data) + "]", false, false); - } - //内部消息:打印日志;操作:打印收到的日志 - if (msg.what == Flags.PRINT_SYSTEM_LOG) - { - String str = (String) msg.obj; - if (str != null) - ToastLog(str, false, false); } } }; @@ -455,6 +455,35 @@ public class MainActivity extends AppCompatActivity return msg_str.toString(); } + //向主车发送一条任务指令 + private void SendTaskCommand(byte task_cmd) + { + CommandEncoder encoder = new CommandEncoder(); + Thread th_send = new Thread(() -> + { + if (dtc_client.Send(encoder.GenerateCommand(Commands.RUN_SINGE_TASK, task_cmd, (byte) 0x00, (byte) 0x00))) + ToastLog("Send Task Command: " + byte_str[task_cmd & 0xff], false, true); + else + ToastLog("Failed to Send Task Command: " + byte_str[task_cmd & 0xff], false, true); + }); + th_send.start(); + } + + //初始化比赛任务按钮 + private void InitTaskButton() + { + findViewById(R.id.btn_task_0).setOnClickListener(view -> SendTaskCommand(Commands.TASK_NUMBER_0)); + findViewById(R.id.btn_task_1).setOnClickListener(view -> SendTaskCommand(Commands.TASK_NUMBER_1)); + findViewById(R.id.btn_task_2).setOnClickListener(view -> SendTaskCommand(Commands.TASK_NUMBER_2)); + findViewById(R.id.btn_task_3).setOnClickListener(view -> SendTaskCommand(Commands.TASK_NUMBER_3)); + findViewById(R.id.btn_task_4).setOnClickListener(view -> SendTaskCommand(Commands.TASK_NUMBER_4)); + findViewById(R.id.btn_task_5).setOnClickListener(view -> SendTaskCommand(Commands.TASK_NUMBER_5)); + findViewById(R.id.btn_task_6).setOnClickListener(view -> SendTaskCommand(Commands.TASK_NUMBER_6)); + findViewById(R.id.btn_task_7).setOnClickListener(view -> SendTaskCommand(Commands.TASK_NUMBER_7)); + findViewById(R.id.btn_task_8).setOnClickListener(view -> SendTaskCommand(Commands.TASK_NUMBER_8)); + findViewById(R.id.btn_task_9).setOnClickListener(view -> SendTaskCommand(Commands.TASK_NUMBER_9)); + } + //初始化图形界面 private void InitGUI() { @@ -548,7 +577,6 @@ public class MainActivity extends AppCompatActivity findViewById(R.id.btn_start_ocr).setOnClickListener(view -> { ToastLog("OCR Started", false, false); - /*ToastLog("OCR Result: " + OCR.DecodeImage(currImage), false, false);*/ Thread th_debug = new Thread(this::OCRRecognizeText); th_debug.start(); }); @@ -589,6 +617,8 @@ public class MainActivity extends AppCompatActivity ToastLog("Image Save Failure", true, false); return true; }); + + InitTaskButton(); } //打印日志 @@ -599,11 +629,13 @@ public class MainActivity extends AppCompatActivity text_toast = findViewById(R.id.text_toast); if (real_toast) Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); - Log.i("ToastBackup", text); if (on_thread) - Message.obtain(recvHandler, Flags.PRINT_SYSTEM_LOG, text); + Message.obtain(recvHandler, Flags.PRINT_SYSTEM_LOG, text).sendToTarget(); else + { + Log.i("ToastBackup", text); text_toast.setText(text_toast.getText().toString() + "\n" + text); + } } //等待一段时间 @@ -754,5 +786,7 @@ public class MainActivity extends AppCompatActivity //Activity销毁时关闭通信 dtc_client.DisableAutoReconnect(); dtc_client.CloseConnection(); + + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 1c6be42..d390661 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,4 +1,3 @@ - - + android:layout_height="170dp"> -