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.
- package/LICENSE +21 -0
- package/README.md +201 -0
- package/dist/bluetooth/adapter.d.ts +31 -0
- package/dist/bluetooth/adapter.js +47 -0
- package/dist/bluetooth/adapter.js.map +1 -0
- package/dist/bluetooth/h5.d.ts +66 -0
- package/dist/bluetooth/h5.js +302 -0
- package/dist/bluetooth/h5.js.map +1 -0
- package/dist/bluetooth/harmony.d.ts +82 -0
- package/dist/bluetooth/harmony.js +342 -0
- package/dist/bluetooth/harmony.js.map +1 -0
- package/dist/bluetooth/index.d.ts +45 -0
- package/dist/bluetooth/index.js +175 -0
- package/dist/bluetooth/index.js.map +1 -0
- package/dist/bluetooth/rn.d.ts +35 -0
- package/dist/bluetooth/rn.js +368 -0
- package/dist/bluetooth/rn.js.map +1 -0
- package/dist/bluetooth/weapp.d.ts +16 -0
- package/dist/bluetooth/weapp.js +177 -0
- package/dist/bluetooth/weapp.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/printer/commands.d.ts +28 -0
- package/dist/printer/commands.js +90 -0
- package/dist/printer/commands.js.map +1 -0
- package/dist/printer/image.d.ts +59 -0
- package/dist/printer/image.js +258 -0
- package/dist/printer/image.js.map +1 -0
- package/dist/printer/index.d.ts +87 -0
- package/dist/printer/index.js +362 -0
- package/dist/printer/index.js.map +1 -0
- package/dist/printer/template.d.ts +95 -0
- package/dist/printer/template.js +262 -0
- package/dist/printer/template.js.map +1 -0
- package/dist/utils/buffer.d.ts +35 -0
- package/dist/utils/buffer.js +96 -0
- package/dist/utils/buffer.js.map +1 -0
- package/dist/utils/encoding.d.ts +26 -0
- package/dist/utils/encoding.js +149 -0
- package/dist/utils/encoding.js.map +1 -0
- package/dist/utils/logger.d.ts +18 -0
- package/dist/utils/logger.js +91 -0
- package/dist/utils/logger.js.map +1 -0
- 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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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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
|
+
}
|