uni-app蓝牙操作

这篇具有很好参考价值的文章主要介绍了uni-app蓝牙操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、打开蓝牙适配器

			openBluetoothAdapter() {
				uni.openBluetoothAdapter({
					success: res => {
						console.log('openBluetoothAdapter success', res);
						this.startBluetoothDevicesDiscovery();
					},
					fail: res => {
						if (res.errCode === 10001) {
							uni.showToast({
								title: '请打开蓝牙',
								icon: 'none'
							});
							uni.onBluetoothAdapterStateChange(res => {
								console.log('onBluetoothAdapterStateChange', res);
								if (res.available) {
									this.startBluetoothDevicesDiscovery();
								}
							});
						}
					}
				});
			},

2、开启蓝牙搜索

			startBluetoothDevicesDiscovery() {
				if (this.discoveryStarted) {
					return;
				}
				this.discoveryStarted = true;
				uni.startBluetoothDevicesDiscovery({
					allowDuplicatesKey: true,
					success: res => {
						console.log('startBluetoothDevicesDiscovery success', res);
						this.onBluetoothDeviceFound();
					}
				});
			},

3、监听蓝牙设备列表

			onBluetoothDeviceFound() {
				uni.onBluetoothDeviceFound(res => {
					res.devices.forEach(device => {
						if (device.name.indexOf('蓝牙名称') == -1) {
							return;
						}
						this.createBLEConnection(device);
					});
				});
			},

4、建立连接

			createBLEConnection(device) {
				const deviceId = device.deviceId;
				uni.createBLEConnection({
					deviceId,
					success: res => {
						//隐藏加载框
						this.connect = true;
						this.restart();
						this.deviceId = deviceId;
						this.getBLEDeviceServices(deviceId);
					}
				});
				this.stopBluetoothDevicesDiscovery();
			},

5、关闭蓝牙连接

			closeBLEConnection() {
				uni.closeBLEConnection({
					deviceId: this.deviceId
				});
				this.connect = false;
			},

6、停止蓝牙搜搜

			stopBluetoothDevicesDiscovery() {
				uni.stopBluetoothDevicesDiscovery();
				this.discoveryStarted = false;
			},

7、获取蓝牙设备服务

			getBLEDeviceServices(deviceId) {
				uni.getBLEDeviceServices({
					deviceId,
					success: res => {
						console.log(res);
						for (let i = 0; i < res.services.length; i++) {
							if (res.services[i].isPrimary) {
								this.getBLEDeviceCharacteristics(deviceId, res.services[i].uuid);
								return;
							}
						}
					}
				});

			},

8、获取蓝牙特征值文章来源地址https://www.toymoban.com/news/detail-544851.html

			getBLEDeviceCharacteristics(deviceId, serviceId) {

				uni.getBLEDeviceCharacteristics({
					deviceId,
					serviceId,
					success: res => {
						console.log('getBLEDeviceCharacteristics success', res.characteristics);
						for (let i = 0; i < res.characteristics.length; i++) {
							let item = res.characteristics[i];
							console.log(item.properties)
							if (item.properties.read) {
								uni.readBLECharacteristicValue({
									deviceId,
									serviceId,
									characteristicId: item.uuid
								});
							}
							if (item.properties.write) {
								this.deviceId = deviceId;
								this.serviceId = serviceId;
								this.characteristicId = item.uuid;
							}
							if (item.properties.notify || item.properties.indicate) {
								uni.notifyBLECharacteristicValueChange({
									deviceId,
									serviceId,
									characteristicId: item.uuid,
									state: true
								});
							}
						}
					},
					fail(res) {
						console.error('getBLEDeviceCharacteristics', res);
					}
				});
				uni.onBLECharacteristicValueChange(characteristic => {

                    if(!this.connect){
						return
					}
                    //自己的操作
                    let value = util.ab2hex(characteristic.value);

				});
				uni.onBLEConnectionStateChange(res => {
					// 该方法回调中可以用于处理连接意外断开等异常情况
					console.log(`device ${res.deviceId} state has changed, connected: ${res.connected}`);
					this.connect = res.connected;
					if (!this.connect) {
						this.discoveryStarted = false;
						//this.finishStatus = true;
						clearInterval(this.interval);
						this.openBluetoothAdapter();
					}

				});
			},

到了这里,关于uni-app蓝牙操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端Vue uni-app App/小程序/H5 通用tree树形结构图

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月16日
    浏览(46)
  • 前端vue uni-app cc-countdown倒计时组件

    随着技术的不断发展,传统的开发方式使得系统的复杂度越来越高。在传统开发过程中,一个小小的改动或者一个小功能的增加可能会导致整体逻辑的修改,造成牵一发而动全身的情况。为了解决这个问题,我们采用了组件化的开发模式。通过组件化开发,可以有效地实现单

    2024年02月15日
    浏览(54)
  • uni-app 前端项目(vue)部署到本地win系统Nginx上 http

     背景: 若依移动端的项目:整合了uview开源ui框架 部署流程 1. 配置后端请求接口基本路径地址: 2. 打包复制到nginx下:nginx/htm/newxss, (newxss目录手动创建) 3.在nginx上配置了站点与api代理  Nginx配置 安装个稳定版本的:nginx-1.24.0 部署配置: 1.增加了网站: 8083端口 的, 网站

    2024年04月12日
    浏览(43)
  • 前端vue uni-app基于原生input组件的增强简单通用实用输入框

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月04日
    浏览(45)
  • 前端vue uni-app百度地图定位组件,显示地图定位,标记点,并显示详细地址

    快速实现前端百度地图定位组件,显示地图定位,标记点,并显示详细地址; 阅读全文下载完整代码请关注微信公众号: 前端组件开发 效果图如下:     代码如下: # 百度地图定位组件,显示地图定位,标记点,并显示详细地址 #### 使用方法 ```使用方法 #安装vue-baidu-map插件

    2024年02月08日
    浏览(62)
  • uni-app的Vue.js实现微信小程序的紧急事件登记页面功能

    主要功能实现  完成发生时间选择功能,用户可以通过日期选择器选择事件发生的时间。 实现事件类型选择功能,用户可以通过下拉选择框选择事件的类型。 添加子养殖场编号输入框,用户可以输入与事件相关的子养殖场编号。 完成事件描述输入功能,用户可以通过文本输

    2024年02月12日
    浏览(56)
  • 前端vue uni-app多图片上传组件,支持单个文件,多个文件上传 步骤条step使用

    快速实现多图片上传组件,支持单个文件,多个文件上传 步骤条step使用; 阅读全文下载完整代码请关注微信公众号: 前端组件开发 效果图如下: 使用方法   使用方法 HTML代码部分   html JS代码 (引入组件 填充数据)   javascript

    2024年02月08日
    浏览(86)
  • 『uni-app、小程序』蓝牙连接、读写数据全过程

    点赞 + 关注 + 收藏 = 学会了 这是一次真实的 蓝牙收发数据 的全过程讲解。 本文使用 uni-app + Vue3 的方式进行开发,以手机app的方式运行(微信小程序同样可行)。 uni-app 提供了 蓝牙 和 低功耗蓝牙 的 api ,和微信小程序提供的 api 是一样的,所以本文的讲解也 适用于微信小程序

    2024年02月09日
    浏览(93)
  • uni-app(Vue3/Vite) + vant UI(Vue3版本)+ js 按需引入的项目搭建

            因为要完成软件工程的项目,要做一个nativeApp,看了很多的技术文档以后决定使用多端兼容的uni-app来开发。组件方面的话最后决定使用目前比较火的Vant UI。但是看了CSDN和掘金上面的很多文章,似乎没有一篇是关于uni-app中使用Vite对vant组件进行按需引入(可能这个

    2023年04月09日
    浏览(64)
  • 基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板

    最近得空学习了下uniapp结合vue3搭建跨端项目。之前也有使用uniapp开发过几款聊天/仿抖音/后台管理等项目,但都是基于vue2开发。随着vite.js破局出圈,越来越多的项目偏向于vue3开发,就想着uniapp搭配vite4.x构建项目效果会如何?经过一番尝试果然真香~ uniapp官网提供了  HBuild

    2024年02月09日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包