MQTTAsync_responseOptions sendOptions = MQTTAsync_responseOptions_initializer;
MQTTAsync_message pubMsg = MQTTAsync_message_initializer;
int rc = 0;
char msgSend[48] = {0};
json_object *pValue = NULL;
json_object *pObjectSerPro = NULL;
int waitCount = 0;
if (pLoopCount == NULL)
{
printf("(%s) This is an empty data.\n", __FUNCTION__);
return DEAL_ERROR;
}
while(!ConnectedFlag && ++waitCount<WAIT_COUNT);
if (waitCount >= WAIT_COUNT)
{
printf("(%s) Failed to wait for the connection.\n", __FUNCTION__);
return DEAL_ERROR;
}
/*
{
"loop1_count": 1,
"loop2_count": 2
}
*/
pObjectSerPro = json_object_new_object();
pValue = json_object_new_int(1);
json_object_object_add(pObjectSerPro, LOOP1_COUNT, pValue);
pValue = json_object_new_int(2);
json_object_object_add(pObjectSerPro, LOOP2_COUNT, pValue);
memset(msgSend, 0, 48);
sprintf(msgSend, "%s", json_object_to_json_string(pObjectSerPro));
json_object_put(pObjectSerPro);
sendOptions.onSuccess = onSend;
sendOptions.context = GlobalClient;
pubMsg.payload = msgSend;
pubMsg.payloadlen = strlen(pubMsg.payload);
pubMsg.qos = 1;
pubMsg.retained = 1;
if ((rc = MQTTAsync_sendMessage(GlobalClient, ORENA_SMARTFIRE_EC_RESPONSE_LOOP_REGISTER, &pubMsg,
&sendOptions)) != MQTTASYNC_SUCCESS)
{
printf("(%s) Failed to start sendMessage, return code %d\n", __FUNCTION__, rc);
return DEAL_ERROR;
}
return DEAL_OK;
Я намерен инкапсулировать сообщение JSON ( {"loop1_count": 1, "loop2_count": 2} ) для публикации, мой вопрос: когда я изменил этот код с CHAR msgSend [48] = {0}; to CHAR msgSend [40] = {0} ;, Я обнаружил код ошибки возврата -8, но я посмотрел на данные и сказал, что проблема с возвратом -8 возникла из-за проблемы с версией, почему? (#define MQTTASYNC_BAD_STRUCTURE -8 - Код возврата: параметр структуры не имеет правильного идентификатора и номера версии)