У меня есть таблица в базе данных MySQL на моем локальном сервере, и мне удалось отобразить это значение, используя скрипт PHP. Вот скрипт PHP (я назвал его get. php, и он находится прямо в моей папке htdocs в xammp).
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydb";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT reading FROM myread";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo $row["reading"]."<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
, и я также попытался передать эти данные в esp8266, используя код ниже
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <ESP8266HTTPClient.h>
int status = WL_IDLE_STATUS;
char server[] = "112.135.74.254";
char ssid[] = "MYWIFI";
char pass[] = "123654MY";
const int httpPort = 80;
float line;
float mililine;
WiFiClient client;
void setup() {
Serial.begin(9600);
while (status != WL_CONNECTED) {
Serial.print("Attempting to connect to Network named: ");
Serial.println(ssid);
status = WiFi.begin(ssid, pass);
delay(10000);
}
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
IPAddress ip = WiFi.localIP();
IPAddress gateway = WiFi.gatewayIP();
Serial.print("IP Address: ");
Serial.println(ip);
if (!client.connect(server, httpPort)) {
Serial.println("connection failed");
return;
}
String url = "/get.php";
Serial.print("requesting URL: ");
Serial.println(url);
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + server + "\r\n" +
"User-Agent: BuildFailureDetectorESP8266\r\n" +
"Connection: close\r\n\r\n");
Serial.println("request sent");
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
Serial.println("headers received");
break;
}
}
Serial.println("reply was:");
Serial.println("==========");
Serial.println(line);
Serial.println("==========");
Serial.println("closing connection");
mililine= line * 0.001;
Serial.println("Final value is - ");
Serial.println(mililine);
}
void loop() {
}
Но проблема в том, что даже в моей таблице базы данных есть значение (значение 55,25, я имею в виду, что оно также имеет десятичные разряды). Последовательный монитор отображает вывод только как ноль. Вот серийный номер Arduino вывод на монитор
⸮_⸮⸮=s⸮⸮Attempting to connect to Network named: MYWIFI
Attempting to connect to Network named: MYWIFI
Attempting to connect to Network named: MYWIFI
SSID: MYWIFI
IP Address: 192.168.1.102
requesting URL: /get.php
request sent
headers received
reply was:
==========
0.00
==========
closing connection
Final value is -
0.00
Когда я запускаю скрипт get. php в браузере, он показывает мне значение PHP скрипт показывает значение в браузере . Поэтому мне нужно передать это отображаемое значение на последовательный монитор Arduino. Как я упоминал выше, вместо этого значения отображается ноль. Любая помощь, пожалуйста ???