我正在使用一个msp430f5229发布数据,并且尝试进行序列化。将从发布msp接收的数据打印到订阅的msp。
我尝试了各种打印方法,但不知道如何在连接到订户后从订户中提取数据。我评论了我认为仅在循环内发布才需要的部分。
PubSubClient client(server, 1883, callback, wclient);
void callback(char* ScannerOut, byte* payload, unsigned int length){
// Handle callback here
}
void setup()
{
//Initialize serial and wait for port to open:
Serial.begin(9600);
Serial.println("Start WiFi");
WiFi.begin(WIFI_SSID, WIFI_PWD);
while(WiFi.localIP() == INADDR_NONE) {
Serial.print(".");
delay(300);
}
Serial.println("");
printWifiStatus();
}
void loop()
{
// read the input on analog pin:
**//int sensorValue = analogRead(24);
**//Serial.println(sensorValue);
// convert into to char array
**//String str = (String)sensorValue;
**//int str_len = str.length() + 1; // Length (with one extra character
**//for the null terminator)
**//char char_array[str_len]; // Prepare the character array (the buffer)
**//str.toCharArray(char_array, str_len); // Copy it over
// publish data to MQTT broker
if (client.connect("LaunchPadClient")) {
**//client.publish("ScannerOut", char_array);
client.subscribe("ScannerOut");
Serial.println("Subscription successful!");
client.disconnect();
}
}
我正在连接和订阅与msp发布相同的主题,但我想进行序列化。将该主题的输出打印到第二个msp中。
答案 0 :(得分:0)
订户通过void callback()
接收其数据,该数据通常在client.read()
函数之内被调用。
所以您的callback()可能看起来像
void callback(char* ScannerOut, byte* payload, unsigned int length){
Serial.print("%s", payload);
}
client.read()
在您的循环中丢失。请仔细阅读您的MQTT客户端文档,以了解如何接收来自代理的消息。
另一点,请不要在client.subscribe("ScannerOut");
之后立即与代理断开连接。