diff --git a/app/src/main/java/com/iflytop/profilometer/api/auth/AuthApi.java b/app/src/main/java/com/iflytop/profilometer/api/auth/AuthApi.java index d8953e8..6f7693f 100644 --- a/app/src/main/java/com/iflytop/profilometer/api/auth/AuthApi.java +++ b/app/src/main/java/com/iflytop/profilometer/api/auth/AuthApi.java @@ -3,7 +3,7 @@ package com.iflytop.profilometer.api.auth; import android.content.Context; import com.iflytop.profilometer.common.result.Result; -import com.iflytop.profilometer.core.system.SystemState; +import com.iflytop.profilometer.core.system.SystemService; import com.iflytop.profilometer.dao.UserDao; import com.iflytop.profilometer.model.entity.AppUser; @@ -24,7 +24,7 @@ public class AuthApi { UserDao userDao = new UserDao(context); AppUser user = userDao.login(username, password); if (user != null) { - SystemState.getInstance().setCurrentUser(user); + SystemService.getInstance().setCurrentUser(user); return Result.success(user); } else { return Result.failed(); @@ -35,7 +35,7 @@ public class AuthApi { * 登出 */ public String logout() { - SystemState.getInstance().setCurrentUser(null); + SystemService.getInstance().setCurrentUser(null); return Result.success(); } @@ -43,7 +43,7 @@ public class AuthApi { * 获取当前登录用户 */ public String current() { - AppUser user = SystemState.getInstance().getCurrentUser(); + AppUser user = SystemService.getInstance().getCurrentUser(); return Result.success(user); } } diff --git a/app/src/main/java/com/iflytop/profilometer/api/ble/BleApi.java b/app/src/main/java/com/iflytop/profilometer/api/ble/BleApi.java index 09964de..e3520d2 100644 --- a/app/src/main/java/com/iflytop/profilometer/api/ble/BleApi.java +++ b/app/src/main/java/com/iflytop/profilometer/api/ble/BleApi.java @@ -6,9 +6,8 @@ import android.util.Log; import com.iflytop.profilometer.api.ws.BleWebsocketManager; import com.iflytop.profilometer.api.ws.DeviceStateWebsocketManager; import com.iflytop.profilometer.common.result.Result; -import com.iflytop.profilometer.core.bluetooth.BleDeviceListener; import com.iflytop.profilometer.core.bluetooth.BleManager; -import com.iflytop.profilometer.core.migration.channel.BleDeviceUartChannel; +import com.iflytop.profilometer.core.bluetooth.BlePingManager; /** * 蓝牙接口 @@ -56,6 +55,8 @@ public class BleApi { try { BleManager.getInstance().connectToDevice(mac); DeviceStateWebsocketManager.getInstance().startWsPush(); + + BlePingManager.getInstance().startPing(); return Result.success(); } catch (Exception e) { Log.e(TAG, "链接蓝牙设备失败", e); @@ -69,6 +70,7 @@ public class BleApi { public String disconnect() { try { BleManager.getInstance().disconnect(); + DeviceStateWebsocketManager.getInstance().stopWsPush(); return Result.success(); } catch (Exception e) { Log.e(TAG, "断开蓝牙设备链接失败", e); diff --git a/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureApi.java b/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureApi.java index 1960183..a1856cd 100644 --- a/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureApi.java +++ b/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureApi.java @@ -2,6 +2,10 @@ package com.iflytop.profilometer.api.measure; import android.content.Context; +import com.iflytop.profilometer.common.result.Result; +import com.iflytop.profilometer.core.bluetooth.BleDeviceDriver; +import com.iflytop.profilometer.core.system.SystemService; + /** * 测量接口 */ @@ -12,5 +16,22 @@ public class MeasureApi { this.context = context.getApplicationContext(); } + /** + * 开始测量 + */ + public String start() { + BleDeviceDriver bleDeviceDriver = SystemService.getInstance().getBleDeviceDriver(); + bleDeviceDriver.startSampling(); + return Result.success(); + } + + /** + * 停止测量 + */ + public String stop() { + BleDeviceDriver bleDeviceDriver = SystemService.getInstance().getBleDeviceDriver(); + bleDeviceDriver.stopSampling(); + return Result.success(); + } } diff --git a/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureRoutes.kt b/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureRoutes.kt index 3f59f31..687c795 100644 --- a/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureRoutes.kt +++ b/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureRoutes.kt @@ -15,12 +15,16 @@ fun Routing.measureRoutes(context: Context) { * 开始测量 */ post("/api/measure/start") { + val jsonResponse = api.start() + call.respondText(jsonResponse, ContentType.Application.Json) } /** * 停止测量 */ post("/api/measure/stop") { + val jsonResponse = api.stop() + call.respondText(jsonResponse, ContentType.Application.Json) } /** diff --git a/app/src/main/java/com/iflytop/profilometer/api/ws/DeviceStateWebsocketManager.java b/app/src/main/java/com/iflytop/profilometer/api/ws/DeviceStateWebsocketManager.java index 8d13322..bd697d6 100644 --- a/app/src/main/java/com/iflytop/profilometer/api/ws/DeviceStateWebsocketManager.java +++ b/app/src/main/java/com/iflytop/profilometer/api/ws/DeviceStateWebsocketManager.java @@ -1,10 +1,9 @@ package com.iflytop.profilometer.api.ws; import android.annotation.SuppressLint; -import android.content.Context; import com.iflytop.profilometer.core.system.DeviceState; -import com.iflytop.profilometer.core.system.SystemState; +import com.iflytop.profilometer.core.system.SystemService; import com.iflytop.profilometer.core.websocket.WebSocketManager; import java.util.HashMap; @@ -38,7 +37,7 @@ public class DeviceStateWebsocketManager { public void startWsPush() { stopWsPush(); scheduledTask = scheduler.scheduleWithFixedDelay(() -> { - DeviceState deviceState = SystemState.getInstance().getDeviceState(); + DeviceState deviceState = SystemService.getInstance().getDeviceState(); Map map = new HashMap<>(); map.put("type", "peripheral-status"); map.put("data", deviceState); diff --git a/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleDeviceDriver.java b/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleDeviceDriver.java new file mode 100644 index 0000000..6f9486d --- /dev/null +++ b/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleDeviceDriver.java @@ -0,0 +1,43 @@ +package com.iflytop.profilometer.core.bluetooth; + +import com.iflytop.profilometer.core.migration.channel.BleDeviceUartChannel; +import com.iflytop.profilometer.core.migration.factory.TPMIPacketFactory; +import com.iflytop.profilometer.core.migration.measure.AppConstantConfig; +import com.iflytop.profilometer.core.migration.type.protocol.TPMIPacket; +import com.iflytop.profilometer.model.bo.RailProfileMeasureTaskState; + +public class BleDeviceDriver { + + private final BleDeviceUartChannel uartChannel; + + private RailProfileMeasureTaskState taskState = new RailProfileMeasureTaskState(); + + public BleDeviceDriver(BleDeviceUartChannel channel) { + this.uartChannel = channel; + } + + /** + * 发送PING指令(检查设备是否在线) + */ + public void ping() { + TPMIPacket packet = TPMIPacketFactory.buildPingCmd(); + uartChannel.sendCommand(packet); + } + + /** + * 启动位移采样(启动测量) + */ + public void startSampling() { + TPMIPacket packet = TPMIPacketFactory.buildStartPosSampleCmd(AppConstantConfig.POINT_REPORT_PERIOD); + uartChannel.sendCommand(packet); + } + + /**BleWebsocketManager + * 停止位移采样(结束测量) + */ + public void stopSampling() { + TPMIPacket packet = TPMIPacketFactory.buildStopPosSampleCmd(); + uartChannel.sendCommand(packet); + } + +} diff --git a/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleDeviceListener.java b/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleDeviceListener.java index ad06a19..62bff05 100644 --- a/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleDeviceListener.java +++ b/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleDeviceListener.java @@ -6,7 +6,7 @@ import com.iflytop.profilometer.core.migration.type.protocol.TPMIBasicReport; import com.iflytop.profilometer.core.migration.type.protocol.TPMIPacket; import com.iflytop.profilometer.core.migration.type.protocol.TPMIPosReport; import com.iflytop.profilometer.core.system.DeviceState; -import com.iflytop.profilometer.core.system.SystemState; +import com.iflytop.profilometer.core.system.SystemService; public class BleDeviceListener implements BleDeviceOnReportListener { private static final String TAG = "MyBleDeviceListener"; @@ -14,7 +14,7 @@ public class BleDeviceListener implements BleDeviceOnReportListener { @Override public void onBasicReport(TPMIBasicReport report) { Log.i(TAG, "基础上报包:" + report); - DeviceState deviceState = SystemState.getInstance().getDeviceState(); + DeviceState deviceState = SystemService.getInstance().getDeviceState(); deviceState.setTemperature(report.getTemperature()); deviceState.setInclinatorX(report.getInclinatorX()); deviceState.setInclinatorY(report.getInclinatorY()); diff --git a/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleManager.java b/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleManager.java index 6864892..1735ba7 100644 --- a/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleManager.java +++ b/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleManager.java @@ -28,6 +28,7 @@ import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import com.iflytop.profilometer.core.migration.channel.BleDeviceUartChannel; +import com.iflytop.profilometer.core.system.SystemService; import java.util.ArrayList; import java.util.HashMap; @@ -54,7 +55,7 @@ public class BleManager { //【通信部分】请根据你的设备替换下列 UUID public static final UUID SERVICE_UUID = UUID.fromString("6e400001-b5a3-f393-e0a9-e50e24dcca9e"); - public static final UUID WRITE_CHARACTERISTIC_UUID = UUID.fromString("0000fff1-0000-1000-8000-00805f9b34fb"); + public static final UUID WRITE_CHARACTERISTIC_UUID = UUID.fromString("6e400002-b5a3-f393-e0a9-e50e24dcca9e"); public static final UUID NOTIFY_CHARACTERISTIC_UUID = UUID.fromString("6e400003-b5a3-f393-e0a9-e50e24dcca9e"); public static final UUID CLIENT_CHARACTERISTIC_CONFIG_UUID = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"); @@ -149,7 +150,7 @@ public class BleManager { // 收到通知数据后,将数据通过回调接口传递出去 if (NOTIFY_CHARACTERISTIC_UUID.equals(characteristic.getUuid())) { byte[] data = characteristic.getValue(); - Log.d(TAG, "收到通知数据: " + new String(data)); +// Log.d(TAG, "收到通知数据: " + new String(data)); if (bleDataListener != null) { bleDataListener.onDataReceived(data); } @@ -191,6 +192,7 @@ public class BleManager { } return instance; } + public static synchronized BleManager getInstance() { return instance; } @@ -351,7 +353,7 @@ public class BleManager { BluetoothDevice device = bluetoothAdapter.getRemoteDevice(macAddress); bluetoothGatt = device.connectGatt(context, false, gattCallback); - BleDeviceUartChannel channel = new BleDeviceUartChannel(); + BleDeviceUartChannel channel = SystemService.getInstance().getChannel(); channel.init(); channel.setDeviceOnReportListener(new BleDeviceListener()); @@ -362,11 +364,9 @@ public class BleManager { /** * 向当前已连接的 BLE 设备发送数据。 - * - * @param message 要发送的字符串数据(根据设备协议,可转换为其他格式) */ @SuppressLint("MissingPermission") - public void sendMessage(String message) { + public void sendMessage(byte[] rawpacket) { if (bluetoothGatt == null) { Log.e(TAG, "没有连接的设备,无法发送消息"); return; @@ -381,7 +381,7 @@ public class BleManager { Log.e(TAG, "未发现写特征,请确认写特征 UUID 是否正确"); return; } - writeCharacteristic.setValue(message.getBytes()); + writeCharacteristic.setValue(rawpacket); boolean result = bluetoothGatt.writeCharacteristic(writeCharacteristic); if (!result) { Log.e(TAG, "调用 writeCharacteristic 失败"); diff --git a/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BlePingManager.java b/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BlePingManager.java new file mode 100644 index 0000000..06534af --- /dev/null +++ b/app/src/main/java/com/iflytop/profilometer/core/bluetooth/BlePingManager.java @@ -0,0 +1,56 @@ +package com.iflytop.profilometer.core.bluetooth; + +import android.annotation.SuppressLint; +import android.bluetooth.BluetoothDevice; + +import com.iflytop.profilometer.core.system.SystemService; +import com.iflytop.profilometer.core.websocket.WebSocketManager; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +import cn.hutool.json.JSONUtil; + +public class BlePingManager { + private static BlePingManager instance; + private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + private ScheduledFuture scheduledTask; + + private BlePingManager() { + } + + public static synchronized BlePingManager getInstance() { + if (instance == null) { + instance = new BlePingManager(); + } + return instance; + } + + + /** + * 开始定时任务 + */ + @SuppressLint("MissingPermission") + public void startPing() { + stopPing(); + scheduledTask = scheduler.scheduleWithFixedDelay(() -> { + BleDeviceDriver bleDeviceDriver = SystemService.getInstance().getBleDeviceDriver(); + bleDeviceDriver.ping(); + }, 0, 5000, TimeUnit.MILLISECONDS); + } + + /** + * 结束定时任务 + */ + public void stopPing() { + if (scheduledTask != null && !scheduledTask.isCancelled()) { + scheduledTask.cancel(false); + } + } + +} diff --git a/app/src/main/java/com/iflytop/profilometer/core/migration/channel/BleDeviceUartChannel.java b/app/src/main/java/com/iflytop/profilometer/core/migration/channel/BleDeviceUartChannel.java index 440cf5e..cfa3583 100644 --- a/app/src/main/java/com/iflytop/profilometer/core/migration/channel/BleDeviceUartChannel.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/channel/BleDeviceUartChannel.java @@ -34,12 +34,13 @@ public class BleDeviceUartChannel { this.deviceOnReportListener = listener; } - public void sendCommand(byte[] command) { - BleManager.getInstance().sendMessage(new String(command)); + public void sendCommand(TPMIPacket tx) { + Log.e("BLE", "TX PACKET :" + tx); + BleManager.getInstance().sendMessage(tx.rawpacket); } private void handleReceivedData(byte[] data) { - Log.d("BLE", "收到原始数据: " + Arrays.toString(data)); +// Log.d("BLE", "收到原始数据: " + Arrays.toString(data)); // 追加到缓冲区 if (bufferLen + data.length > buffer.length) { @@ -53,7 +54,7 @@ public class BleDeviceUartChannel { while (offset < bufferLen) { var report = TPMIPacketFactory.analysisRawRxData(buffer, bufferLen, offset); if (report.result.equals(TPMIPacketFactory.PacketAnalysisResult.SUC)) { - Log.d("BLE", "BLE协议包解析成功: " + report.packet); +// Log.d("BLE", "BLE协议包解析成功: " + report.packet); if (reportListener != null) { reportListener.onReportReceived(report.packet); } diff --git a/app/src/main/java/com/iflytop/profilometer/measure/AppConstantConfig.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/AppConstantConfig.java similarity index 94% rename from app/src/main/java/com/iflytop/profilometer/measure/AppConstantConfig.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/AppConstantConfig.java index d6e83d6..1ad4da6 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/AppConstantConfig.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/AppConstantConfig.java @@ -1,4 +1,4 @@ -package com.iflytop.profilometer.measure; +package com.iflytop.profilometer.core.migration.measure; public class AppConstantConfig { public static final int HEARTBEAT_INTERVAL = 10000; diff --git a/app/src/main/java/com/iflytop/profilometer/measure/EncoderSensorRawData.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/EncoderSensorRawData.java similarity index 86% rename from app/src/main/java/com/iflytop/profilometer/measure/EncoderSensorRawData.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/EncoderSensorRawData.java index 3341bc0..9dfea9b 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/EncoderSensorRawData.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/EncoderSensorRawData.java @@ -1,4 +1,4 @@ -package com.iflytop.profilometer.measure; +package com.iflytop.profilometer.core.migration.measure; public class EncoderSensorRawData { public double arm1Angle = 0; //0->360 diff --git a/app/src/main/java/com/iflytop/profilometer/measure/ZLockList.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/ZLockList.java similarity index 95% rename from app/src/main/java/com/iflytop/profilometer/measure/ZLockList.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/ZLockList.java index d848a7a..fbe2567 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/ZLockList.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/ZLockList.java @@ -1,4 +1,4 @@ -package com.iflytop.profilometer.measure; +package com.iflytop.profilometer.core.migration.measure; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/iflytop/profilometer/measure/drawer/AngleConverter.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/AngleConverter.java similarity index 89% rename from app/src/main/java/com/iflytop/profilometer/measure/drawer/AngleConverter.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/AngleConverter.java index da1c3a4..526dc58 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/drawer/AngleConverter.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/AngleConverter.java @@ -1,4 +1,4 @@ -package com.iflytop.profilometer.measure.drawer; +package com.iflytop.profilometer.core.migration.measure.drawer; public class AngleConverter { diff --git a/app/src/main/java/com/iflytop/profilometer/measure/drawer/CoordinateCalculator.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/CoordinateCalculator.java similarity index 97% rename from app/src/main/java/com/iflytop/profilometer/measure/drawer/CoordinateCalculator.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/CoordinateCalculator.java index e36f8a8..dd03dc7 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/drawer/CoordinateCalculator.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/CoordinateCalculator.java @@ -1,12 +1,12 @@ -package com.iflytop.profilometer.measure.drawer; +package com.iflytop.profilometer.core.migration.measure.drawer; import static java.lang.Math.PI; import static java.lang.Math.abs; -import com.iflytop.profilometer.measure.drawer.type.TrackPoint; -import com.iflytop.profilometer.measure.drawer.type.TwoObject; -import com.iflytop.profilometer.measure.drawer.type.XYPoint; +import com.iflytop.profilometer.core.migration.measure.drawer.type.TrackPoint; +import com.iflytop.profilometer.core.migration.measure.drawer.type.TwoObject; +import com.iflytop.profilometer.core.migration.measure.drawer.type.XYPoint; public class CoordinateCalculator { diff --git a/app/src/main/java/com/iflytop/profilometer/measure/drawer/PulleyPointDrawer.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/PulleyPointDrawer.java similarity index 92% rename from app/src/main/java/com/iflytop/profilometer/measure/drawer/PulleyPointDrawer.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/PulleyPointDrawer.java index f5ba8da..c14f445 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/drawer/PulleyPointDrawer.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/PulleyPointDrawer.java @@ -1,8 +1,8 @@ -package com.iflytop.profilometer.measure.drawer; +package com.iflytop.profilometer.core.migration.measure.drawer; -import com.iflytop.profilometer.measure.EncoderSensorRawData; -import com.iflytop.profilometer.measure.drawer.type.XYPoint; +import com.iflytop.profilometer.core.migration.measure.EncoderSensorRawData; +import com.iflytop.profilometer.core.migration.measure.drawer.type.XYPoint; public class PulleyPointDrawer { static class Config { diff --git a/app/src/main/java/com/iflytop/profilometer/measure/drawer/RailProfileDrawer.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/RailProfileDrawer.java similarity index 93% rename from app/src/main/java/com/iflytop/profilometer/measure/drawer/RailProfileDrawer.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/RailProfileDrawer.java index f41ae51..db83571 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/drawer/RailProfileDrawer.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/RailProfileDrawer.java @@ -1,13 +1,13 @@ -package com.iflytop.profilometer.measure.drawer; +package com.iflytop.profilometer.core.migration.measure.drawer; -import static com.iflytop.profilometer.measure.AppConstantConfig.STILL_JUDGE_THRESHOLD; +import static com.iflytop.profilometer.core.migration.measure.AppConstantConfig.STILL_JUDGE_THRESHOLD; -import com.iflytop.profilometer.measure.AppConstantConfig; -import com.iflytop.profilometer.measure.drawer.type.MeasureSide; -import com.iflytop.profilometer.measure.drawer.type.RailProfileDrawerListener; -import com.iflytop.profilometer.measure.drawer.type.RailProfileDrawerState; -import com.iflytop.profilometer.measure.drawer.type.RailProfileMeasureTaskStatus; -import com.iflytop.profilometer.measure.drawer.type.XYPoint; +import com.iflytop.profilometer.core.migration.measure.AppConstantConfig; +import com.iflytop.profilometer.core.migration.measure.drawer.type.MeasureSide; +import com.iflytop.profilometer.core.migration.measure.drawer.type.RailProfileDrawerListener; +import com.iflytop.profilometer.core.migration.measure.drawer.type.RailProfileDrawerState; +import com.iflytop.profilometer.core.migration.measure.drawer.type.RailProfileMeasureTaskStatus; +import com.iflytop.profilometer.core.migration.measure.drawer.type.XYPoint; public class RailProfileDrawer { public static final double PRECISION = 0.1;// mm 满足13cm,1500个点 diff --git a/app/src/main/java/com/iflytop/profilometer/measure/drawer/TwoLinkArmInverseKinematics.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/TwoLinkArmInverseKinematics.java similarity index 97% rename from app/src/main/java/com/iflytop/profilometer/measure/drawer/TwoLinkArmInverseKinematics.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/TwoLinkArmInverseKinematics.java index 9024cf9..ec65ec0 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/drawer/TwoLinkArmInverseKinematics.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/TwoLinkArmInverseKinematics.java @@ -1,4 +1,4 @@ -package com.iflytop.profilometer.measure.drawer; +package com.iflytop.profilometer.core.migration.measure.drawer; public class TwoLinkArmInverseKinematics { diff --git a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/MeasureSide.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/MeasureSide.java similarity index 74% rename from app/src/main/java/com/iflytop/profilometer/measure/drawer/type/MeasureSide.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/MeasureSide.java index 4cfd3ec..6b058a7 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/MeasureSide.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/MeasureSide.java @@ -1,4 +1,4 @@ -package com.iflytop.profilometer.measure.drawer.type; +package com.iflytop.profilometer.core.migration.measure.drawer.type; public enum MeasureSide { LEFT, RIGHT; diff --git a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/RailProfileDrawerListener.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/RailProfileDrawerListener.java similarity index 89% rename from app/src/main/java/com/iflytop/profilometer/measure/drawer/type/RailProfileDrawerListener.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/RailProfileDrawerListener.java index 35c9106..9af4e6d 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/RailProfileDrawerListener.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/RailProfileDrawerListener.java @@ -1,4 +1,4 @@ -package com.iflytop.profilometer.measure.drawer.type; +package com.iflytop.profilometer.core.migration.measure.drawer.type; public interface RailProfileDrawerListener { /** diff --git a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/RailProfileDrawerState.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/RailProfileDrawerState.java similarity index 92% rename from app/src/main/java/com/iflytop/profilometer/measure/drawer/type/RailProfileDrawerState.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/RailProfileDrawerState.java index d4b7878..8c7de72 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/RailProfileDrawerState.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/RailProfileDrawerState.java @@ -1,6 +1,6 @@ -package com.iflytop.profilometer.measure.drawer.type; +package com.iflytop.profilometer.core.migration.measure.drawer.type; -import com.iflytop.profilometer.measure.ZLockList; +import com.iflytop.profilometer.core.migration.measure.ZLockList; public class RailProfileDrawerState { public RailProfileMeasureTaskStatus state = RailProfileMeasureTaskStatus.IDLE; //状态 diff --git a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/RailProfileMeasureTaskStatus.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/RailProfileMeasureTaskStatus.java similarity index 86% rename from app/src/main/java/com/iflytop/profilometer/measure/drawer/type/RailProfileMeasureTaskStatus.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/RailProfileMeasureTaskStatus.java index 02225d6..af2582f 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/RailProfileMeasureTaskStatus.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/RailProfileMeasureTaskStatus.java @@ -1,4 +1,4 @@ -package com.iflytop.profilometer.measure.drawer.type; +package com.iflytop.profilometer.core.migration.measure.drawer.type; public enum RailProfileMeasureTaskStatus { /** diff --git a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/TrackPoint.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/TrackPoint.java similarity index 91% rename from app/src/main/java/com/iflytop/profilometer/measure/drawer/type/TrackPoint.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/TrackPoint.java index fa216a8..6f397ba 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/TrackPoint.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/TrackPoint.java @@ -1,4 +1,4 @@ -package com.iflytop.profilometer.measure.drawer.type; +package com.iflytop.profilometer.core.migration.measure.drawer.type; public class TrackPoint { public double x; diff --git a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/TwoObject.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/TwoObject.java similarity index 64% rename from app/src/main/java/com/iflytop/profilometer/measure/drawer/type/TwoObject.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/TwoObject.java index 09b15fc..e289275 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/TwoObject.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/TwoObject.java @@ -1,4 +1,4 @@ -package com.iflytop.profilometer.measure.drawer.type; +package com.iflytop.profilometer.core.migration.measure.drawer.type; public class TwoObject { public R r; diff --git a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/XYPoint.java b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/XYPoint.java similarity index 91% rename from app/src/main/java/com/iflytop/profilometer/measure/drawer/type/XYPoint.java rename to app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/XYPoint.java index f248dd3..3ef412d 100644 --- a/app/src/main/java/com/iflytop/profilometer/measure/drawer/type/XYPoint.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/XYPoint.java @@ -1,4 +1,4 @@ -package com.iflytop.profilometer.measure.drawer.type; +package com.iflytop.profilometer.core.migration.measure.drawer.type; public class XYPoint { diff --git a/app/src/main/java/com/iflytop/profilometer/core/migration/type/Version.java b/app/src/main/java/com/iflytop/profilometer/core/migration/type/Version.java new file mode 100644 index 0000000..1c6ac96 --- /dev/null +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/type/Version.java @@ -0,0 +1,29 @@ +package com.iflytop.profilometer.core.migration.type; + +public class Version { + public Integer main; + public Integer sub; + public Integer fix; + + public String toString() { + return String.format("%d.%d.%d", main, sub, fix); + } + + public Version() { + main = 0; + sub = 0; + fix = 0; + } + + public Version(Integer main, Integer sub, Integer fix) { + this.main = main; + this.sub = sub; + this.fix = fix; + } + + public Version(Integer in32val) { + this.main = (in32val >> 16) & 0xFF; + this.sub = (in32val >> 8) & 0xFF; + this.fix = in32val & 0xFF; + } +} diff --git a/app/src/main/java/com/iflytop/profilometer/core/migration/type/enums/SubDeviceChannel.java b/app/src/main/java/com/iflytop/profilometer/core/migration/type/enums/SubDeviceChannel.java new file mode 100644 index 0000000..5afea2c --- /dev/null +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/type/enums/SubDeviceChannel.java @@ -0,0 +1,6 @@ +package com.iflytop.profilometer.core.migration.type.enums; + +public enum SubDeviceChannel { + BLE_CHANNEL, + UART_CHANNEL, +} diff --git a/app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIBasicReport.java b/app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIBasicReport.java index d5eeea6..6b763e3 100644 --- a/app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIBasicReport.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIBasicReport.java @@ -1,6 +1,8 @@ package com.iflytop.profilometer.core.migration.type.protocol; +import androidx.annotation.NonNull; + import cn.hutool.core.lang.Assert; //report: <-(power,state,flag,inclinatorX(0.001°), inclinatorY(0.001°), temperature(0.01℃)) 1s @@ -34,7 +36,8 @@ public class TPMIBasicReport extends TPMIPacket { return this.getDataAsInt(5) / 1000.0; } - public String toString() { + @NonNull + public String toString() { return String.format("Power:%d State:%d Flag:0x%08x InclinatorX:%.3f InclinatorY:%.3f Temperature:%.2f", getPower(), getState(), getFlag(), getInclinatorX(), getInclinatorY(), getTemperature()); } diff --git a/app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIPacket.java b/app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIPacket.java index d38a824..053b783 100644 --- a/app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIPacket.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIPacket.java @@ -1,6 +1,10 @@ package com.iflytop.profilometer.core.migration.type.protocol; +import android.annotation.SuppressLint; + +import androidx.annotation.NonNull; + import com.iflytop.profilometer.core.migration.factory.TPMIPacketFactory; import com.iflytop.profilometer.core.migration.utils.ZByteUtils; @@ -244,7 +248,9 @@ public class TPMIPacket { } - public String toString() { + @NonNull + @SuppressLint("DefaultLocale") + public String toString() { return String.format("[INDEX:%03d CMD: %-35s,%s]", getIndex(), getCommand(), ZByteUtils.bytesToHexString(rawpacket, rawpacket.length)); // return String.format("H:%02X L:%02X I:%02X T:%02X C:%02X DT:%02X %s C:%02X END:%02X", // rawpacket[P_HEADER_OFF], rawpacket[P_LEN_OFF], rawpacket[P_INDEX_OFF], rawpacket[P_TYPE_OFF], rawpacket[P_CMD_OFF], rawpacket[P_DATA_TYPE_OFF], diff --git a/app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIPosReport.java b/app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIPosReport.java index 0193c60..968d69e 100644 --- a/app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIPosReport.java +++ b/app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIPosReport.java @@ -1,6 +1,8 @@ package com.iflytop.profilometer.core.migration.type.protocol; +import androidx.annotation.NonNull; + import cn.hutool.core.lang.Assert; public class TPMIPosReport extends TPMIPacket { @@ -21,7 +23,8 @@ public class TPMIPosReport extends TPMIPacket { } - public String toString() { + @NonNull + public String toString() { return String.format("ARM0Angle:%d ARM1Angle:%d ", getArm1Angle(), getArm2Angle()); } } diff --git a/app/src/main/java/com/iflytop/profilometer/core/system/SystemService.java b/app/src/main/java/com/iflytop/profilometer/core/system/SystemService.java new file mode 100644 index 0000000..6c61928 --- /dev/null +++ b/app/src/main/java/com/iflytop/profilometer/core/system/SystemService.java @@ -0,0 +1,51 @@ +package com.iflytop.profilometer.core.system; + +import com.iflytop.profilometer.core.bluetooth.BleDeviceDriver; +import com.iflytop.profilometer.core.migration.channel.BleDeviceUartChannel; +import com.iflytop.profilometer.model.entity.AppUser; + +/** + * 全局系统服务 + */ +public class SystemService { + private final DeviceState deviceState = new DeviceState(); + + private final BleDeviceUartChannel channel = new BleDeviceUartChannel(); + + private final BleDeviceDriver bleDeviceDriver = new BleDeviceDriver(channel); + + private SystemService() { + } + + private static final SystemService instance = new SystemService(); + + // 提供获取单例实例的全局访问点 + public static SystemService getInstance() { + return instance; + } + + /** + * 系统当前登录用户 + */ + private AppUser currentUser; + + public synchronized AppUser getCurrentUser() { + return currentUser; + } + + public synchronized void setCurrentUser(AppUser currentUser) { + this.currentUser = currentUser; + } + + public DeviceState getDeviceState() { + return deviceState; + } + + public BleDeviceUartChannel getChannel() { + return channel; + } + + public BleDeviceDriver getBleDeviceDriver() { + return bleDeviceDriver; + } +} diff --git a/app/src/main/java/com/iflytop/profilometer/core/system/SystemState.java b/app/src/main/java/com/iflytop/profilometer/core/system/SystemState.java deleted file mode 100644 index 49c57b1..0000000 --- a/app/src/main/java/com/iflytop/profilometer/core/system/SystemState.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.iflytop.profilometer.core.system; - -import com.iflytop.profilometer.model.entity.AppUser; - -/** - * 全局系统状态 - */ -public class SystemState { - private final DeviceState deviceState = new DeviceState(); - private SystemState() { - } - - private static final SystemState instance = new SystemState(); - - // 提供获取单例实例的全局访问点 - public static SystemState getInstance() { - return instance; - } - - /** - * 系统当前登录用户 - */ - private AppUser currentUser; - - public synchronized AppUser getCurrentUser() { - return currentUser; - } - - public synchronized void setCurrentUser(AppUser currentUser) { - this.currentUser = currentUser; - } - - public DeviceState getDeviceState() { - return deviceState; - } -} diff --git a/app/src/main/java/com/iflytop/profilometer/model/bo/RailProfileMeasureTaskState.java b/app/src/main/java/com/iflytop/profilometer/model/bo/RailProfileMeasureTaskState.java index e836c30..ced111b 100644 --- a/app/src/main/java/com/iflytop/profilometer/model/bo/RailProfileMeasureTaskState.java +++ b/app/src/main/java/com/iflytop/profilometer/model/bo/RailProfileMeasureTaskState.java @@ -1,7 +1,7 @@ package com.iflytop.profilometer.model.bo; -import com.iflytop.profilometer.measure.drawer.type.RailProfileMeasureTaskStatus; -import com.iflytop.profilometer.measure.drawer.type.XYPoint; +import com.iflytop.profilometer.core.migration.measure.drawer.type.RailProfileMeasureTaskStatus; +import com.iflytop.profilometer.core.migration.measure.drawer.type.XYPoint; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/iflytop/profilometer/service/RailProfileMeasureTaskCtrlService.java b/app/src/main/java/com/iflytop/profilometer/service/RailProfileMeasureTaskCtrlService.java index 5cd18d0..226a4fb 100644 --- a/app/src/main/java/com/iflytop/profilometer/service/RailProfileMeasureTaskCtrlService.java +++ b/app/src/main/java/com/iflytop/profilometer/service/RailProfileMeasureTaskCtrlService.java @@ -1,9 +1,9 @@ package com.iflytop.profilometer.service; -import com.iflytop.profilometer.measure.drawer.RailProfileDrawer; -import com.iflytop.profilometer.measure.drawer.type.MeasureSide; -import com.iflytop.profilometer.measure.drawer.type.RailProfileDrawerListener; -import com.iflytop.profilometer.measure.drawer.type.XYPoint; +import com.iflytop.profilometer.core.migration.measure.drawer.RailProfileDrawer; +import com.iflytop.profilometer.core.migration.measure.drawer.type.MeasureSide; +import com.iflytop.profilometer.core.migration.measure.drawer.type.RailProfileDrawerListener; +import com.iflytop.profilometer.core.migration.measure.drawer.type.XYPoint; import com.iflytop.profilometer.model.bo.RailProfileMeasureTaskState; public class RailProfileMeasureTaskCtrlService implements RailProfileDrawerListener {