taro-bluetooth-print 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +201 -0
  3. package/dist/bluetooth/adapter.d.ts +31 -0
  4. package/dist/bluetooth/adapter.js +47 -0
  5. package/dist/bluetooth/adapter.js.map +1 -0
  6. package/dist/bluetooth/h5.d.ts +66 -0
  7. package/dist/bluetooth/h5.js +302 -0
  8. package/dist/bluetooth/h5.js.map +1 -0
  9. package/dist/bluetooth/harmony.d.ts +82 -0
  10. package/dist/bluetooth/harmony.js +342 -0
  11. package/dist/bluetooth/harmony.js.map +1 -0
  12. package/dist/bluetooth/index.d.ts +45 -0
  13. package/dist/bluetooth/index.js +175 -0
  14. package/dist/bluetooth/index.js.map +1 -0
  15. package/dist/bluetooth/rn.d.ts +35 -0
  16. package/dist/bluetooth/rn.js +368 -0
  17. package/dist/bluetooth/rn.js.map +1 -0
  18. package/dist/bluetooth/weapp.d.ts +16 -0
  19. package/dist/bluetooth/weapp.js +177 -0
  20. package/dist/bluetooth/weapp.js.map +1 -0
  21. package/dist/index.d.ts +16 -0
  22. package/dist/index.js +35 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/printer/commands.d.ts +28 -0
  25. package/dist/printer/commands.js +90 -0
  26. package/dist/printer/commands.js.map +1 -0
  27. package/dist/printer/image.d.ts +59 -0
  28. package/dist/printer/image.js +258 -0
  29. package/dist/printer/image.js.map +1 -0
  30. package/dist/printer/index.d.ts +87 -0
  31. package/dist/printer/index.js +362 -0
  32. package/dist/printer/index.js.map +1 -0
  33. package/dist/printer/template.d.ts +95 -0
  34. package/dist/printer/template.js +262 -0
  35. package/dist/printer/template.js.map +1 -0
  36. package/dist/utils/buffer.d.ts +35 -0
  37. package/dist/utils/buffer.js +96 -0
  38. package/dist/utils/buffer.js.map +1 -0
  39. package/dist/utils/encoding.d.ts +26 -0
  40. package/dist/utils/encoding.js +149 -0
  41. package/dist/utils/encoding.js.map +1 -0
  42. package/dist/utils/logger.d.ts +18 -0
  43. package/dist/utils/logger.js +91 -0
  44. package/dist/utils/logger.js.map +1 -0
  45. package/package.json +57 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"h5.js","sourceRoot":"","sources":["../../src/bluetooth/h5.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { BluetoothAdapter, BluetoothDevice } from './adapter';
2
+ declare global {
3
+ interface HarmonyContext {
4
+ bluetooth?: {
5
+ createBLECentralManager(): HarmonyBLECentralManager;
6
+ };
7
+ }
8
+ interface HarmonyBLECentralManager {
9
+ isAvailable(): Promise<boolean>;
10
+ on(eventName: string, callback: (device: any) => void): void;
11
+ off(eventName: string): void;
12
+ startScan(options?: any): Promise<void>;
13
+ stopScan(): Promise<void>;
14
+ connect(deviceId: string, options?: any): Promise<void>;
15
+ disconnect(deviceId: string): Promise<void>;
16
+ getServices(deviceId: string): Promise<any[]>;
17
+ getCharacteristics(deviceId: string, serviceId: string): Promise<any[]>;
18
+ write(options: {
19
+ deviceId: string;
20
+ serviceId: string;
21
+ characteristicId: string;
22
+ value: ArrayBuffer;
23
+ writeType: 'response' | 'noResponse';
24
+ }): Promise<void>;
25
+ read(options: {
26
+ deviceId: string;
27
+ serviceId: string;
28
+ characteristicId: string;
29
+ }): Promise<{
30
+ value: ArrayBuffer;
31
+ }>;
32
+ notify(options: {
33
+ deviceId: string;
34
+ serviceId: string;
35
+ characteristicId: string;
36
+ state: boolean;
37
+ }): Promise<void>;
38
+ }
39
+ var harmony: HarmonyContext | undefined;
40
+ interface Window {
41
+ harmony?: HarmonyContext;
42
+ }
43
+ var global: any;
44
+ namespace NodeJS {
45
+ interface ProcessEnv {
46
+ NODE_ENV: 'development' | 'production' | 'test';
47
+ TARO_ENV?: 'weapp' | 'h5' | 'rn' | 'harmony';
48
+ }
49
+ interface Process {
50
+ env: ProcessEnv;
51
+ }
52
+ }
53
+ var process: NodeJS.Process;
54
+ }
55
+ export declare class HarmonyBluetoothAdapter implements BluetoothAdapter {
56
+ private deviceList;
57
+ private connectedDevice;
58
+ private bleManager;
59
+ private serviceCache;
60
+ private characteristicCache;
61
+ /**
62
+ * 获取鸿蒙运行时环境
63
+ */
64
+ private getHarmonyRuntime;
65
+ init(): Promise<boolean>;
66
+ /**
67
+ * 创建模拟的BLE管理器(开发测试用)
68
+ */
69
+ private createMockBLEManager;
70
+ getAdapterState(): Promise<any>;
71
+ startDiscovery(): Promise<boolean>;
72
+ stopDiscovery(): Promise<boolean>;
73
+ getDiscoveredDevices(): Promise<BluetoothDevice[]>;
74
+ connect(deviceId: string): Promise<boolean>;
75
+ disconnect(deviceId?: string): Promise<boolean>;
76
+ getServices(deviceId: string): Promise<any>;
77
+ getCharacteristics(deviceId: string, serviceId: string): Promise<any>;
78
+ write(deviceId: string, serviceId: string, characteristicId: string, data: ArrayBuffer): Promise<boolean>;
79
+ read(deviceId: string, serviceId: string, characteristicId: string): Promise<ArrayBuffer>;
80
+ notifyCharacteristicValueChange(deviceId: string, serviceId: string, characteristicId: string, state: boolean): Promise<boolean>;
81
+ destroy(): Promise<boolean>;
82
+ }
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HarmonyBluetoothAdapter = void 0;
4
+ const logger_1 = require("../utils/logger");
5
+ // 鸿蒙OS蓝牙适配器
6
+ class HarmonyBluetoothAdapter {
7
+ constructor() {
8
+ this.deviceList = new Map();
9
+ this.connectedDevice = null;
10
+ this.bleManager = null;
11
+ this.serviceCache = new Map();
12
+ this.characteristicCache = new Map();
13
+ }
14
+ /**
15
+ * 获取鸿蒙运行时环境
16
+ */
17
+ getHarmonyRuntime() {
18
+ var _a;
19
+ // 检查全局harmony对象
20
+ if (typeof harmony !== 'undefined' && (harmony === null || harmony === void 0 ? void 0 : harmony.bluetooth)) {
21
+ return harmony;
22
+ }
23
+ // 检查window对象上的harmony
24
+ if (typeof window !== 'undefined' && ((_a = window.harmony) === null || _a === void 0 ? void 0 : _a.bluetooth)) {
25
+ return window.harmony;
26
+ }
27
+ // 检查全局对象中是否有鸿蒙特有的API
28
+ const globalObj = typeof global !== 'undefined' ? global :
29
+ typeof window !== 'undefined' ? window :
30
+ typeof self !== 'undefined' ? self :
31
+ {};
32
+ if ('harmony' in globalObj) {
33
+ return globalObj.harmony;
34
+ }
35
+ return null;
36
+ }
37
+ async init() {
38
+ try {
39
+ // 获取鸿蒙运行时
40
+ const harmonyRuntime = this.getHarmonyRuntime();
41
+ if (!harmonyRuntime || !harmonyRuntime.bluetooth) {
42
+ // 检查是否为模拟环境,如果是则创建一个模拟的BLE管理器
43
+ if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test') {
44
+ logger_1.logger.warn('鸿蒙蓝牙API不可用,使用模拟实现');
45
+ this.bleManager = this.createMockBLEManager();
46
+ return true;
47
+ }
48
+ throw new Error('不支持的平台或API');
49
+ }
50
+ this.bleManager = harmonyRuntime.bluetooth.createBLECentralManager();
51
+ // 检查蓝牙是否可用
52
+ const isAvailable = await this.bleManager.isAvailable();
53
+ if (!isAvailable) {
54
+ throw new Error('蓝牙不可用');
55
+ }
56
+ return true;
57
+ }
58
+ catch (error) {
59
+ logger_1.logger.error('初始化蓝牙模块失败', error);
60
+ return false;
61
+ }
62
+ }
63
+ /**
64
+ * 创建模拟的BLE管理器(开发测试用)
65
+ */
66
+ createMockBLEManager() {
67
+ return {
68
+ isAvailable: async () => true,
69
+ on: (eventName, callback) => {
70
+ logger_1.logger.debug(`[模拟] 添加事件监听器: ${eventName}`);
71
+ },
72
+ off: (eventName) => {
73
+ logger_1.logger.debug(`[模拟] 移除事件监听器: ${eventName}`);
74
+ },
75
+ startScan: async (options) => {
76
+ logger_1.logger.debug('[模拟] 开始扫描设备');
77
+ // 模拟发现设备
78
+ setTimeout(() => {
79
+ const mockDevice = {
80
+ deviceId: 'mock-device-01',
81
+ name: '模拟打印机设备',
82
+ RSSI: -65,
83
+ localName: 'MockPrinter'
84
+ };
85
+ this.deviceList.set(mockDevice.deviceId, mockDevice);
86
+ }, 1000);
87
+ },
88
+ stopScan: async () => {
89
+ logger_1.logger.debug('[模拟] 停止扫描设备');
90
+ },
91
+ connect: async (deviceId) => {
92
+ logger_1.logger.debug(`[模拟] 连接设备: ${deviceId}`);
93
+ const device = this.deviceList.get(deviceId);
94
+ if (device) {
95
+ this.connectedDevice = device;
96
+ }
97
+ },
98
+ disconnect: async (deviceId) => {
99
+ logger_1.logger.debug(`[模拟] 断开设备连接: ${deviceId}`);
100
+ if (this.connectedDevice && this.connectedDevice.deviceId === deviceId) {
101
+ this.connectedDevice = null;
102
+ }
103
+ },
104
+ getServices: async (deviceId) => {
105
+ logger_1.logger.debug(`[模拟] 获取服务: ${deviceId}`);
106
+ return [
107
+ { uuid: '49535343-FE7D-4AE5-8FA9-9FAFD205E455', isPrimary: true },
108
+ { uuid: '00001101-0000-1000-8000-00805F9B34FB', isPrimary: true }
109
+ ];
110
+ },
111
+ getCharacteristics: async (deviceId, serviceId) => {
112
+ logger_1.logger.debug(`[模拟] 获取特征值: ${serviceId}`);
113
+ return [
114
+ {
115
+ uuid: '49535343-8841-43F4-A8D4-ECBE34729BB3',
116
+ properties: {
117
+ read: true,
118
+ write: true,
119
+ notify: true,
120
+ writeWithoutResponse: true
121
+ }
122
+ }
123
+ ];
124
+ },
125
+ write: async (options) => {
126
+ logger_1.logger.debug(`[模拟] 写入数据: ${options.characteristicId}`);
127
+ },
128
+ read: async (options) => {
129
+ logger_1.logger.debug(`[模拟] 读取数据: ${options.characteristicId}`);
130
+ return { value: new ArrayBuffer(0) };
131
+ },
132
+ notify: async (options) => {
133
+ logger_1.logger.debug(`[模拟] ${options.state ? '开启' : '关闭'}通知: ${options.characteristicId}`);
134
+ }
135
+ };
136
+ }
137
+ async getAdapterState() {
138
+ try {
139
+ if (!this.bleManager) {
140
+ await this.init();
141
+ }
142
+ // 鸿蒙OS获取蓝牙状态
143
+ const isAvailable = await this.bleManager.isAvailable();
144
+ return { available: isAvailable };
145
+ }
146
+ catch (error) {
147
+ logger_1.logger.error('获取蓝牙适配器状态失败', error);
148
+ throw error;
149
+ }
150
+ }
151
+ async startDiscovery() {
152
+ try {
153
+ if (!this.bleManager) {
154
+ await this.init();
155
+ }
156
+ // 清空设备列表
157
+ this.deviceList.clear();
158
+ // 监听设备发现回调
159
+ this.bleManager.on('BLEDeviceFind', (device) => {
160
+ this.deviceList.set(device.deviceId, device);
161
+ });
162
+ // 开始扫描
163
+ await this.bleManager.startScan();
164
+ return true;
165
+ }
166
+ catch (error) {
167
+ logger_1.logger.error('开始搜索蓝牙设备失败', error);
168
+ return false;
169
+ }
170
+ }
171
+ async stopDiscovery() {
172
+ try {
173
+ if (this.bleManager) {
174
+ await this.bleManager.stopScan();
175
+ return true;
176
+ }
177
+ return false;
178
+ }
179
+ catch (error) {
180
+ logger_1.logger.error('停止搜索蓝牙设备失败', error);
181
+ return false;
182
+ }
183
+ }
184
+ async getDiscoveredDevices() {
185
+ const devices = [];
186
+ this.deviceList.forEach(device => {
187
+ devices.push({
188
+ deviceId: device.deviceId,
189
+ name: device.name || device.localName || '未知设备',
190
+ RSSI: device.RSSI,
191
+ deviceName: device.name,
192
+ localName: device.localName
193
+ });
194
+ });
195
+ return devices;
196
+ }
197
+ async connect(deviceId) {
198
+ try {
199
+ if (!this.bleManager) {
200
+ await this.init();
201
+ }
202
+ const device = this.deviceList.get(deviceId);
203
+ if (!device) {
204
+ throw new Error(`未找到设备: ${deviceId}`);
205
+ }
206
+ // 连接设备
207
+ await this.bleManager.connect(deviceId);
208
+ this.connectedDevice = device;
209
+ return true;
210
+ }
211
+ catch (error) {
212
+ logger_1.logger.error('连接蓝牙设备失败', error);
213
+ return false;
214
+ }
215
+ }
216
+ async disconnect(deviceId) {
217
+ try {
218
+ if (!this.bleManager || !this.connectedDevice) {
219
+ return true;
220
+ }
221
+ const targetId = deviceId || this.connectedDevice.deviceId;
222
+ await this.bleManager.disconnect(targetId);
223
+ if (this.connectedDevice.deviceId === targetId) {
224
+ this.connectedDevice = null;
225
+ }
226
+ return true;
227
+ }
228
+ catch (error) {
229
+ logger_1.logger.error('断开蓝牙连接失败', error);
230
+ return false;
231
+ }
232
+ }
233
+ async getServices(deviceId) {
234
+ try {
235
+ if (!this.bleManager || !this.connectedDevice || this.connectedDevice.deviceId !== deviceId) {
236
+ throw new Error('设备未连接');
237
+ }
238
+ const services = await this.bleManager.getServices(deviceId);
239
+ return { services };
240
+ }
241
+ catch (error) {
242
+ logger_1.logger.error('获取服务失败', error);
243
+ throw error;
244
+ }
245
+ }
246
+ async getCharacteristics(deviceId, serviceId) {
247
+ try {
248
+ if (!this.bleManager || !this.connectedDevice || this.connectedDevice.deviceId !== deviceId) {
249
+ throw new Error('设备未连接');
250
+ }
251
+ const characteristics = await this.bleManager.getCharacteristics(deviceId, serviceId);
252
+ return { characteristics };
253
+ }
254
+ catch (error) {
255
+ logger_1.logger.error('获取特征值失败', error);
256
+ throw error;
257
+ }
258
+ }
259
+ async write(deviceId, serviceId, characteristicId, data) {
260
+ try {
261
+ if (!this.bleManager || !this.connectedDevice || this.connectedDevice.deviceId !== deviceId) {
262
+ throw new Error('设备未连接');
263
+ }
264
+ await this.bleManager.write({
265
+ deviceId,
266
+ serviceId,
267
+ characteristicId,
268
+ value: data,
269
+ writeType: 'response'
270
+ });
271
+ return true;
272
+ }
273
+ catch (error) {
274
+ logger_1.logger.error('写入数据失败', error);
275
+ return false;
276
+ }
277
+ }
278
+ async read(deviceId, serviceId, characteristicId) {
279
+ try {
280
+ if (!this.bleManager || !this.connectedDevice || this.connectedDevice.deviceId !== deviceId) {
281
+ throw new Error('设备未连接');
282
+ }
283
+ const result = await this.bleManager.read({
284
+ deviceId,
285
+ serviceId,
286
+ characteristicId
287
+ });
288
+ return result.value;
289
+ }
290
+ catch (error) {
291
+ logger_1.logger.error('读取数据失败', error);
292
+ throw error;
293
+ }
294
+ }
295
+ async notifyCharacteristicValueChange(deviceId, serviceId, characteristicId, state) {
296
+ try {
297
+ if (!this.bleManager || !this.connectedDevice || this.connectedDevice.deviceId !== deviceId) {
298
+ throw new Error('设备未连接');
299
+ }
300
+ if (state) {
301
+ await this.bleManager.notify({
302
+ deviceId,
303
+ serviceId,
304
+ characteristicId,
305
+ state: true
306
+ });
307
+ }
308
+ else {
309
+ await this.bleManager.notify({
310
+ deviceId,
311
+ serviceId,
312
+ characteristicId,
313
+ state: false
314
+ });
315
+ }
316
+ return true;
317
+ }
318
+ catch (error) {
319
+ logger_1.logger.error('监听特征值变化失败', error);
320
+ return false;
321
+ }
322
+ }
323
+ async destroy() {
324
+ try {
325
+ if (this.connectedDevice) {
326
+ await this.disconnect(this.connectedDevice.deviceId);
327
+ }
328
+ if (this.bleManager) {
329
+ this.bleManager.off('BLEDeviceFind');
330
+ this.bleManager = null;
331
+ }
332
+ this.deviceList.clear();
333
+ return true;
334
+ }
335
+ catch (error) {
336
+ logger_1.logger.error('销毁蓝牙适配器失败', error);
337
+ return false;
338
+ }
339
+ }
340
+ }
341
+ exports.HarmonyBluetoothAdapter = HarmonyBluetoothAdapter;
342
+ //# sourceMappingURL=harmony.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harmony.js","sourceRoot":"","sources":["../../src/bluetooth/harmony.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { BluetoothDevice } from './adapter';
2
+ export declare class BluetoothManager {
3
+ private adapter;
4
+ private isInitialized;
5
+ private connectedDeviceId;
6
+ private discoveryStarted;
7
+ private discoveredDevices;
8
+ private serviceUUID;
9
+ private characteristicUUID;
10
+ constructor();
11
+ /**
12
+ * 初始化蓝牙模块
13
+ */
14
+ init(): Promise<boolean>;
15
+ /**
16
+ * 开始搜索蓝牙设备
17
+ */
18
+ startDiscovery(): Promise<boolean>;
19
+ /**
20
+ * 停止搜索蓝牙设备
21
+ */
22
+ stopDiscovery(): Promise<boolean>;
23
+ /**
24
+ * 获取已发现的蓝牙设备
25
+ */
26
+ getDiscoveredDevices(): Promise<BluetoothDevice[]>;
27
+ /**
28
+ * 连接蓝牙设备
29
+ * @param deviceId 蓝牙设备ID
30
+ */
31
+ connect(deviceId: string): Promise<boolean>;
32
+ /**
33
+ * 断开蓝牙连接
34
+ */
35
+ disconnect(): Promise<boolean>;
36
+ /**
37
+ * 写入数据
38
+ * @param data 要写入的数据
39
+ */
40
+ writeData(data: ArrayBuffer): Promise<boolean>;
41
+ /**
42
+ * 销毁蓝牙模块
43
+ */
44
+ destroy(): Promise<boolean>;
45
+ }
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BluetoothManager = void 0;
7
+ const adapter_1 = require("./adapter");
8
+ const logger_1 = require("../utils/logger");
9
+ const taro_1 = __importDefault(require("@tarojs/taro"));
10
+ class BluetoothManager {
11
+ constructor() {
12
+ this.isInitialized = false;
13
+ this.connectedDeviceId = null;
14
+ this.discoveryStarted = false;
15
+ this.discoveredDevices = new Map();
16
+ // 蓝牙服务UUID,用于打印机
17
+ this.serviceUUID = '49535343-FE7D-4AE5-8FA9-9FAFD205E455';
18
+ // 蓝牙特征值UUID,用于写入数据
19
+ this.characteristicUUID = '49535343-8841-43F4-A8D4-ECBE34729BB3';
20
+ this.adapter = (0, adapter_1.getAdapter)();
21
+ }
22
+ /**
23
+ * 初始化蓝牙模块
24
+ */
25
+ async init() {
26
+ try {
27
+ const result = await this.adapter.init();
28
+ this.isInitialized = result;
29
+ return result;
30
+ }
31
+ catch (error) {
32
+ logger_1.logger.error('初始化蓝牙模块失败', error);
33
+ return false;
34
+ }
35
+ }
36
+ /**
37
+ * 开始搜索蓝牙设备
38
+ */
39
+ async startDiscovery() {
40
+ if (!this.isInitialized) {
41
+ await this.init();
42
+ }
43
+ try {
44
+ const result = await this.adapter.startDiscovery();
45
+ this.discoveryStarted = result;
46
+ // 监听蓝牙设备发现事件
47
+ taro_1.default.onBluetoothDeviceFound(res => {
48
+ const devices = res.devices || [];
49
+ devices.forEach(device => {
50
+ this.discoveredDevices.set(device.deviceId, device);
51
+ });
52
+ });
53
+ return result;
54
+ }
55
+ catch (error) {
56
+ logger_1.logger.error('开始搜索蓝牙设备失败', error);
57
+ return false;
58
+ }
59
+ }
60
+ /**
61
+ * 停止搜索蓝牙设备
62
+ */
63
+ async stopDiscovery() {
64
+ if (!this.discoveryStarted) {
65
+ return true;
66
+ }
67
+ try {
68
+ const result = await this.adapter.stopDiscovery();
69
+ this.discoveryStarted = !result;
70
+ return result;
71
+ }
72
+ catch (error) {
73
+ logger_1.logger.error('停止搜索蓝牙设备失败', error);
74
+ return false;
75
+ }
76
+ }
77
+ /**
78
+ * 获取已发现的蓝牙设备
79
+ */
80
+ async getDiscoveredDevices() {
81
+ try {
82
+ const devices = await this.adapter.getDiscoveredDevices();
83
+ this.discoveredDevices.clear();
84
+ devices.forEach(device => {
85
+ this.discoveredDevices.set(device.deviceId, device);
86
+ });
87
+ return devices;
88
+ }
89
+ catch (error) {
90
+ logger_1.logger.error('获取已发现的蓝牙设备失败', error);
91
+ return Array.from(this.discoveredDevices.values());
92
+ }
93
+ }
94
+ /**
95
+ * 连接蓝牙设备
96
+ * @param deviceId 蓝牙设备ID
97
+ */
98
+ async connect(deviceId) {
99
+ if (!this.isInitialized) {
100
+ await this.init();
101
+ }
102
+ // 如果已连接,先断开
103
+ if (this.connectedDeviceId && this.connectedDeviceId !== deviceId) {
104
+ await this.disconnect();
105
+ }
106
+ try {
107
+ const result = await this.adapter.connect(deviceId);
108
+ if (result) {
109
+ this.connectedDeviceId = deviceId;
110
+ }
111
+ return result;
112
+ }
113
+ catch (error) {
114
+ logger_1.logger.error('连接蓝牙设备失败', error);
115
+ return false;
116
+ }
117
+ }
118
+ /**
119
+ * 断开蓝牙连接
120
+ */
121
+ async disconnect() {
122
+ if (!this.connectedDeviceId) {
123
+ return true;
124
+ }
125
+ try {
126
+ const result = await this.adapter.disconnect(this.connectedDeviceId);
127
+ if (result) {
128
+ this.connectedDeviceId = null;
129
+ }
130
+ return result;
131
+ }
132
+ catch (error) {
133
+ logger_1.logger.error('断开蓝牙连接失败', error);
134
+ return false;
135
+ }
136
+ }
137
+ /**
138
+ * 写入数据
139
+ * @param data 要写入的数据
140
+ */
141
+ async writeData(data) {
142
+ if (!this.connectedDeviceId) {
143
+ throw new Error('未连接到蓝牙设备');
144
+ }
145
+ try {
146
+ return await this.adapter.write(this.connectedDeviceId, this.serviceUUID, this.characteristicUUID, data);
147
+ }
148
+ catch (error) {
149
+ logger_1.logger.error('写入数据失败', error);
150
+ return false;
151
+ }
152
+ }
153
+ /**
154
+ * 销毁蓝牙模块
155
+ */
156
+ async destroy() {
157
+ if (this.connectedDeviceId) {
158
+ await this.disconnect();
159
+ }
160
+ if (this.discoveryStarted) {
161
+ await this.stopDiscovery();
162
+ }
163
+ try {
164
+ const result = await this.adapter.destroy();
165
+ this.isInitialized = !result;
166
+ return result;
167
+ }
168
+ catch (error) {
169
+ logger_1.logger.error('销毁蓝牙模块失败', error);
170
+ return false;
171
+ }
172
+ }
173
+ }
174
+ exports.BluetoothManager = BluetoothManager;
175
+ //# sourceMappingURL=index.js.map