|
@@ -5,6 +5,7 @@ import 'package:vitalapp/managers/device_controller_manager.dart';
|
|
|
import 'package:vitalapp/managers/interfaces/device.dart';
|
|
|
import 'package:vitalapp/managers/interfaces/models/device.dart';
|
|
|
import 'package:vitalapp/pages/controllers/blue_location_mixin.dart';
|
|
|
+import 'package:vitalapp/pages/devices/widgets/bluetooth_reboot.dart';
|
|
|
import 'package:vitalapp/pages/medical/models/worker.dart';
|
|
|
import 'package:vitalapp/pages/patient/card_reader/controller.dart';
|
|
|
import 'package:vnote_device_plugin/consts/types.dart';
|
|
@@ -18,6 +19,7 @@ class BluetoothCardReaderController extends FControllerBase
|
|
|
ICReaderDeviceWorker? worker;
|
|
|
DeviceControllerManager? icReader;
|
|
|
WorkerStatus connectStatus = WorkerStatus.connecting;
|
|
|
+ int errorCount = 0;
|
|
|
|
|
|
|
|
|
bool get isCardReaderConnecting => connectStatus == WorkerStatus.connecting;
|
|
@@ -121,16 +123,44 @@ class BluetoothCardReaderController extends FControllerBase
|
|
|
update(["bluetooth_card_reader"]);
|
|
|
}
|
|
|
|
|
|
- void _onConnectFail(sender, e) {
|
|
|
+ Future<void> _onConnectFail(sender, e) async {
|
|
|
print('连接设备失败');
|
|
|
logger.i('BluetoothCardReaderController 连接设备失败');
|
|
|
+ if (errorCount < 3) {
|
|
|
+ errorCount++;
|
|
|
+ } else {
|
|
|
+ await Get.dialog(BluetoothRebootDialog());
|
|
|
+ errorCount == 0;
|
|
|
+ }
|
|
|
+ tryReconnect();
|
|
|
connectStatus = WorkerStatus.connectionFailed;
|
|
|
update(["bluetooth_card_reader"]);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ Future<void> tryReconnect() async {
|
|
|
+ if (worker != null) {
|
|
|
+ await disconnect();
|
|
|
+ await connect();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Future<void> disconnect() async {
|
|
|
+ if (worker != null) {
|
|
|
+ await worker!.disconnect();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Future<void> connect() async {
|
|
|
+ if (worker != null) {
|
|
|
+ await worker!.connect();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
void _onConnectSuccess(sender, e) {
|
|
|
logger.i('BluetoothCardReaderController connectStatus:$connectStatus 连接成功');
|
|
|
logger.i('BluetoothCardReaderController _onConnectSuccess');
|
|
|
+ errorCount = 0;
|
|
|
connectStatus = WorkerStatus.connected;
|
|
|
update(["bluetooth_card_reader"]);
|
|
|
}
|
|
@@ -139,6 +169,8 @@ class BluetoothCardReaderController extends FControllerBase
|
|
|
print('设备连接中断');
|
|
|
logger.i('BluetoothCardReaderController 设备连接中断');
|
|
|
connectStatus = WorkerStatus.disconnected;
|
|
|
+ errorCount = 0;
|
|
|
+ tryReconnect();
|
|
|
update(["bluetooth_card_reader"]);
|
|
|
}
|
|
|
|