当前位置: 首页 > news >正文

二级域名网站好不好php网站开发培训班

二级域名网站好不好,php网站开发培训班,全免费无代码开发平台,性价比高的云服务器文章目录 1. 概念介绍2. 具体细节2.1 发现服务2.2 发现特征值2.3 发送数据 4. 经验总结1. 概念介绍2. 主要功能2.1 扫描蓝牙设备2.2 连接蓝牙设备 3. 示例代码4. 内容总结 我们在上一章回中介绍了连接蓝牙设备的细节相关的内容#xff0c;本章回中将介绍通过蓝牙发… 文章目录 1. 概念介绍2. 具体细节2.1 发现服务2.2 发现特征值2.3 发送数据 4. 经验总结1. 概念介绍2. 主要功能2.1 扫描蓝牙设备2.2 连接蓝牙设备 3. 示例代码4. 内容总结 我们在上一章回中介绍了连接蓝牙设备的细节相关的内容本章回中将介绍通过蓝牙发送数据的细节.闲话休提让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的通过蓝牙设备发送数据仍然使用flutter_blue_plus包提供的接口我们在第一百一十九章回中介过通过蓝牙发送数据的方法不过还有一些 细节问题需要注意本章回中将详细介绍通过蓝牙发送数据的细节内容。 2. 具体细节 通过蓝牙发送数据的细节主要包含发现服务(BluetoothService)和特征值(Characteristic)发送数据和接收数据。我们把这些内容分成各个小节来介绍。 2.1 发现服务 发现服务使用包中的discoverServices()方法就可以不过蓝牙设备的服务比较多需要进行遍历操作在遍历过程中找到需要操作的服务通常是通过服务的uuid 来判断服务是否是我们需要操作的某个服务。此外蓝牙设备的服务具有读写特性也可以依据读写特性来区分服务。 2.2 发现特征值 发现特征值不需要专门的方法通过服务的characteristics属性就可以获取到该服务的特征值该属性是一个列表包含服务中的多个特征值。我们需要对特征值列表 进行遍历操作在遍历过程中找到需要操作的特征值通常是通过特征值的uuid来判断特征值是否是我们需要操作的某个特征值。此外蓝牙设备的特征值类似服务也 具有读写特性也可以依据读写特性来区分不同的特征值。 2.3 发送数据 发送数据有两种方法读特征值或者写特征值读取特征值只能从蓝牙设备中读取内容写特征值可以向蓝牙设备发送特定的内容蓝牙设备收到具体的内容后可以做出专 门的响应这种方法在实际项目中比较常用。包中提供了读特征值和写特征值的方法read()和write()。注意这两个方法是特征值的方法不是蓝牙设备的方法在使 用这两个方法前需要判断特征值是否具有读或者写的特性不具有读写特性的特征值无法调用这两种方法。 上面小节中介绍的实现方法比较抽象接下来我们通过具体的代码来演示如何通过蓝牙设备读写数据 FutureListBluetoothService discoverServices(BluetoothDevice device) async {///获取服务ListBluetoothService services await device.discoverServices();ListBluetoothCharacteristic characteristics;StreamListint readValueChanged;StreamListint writeValueChanged;///查找具有读写特性的特征值同时监听Strem来获取蓝牙设备返回的数值for (var element in services) {// log.i(service: ${element.toString()});characteristics element.characteristics;for(var char in characteristics) {if(char.properties.read) {///激活监听char.setNotifyValue(true);readValueChanged char.onValueReceived;readValueChanged.listen((event) {log.i(read chara feedback: ${event.toHes()});});readCharacteristics(char);}if(char.properties.write) {///激活监听char.setNotifyValue(true);writeValueChanged char.onValueReceived;writeValueChanged.listen((event) {log.i(write chara feedback: ${event.toHex()});},onError:(e){log.i(write chara error: ${e.toString()});},onDone: () log.i(write chara done),);writeCharacteristics(char);}}}return services;}///依据指定的UUID读取特征值void readCharacteristics (BluetoothCharacteristic characteristic) async{if(PrivateKey.searchServiceUuid ! characteristic.characteristicUuid.toString()) {return null;}Listint value await characteristic.read();log.w(read characteristic: ${value.toString()});}///依据指定的UUID写入特征值void writeCharacteristics (BluetoothCharacteristic characteristic) async{if(PrivateKey.writeCharacteristicUuid ! characteristic.characteristicUuid.toString()) {return null;}Listint value [12,13,14];await characteristic.write(value,withoutResponse: false);log.w(write characteristic: ${value.toString()});}上面的代码中把读写特征值的操作封装成了独立的方法这样方便调用。我们可以依据特征值的读写属性来区分特征值也可以依据特征值的uuid来区分特征值不过需 要与蓝牙设备的开发工程师获取特征值的uuid.发起读写操作后可以在Stream中的Listen()方法中获取到蓝牙设备返回的数据。我们在代码的关键位置都添加了注释 这样方便大家理解代码。注意读写操作需要进行异步操作不然无法接收到数据。 4. 经验总结 最后我们对本章回的内容做一个全面的总结 Service,Characteristic和Descriptor都是蓝牙设备的属性而且每个蓝牙都有这些属性Service,Characteristic和Descriptor环环相扣:获取到Service后才能获取Characteristic,获取到Characteristic后才能获取Descriptor;一个蓝牙设备可能会有多个service我们可以通过它的uuid来区分不同的service;一个serice可能会有多个characteristic,我们可以通过它的uuid来区分不同的characteristic;一个characteristic可以具备读写属性中的任意一种或者二种属性都具备Service和Characteristic都具有读写属性可以通过读写特征来区分或者通过uuid来区分读写数据前需要激活特征值的监听功能读写操作完成后可以通过特征值的Stream接收蓝牙设备回复的数据读写数据的操作需要通过异步方法来实现否则无法接收到蓝牙设备回复的数据 看官们与通过蓝牙发送数据的细节相关的内容就介绍到这里欢迎大家在评论区交流与讨论! 第一百九十七回 蓝牙综合使用示例一 我们在上一章回中介绍了通过蓝牙发送数据的细节相关的内容本章回中将介绍蓝牙综合使用示例.闲话休提让我们一起Talk Flutter吧。 1. 概念介绍 本章回中的蓝牙综合示例是在前面两个章回中的基础上实现的主要包含蓝牙的扫描和连接功能。建议大家先阅读博客中关于蓝牙基础知识的介绍然后是前面两个章回中 的细节内容这样有助于大家理解内容。此外示例中仍然使用使用flutter_blue_plus包提供的接口. 2. 主要功能 2.1 扫描蓝牙设备 扫描蓝牙功能直接使用FlutterBluePlus.startScan()方法就可以不过扫描前需要申请蓝牙权限有了蓝牙权限以后才可以进行扫描。此外还需要进行初始化操 作这个初始化主要是监听Stream: FlutterBluePlus.scanResults.当扫描到蓝牙设备的话就可以直接从该Stream中获取蓝牙设备列表。此外扫描前还需 要打开手机上的蓝牙开关这个内容比较多我们将在后面章回中介绍这方面的内容。 2.2 连接蓝牙设备 连接蓝牙设备使用包中提供的connect()方法就可以该方法返回的是Future,我们可以通过Future处理连接完成和连接失败的相关操作。注意一下该方法是异步方 法因此需要使用async/await关键字来实现异步操作。 3. 示例代码 介绍完主要的功能后我们通过具体的示例代码来演示如何实现这些功能,下面是示例代码请大家参考 void checkPermission() async {var status await Permission.bluetooth.status;if (status.isDenied) {requestPermission();} }///这里的蓝牙权限只包含两个大家可以依据平台版本来请求不同的权限 void requestPermission() async {MapPermission, PermissionStatus permissionMap await [// Permission.locationAlways,Permission.bluetoothScan,Permission.bluetoothConnect,].request(); }///初始化操作主要是监听Stream来获取扫描到的蓝牙设备列表 void initBLE() {subscription FlutterBluePlus.scanResults.listen((result) {scanDeviceList result;filterDeviceList scanDeviceList?.where((element) element.device.localName.isNotEmpty).toList();filterDeviceList?.forEach((element) {_deviceViewModel.setDeviceModel(element.device.localName, Disconnected);});},onError: (e) debugPrint(onError ${e.toString()}),onDone: () debugPrint(onDone),); }///扫描蓝牙设备 void startScan() {debugPrint(start scan);FlutterBluePlus.startScan(// withServices: [Guid(PrivateKey.uuid)],timeout: Duration(seconds: scanTimeout),); }///连接设备 void connectDevice(BluetoothDevice device) async {if (device ! null) {await device.connect().onError((error, stackTrace) log.e(connect device: ${error.toString()})).whenComplete(() log.i(connect finished));} }我们在上面的示例代码中依据不同的功能把相关的操作封装成了方法并且添加了相关的注释以方便大家理解代码。程序需要运行在真机上才可以扫描蓝牙建议大家自己 动手去实践这样可以看到扫描到的蓝牙设备。代码中没有涉及页面大家可以把相关的功能添加到按钮的onPress属性上这样就可以在点击按钮时完成相关的功能 蓝牙设备列表也可以显示到页面上或者通过log打印出来。我在这里就不实现这些内容了只是给大家提一个实现的方向和思路。 4. 内容总结 最后我们对本章回中的内容做一个全面的总结 蓝牙扫描功能直接使用包中的方法就可以蓝牙扫描前需要获取蓝牙操作权限并且监听扫描设备列表连接蓝牙设备直接使用包中的方法就可以不过需要进行异步处理蓝牙操作的相关功能建议和按钮的onPress属性关联这样可以在点击按钮时实现相关功能 看官们与蓝牙综合使用示例相关的内容就介绍到这里欢迎大家在评论区交流与讨论!
http://www.pierceye.com/news/186891/

相关文章:

  • 任务网站(做任务学技能的)开发公司宣传册
  • 织梦搭建商城网站高端网站建设深圳
  • 做网站排名优化的公司无需下载直接登录qq手机版
  • 网站不备案不能访问吗wordpress主题开发404页面
  • 工作总结个人总结自动app优化下载
  • 网站开发推荐书籍比较大的外贸网站
  • 上饶建设网站郑州网
  • 做淘宝客网站一定要备案吗没有网站域名备案
  • 用QQ群做网站排名慈溪网站制作哪家最好
  • 兴宁市网站建设手工艺品网站建设策划书
  • flash做网站导航网站品牌建设流程
  • 公司建设网站属于什么费用网站打模块
  • 网站建设应注意的问题网站备案验证码错误
  • 网站核验点网站自己怎么做的
  • 购物网站建设平台canvas可画网页版
  • 企业信息平台系统网站推广优化建设
  • 免费网站模板制作自助建站上建的网站免费吗
  • 深圳市网站建设外包公司门户网站代码结构
  • 昆明做网站建设找谁最新版在线 网
  • 东昌府聊城网站建设网站广告做的好的企业案例分析
  • asp三层架构做网站网站开发前端基础
  • 医院网站建设方案策划书把网站做成app的软件下载
  • 网站建设实践报告3000字wordpress消息提示插件
  • 网站制作的评价标准做网站后台需要什么
  • 学院网站建设服务宗旨实惠的网站建设产品
  • 网站改名 备案影视制作
  • 网站开发亿码酷技术网站建设选谋者
  • 智能家居网站模板怎样做网站标题优化
  • 深圳制作网站制作公司哪家好最简洁 wordpress主题
  • 重庆忠县网站建设公司推荐国内公关公司