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":"index.js","sourceRoot":"","sources":["../../src/bluetooth/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { BluetoothAdapter, BluetoothDevice } from './adapter';
2
+ declare global {
3
+ namespace NodeJS {
4
+ interface ProcessEnv {
5
+ NODE_ENV: 'development' | 'production' | 'test';
6
+ TARO_ENV?: 'weapp' | 'h5' | 'rn' | 'harmony';
7
+ }
8
+ interface Process {
9
+ env: ProcessEnv;
10
+ }
11
+ }
12
+ var process: NodeJS.Process;
13
+ function importScripts(...urls: string[]): void;
14
+ }
15
+ export declare class RNBluetoothAdapter implements BluetoothAdapter {
16
+ private manager;
17
+ private connectedDevice;
18
+ private discoveredDevices;
19
+ private transactionIds;
20
+ init(): Promise<boolean>;
21
+ getAdapterState(): Promise<any>;
22
+ startDiscovery(): Promise<boolean>;
23
+ stopDiscovery(): Promise<boolean>;
24
+ getDiscoveredDevices(): Promise<BluetoothDevice[]>;
25
+ connect(deviceId: string): Promise<boolean>;
26
+ disconnect(deviceId?: string): Promise<boolean>;
27
+ getServices(deviceId: string): Promise<any>;
28
+ getCharacteristics(deviceId: string, serviceId: string): Promise<any>;
29
+ write(deviceId: string, serviceId: string, characteristicId: string, data: ArrayBuffer): Promise<boolean>;
30
+ read(deviceId: string, serviceId: string, characteristicId: string): Promise<ArrayBuffer>;
31
+ notifyCharacteristicValueChange(deviceId: string, serviceId: string, characteristicId: string, state: boolean): Promise<boolean>;
32
+ destroy(): Promise<boolean>;
33
+ private _arrayBufferToBase64;
34
+ private _base64ToArrayBuffer;
35
+ }
@@ -0,0 +1,368 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RNBluetoothAdapter = void 0;
4
+ const logger_1 = require("../utils/logger");
5
+ // 替代声明模块,直接定义接口类型
6
+ let BleManager = null;
7
+ /**
8
+ * 异步函数用于加载BleManager
9
+ * 使用动态导入或require,处理不同环境
10
+ */
11
+ async function loadBleManager() {
12
+ if (BleManager) {
13
+ return BleManager;
14
+ }
15
+ try {
16
+ // 使用全局变量检测环境
17
+ if (typeof window !== 'undefined' && 'ReactNativeWebView' in window) {
18
+ // React Native 环境
19
+ try {
20
+ // 尝试使用require (常见于RN环境)
21
+ BleManager = require('react-native-ble-plx').BleManager;
22
+ logger_1.logger.info('使用require加载react-native-ble-plx成功');
23
+ return BleManager;
24
+ }
25
+ catch (e2) {
26
+ logger_1.logger.error('使用require加载react-native-ble-plx失败', e2);
27
+ }
28
+ }
29
+ else if (typeof importScripts === 'function') {
30
+ // Web Worker 环境
31
+ // 这种情况下通常无法直接使用蓝牙API
32
+ logger_1.logger.warn('Web Worker环境下可能无法使用蓝牙API');
33
+ }
34
+ else if (typeof process !== 'undefined' && process.versions && process.versions.node) {
35
+ // Node.js 环境
36
+ try {
37
+ BleManager = require('react-native-ble-plx').BleManager;
38
+ logger_1.logger.info('Node.js环境下加载react-native-ble-plx成功');
39
+ return BleManager;
40
+ }
41
+ catch (e) {
42
+ logger_1.logger.error('Node.js环境下加载react-native-ble-plx失败', e);
43
+ }
44
+ }
45
+ else if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
46
+ // 另一种检测RN环境的方法
47
+ try {
48
+ BleManager = require('react-native-ble-plx').BleManager;
49
+ logger_1.logger.info('ReactNative环境下加载react-native-ble-plx成功');
50
+ return BleManager;
51
+ }
52
+ catch (e) {
53
+ logger_1.logger.error('ReactNative环境下加载react-native-ble-plx失败', e);
54
+ }
55
+ }
56
+ // 如果上述方法都失败,提供一个错误信息
57
+ logger_1.logger.error('无法加载BleManager,请确保已安装react-native-ble-plx');
58
+ return null;
59
+ }
60
+ catch (error) {
61
+ logger_1.logger.error('加载BleManager出错', error);
62
+ return null;
63
+ }
64
+ }
65
+ // 尝试初始化加载BleManager
66
+ loadBleManager().catch(e => {
67
+ logger_1.logger.error('初始化加载BleManager失败', e);
68
+ });
69
+ class RNBluetoothAdapter {
70
+ constructor() {
71
+ this.manager = null;
72
+ this.connectedDevice = null;
73
+ this.discoveredDevices = new Map();
74
+ this.transactionIds = new Set();
75
+ }
76
+ async init() {
77
+ try {
78
+ // 尝试加载BleManager
79
+ const BleManagerClass = await loadBleManager();
80
+ if (!BleManagerClass) {
81
+ throw new Error('未找到BleManager,请安装react-native-ble-plx');
82
+ }
83
+ this.manager = new BleManagerClass();
84
+ // 检查蓝牙状态
85
+ const state = await this.manager.state();
86
+ if (state !== 'PoweredOn') {
87
+ throw new Error(`蓝牙不可用,当前状态: ${state}`);
88
+ }
89
+ return true;
90
+ }
91
+ catch (error) {
92
+ logger_1.logger.error('初始化蓝牙模块失败', error);
93
+ return false;
94
+ }
95
+ }
96
+ async getAdapterState() {
97
+ try {
98
+ if (!this.manager) {
99
+ await this.init();
100
+ }
101
+ const state = await this.manager.state();
102
+ return {
103
+ available: state === 'PoweredOn',
104
+ state
105
+ };
106
+ }
107
+ catch (error) {
108
+ logger_1.logger.error('获取蓝牙适配器状态失败', error);
109
+ throw error;
110
+ }
111
+ }
112
+ async startDiscovery() {
113
+ try {
114
+ if (!this.manager) {
115
+ await this.init();
116
+ }
117
+ this.discoveredDevices.clear();
118
+ // 开始搜索设备
119
+ const serviceUUIDs = [
120
+ '49535343-FE7D-4AE5-8FA9-9FAFD205E455',
121
+ '00001101-0000-1000-8000-00805F9B34FB',
122
+ '0000180A-0000-1000-8000-00805F9B34FB' // 设备信息服务
123
+ ];
124
+ this.manager.startDeviceScan(serviceUUIDs, { allowDuplicates: false }, (error, device) => {
125
+ if (error) {
126
+ logger_1.logger.error('扫描设备出错', error);
127
+ return;
128
+ }
129
+ if (device) {
130
+ this.discoveredDevices.set(device.id, device);
131
+ }
132
+ });
133
+ return true;
134
+ }
135
+ catch (error) {
136
+ logger_1.logger.error('开始搜索蓝牙设备失败', error);
137
+ return false;
138
+ }
139
+ }
140
+ async stopDiscovery() {
141
+ try {
142
+ if (this.manager) {
143
+ this.manager.stopDeviceScan();
144
+ }
145
+ return true;
146
+ }
147
+ catch (error) {
148
+ logger_1.logger.error('停止搜索蓝牙设备失败', error);
149
+ return false;
150
+ }
151
+ }
152
+ async getDiscoveredDevices() {
153
+ const devices = [];
154
+ this.discoveredDevices.forEach(device => {
155
+ devices.push({
156
+ deviceId: device.id,
157
+ name: device.name || device.localName || '未知设备',
158
+ RSSI: device.rssi,
159
+ deviceName: device.name,
160
+ localName: device.localName
161
+ });
162
+ });
163
+ return devices;
164
+ }
165
+ async connect(deviceId) {
166
+ try {
167
+ if (!this.manager) {
168
+ await this.init();
169
+ }
170
+ await this.stopDiscovery();
171
+ const device = this.discoveredDevices.get(deviceId);
172
+ if (!device) {
173
+ // 如果设备不在已发现列表中,尝试直接连接
174
+ this.connectedDevice = await this.manager.connectToDevice(deviceId, {
175
+ autoConnect: true,
176
+ timeout: 10000 // 10秒超时
177
+ });
178
+ }
179
+ else {
180
+ this.connectedDevice = await device.connect({
181
+ autoConnect: true,
182
+ timeout: 10000
183
+ });
184
+ }
185
+ // 发现服务和特征
186
+ await this.manager.discoverAllServicesAndCharacteristicsForDevice(deviceId);
187
+ return true;
188
+ }
189
+ catch (error) {
190
+ logger_1.logger.error('连接蓝牙设备失败', error);
191
+ return false;
192
+ }
193
+ }
194
+ async disconnect(deviceId) {
195
+ try {
196
+ if (this.connectedDevice) {
197
+ const targetId = deviceId || this.connectedDevice.id;
198
+ if (this.connectedDevice.id === targetId) {
199
+ await this.manager.cancelDeviceConnection(targetId);
200
+ this.connectedDevice = null;
201
+ // 取消所有事务
202
+ this.transactionIds.forEach(id => {
203
+ this.manager.cancelTransaction(id);
204
+ });
205
+ this.transactionIds.clear();
206
+ return true;
207
+ }
208
+ }
209
+ return false;
210
+ }
211
+ catch (error) {
212
+ logger_1.logger.error('断开蓝牙连接失败', error);
213
+ return false;
214
+ }
215
+ }
216
+ async getServices(deviceId) {
217
+ try {
218
+ if (!this.connectedDevice || this.connectedDevice.id !== deviceId) {
219
+ throw new Error('设备未连接');
220
+ }
221
+ const services = await this.manager.servicesForDevice(deviceId);
222
+ return { services: services.map((svc) => ({ uuid: svc.uuid, isPrimary: true })) };
223
+ }
224
+ catch (error) {
225
+ logger_1.logger.error('获取服务失败', error);
226
+ throw error;
227
+ }
228
+ }
229
+ async getCharacteristics(deviceId, serviceId) {
230
+ try {
231
+ if (!this.connectedDevice || this.connectedDevice.id !== deviceId) {
232
+ throw new Error('设备未连接');
233
+ }
234
+ const characteristics = await this.manager.characteristicsForDevice(deviceId, serviceId);
235
+ return {
236
+ characteristics: characteristics.map((char) => ({
237
+ uuid: char.uuid,
238
+ properties: {
239
+ read: char.isReadable,
240
+ write: char.isWritableWithResponse,
241
+ notify: char.isNotifiable,
242
+ writeWithoutResponse: char.isWritableWithoutResponse
243
+ }
244
+ }))
245
+ };
246
+ }
247
+ catch (error) {
248
+ logger_1.logger.error('获取特征值失败', error);
249
+ throw error;
250
+ }
251
+ }
252
+ async write(deviceId, serviceId, characteristicId, data) {
253
+ try {
254
+ if (!this.connectedDevice || this.connectedDevice.id !== deviceId) {
255
+ throw new Error('设备未连接');
256
+ }
257
+ // 将ArrayBuffer转为base64
258
+ const base64Data = this._arrayBufferToBase64(data);
259
+ // 尝试使用响应写入
260
+ await this.manager.writeCharacteristicWithResponseForDevice(deviceId, serviceId, characteristicId, base64Data);
261
+ return true;
262
+ }
263
+ catch (error) {
264
+ logger_1.logger.error('写入数据失败,尝试无响应写入', error);
265
+ try {
266
+ // 如果响应写入失败,尝试无响应写入
267
+ const base64Data = this._arrayBufferToBase64(data);
268
+ await this.manager.writeCharacteristicWithoutResponseForDevice(deviceId, serviceId, characteristicId, base64Data);
269
+ return true;
270
+ }
271
+ catch (error2) {
272
+ logger_1.logger.error('无响应写入也失败', error2);
273
+ return false;
274
+ }
275
+ }
276
+ }
277
+ async read(deviceId, serviceId, characteristicId) {
278
+ try {
279
+ if (!this.connectedDevice || this.connectedDevice.id !== deviceId) {
280
+ throw new Error('设备未连接');
281
+ }
282
+ const characteristic = await this.manager.readCharacteristicForDevice(deviceId, serviceId, characteristicId);
283
+ // 将base64转为ArrayBuffer
284
+ return this._base64ToArrayBuffer(characteristic.value);
285
+ }
286
+ catch (error) {
287
+ logger_1.logger.error('读取数据失败', error);
288
+ throw error;
289
+ }
290
+ }
291
+ async notifyCharacteristicValueChange(deviceId, serviceId, characteristicId, state) {
292
+ try {
293
+ if (!this.connectedDevice || this.connectedDevice.id !== deviceId) {
294
+ throw new Error('设备未连接');
295
+ }
296
+ if (state) {
297
+ const transactionId = `monitor_${serviceId}_${characteristicId}`;
298
+ const subscription = this.manager.monitorCharacteristicForDevice(deviceId, serviceId, characteristicId, (error, characteristic) => {
299
+ if (error) {
300
+ logger_1.logger.error('监听特征值错误', error);
301
+ return;
302
+ }
303
+ if (characteristic) {
304
+ // 处理特征值变化
305
+ logger_1.logger.debug('特征值变化:', characteristic.value);
306
+ }
307
+ }, transactionId);
308
+ // 保存事务ID以便后续清理
309
+ this.transactionIds.add(transactionId);
310
+ }
311
+ else {
312
+ // 停止监听
313
+ const transactionId = `monitor_${serviceId}_${characteristicId}`;
314
+ this.manager.cancelTransaction(transactionId);
315
+ this.transactionIds.delete(transactionId);
316
+ }
317
+ return true;
318
+ }
319
+ catch (error) {
320
+ logger_1.logger.error('监听特征值变化失败', error);
321
+ return false;
322
+ }
323
+ }
324
+ async destroy() {
325
+ try {
326
+ // 取消所有事务
327
+ this.transactionIds.forEach(id => {
328
+ this.manager.cancelTransaction(id);
329
+ });
330
+ this.transactionIds.clear();
331
+ if (this.connectedDevice) {
332
+ await this.disconnect(this.connectedDevice.id);
333
+ }
334
+ if (this.manager) {
335
+ this.manager.destroy();
336
+ }
337
+ this.discoveredDevices.clear();
338
+ this.manager = null;
339
+ return true;
340
+ }
341
+ catch (error) {
342
+ logger_1.logger.error('销毁蓝牙适配器失败', error);
343
+ return false;
344
+ }
345
+ }
346
+ // 辅助方法: ArrayBuffer转Base64
347
+ _arrayBufferToBase64(buffer) {
348
+ let binary = '';
349
+ const bytes = new Uint8Array(buffer);
350
+ const len = bytes.byteLength;
351
+ for (let i = 0; i < len; i++) {
352
+ binary += String.fromCharCode(bytes[i]);
353
+ }
354
+ return btoa(binary);
355
+ }
356
+ // 辅助方法: Base64转ArrayBuffer
357
+ _base64ToArrayBuffer(base64) {
358
+ const binaryString = atob(base64);
359
+ const len = binaryString.length;
360
+ const bytes = new Uint8Array(len);
361
+ for (let i = 0; i < len; i++) {
362
+ bytes[i] = binaryString.charCodeAt(i);
363
+ }
364
+ return bytes.buffer;
365
+ }
366
+ }
367
+ exports.RNBluetoothAdapter = RNBluetoothAdapter;
368
+ //# sourceMappingURL=rn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rn.js","sourceRoot":"","sources":["../../src/bluetooth/rn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { BluetoothAdapter, BluetoothDevice } from './adapter';
2
+ export declare class WeappBluetoothAdapter implements BluetoothAdapter {
3
+ init(): Promise<boolean>;
4
+ getAdapterState(): Promise<any>;
5
+ startDiscovery(): Promise<boolean>;
6
+ stopDiscovery(): Promise<boolean>;
7
+ getDiscoveredDevices(): Promise<BluetoothDevice[]>;
8
+ connect(deviceId: string): Promise<boolean>;
9
+ disconnect(deviceId: string): Promise<boolean>;
10
+ getServices(deviceId: string): Promise<any>;
11
+ getCharacteristics(deviceId: string, serviceId: string): Promise<any>;
12
+ write(deviceId: string, serviceId: string, characteristicId: string, data: ArrayBuffer): Promise<boolean>;
13
+ read(deviceId: string, serviceId: string, characteristicId: string): Promise<ArrayBuffer>;
14
+ notifyCharacteristicValueChange(deviceId: string, serviceId: string, characteristicId: string, state: boolean): Promise<boolean>;
15
+ destroy(): Promise<boolean>;
16
+ }
@@ -0,0 +1,177 @@
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.WeappBluetoothAdapter = void 0;
7
+ const taro_1 = __importDefault(require("@tarojs/taro"));
8
+ const logger_1 = require("../utils/logger");
9
+ class WeappBluetoothAdapter {
10
+ async init() {
11
+ try {
12
+ await taro_1.default.openBluetoothAdapter();
13
+ return true;
14
+ }
15
+ catch (error) {
16
+ logger_1.logger.error('初始化蓝牙模块失败', error);
17
+ return false;
18
+ }
19
+ }
20
+ async getAdapterState() {
21
+ try {
22
+ return await taro_1.default.getBluetoothAdapterState();
23
+ }
24
+ catch (error) {
25
+ logger_1.logger.error('获取蓝牙适配器状态失败', error);
26
+ throw error;
27
+ }
28
+ }
29
+ async startDiscovery() {
30
+ try {
31
+ await taro_1.default.startBluetoothDevicesDiscovery({
32
+ allowDuplicatesKey: false,
33
+ });
34
+ return true;
35
+ }
36
+ catch (error) {
37
+ logger_1.logger.error('开始搜索蓝牙设备失败', error);
38
+ return false;
39
+ }
40
+ }
41
+ async stopDiscovery() {
42
+ try {
43
+ await taro_1.default.stopBluetoothDevicesDiscovery();
44
+ return true;
45
+ }
46
+ catch (error) {
47
+ logger_1.logger.error('停止搜索蓝牙设备失败', error);
48
+ return false;
49
+ }
50
+ }
51
+ async getDiscoveredDevices() {
52
+ try {
53
+ const res = await taro_1.default.getBluetoothDevices();
54
+ return (res.devices || []).map(device => ({
55
+ deviceId: device.deviceId,
56
+ name: device.name || device.localName || '未知设备',
57
+ RSSI: device.RSSI,
58
+ advertisData: device.advertisData,
59
+ localName: device.localName
60
+ }));
61
+ }
62
+ catch (error) {
63
+ logger_1.logger.error('获取已发现的蓝牙设备失败', error);
64
+ return [];
65
+ }
66
+ }
67
+ async connect(deviceId) {
68
+ try {
69
+ await taro_1.default.createBLEConnection({
70
+ deviceId
71
+ });
72
+ return true;
73
+ }
74
+ catch (error) {
75
+ logger_1.logger.error('连接蓝牙设备失败', error);
76
+ return false;
77
+ }
78
+ }
79
+ async disconnect(deviceId) {
80
+ try {
81
+ await taro_1.default.closeBLEConnection({
82
+ deviceId
83
+ });
84
+ return true;
85
+ }
86
+ catch (error) {
87
+ logger_1.logger.error('断开连接失败', error);
88
+ return false;
89
+ }
90
+ }
91
+ async getServices(deviceId) {
92
+ try {
93
+ return await taro_1.default.getBLEDeviceServices({
94
+ deviceId
95
+ });
96
+ }
97
+ catch (error) {
98
+ logger_1.logger.error('获取服务失败', error);
99
+ throw error;
100
+ }
101
+ }
102
+ async getCharacteristics(deviceId, serviceId) {
103
+ try {
104
+ return await taro_1.default.getBLEDeviceCharacteristics({
105
+ deviceId,
106
+ serviceId
107
+ });
108
+ }
109
+ catch (error) {
110
+ logger_1.logger.error('获取特征值失败', error);
111
+ throw error;
112
+ }
113
+ }
114
+ async write(deviceId, serviceId, characteristicId, data) {
115
+ try {
116
+ await taro_1.default.writeBLECharacteristicValue({
117
+ deviceId,
118
+ serviceId,
119
+ characteristicId,
120
+ value: data
121
+ });
122
+ return true;
123
+ }
124
+ catch (error) {
125
+ logger_1.logger.error('写入数据失败', error);
126
+ return false;
127
+ }
128
+ }
129
+ async read(deviceId, serviceId, characteristicId) {
130
+ try {
131
+ const res = await taro_1.default.readBLECharacteristicValue({
132
+ deviceId,
133
+ serviceId,
134
+ characteristicId
135
+ });
136
+ // 微信小程序需要使用特定的 API 获取特征值
137
+ return await new Promise((resolve, reject) => {
138
+ taro_1.default.onBLECharacteristicValueChange((result) => {
139
+ if (result.characteristicId === characteristicId) {
140
+ resolve(result.value);
141
+ }
142
+ });
143
+ });
144
+ }
145
+ catch (error) {
146
+ logger_1.logger.error('读取数据失败', error);
147
+ throw error;
148
+ }
149
+ }
150
+ async notifyCharacteristicValueChange(deviceId, serviceId, characteristicId, state) {
151
+ try {
152
+ await taro_1.default.notifyBLECharacteristicValueChange({
153
+ deviceId,
154
+ serviceId,
155
+ characteristicId,
156
+ state
157
+ });
158
+ return true;
159
+ }
160
+ catch (error) {
161
+ logger_1.logger.error('监听特征值变化失败', error);
162
+ return false;
163
+ }
164
+ }
165
+ async destroy() {
166
+ try {
167
+ await taro_1.default.closeBluetoothAdapter();
168
+ return true;
169
+ }
170
+ catch (error) {
171
+ logger_1.logger.error('销毁蓝牙适配器失败', error);
172
+ return false;
173
+ }
174
+ }
175
+ }
176
+ exports.WeappBluetoothAdapter = WeappBluetoothAdapter;
177
+ //# sourceMappingURL=weapp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weapp.js","sourceRoot":"","sources":["../../src/bluetooth/weapp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { BluetoothManager } from './bluetooth';
2
+ import { PrinterManager } from './printer';
3
+ import { Commands } from './printer/commands';
4
+ export { BluetoothManager, PrinterManager, Commands };
5
+ export default class TaroBluePrint {
6
+ bluetooth: BluetoothManager;
7
+ printer: PrinterManager;
8
+ commands: typeof Commands;
9
+ constructor();
10
+ /**
11
+ * 快速打印文本
12
+ * @param text 文本内容
13
+ * @param deviceId 蓝牙设备ID
14
+ */
15
+ quickPrint(text: string, deviceId: string): Promise<boolean>;
16
+ }