当前位置: 首页 > 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.zqtcl.cn/news/826841/

相关文章:

  • 商业设计网站推荐用图片设置网站首页
  • 同ip网站有什么危害软文营销的特点有哪些
  • 用动易做的校园网站成品网站 免费试用
  • 没有网站做cpa怎么赚钱网站模板中企动力
  • 商会联盟网站建设方案免费的个人空间建网站
  • 徐州网站建设4个人网站设计师
  • 易企秀网站怎么做轮播图装饰设计公司wordpress主题
  • 网站建设搜索优wordpress the
  • 怎么做点图片连接网站北京大学网络服务
  • 家具制作网站台州网页设计公司
  • 优化网站 提高查询建设综合购物网站
  • 农产品网站设计方案湖南长沙网站建设公司
  • 网站过期查询服务器放网站吗
  • 郑州做网站的外包公司有哪些大连seo排名
  • 写小说的网站自己做封面2008年做的网站
  • 哈尔滨做网站哪家好强企业邮箱登录入口163
  • 网站点击率原因学php到做网站要多久
  • 哪里有创建网站的长沙网站seo技巧
  • 影楼公共网站wordpress提交360
  • 哪有做网站东莞中堂网站建设
  • 什么叫域名访问网站网络运营管理
  • 深圳网络推广网站泰安网站建设公司
  • 淄博网站建设铭盛信息如何注册一个app平台
  • 深圳网站的建设维护公司成功的网站必须具备的要素
  • wordpress主题站主题小型企业网站的设计与实现
  • 长沙专门做网站公司怎么进入网站管理页面
  • 做网站企业的发展前景东莞免费企业网站模板推广
  • 国外做锅炉的网站wordpress批量提交表单
  • 浙江省建设科技推广中心网站兼职做网站这样的网站
  • 网站开发前端培训最有设计感的网站