簡體   English   中英

如何在JavaScript中從一個本地IP到另一個本地IP檢索平面文本數據?

[英]How can I retrieve plane text data from one local ip to another in javascript?

我使用ESP32 Wifi模塊作為主機來托管一個網頁,該網頁將表中多個二進制數據點的值顯示為OKFAILED 我需要讓該設備從本地IP上的另一個ESP32客戶端檢索數據,即192.168.138.50/readVal1此地址將僅顯示OK文本或OKFAILED 我想將此值顯示在我的主模塊生成的表中。 我應該怎么做呢?

我已經嘗試在Arduino代碼中使用HTTP get請求,如下所示。

void runTest6(){
    String payload;
    HTTPClient http;
    http.begin("192.168.137.50/readBatt1");

    int httpCode = http.GET();
    if(httpCode > 0) {
        payload = http.getString();
        Serial.println(payload);
    }else{
        Serial.println("HTTP request error");
    }
    http.end();
    String batt6val = payload;
    server.send(200, "text/plane", batt6val);
}

這是我的Javascript,用於處理更新\\

function getData(){
    try{
        console.log("Getting Data...");
        for(var i = 1;i<=NUMOFUNITS;i++){
            (function (i){
                setTimeout(function () {
                    console.log("(debug msg)in loop #: " + i)
                        var xhttp = new XMLHttpRequest();
                        var current = "batt" + i + "val";
                        var dataRead = "readBatt" + i;
                        xhttp.onreadystatechange = function(){
                            if (this.readyState == 4 && this.status == 200){
                                console.log("updating innerHTML for data value: " + i);
                                document.getElementById(current).innerHTML = this.responseText;
                            }else if(this.readyState == 4 && this.status == 404){
                                console.log("no battery @ " + i);
                                document.getElementById(current).innerHTML = "None found";
                            }
                        };
                        xhttp.open("GET", dataRead, true);
                        xhttp.send();
                        if(i == 1){
                            updateTime();
                        console.log("Updated times.")
                        }   
                    }, 400*i);
                })(i);
            };
            console.log("Data update complete.");
        }
        catch(err){
            alert(err.name);
            throw err;
            getData(); //try to get data again 
        }
        finally{
            console.log("DONE");
        }
    }

使用和HTTP服務器,我能夠在ESP32之間發送信息。 使用WebServer,我已設置server.on(“ / status / {}”,sendData); 其中{}包含pathArg,也就是代表要查詢哪些數據的數字。 函數senData()采用pathArg並按以下方式發送適當的數據。

void sendData(){
    String battString = server.pathArg(0);
    Serial.println("Sending Data... PathArg= " + battString);
    int battNum = battString.toInt();
    int arrayNum = battNum - 1;
    server.send(200, "text/plane", battStatus[arrayNum]);
}

在這里,一個名為battStatus的數組保存了每個數組的狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM