Bonjour a tous
j ai chargé le nouvel éditeur arduino 2.0.
si je colle une copie de code copiée depuis un encadrement de page web vers l éditeur Arduino 2.0, il apparaît des petits carrés représentant des caractères non imprimables dans le sketch, qu il faut supprimer un a un, sous peine d erreur de compilation
je me doute qu il y a une autre façon de procéder mais je n ai pas trouvé.
merci de votre réponse
bien cordialement
roland
He's saying he installed version 2.0, but he's having the problem that if he copies and pastes something off a web site into the editor, there are non-printing characters which show up as little squares, and he has to remove them one by one. He thinks there must be an easier way, but he hasn't managed to find it.
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ j’ai déplacé votre post vers le forum francophone.
Merci de prendre en compte les recommandations listées dans “Les bonnes pratiques du Forum Francophone”
Bonjour rolandbreche
As-tu un lien sur un programme qui pose ce genre de problème?
Cordialement
jpbbricole
D'accord. Merci pour l info
bonjour jpbbricole,
il ne s agit pas d un programme particulier.
par exemple sur cette copie d écran on peut voir du code qu on peut copier-coller mais on embarque en même temps des caractères non affichables.
la page web d origine :
et le résultat dans l éditeur de la copie du code.
et le résultat dans l éditeur
merci de ton aide
cordialement.
si vous faites bien attention à ne sélectionner que le texte du bloc et ne pas prendre des éléments HTML en plus sur la page, ça fonctionne sans souci pour moi (sur Mac au moins)
voici le code copié-collé
#include "WiFi.h"
#include "ESPAsyncWebServer.h"
#include <Arduino.h>
#include <Wire.h>
#include "Adafruit_SHT31.h"
// Replace with your network credentials
const char* ssid = "BYNARK";
const char* password = "bynark@123";
Adafruit_SHT31 sht31 = Adafruit_SHT31();
// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
String readSHT31Temperature(){
float t = sht31.readTemperature();
if (! sht31.begin(0x44)) // Set to 0x45 for alternate i2c addr
{
Serial.println("SHT31 test");
while (1) delay(1);
}
if (isnan(t)) {
Serial.println("Failed to read temperature!");
return "--";
}
else {
Serial.print("");
Serial.print("Temperature: ");
Serial.println(t);
return String(t);
}
}
String readSHT31Humidity() {
float h = sht31.readHumidity();
if (isnan(h)) {
Serial.println("Failed to read Humidity!");
return "--";
}
else {
Serial.print("Humidity: ");
Serial.println(h);
Serial.println("");
return String(h);
}
}
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
<style>
html {
font-family: Arial;
display: inline-block;
margin: 0px auto;
text-align: center;
}
h2 { font-size: 3.0rem; }
p { font-size: 3.0rem; }
.units { font-size: 1.2rem; }
.sht31-labels{
font-size: 1.5rem;
vertical-align:middle;
padding-bottom: 15px;
}
</style>
</head>
<body>
<h2>ESP32 SHT31 Web Server</h2>
<p>
<i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
<span class="sht31-labels">Temperature</span>
<span id="temperature">%TEMPERATURE%</span>
<sup class="units">°C</sup>
</p>
<p>
<i class="fas fa-tint" style="color:#00add6;"></i>
<span class="sht31-labels">Humidity</span>
<span id="humidity">%HUMIDITY%</span>
<sup class="units">%</sup>
</p>
</body>
<script>
setInterval(function ( ) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("temperature").innerHTML = this.responseText;
}
};
xhttp.open("GET", "/temperature", true);
xhttp.send();
}, 10000 ) ;
setInterval(function ( ) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("humidity").innerHTML = this.responseText;
}
};
xhttp.open("GET", "/humidity", true);
xhttp.send();
}, 10000 ) ;
</script>
</html>)rawliteral";
// Replaces placeholder with sht31 values
String processor(const String& var){
//Serial.println(var);
if(var == "TEMPERATURE"){
return readSHT31Temperature();
}
else if(var == "HUMIDITY"){
return readSHT31Humidity();
}
return String();
}
void setup(){
// Serial port for debugging purposes
Serial.begin(115200);
// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
// Print ESP32 Local IP Address
Serial.println(WiFi.localIP());
// Route for root / web page
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/html", index_html, processor);
});
server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/plain", readSHT31Temperature().c_str());
});
server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/plain", readSHT31Humidity().c_str());
});
// Start server
server.begin();
}
void loop(){
}
c'est surtout un problème de la page d'origine qui ne propose pas, comme le font souvent les sites web bien pensés pour le code, d'offrir la possibilité de télécharger la version "brute" du code.
Bonjour
Itou sous Windows 11
Cordialement
jpbbricole
Tout va bien sous Linux.
Il n'est pas impossible que le problème soit situé entre la chaise et le clavier.
Blague à part, bien s'assurer que la sélection commence à l'intérieur du cadre sur le #include et s'arrête sur le dernier caractère du code
merci a tous pour vos réponses, en particulier fdufnews bien sur
hélas comme je le précisais, le collage ne fonctionne pas dans l éditeur de la version 2.03 alors qu il fonctionne dans l éditeur 1.8 . je viens encore d essayer avec le même copier, donc sans erreur possible de manip. du moins chez moi le problème reste entier.
avez bien essayé dans l éditeur arduino 2.03 ?
windows 11 aussi.
Mon test a été fait avec la version 2.03 sur un Mac
Aussi pour qualifier votre message, prenez ce bout de code
void setup() {}
void loop() {}
En cliquant sur le petit bouton de copie du code en haut à droite du bloc quand votre souris est sur le bloc de code et collez le dans l’IDE
c est fait . sans aucun problème dans les deux IDEs
le souci est donc plus dans la façon dont vous copiez le code sur votre page en question
il faut vraiment faire très attention à rester dans la frame.
Les carrés rouge dans la copie d'écran que tu donnes au début correspondent à des espaces dans le code source.
Quels messages d'erreur obtiens-tu lors de la compilation?
Pourrais-tu mettre en pièce jointe le fichier qui génère ces erreurs. Pour que l'on voit s'il y a des caractères étranges dans le code copié.
merci . oui bien sur . avant d ouvrir le sujet j y ai veillé.
sketch_probleme_copy_20221212131305.ino (4,2 Ko)
erreurs.cpp (49,9 Ko)
le symbole est U+00a0
le symbole représenté par le carre rouge
jml
bonjour,
mais dans votre exemple, il y a le petit icone dans le coin droit permettant de charger le code et qui n existe pas dans ma page web.
oui, c'est ce que je dis, c'est une page web "pourrie", pas un souci de l'IDE... (mais en faisant attention, au moins sur Mac, il n'y a aucun souci pour la copie dans l'IDE 2.03 ou 1.8.x)