文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

uni-app(android、ios) 使用蓝牙便携式打印机(热敏打印机)

2023-08-17 06:57

关注

机型等参数

基本思路

1、 实现蓝牙连接

**B12.js方法封装

class BluetoothTools {   constructor() {    this.decimalData = []; //获取buffer之前的二进制数据集合;this.deviceId = null;this.initStatus = 0; //蓝牙初始化结果;0:初始化中,1-成功;2-失败;this.linked = false; //蓝牙是否为连接状态;this.connectChangeHandler = null;}// 初始化;init(connectChangeHandler) {   this.connectChangeHandler = connectChangeHandler;return new Promise((resolve, reject) => {   uni.openBluetoothAdapter({   success: res => {   this.initStatus = 1;this.onConnectChange(connectChangeHandler)resolve(res)},fail: err => {   this.initStatus = 2;console.log('蓝牙初始化失败:', err);this.toast('蓝牙不可用!')reject(err)}})})}// 获取蓝牙状态,是否可用checkCanUse() {   return new Promise((resolve, reject) => {   uni.getBluetoothAdapterState({   success: res => {   // console.log(res);resolve(res)},fail: err => {   // console.log(err);reject(err)}})})} // 开始搜索蓝牙startSearch(cb) {   return new Promise(async (resolve, reject) => {   // if (this.initStatus === 2) {   // this.toast('蓝牙初始化失败!');// reject();// return false;// } else if (this.initStatus === 0) {   // this.toast('蓝牙未初始化!');// reject();// return false;// }if (this.initStatus !== 1) {   await this.init(this.connectChangeHandler);}this.onFound(cb);uni.startBluetoothDevicesDiscovery({   allowDuplicatesKey: false,services: [],success: (res) => {   // console.log('开始搜索蓝牙设备!', res);resolve(res)},fail: err => {   // console.log('开启搜索失败:', err);this.toast('开始搜索失败!')reject(err)}})})}// 监听单一设备搜索结果onFound(cb) {   uni.onBluetoothDeviceFound(res => {   // console.log('蓝牙设备:', res.devices);cb(res.devices) })}// 停止搜索;stopSearch() {   return new Promise((resolve, reject) => {   uni.stopBluetoothDevicesDiscovery({   success: (res) => {   resolve(res)},fail: (err) => {   // this.toast('蓝牙停止搜索失败,请重试!');console.log('蓝牙停止搜索失败:', err);reject(err)}})})}// 关闭蓝牙模块(打印完后调用)closeAdapter() {   return new Promise((resolve, reject) => {   uni.closeBluetoothAdapter({   success: res => {   resolve(res);},fail: (err) => {   console.log('关闭失败:', err);// this.toast('蓝牙模块关闭失败!')reject(err);}})})}toast(msg) {   uni.showToast({   title: msg,icon: 'none',duration: 2200})}// 根据deviceId连接蓝牙;connectBLE(deviceId) {   return new Promise(async (resolve, reject) => {   if (this.initStatus !== 1) {   await this.init(this.connectChangeHandler).catch(err => {   reject(err)});}this.checkCanUse().then(async data => {   // console.log(data);if (data.available) {   uni.createBLEConnection({   deviceId: deviceId,success: (res) => {   resolve(res)},fail: err => {   console.log('蓝牙连接失败!', err);this.toast('蓝牙连接失败,请重试!')reject(err)}})} else {   this.toast('蓝牙不可用')reject()}}).catch(err => {   this.toast('蓝牙不可用!!')reject()})})}//  根据deviceId断开蓝牙链接;closeBLE(deviceId) {   return new Promise((resolve, reject) => {   if (!deviceId) {   resolve();return;}uni.closeBLEConnection({   deviceId: deviceId,success: (res) => {   // console.log('蓝牙已断开!', res);resolve(res)},fail: err => {   console.log('蓝牙断开失败!', err);// this.toast('蓝牙断开失败, 请重试!')reject(err)}})})}// 监听蓝牙连接状态;onConnectChange(cb) {   uni.onBLEConnectionStateChange(res => {   console.log('监听蓝牙连接状态:', res);if (res.connected) {   this.linked = true;this.deviceId = res.deviceId;} else {   this.linked = false;this.deviceId = null

来源地址:https://blog.csdn.net/w96098/article/details/131306300

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯