- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在做一个项目,使用 Samsung Galaxy Gear S3 作为低功耗蓝牙服务器来构建客户服务。问题是在我构建特征和描述符、将它们添加到另一个和服务、将服务注册到服务器并启动服务器之后,我 iPhone 上的 BlueScanner 应用程序只显示我的特征和描述符没有值(value),但是有uuid。这是我的代码:
const char *service_uuid = "ADE3D529-C784-4F63-A987-EB69F70EE816";
bt_gatt_service_type_e type = BT_GATT_SERVICE_TYPE_PRIMARY;
//server handle
static bt_gatt_server_h gattServer = NULL;
//service handle
static bt_gatt_h gattSvc = NULL;
//Characteristic handle
bt_gatt_h gattChara = NULL;
const char *charaUuid = "AD7B334F-4637-4B86-90B6-9D787F03D218";
//const char *charaValue = "myCharacteristic";
//descriptor handle
static bt_gatt_h gattDescriptor = NULL;
const char *DescUuid = "0x1002";
const char *DescValue = "50";
void createService() {
dlog_print(DLOG_INFO, LOG_TAG, "Create Service");
int ret = bt_gatt_server_initialize();
if (ret != BT_ERROR_NONE) {
char* err;
err = get_error_message(ret);
dlog_print(DLOG_ERROR, LOG_TAG, "Init GATT server failed. err = %s",
err);
}
if (!gattServer) {
// gattServer not exist, create server
ret = bt_gatt_server_create(&gattServer);
if (ret != BT_ERROR_NONE) {
char* err;
err = get_error_message(ret);
dlog_print(DLOG_ERROR, LOG_TAG,
"Create GATT server failed. err = %s", err);
} else {
dlog_print(DLOG_INFO, LOG_TAG, "Create GATT server Succeed");
}
}
ret = bt_gatt_service_create(service_uuid, type, &gattSvc);
if (ret != BT_ERROR_NONE) {
char* err;
err = get_error_message(ret);
dlog_print(DLOG_ERROR, LOG_TAG, "Create GATT service failed. err = %s",
err);
} else {
dlog_print(DLOG_INFO, LOG_TAG, "Create GATT service Succeed");
}
ret = bt_gatt_characteristic_create(charaUuid,
BT_GATT_PERMISSION_READ | BT_GATT_PERMISSION_WRITE,
BT_GATT_PROPERTY_INDICATE | BT_GATT_PROPERTY_READ, charaValue,
LE_INITIAL_BUF_SIZE, &gattChara);
if (ret != BT_ERROR_NONE) {
char* err;
err = get_error_message(ret);
dlog_print(DLOG_ERROR, LOG_TAG,
"create characteristic failed. err = %s", err);
} else {
dlog_print(DLOG_INFO, LOG_TAG, "create characteristic Succeed");
}
ret = bt_gatt_server_set_read_value_requested_cb(gattChara,
__bt_gatt_server_read_value_requested_cb, NULL);
if (ret != BT_ERROR_NONE) {
char* err;
err = get_error_message(ret);
dlog_print(DLOG_ERROR, LOG_TAG, "create read request failed. err = %s",
err);
} else {
dlog_print(DLOG_INFO, LOG_TAG, "create read request Succeed");
}
ret = bt_gatt_descriptor_create(DescUuid,
BT_GATT_PERMISSION_READ | BT_GATT_PERMISSION_WRITE, DescValue,
LE_INITIAL_BUF_SIZE, &gattDescriptor);
if (ret != BT_ERROR_NONE) {
char* err;
err = get_error_message(ret);
dlog_print(DLOG_ERROR, LOG_TAG, "create descriptor failed. err = %s",
err);
} else {
dlog_print(DLOG_INFO, LOG_TAG, "create descriptor server Succeed");
}
ret = bt_gatt_characteristic_add_descriptor(gattChara, gattDescriptor);
if (ret != BT_ERROR_NONE) {
char* err;
err = get_error_message(ret);
dlog_print(DLOG_ERROR, LOG_TAG,
"add descriptor to characteristic failed. err = %s", err);
} else {
dlog_print(DLOG_INFO, LOG_TAG,
"add descriptor to characteristic Succeed");
}
ret = bt_gatt_service_add_characteristic(gattSvc, gattChara);
if (ret != BT_ERROR_NONE) {
char* err;
err = get_error_message(ret);
dlog_print(DLOG_ERROR, LOG_TAG,
"add characteristic to service failed. err = %s", err);
} else {
dlog_print(DLOG_INFO, LOG_TAG, "add characteristic to service Succeed");
}
ret = bt_gatt_server_register_service(gattServer, gattSvc);
if (ret != BT_ERROR_NONE) {
char* err;
err = get_error_message(ret);
dlog_print(DLOG_ERROR, LOG_TAG,
"register GATT service failed. err = %s", err);
} else {
dlog_print(DLOG_INFO, LOG_TAG, "register GATT service Succeed");
}
ret = bt_gatt_server_start();
if (ret != BT_ERROR_NONE) {
char* err;
err = get_error_message(ret);
dlog_print(DLOG_ERROR, LOG_TAG, "start GATT server failed. err = %s",
err);
} else {
dlog_print(DLOG_INFO, LOG_TAG, "start GATT server Succeed");
}
}
提前致谢!
最佳答案
我最终解决了这个问题。原来必须在“__bt_gatt_server_read_value_requested_cb”中调用“bt_gatt_server_send_response”函数。我猜客户端每次都读取该值,并且由于未定义该函数,它不会返回任何内容,所以服务器的值被设置为 NULL。
关于bluetooth-lowenergy - Tizen 3.0.0.2 上的蓝牙 LE Gatt 服务器特征值始终为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50409765/
我对 CBMutableCharacteristic 的特征值可以有多长感到困惑。如果我有一个归档对象数组,我可以将特征值设置为这个归档数组吗?或者我最好为数组中的每个归档对象设置一个单独的特征? 最
我在 Python Sympy 中使用来计算带有变量的矩阵 A 的特征值(例如)。有谁知道如何计算这样的矩阵的特征值?命令 A.eigenvals() 不起作用。例如下面的代码: x = symbol
我正在计算协方差矩阵的特征值,它是实数且对称的半正定矩阵。因此,特征值和特征向量都应该是实数,然而numpy.linalg.eig()返回具有(几乎)零虚部的复数值。 协方差矩阵太大,这里贴不出来,但
我正在尝试对图像使用光谱聚类。我首先计算亲和性矩阵,然后尝试获取特征向量。但是,在 7056x7056 矩阵上,eig() 调用花费的时间太长。关于如何改进这个的任何建议?也许我应该使用不同形式的亲和
我目前正在使用 Dart/Flutter BLE 插件来更好地了解 BLE 设备。 插件: https://pub.dartlang.org/packages/flutter_blue 当我连接到我的
我在使用 Eigen 库时遇到错误,我想做的就是从 Eigen::VectorXf 中减去一个标量。所以,我的代码如下: #define VECTOR_TYPE Eigen::VectorXf #de
假设我有一个对称矩阵 M,它不是正(半)定的,我想计算它的 k 顶(绝对值)特征值(和相应的特征向量)。现在,可以使用截断的 SVD 来做到这一点,它将返回所述特征值的绝对值,然后必须检查符号并找到相
我有一个关于 split 节点的问题。我有 4 个特征,想要预测这个人是否会玩,可能会玩,也可能不会玩。根据信息增益,我将“天气”作为第一个要分割的特征,其中“多雨”、“炎热”和“潮湿”作为分支。下雨
我有一个 ~3000x3000 类似协方差的矩阵,我在该矩阵上计算特征值-特征向量分解(它是一个 OpenCV 矩阵,我使用 cv::eigen() 来完成工作)。 但是,我实际上只需要前 30 个特
我想计算 K*es,其中 K 是一个 Eigen 矩阵(维度 pxp)和 es 是一个 px1 随机二进制 vector ,值为 1。 例如,如果 p=5 和 t=2 一个可能的 es 是 [1,0,
我正在尝试使用 CoreBluetooth 框架从设备读取所有可用服务及其特征值。 - (void)centralManager:(CBCentralManager *)central didDisc
我已经在 Internet 上多次看到这个主题,但从未见过一个完整、全面的解决方案,它可以适用于当前库版本的 sklearn 的所有用例。有人可以尝试使用以下示例解释如何实现吗? In this ex
我的输入 数据框(缩短)如下所示: >>> import numpy as np >>> import pandas as pd >>> df_in = pd.DataFrame([[1, 2, 'a
我想读取低功耗蓝牙(智能)的特征值。我不想使用 gatttool 或 btgatt-client。 d-bus 也没有帮助。我想在 Python 中执行此操作。我在以下内容中找不到任何示例: http
我是一名优秀的程序员,十分优秀!