exos_dataset_connect()

<< 点击显示目录 >>

主页  exOS使用助手 > exOS Automation Help > Development > Programming > exOS Communication API reference (exos_api.h) >

exos_dataset_connect()

将数据集连接到数据集消息路由器并注册事件回调

调用语法

EXOS_ERROR_CODE exos_dataset_connect(exos_dataset_handle_t *dataset, EXOS_DATASET_TYPE type, exos_dataset_event_cb dataset_event_callback);

参数

数据集:  应连接到服务器的 exos_dataset_handle_t (以指针形式给出)

类型:用户可以订阅或发布数据集。

这里定义了数据集的 "方向"(EXOS_DATASET_PUBLISH 或 EXOS_DATASET_SUBSCRIBE),即从应用程序的角度来看,AR 中的 EXOS_DATASET_PUBLISH 数据集就是 Linux 中的 EXOS_DATASET_SUBSCRIBE 数据集,反之亦然。

可以定义双向数据集,如 EXOS_DATASET_PUBLISH + EXOS_DATASET_SUBSCRIBE。例如

 EXOS_ASSERT_OK(exos_dataset_connect(fill, EXOS_DATASET_PUBLISH, datasetEvent));
 EXOS_ASSERT_OK(exos_dataset_connect(config, EXOS_DATASET_PUBLISH + EXOS_DATASET_SUBSCRIBE, datasetEvent));

dataset_event_callback:处理数据集事件的回调函数(数据集事件处理程序)。

例如,可以为每个数据集注册单独的事件回调函数,也可以让多个数据集使用同一个事件回调函数:

 EXOS_ASSERT_OK(exos_dataset_connect(enable, EXOS_DATASET_PUBLISH, publishEvent));
 EXOS_ASSERT_OK(exos_dataset_connect(fill,EXOS_DATASET_PUBLISH,publishEvent));
 EXOS_ASSERT_OK(exos_dataset_connect(temp, EXOS_DATASET_SUBSCRIBE, statusEvent));
 EXOS_ASSERT_OK(exos_dataset_connect(delay,EXOS_DATASET_SUBSCRIBE,statusEvent));
 EXOS_ASSERT_OK(exos_dataset_connect(high,EXOS_DATASET_SUBSCRIBE,statusEvent));
 EXOS_ASSERT_OK(exos_dataset_connect(low,EXOS_DATASET_SUBSCRIBE,statusEvent));
 EXOS_ASSERT_OK(exos_dataset_connect(config,EXOS_DATASET_PUBLISH + EXOS_DATASET_SUBSCRIBE,configEvent));

连接数据集后,数据集会向数据模型注册其单独的回调,然后与数据 集消息路由器通信  并触发事件。


Connect a dataset to the Dataset Message Router and register an event callback

Call syntax

EXOS_ERROR_CODE exos_dataset_connect(exos_dataset_handle_t *dataset, EXOS_DATASET_TYPE type, exos_dataset_event_cb dataset_event_callback);

Parameters

dataset: The exos_dataset_handle_t that should be connected to the server (given as a pointer)

type: A user can subscribe or publish datasets.

Here, the "direction" of the dataset is defined (EXOS_DATASET_PUBLISH or EXOS_DATASET_SUBSCRIBE) as it is seen from the perspective of the application, meaning an EXOS_DATASET_PUBLISH dataset in AR would be an EXOS_DATASET_SUBSCRIBE dataset in Linux and vice versa.

It is possible to define bidirectional datasets, like EXOS_DATASET_PUBLISH + EXOS_DATASET_SUBSCRIBE. For example:

  EXOS_ASSERT_OK(exos_dataset_connect(fill, EXOS_DATASET_PUBLISH, datasetEvent));
  EXOS_ASSERT_OK(exos_dataset_connect(config, EXOS_DATASET_PUBLISH + EXOS_DATASET_SUBSCRIBE, datasetEvent));

dataset_event_callback: Callback function that handles dataset events (dataset event handler).

It is possible to register individual event callbacks for each dataset, or have a number of datasets using the same event callback, for example:

  EXOS_ASSERT_OK(exos_dataset_connect(enable, EXOS_DATASET_PUBLISH, publishEvent));
  EXOS_ASSERT_OK(exos_dataset_connect(fill, EXOS_DATASET_PUBLISH, publishEvent));
  EXOS_ASSERT_OK(exos_dataset_connect(temp, EXOS_DATASET_SUBSCRIBE, statusEvent));
  EXOS_ASSERT_OK(exos_dataset_connect(delay, EXOS_DATASET_SUBSCRIBE, statusEvent));
  EXOS_ASSERT_OK(exos_dataset_connect(high, EXOS_DATASET_SUBSCRIBE, statusEvent));
  EXOS_ASSERT_OK(exos_dataset_connect(low, EXOS_DATASET_SUBSCRIBE, statusEvent));
  EXOS_ASSERT_OK(exos_dataset_connect(config, EXOS_DATASET_PUBLISH + EXOS_DATASET_SUBSCRIBE, configEvent));

When a dataset is connected, it registers its individual callback to the datamodel - that in turn communicates with the Dataset Message Router and triggers events.