- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的树莓派上构建一个C应用程序以将日志发送到kaa服务器,我正在遵循官方网站上的C文档。在使用 java 之前我已经成功地做到了这一点,但现在我尝试用 C 来做同样的应用程序。这是我的代码
#include <stdio.h>
#include <stdlib.h>
#include <kaa/kaa.h>
#include <kaa/platform/kaa_client.h>
#include <kaa/kaa_error.h>
#include <extensions/logging/kaa_logging.h>
#include <kaa/platform-impl/common/ext_log_upload_strategies.h>
#define LOG_UPLOAD_THRESHOLD 5
typedef struct {
kaa_client_t *kaa_client;
kaa_string_t * uuid;
kaa_string_t * proximity;
int32_t major;
int32_t minor;
int32_t measured_power;
int32_t rssi;
double accuracy;
} log_context;
static void sendLog(void *context)
{
if (context == NULL) {
return;
}
log_context * log_details_context = context;
kaa_logging_beacon_t *log_record = kaa_logging_beacon_create();
if (!log_record) {
printf("Failed to create log record\r\n");
kaa_client_stop(log_details_context->kaa_client);
return;
}
log_record->uuid = log_details_context->uuid;
log_record->major = log_details_context->major;
log_record->minor = log_details_context->minor;
log_record->measured_power = log_details_context->measured_power;
log_record->rssi = log_details_context->rssi;
log_record->accuracy = log_details_context->accuracy;
log_record->proximity = log_details_context->proximity;
kaa_error_t error = kaa_logging_add_record(
kaa_client_get_context(log_details_context->kaa_client)->log_collector,
log_record, NULL);
if (error) {
printf("Failed to add log record, error code %d\r\n");
kaa_client_stop(log_details_context->kaa_client);
return;
}
// log_record->destroy(log_record);
kaa_client_stop(log_details_context->kaa_client);
}
int main(int argc, char **argv)
{
double accuracy;
kaa_string_t * uuid;
kaa_string_t * proximity;
int32_t major, minor, measured_power, rssi;
if (argc != 8) {
printf("Number of arguments are not right");
return EXIT_FAILURE;
}
uuid = argv[1];
if (sscanf (argv[2], "%i", &major) != 1) {
printf("Major is not an integer");
return EXIT_FAILURE;
}
if (sscanf (argv[3], "%i", &minor) != 1) {
printf("Minor is not an integer");
return EXIT_FAILURE;
}
if (sscanf (argv[4], "%i", &measured_power) != 1) {
printf("Measured power is not an integer");
return EXIT_FAILURE;
}
if (sscanf (argv[5], "%i", &rssi) != 1) {
printf("RSSI is not an integer");
return EXIT_FAILURE;
}
if (sscanf (argv[6], "%lf", &accuracy) != 1) {
printf("Accuracy is not a double");
return EXIT_FAILURE;
}
proximity = argv[7];
/*
printf("UUID = %s\n", uuid);
printf("major = %d\n", major);
printf("minor = %d\n", minor);
printf("measured power = %d\n", measured_power);
printf("RSSI = %d\n", rssi);
printf("accuracy = %lf\n", accuracy);
printf("proximity = %s\n", proximity);
*/
/**
* Initialize Kaa client.
*/
kaa_client_t *kaa_client = NULL;
kaa_error_t error = kaa_client_create(&kaa_client, NULL);
if (error) {
printf("Failed to create Kaa client\r\n", error);
return EXIT_FAILURE;
}
log_context log_details_context;
log_details_context.kaa_client = kaa_client;
log_details_context.uuid = uuid;
log_details_context.major = major;
log_details_context.minor = minor;
log_details_context.measured_power = measured_power;
log_details_context.rssi = rssi;
log_details_context.proximity = proximity;
log_details_context.accuracy = accuracy;
void *log_upload_strategy_context = NULL;
error = ext_log_upload_strategy_create(kaa_client_get_context(kaa_client),
&log_upload_strategy_context, KAA_LOG_UPLOAD_VOLUME_STRATEGY);
if (error) {
printf("Failed to create log upload strategy, error code %d\r\n", error);
return EXIT_FAILURE;
}
error = ext_log_upload_strategy_set_threshold_count(log_upload_strategy_context,
LOG_UPLOAD_THRESHOLD);
if (error) {
printf("Failed to set threshold log record count, error code %d\r\n", error);
return EXIT_FAILURE;
}
error = kaa_logging_set_strategy(kaa_client_get_context(kaa_client)->log_collector,
log_upload_strategy_context);
if (error) {
printf("Failed to set log upload strategy, error code %d\r\n", error);
return EXIT_FAILURE;
}
/**
* Start Kaa client main loop.
*/
error = kaa_client_start(kaa_client, sendLog,
&log_details_context, 0);
if (error) {
printf("Failed to start Kaa client, error code %d\r\n", error);
return EXIT_FAILURE;
}
/**
* Destroy Kaa client.
*/
kaa_client_destroy(kaa_client);
return EXIT_SUCCESS;
}
我在控制台上得到以下输出:
2017/02/05 0:24:47 [INFO] [kaa.c:149] (0) - Kaa SDK version 0.10.0, commit hash
2017/02/05 0:24:47 [DEBUG] [kaa_logging.c:383] (0) - Initialized log collector with log storage {0x2037c40}, log upload strategy {0x2037c78}
2017/02/05 0:24:47 [INFO] [kaa_client.c:471] (0) - Log collector init completed
2017/02/05 0:24:47 [INFO] [kaa_client.c:155] (0) - Kaa client created
2017/02/05 0:24:47 [INFO] [kaa_client.c:295] (0) - Starting Kaa client...
Segmentation fault (core dumped)
这是我从 gdb 获得的调试信息
Starting program: /home/delvebyte/projects/beacon-scanner-pi/kaa-application-c/build/kaa-app UUID 0 1 -65 -72 0.873637383 near
2017/02/06 16:20:26 [INFO] [kaa.c:149] (0) - Kaa SDK version 0.10.0, commit hash
2017/02/06 16:20:26 [DEBUG] [kaa_logging.c:383] (0) - Initialized log collector with log storage {0x5555557a14d0}, log upload strategy {0x5555557a1ab0}
2017/02/06 16:20:26 [INFO] [kaa_client.c:471] (0) - Log collector init completed
2017/02/06 16:20:26 [INFO] [kaa_client.c:155] (0) - Kaa client created
2017/02/06 16:20:26 [INFO] [kaa_client.c:295] (0) - Starting Kaa client...
Program received signal SIGSEGV, Segmentation fault.
strlen () at ../sysdeps/x86_64/strlen.S:106
106 ../sysdeps/x86_64/strlen.S: No such file or directory.
(gdb) bt
#0 strlen () at ../sysdeps/x86_64/strlen.S:106
#1 0x00005555555658c2 in kaa_string_get_size (data=0x7fffffffe256)
at /home/delvebyte/projects/beacon-scanner-pi/kaa-application-c/kaa/src/kaa/kaa_common_schema.c:117
#2 0x000055555556220d in kaa_logging_beacon_get_size (data=0x5555557a1b70)
at /home/delvebyte/projects/beacon-scanner-pi/kaa-application-c/kaa/src/kaa/gen/kaa_logging_gen.c:63
#3 0x00005555555700f4 in kaa_logging_add_record (self=0x5555557a0bc0,
entry=0x5555557a1b70, log_info=0x0)
at /home/delvebyte/projects/beacon-scanner-pi/kaa-application-c/kaa/src/extensions/logging/kaa_logging.c:514
#4 0x0000555555556dcf in sendLog (context=0x7fffffffdd30)
at /home/delvebyte/projects/beacon-scanner-pi/kaa-application-c/src/kaa-application.c:46
#5 0x0000555555557b48 in kaa_client_start (kaa_client=0x5555557a0010,
external_process=0x555555556cf0 <sendLog>,
external_process_context=0x7fffffffdd30, max_delay=0)
at /home/delvebyte/projects/beacon-scanner-pi/kaa-application-c/kaa/src/kaa/platform-impl/posix/kaa_client.c:300
#6 0x0000555555557153 in main (argc=8, argv=0x7fffffffde68)
at /home/delvebyte/projects/beacon-scanner-pi/kaa-application-c/src/kaa-application.c:160
(gdb)
最佳答案
问题在于将 kaa_string_t * 视为 char * ,当我更好地了解 kaa 库时,我发现 kaa_string_t 是一个内部有 char * 的结构,所以我使用这个函数来初始化变量 kaa_string_move_create 并且是吗
关于c - 树莓派的 Kaa C 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42047412/
是否有任何机制或方法或步骤来检测从应用程序到 KAA 服务器的端点(KAA SDK)连接。 如果不是,那么我们如何通过远程识别故障设备?或者我们如何识别在现场部署设备后无法与 KAA 服务器通信的设备
我需要尝试通过 Kaa C SDK for Raspberry Pi 调试 Kaa 应用程序。 例如:Cassandra 数据分析演示。 1- 请向我推荐最好的调试器工具,并且 2- 如何使用调试器工
我在 AWS 上安装了 Kaa Sandbox,在日志附加程序中使用默认值“localhost”和端口“27017”。这是正确的吗? 现在为“我的第一个 kaa 应用程序”运行 Java SDK 在
我从 git 克隆 kaa 源代码,并在我的 ubuntu 14.04 上成功构建并运行它。然后我也成功创建了kaa admin。 然后我将我的外发电子邮件设置设置为这样 SMTP 协议(protoc
如何在不集成第三方数据分析工具(如Spark,Hadoop)的情况下在KAA服务器中实现条件规则引擎? 是否可以在服务器端分析和过滤配置/事件模式,并且仅在条件匹配时才发送通知? 我找到了一些有关此问
我按照this document构建了ESP8266 SDK 但是编译报告显示以下错误。 [ 35%] Building C object kaa/CMakeFiles/extension_notif
我已经设置了一个 Kaa 服务器并使用 SDK 开发了一个应用程序。但应用程序不发送事件消息。此应用程序应将进入 parking 场的汽车的车牌发送到服务器,并将事件发送到另一个应用程序(接收器应用程
我想控制端点(Raspberry pi 3)的GPIO。 我尝试将两个 KAA 演示应用程序合并为一个。 (“Cassandra 数据分析”和“数据收集”) 由于 Raspberry Pi 只有一个演
我正在尝试在我的树莓派上构建一个C应用程序以将日志发送到kaa服务器,我正在遵循官方网站上的C文档。在使用 java 之前我已经成功地做到了这一点,但现在我尝试用 C 来做同样的应用程序。这是我的代码
编译 C++ SDK 时出现以下错误** 错误日志 ** fatal error :kaa/gen/EndpointGen.hpp:没有这样的文件或目录[ 1% ] 构建 CXX 对象 kaa/CMa
我想使用在虚拟机中给我们的 ssh kaa@127.0.0.1 -p 2222 ssh 进入 Kaa 的沙箱,在其中一个数据收集演示中它说我们需要ssh 进入 kaa 的沙箱,然后我们可以使用演示的应
我尝试使用 Kaa Sandbox(curl 命令和 UI)使用 Json 文件发送通知。 我的问题是: 当我使用 json 文件时,为什么不在客户端端点显示消息正文(通知演示(JAVA SDK)?!
我使用 Kaa 沙盒发送通知。 我必须在窗口终端上运行这些代码: curl -v -S -u devuser:devuser123 -F 'notification={"applicationId":
我正在尝试将日志模式从树莓派 C 应用程序发送到后端 kaa 服务器。这是架构 { "type" : "record", "name" : "RemoteSensorLog", "namespace"
我想“卡住”(即创建可自执行的、自包含的包)Kaa 编辑器。 (原因:只在python3.3+上运行,但是我的生产服务器有python2.7和python3.2,我不想改) 运行kaa的主要脚本是什么
我想使用原始 TCP 将事件发送到 Kaa 平台,我不想为此使用生成的 SDK,所以我想问一下有什么办法可以做到这一点吗?我在哪里可以找到在没有 SDK 的情况下手动使用 Kaa TCP 协议(pro
我正在尝试在树莓派 3 上构建一个 C 应用程序,它收集一些传感器读数并将它们记录到 mongodb 日志附加程序中。我面临应用程序的非常奇怪的行为 这是我的应用程序代码,从主函数调用 #includ
我想使用 java SDK 构建一个 kaa actor 网关。执行器应处理来自不同端点(温度传感器 - 湿度传感器 - ...)的数据,并将其数据记录到 kaa 平台。如何做到这一点我应该从管理控制
我正在使用 KAA iOT 服务器将我的硬件与云连接。我已经在硬件中实现了 MQTT 协议(protocol),并且需要实现 Actor Gateway 或其他解决方案来实现硬件和云之间的通信。我无法
因此,我正在使用 Java SDK 遵循“您的第一个 Kaa 应用程序”教程,一切都很顺利,直到构建应用程序为止。因此,当我尝试运行该应用程序时,出现以下错误。 > C:\Temp\demo_app>
我是一名优秀的程序员,十分优秀!