//发送数据至Mqtt服务器中
char* substri_c(char* ch, uint32_t pos, uint32_t len) {
char* x = ch;
char* subch = (char*)calloc(sizeof(char), len + 1);
x = x + pos;
for (uint32_t j = 0; j < len; j++) {
subch[j] = *(x++);
}
subch[len] = '\0';
return subch;
}
void sendData(char *data) {
char* subuffer;
uint8_t cut = 128;
uint32_t sendLen = strlen(data);
if (sendLen > cut) {
//分包发
uint8_t cutlen = cut;
uint16_t count = sendLen / cut;
unsigned long UDelay = millis();
client.beginPublish(MNUM, sendLen, false);
for (uint16_t i = 0; i < count + 1; i++) {
if (millis() - UDelay > 5000)
break;
if (i == count)
cutlen = sendLen % cut;
else
cutlen = cut;
subuffer = substri_c(data, i * cut, cutlen);
// Serial.printf("%d:%s\r\n",cutlen,subuffer);
client.print(subuffer);
free(subuffer);
}
bool Ret = client.endPublish();
}
else {
//直接发
subuffer = substri_c(data, 0, sendLen);
client.publish(MNUM, subuffer);
}
memset(data, '\0',sendLen);
}