当前位置: 首页 > 知识库问答 >
问题:

关贸总协定特征被读取后会发生什么?

舒博雅
2023-03-14

我使用的是Android设备和Android5.1(蓝牙4.0)以及带有蓝牙4.2的MCU板。

在我的MCU方面,我正在循环更新我的Gatt特性,以确保我知道我在其中写入的数据是否一致。在我将其写入gatt数据库之前,我使用了crc检查。

在我的android方面,我只是有一个线程,它从gatt数据库中读取特性,然后我就有了相同的crc,但似乎50%的值是损坏的(这在我这边没有意义)。我知道我在关贸总协定数据库中写入的数据是正确的,所以我想问题是在一个线程中多次读取该特性。

我已经尝试通过我的Android端的通知读取该特性,但Bluetoothleservice永远不会跳进On特征更改回调。

我的特色更新看起来像这样

tmpGatt.readCharacteristic(characteristic);

并且特征在之前被uuid过滤

for(int i = 0; i<Services.size(); i++){
                Characteristics = Services.get(i).getCharacteristics();
                for(int c=0;c < Characteristics.size();c++){
                    UUID myUUID = Characteristics.get(c).getUuid();
                    if(myUUID.toString().equals("354a1b8e-7597-11e6-8b77-86f30ca893d3")){
                        characteristic = Characteristics.get(c);
                        //refExternalData.getRefBluetoothGatt().readCharacteristic(characteristic);
                        descriptor = characteristic.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));
                        Log.i("BLE", "Characteristic " + myUUID.toString() + " found");
                    }
                }
            }

所以我需要做什么特别的事情来重新阅读gatt特性?

共有1个答案

李弘光
2023-03-14

您是否按照https://developer.android.com/guide/topics/connectivity/bluetooth-le.html#notification的程序启用通知?

当您发布read特性时,您不允许发布新的read特性,直到您获得on特性读取。或者实际上你不允许发送任何新的请求(read特征Write特征readExplptorWriteExplptor),直到前面的请求完成。这是因为一次可能只有一个未完成的GATT请求,并且没有内部队列。

 类似资料:
  • 我使用RxAndroidBle与kotlin。到目前为止,我可以设置多个通知,我正在接收它们。 如何将通知映射到其特定特征? 到目前为止: 谢谢你

  • 我对Java和OOP都是新手。但是,我使用notify读取一个特征,然后使用read读取回调中的多个特征。 我想知道,为什么在使用readCharacteristic(我的特征)时,只能从单个特征(除了通知的特征)中获取值。蓝牙gatt回调声明如下: 公共布尔值 (BluetoothGattCharacteristic characteristic characteristic)从相关远程设备读取

  • 我正在开发一个BLE应用程序,基于谷歌提供的Gatt示例项目:https://developer.android.com/samples/BluetoothLeGatt/index.html.所以,我可以成功地在特性中发送数据写入。现在我需要知道这个特性什么时候改变它的价值。我明白我需要实现set特征通知()方法和onExplptorWrite()方法。但我不能这样做这工作。搜索,我发现了一些想法

  • 假设我有一个普通的应用程序,其中我正在使用ApplicationContext ApplicationContext=new FileSystemXmlApplicationContext(“bean.xml”)创建一个Spring应用程序上下文 现在,假设在这个bean.xml有Spring bean的bean定义,所以当我创建应用程序上下文时,Spring容器将为这个实例化和初始化一个对象。

  • 问题内容: 我想知道当你使用注释方法时实际发生了什么?当然,我知道Spring将把该方法包装在Transaction中。 但是,我有以下疑问: 听说Spring创建了代理类?有人可以更深入地解释这一点。该代理类中实际包含什么?实际班级会怎样?我怎么能看到Spring创建的代理类 我还在Spring文档中读到: 注意:由于此机制基于代理,因此仅会拦截通过代理传入的“外部”方法调用。这意味着“自调用”

  • 1 介绍   词频-逆文档频率法(Term frequency-inverse document frequency,TF-IDF)是在文本挖掘中广泛使用的特征向量化方法。 它反映语料中词对文档的重要程度。假设用t表示词,d表示文档,D表示语料。词频TF(t,d)表示词t在文档d中出现的次数。文档频率DF(t,D)表示语料中出现词t的文档的个数。 如果我们仅仅用词频去衡量重要程度,这很容易过分强调