Я использую 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}]