<< 点击显示目录 >> 主页 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
EXOS_ERROR_CODE exos_dataset_connect(exos_dataset_handle_t *dataset, EXOS_DATASET_TYPE type, exos_dataset_event_cb dataset_event_callback);
•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.