登录
首页 >  Golang >  Go问答

连接或断开事件通知

来源:stackoverflow

时间:2024-02-06 08:12:23 382浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《连接或断开事件通知》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我正在研究物联网设备,它使用 BLE 作为蓝牙。代码是用 Go 语言编写的。我正在寻找回调。以下是我用于 BLE 连接的以下模块。

在 Go-Bluetooth 中。 Github 仓库链接:https://github.com/muka/go-bluetooth

我们在连接建立或断开连接时是否有任何回调/侦听器?

我无法找到 BLE 连接建立和断开事件的回调。


正确答案


有点晚了,但我对此有部分解决方案。

检查这一点的方法是通过 go channels。 “适配器”类型有一个方法来生成一个通道,该通道将在任何属性发生更改时激活。您可以使用它来查看连接到您的设备的属性,尤其是“已连接”属性。

  1. 使用 getadapter 方法获取适配器

    myadapter := myapp.getadapter()

    myapp 是您必须通过调用 service.newapp(options) 创建的应用程序的名称

  2. 获取注册到您的适配器的设备列表。

    mydevicelist, _ := myadapter.getdevices()

    这将返回曾经连接到您的适配器的所有设备的列表。因此,如果您只连接了一台设备并且此列表中填充了多个设备,请不要感到惊讶。

  3. 通过浏览设备列表查找实际连接的设备,并查看哪一个设备的“已连接”属性设置为 true。获取该设备的频道。

    for _, device:= range mydevicelist {
         if device.properties.connected == true {
             mychannel := device.watchproperties()
         }
     }
  4. 只需关注该频道即可。请记住,当任何属性更改时它都会触发,因此您必须手动查看“connected”属性以查看它何时更改为 false。

    go func() {
         for {
             <-myChannel
              print("Something changed!! Ahhhhhh Panic!!\n")
          }
     }()

我也从 go 中的 ble 开始,所以这可能不是最好的解决方案,但它可能同时起作用,并为您提供一些更好的方法的想法。

今天关于《连接或断开事件通知》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>