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

织梦仿商城网站建筑网片产品资料

织梦仿商城网站,建筑网片产品资料,网站副标题怎么写,专业网站设计有限公司文章目录 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/826841/

相关文章:

  • 兰州网站制作服务电话博客建站模板
  • 网站后台登陆路径网站网站优化
  • wordpress仿站方法网站图片做伪静态
  • 怎么做一款贷款网站蚌埠seo公司
  • 做羊水亲子鉴定网站企业vi设计公司定制
  • 网站开发和微信开发需要什么人一个服务器放多少网站
  • 做6个页面的网站郑州seo优化顾问热狗
  • 网站建设 落地页中国石化工程建设有限公司怎么样
  • 网站建设 软文发布wordpress调取列表页
  • php网站服务器架设清远哪里有网页设计培训学费
  • 建站开发搜索引擎排名查询
  • 如何建设自己的网站 知乎怎么做电力设计公司网站
  • 效果图代做网站网站服务体系
  • 成都网站开发团队减肥养生网站建设
  • 个人做网站需要资质吗用php做网站的书籍
  • 开发一个交易网站多少钱做哪类网站比较赚钱
  • 帮人做彩票网站支付接口成都网络推广培训哪家好
  • 电子商务网站建设的教案404 not found wordpress
  • 怎样建设一个购物网站什么网站可以做直播
  • 石家庄网站开发培训灵犀科技网站开发佼佼者
  • 做阿里还是网站三个律师做网站合适吗
  • 梅州做网站设计公司网站 在百度搜索不到
  • 临沂门户网站制作微信附近人推广引流
  • 九龙坡区网站建设外贸是什么工作
  • 贵州省住房和城乡建设厅网站报名网网站开发入职转正申请书
  • 外贸平台哪个网站好做dede网站白屏
  • 可信的手机网站建设服装网站ui设计
  • 江苏网站建设效果好技术支持 英铭网站建设
  • 很多网站开发没有框架如何制作的网站模板制作与安装教程视频教程
  • 小说网站建设目的360如何做网站