esp32IP = '192.168.1.52';
udpObj = udpport("datagram", "IPV4");
configureCallback(udpObj,"datagram",1,@readMyData)
command = struct('command', 'collect_data', 'length', LengthSample, 'frequency', Freq);
jsonCommand = jsonencode(command);
write(udpObj, jsonCommand, "string", esp32IP, esp32Port);
disp(['command sent out: ', jsonCommand]);
buffer = erase(buffer, "END");
receivedData = jsondecode(buffer);
value = receivedData.values;
time = (0:length(value)-1) * samplingInterval;
plot(time, value, 'LineWidth', 1.5);
title('Received Signal');
function readMyData(u, ~)
bufferTotal=bufferTotal+1;
packet = read(u, 1, "string");
buffer = buffer + string(packet.Data);
if contains(buffer, "END")
disp("Found 'END',whole data ");
const char* ssid = "ws0922902";
const char* password = "13201604223";
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.println("conneting with WiFi ...");
Serial.println("WiFi is connected");
Serial.println(WiFi.localIP());
Serial.println("UDP has started");
udp.onPacket([](AsyncUDPPacket packet) {
Serial.print("command received: ");
Serial.println((char*)packet.data());
StaticJsonDocument<200> doc;
DeserializationError error = deserializeJson(doc, packet.data());
Serial.println("JSON format failure");
String command = doc["command"];
int length = doc["length"];
int frequency = doc["frequency"];
if (command == "collect_data") {
for (int i = 0; i < length; i++) {
data[i] = sin(2 * PI * frequency * (i * 0.005)); // 5 ms sample
StaticJsonDocument<2048> response;
//JsonArray timeArray = response.createNestedArray("time");
JsonArray valuesArray = response.createNestedArray("values");
for (int i = 0; i < length; i++) {
valuesArray.add(data[i]); //
serializeJson(response, responseData);
packet.printf(responseData.c_str());
Serial.println("data has sent out");
Serial.printf(responseData.c_str());