在 C SDK 中获取设备孪生 - Azure IoT 中心

Getting device twin in C Sdk - Azure IoT Hub

有没有办法使用 Azure SDK for C 从 Azure IoT-Hub 获取设备的设备孪生?据我所知,我可以使用适用于 NodeJS 的 Azure SDK 获得设备孪生。

在 nodejs 中我们这样做。

const Client = require('azure-iot-device').Client;
cosnt Protocol = require('azure-iot-device-mqtt').Mqtt;
var client = Client.fromConnectionString(connectionString, Protocol);
function main() {
    client.open(function (err) {
    //If connection is success
    client.getTwin();
    }
});

有什么方法可以获取设备的双胞胎数据并在 Azure SDK for C 中获取双胞胎变化通知,即双胞胎数据发生变化时的回调函数?

Is there any way to get the twin data for a device and get twinchange notification in Azure SDK for C i.e A callback function when there is a change in twin data?

是的,可以参考回调函数的例子Get updates on the device side:

static void deviceTwinCallback(DEVICE_TWIN_UPDATE_STATE update_state, const unsigned char* payLoad, size_t size, void* userContextCallback)
{
    (void)userContextCallback;

    printf("Device Twin update received (state=%s, size=%zu): %s\r\n", 
        MU_ENUM_TO_STRING(DEVICE_TWIN_UPDATE_STATE, update_state), size, payLoad);
}

也可以参考iothub_devicetwin_sample.c and iothub_device_client.c

Linux 上有一个示例,其中包含适用于 C 的 SDK,展示了如何处理设备孪生:https://github.com/Azure/azure-sdk-for-c/blob/main/sdk/samples/iot/docs/how_to_iot_hub_samples_linux.md#iot-hub-twin-sample