Как отправить сообщение Azure Cloud на устройство в формате IOTHUBMESSAGE_STRING? - PullRequest
0 голосов
/ 30 октября 2019

Я использую Azure IOT SDK, пытаюсь отправить сообщение Cloud to Device со строкой тела и получить его в SDK. Независимо от того, что я отправляю, SDK говорит, что это в формате байтового массива. Как отправить строку вместо байтового массива из облака на SDK моего устройства?

Вот пример кода, которому я следовал: https://github.com/Azure/azure-iot-sdk-c/blob/master/iothub_client/samples/iothub_ll_c2d_sample/iothub_ll_c2d_sample.c

Это мой обратный вызов:

IOTHUBMESSAGE_DISPOSITION_RESULT CAzureProcessor::ReceiveMessageCallback(IOTHUB_MESSAGE_HANDLE message, void* userContextCallback)
{
    CMyObject* pObject = (CMyObject*)userContextCallback;
    if (pObject != NULL)
    {
       IOTHUBMESSAGE_CONTENT_TYPE content_type = IoTHubMessage_GetContentType(message);
        if (content_type == IOTHUBMESSAGE_STRING)
       {
            //do stuff
       }
    }
    return IOTHUBMESSAGE_ACCEPTED;
}

Моя проблема в том, что я никогда не добираюсь до 'dostuff', потому что IoTHubMessage_GetContentType всегда возвращает IOTHUBMESSAGE_BYTEARRAY, когда я отправляю сообщение C2D со страницы «Сообщение на устройство» на портале Azure или из обозревателя устройств. Как мне отправить строку из любой из этих двух точек?

Если это поможет, я пытаюсь отправить эту строку:

[{"devicename":«Мой ROC», «псевдоним»: «высота», «значение»: 100}]

1 Ответ

0 голосов
/ 12 ноября 2019

Не знаю, проверяли ли вы этот пост, потому что я использую вариант того же решения, что и для меня, и он хорошо работает для связи C2D.

Отправка сообщений облака на устройство с помощью IoT DevKitи Azure IoT Hub - код устройства

Надеюсь, это поможет.

...