如今科技发展迅猛,对于不少初学者而言,在小程序中实现蓝牙功能是一项考验。然而,这同样也是一个提升自己的绝佳时机。博主分享的个人学习经历,对众多新入门者来说,具有很高的参考意义。
初涉蓝牙功能需求
初涉博主的我对项目要求的小程序蓝牙接收数据功能感到棘手。这个领域经验不多,得在陌生的知识领域里摸索前行,而且时间紧迫。许多新手博主面对这类项目需求时,往往感到茫然无措。然而,博主并未放弃,选择自行逐步学习和探索,这种求知精神值得称赞。面对项目中的难题,积极钻研的态度对个人成长大有裨益,无论是小程序开发还是其他工作环境。
在探索阶段,我们必须解决功能实现上的难题,同时确保操作精准且高效,以符合项目标准。实际上,在具体的项目应用中,满足需求与提升效率通常都至关重要。以这个微信小程序为例,它可能面临交付期限等约束。
理解UUID概念
在蓝牙连接过程中,UUID扮演着至关重要的角色。其中,有三个关键的UUID需要了解。比如,搜索UUID,即LUUID,它的默认值是FFF0,主要在搜索时用来识别蓝牙设备。还有服务UUID和传统UUID,分别是SUUID和TUUID,它们的默认值分别是FFE0和FFE1,主要用于数据传输。搞清楚这些UUID的意义和作用,就好比在茫茫黑夜中找到了指南针。对于初学者来说,这些概念可能曾经让他们感到困惑。
它能够通过uni-app的接口来获取信息,亦或是通过AT指令进行获取或设置。在实际操作中,比如在特定的开发环境或连接特定蓝牙设备时,AT指令可能更为便捷。因此,开发者需依据具体的应用场景来决定获取这些关键信息的具体方法。
蓝牙连接的重点
蓝牙连接的关键在于地址、SUUID和TUUID。这就像搭建积木,只有找到并正确拼凑这些部分,蓝牙连接才能稳定。官方提供的函数,其根本目标就是帮助我们获取这些关键值。不过,由于不同蓝牙设备的具体差异,获取这些数值的方法可能会有所不同。
Name:HC-08 //名称
Role:Slave //模式,默认为从模式
Baud:9600,NONE //波特率
Addr:44,EE,14,07,CB,8D //蓝牙地址
PIN :000000 //默认无密码
www.hc01.com //官网地址
www.hc01.com
www.hc01.com
若未能充分了解这些关键点,在蓝牙配对过程中很可能会遭遇各种难题。比如,遇到连接不畅或数据传输异常的情况,我们可能需要先检查这些基础要素是否获取准确或设置得当。在开发过程中,若此类问题不能得到及时处理,将大大拖慢项目进展。
蓝牙模块调试
调试蓝牙模块时,我们通常会将它连接到USB转TTL模块。在此过程中,未连接蓝牙模块时,使用串口工具发送字符进行AT指令调试是个有效手段。不过,这一步骤并不简单,只有准确输入指令,才能获得响应。比如,输入AT指令可检查模块是否正常运行,而AT+RX指令则能查看默认配置,进而获取蓝牙地址。
这就像在迷宫里寻找出路,需要我们不断尝试,逐步摸索出正确的路径。在此过程中,我们必须保持耐心,不能因为几次挫折就轻易放弃。特别是在某些公司的项目开发过程中,一旦遇到设备故障或调试难题,还得考虑到客户方面的压力。
通过uni – app连接蓝牙
按照uni-app官网提供的指引,连接蓝牙的操作流程是清晰的。首先,我们需要对蓝牙适配器进行初始化,然后启动搜索功能,并指定UUID来搜索目标设备地址。找到地址后,要监听蓝牙事件,关闭搜索以节省资源。之后,使用地址连接蓝牙,获取SUUID和TUUID。最后,利用这些信息来监听数据传输。每一步都如同齿轮般紧密相连。
若第一步初始化出现故障,后续步骤将无法进行。在测试环节中,任何一环出现问题都可能引发蓝牙连接全面失效。此外,不同版本的uni-app在函数调用上可能存在细微的异同。
uni.openBluetoothAdapter({
success(res) {
console.log("蓝牙适配器打开成功")
},
fail() {
console.log("初始化失败,请打开蓝牙")
}
})
选择连接方法
在开展小规模项目开发时,若对拟连接的蓝牙设备有充分认知,便可以选择一种更迅速的连接途径。然而,面对不熟悉的蓝牙设备,首选的方法则更为稳妥。实际上,并无绝对的优劣之分,关键在于根据实际情况选择最合适的方案。
//链接蓝牙
uni.createBLEConnection({F
//填入自己的蓝牙地址
//注意格式要有一定的修改
deviceId:"44:EE:14:07:CB:8D",
success(res) {
console.log("蓝牙链接成功")
}
})
这好比渡河,知晓水的深浅便能直接涉水而过,若不熟悉则需小心翼翼地试探前行。这样的决策也展现了项目开发中的应变能力。在实际工作中,常常需要根据实际情况来调整策略。在开发过程中,你更偏爱哪种策略?欢迎大家踊跃留言、点赞和转发。
let view;
//启用监听预备
uni.notifyBLECharacteristicValueChange({
//分别放入蓝牙地址(格式有修改),SUUID,TUUID
deviceId: "44:EE:14:07:CB:8D",
serviceId: "0000FFE0-0000-1000-8000-00805F9B34FB",
characteristicId: "0000FFE1-0000-1000-8000-00805F9B34FB",
//默认写true
state: true,
//获得数据的回调函数
success(res) {
uni.onBLECharacteristicValueChange((res) => {
//重置result
this.result="";
//将获得的数据转换为Uint8Array
view = new Uint8Array(res.value);
//将Uint8Array转换为字符串
for(let i=0;i<view.length;i++){
this.result+=String.fromCharCode(view[i]);
}
//打印结果
console.log(this.result)
})
}
})