Browse Source

向蓝牙设备发送指令,迁移算法

master
白凤吉 4 months ago
parent
commit
9e6fc08f48
  1. 8
      app/src/main/java/com/iflytop/profilometer/api/auth/AuthApi.java
  2. 6
      app/src/main/java/com/iflytop/profilometer/api/ble/BleApi.java
  3. 21
      app/src/main/java/com/iflytop/profilometer/api/measure/MeasureApi.java
  4. 4
      app/src/main/java/com/iflytop/profilometer/api/measure/MeasureRoutes.kt
  5. 5
      app/src/main/java/com/iflytop/profilometer/api/ws/DeviceStateWebsocketManager.java
  6. 43
      app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleDeviceDriver.java
  7. 4
      app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleDeviceListener.java
  8. 14
      app/src/main/java/com/iflytop/profilometer/core/bluetooth/BleManager.java
  9. 56
      app/src/main/java/com/iflytop/profilometer/core/bluetooth/BlePingManager.java
  10. 9
      app/src/main/java/com/iflytop/profilometer/core/migration/channel/BleDeviceUartChannel.java
  11. 2
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/AppConstantConfig.java
  12. 2
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/EncoderSensorRawData.java
  13. 2
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/ZLockList.java
  14. 2
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/AngleConverter.java
  15. 8
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/CoordinateCalculator.java
  16. 6
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/PulleyPointDrawer.java
  17. 16
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/RailProfileDrawer.java
  18. 2
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/TwoLinkArmInverseKinematics.java
  19. 2
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/MeasureSide.java
  20. 2
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/RailProfileDrawerListener.java
  21. 4
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/RailProfileDrawerState.java
  22. 2
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/RailProfileMeasureTaskStatus.java
  23. 2
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/TrackPoint.java
  24. 2
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/TwoObject.java
  25. 2
      app/src/main/java/com/iflytop/profilometer/core/migration/measure/drawer/type/XYPoint.java
  26. 29
      app/src/main/java/com/iflytop/profilometer/core/migration/type/Version.java
  27. 6
      app/src/main/java/com/iflytop/profilometer/core/migration/type/enums/SubDeviceChannel.java
  28. 5
      app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIBasicReport.java
  29. 8
      app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIPacket.java
  30. 5
      app/src/main/java/com/iflytop/profilometer/core/migration/type/protocol/TPMIPosReport.java
  31. 51
      app/src/main/java/com/iflytop/profilometer/core/system/SystemService.java
  32. 36
      app/src/main/java/com/iflytop/profilometer/core/system/SystemState.java
  33. 4
      app/src/main/java/com/iflytop/profilometer/model/bo/RailProfileMeasureTaskState.java
  34. 8
      app/src/main/java/com/iflytop/profilometer/service/RailProfileMeasureTaskCtrlService.java

8
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);
}
}

6
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);

21
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();
}
}

4
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)
}
/**

5
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<String, Object> map = new HashMap<>();
map.put("type", "peripheral-status");
map.put("data", deviceState);

43
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);
}
}

4
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());

14
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 失败");

56
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);
}
}
}

9
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);
}

2
app/src/main/java/com/iflytop/profilometer/measure/AppConstantConfig.java → 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;

2
app/src/main/java/com/iflytop/profilometer/measure/EncoderSensorRawData.java → 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

2
app/src/main/java/com/iflytop/profilometer/measure/ZLockList.java → 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;

2
app/src/main/java/com/iflytop/profilometer/measure/drawer/AngleConverter.java → 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 {

8
app/src/main/java/com/iflytop/profilometer/measure/drawer/CoordinateCalculator.java → 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 {

6
app/src/main/java/com/iflytop/profilometer/measure/drawer/PulleyPointDrawer.java → 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 {

16
app/src/main/java/com/iflytop/profilometer/measure/drawer/RailProfileDrawer.java → 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 满足13cm1500个点

2
app/src/main/java/com/iflytop/profilometer/measure/drawer/TwoLinkArmInverseKinematics.java → 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 {

2
app/src/main/java/com/iflytop/profilometer/measure/drawer/type/MeasureSide.java → 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;

2
app/src/main/java/com/iflytop/profilometer/measure/drawer/type/RailProfileDrawerListener.java → 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 {
/**

4
app/src/main/java/com/iflytop/profilometer/measure/drawer/type/RailProfileDrawerState.java → 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; //状态

2
app/src/main/java/com/iflytop/profilometer/measure/drawer/type/RailProfileMeasureTaskStatus.java → 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 {
/**

2
app/src/main/java/com/iflytop/profilometer/measure/drawer/type/TrackPoint.java → 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;

2
app/src/main/java/com/iflytop/profilometer/measure/drawer/type/TwoObject.java → 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<R, L> {
public R r;

2
app/src/main/java/com/iflytop/profilometer/measure/drawer/type/XYPoint.java → 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 {

29
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;
}
}

6
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,
}

5
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());
}

8
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],

5
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());
}
}

51
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;
}
}

36
app/src/main/java/com/iflytop/profilometer/core/system/SystemState.java

@ -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;
}
}

4
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;

8
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 {

Loading…
Cancel
Save