Веб-сервер Ethernet Shield - Не удается найти index.htm файл
я только что получил EthernetShield и посмотрел учебник о том, как разместить html-страницу с его помощью, но я не могу найти свою html-страницу на SD-карте.
#include<SPI.h>
#include<Ethernet.h>
#include<SD.h>
byte mac[] = {0xA8, 0x61,0x0A, 0xAE, 0x3A, 0xC4 };
EthernetServer server(80);
File webPage;
void setup() {
Ethernet.begin(mac);
server.begin();
Serial.begin(9600);
Serial.println(Ethernet.localIP());
Serial.println("Initializing SD card...");
if(!SD.begin(4)){
Serial.println("ERROR - SD card initialization failed!");
return;
}
Serial.println("SUCCESS - SD card initialized.");
if(!SD.exists("index.htm")){
Serial.println("ERROR - Can't find index.htm file!");
}
Serial.println("SUCCESS - Found index.htm file.");
}
void loop() {
EthernetClient client = server.available();
if(client){
boolean currentLineIsBlank = true;
while(client.connected()){
if(client.available()){
char c = client.read();
if(c == '\n' && currentLineIsBlank){
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
webPage = SD.open("index.htm");
if(webPage){
while(webPage.available()){
client.write(webPage.read());
}
webPage.close();
}
break;
}
if(c == '\n'){
currentLineIsBlank = true;
}
else if(c != '\r'){
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}

Когда я сохраняю HTML-файл, я не могу сохранить его в формате .htm

@antisocialkid, 👍-1
Обсуждение1 ответ
Лучший ответ:
Windows скрывает расширение от вас.
Файл, который вы показали, либо index.htm или index.html. Если это последнее, вы можете изменить параметр Windows на "показывать расширения для известных типов файлов" или изменить скетч, чтобы он использовал index.html вместо `index.htm . Я бы выбрал последнее, так как оно самое простое.
EDIT: библиотека SD, похоже, не любит расширения файлов длиной более 3 символов. Поэтому изменение кода для использования "index.html - не работает.
Я изменил скетч, но он все равно не работает [ошибка] (https://imgur.com/a/jcH9Je2 ), @antisocialkid
Вы изменили if(!SD.exists("index.htm ")){ to if(!SD.exists("index.html ")){как хорошо?, @Gerben
да, все еще не работает, @antisocialkid
Я предполагаю, что с этим файлом происходит что-то странное. Как вы его создали? Что вы увидите, если щелкните файл правой кнопкой мыши и выберите пункт свойства? Особенно, что он говорит после "типа файла"; какое расширение файла находится между фигурными скобками?, @Gerben
Тип файла: Microsoft Edge HTML Document (.html), и я создал его в коде Visual Studio. (Сохранить как> индекс (с расширением HTML), @antisocialkid
Странно. Файл выглядит нормально, но почему-то SD-библиотека не может найти его на SD-карте., @Gerben
кроме того, SD-карта уже имеет формат FAT32, @antisocialkid
Может быть, попробовать сделать это с помощью файла ".txt". У меня заканчиваются идеи., @Gerben
наконец-то Windows позволила мне изменить файл расширения на ".htm", и теперь он работает!, @antisocialkid
. Я думаю, что это связано с соглашением [DOS 8.3 filename convention] (https://en.wikipedia.org/wiki/8.3_filename ). Ему не нравятся расширения файлов длиннее (/other) 3., @Gerben
@antisocialkid если ответ был полезен для вас, вы должны проголосовать за него. Если это ответ на ваш вопрос, вы должны его "принять"., @timemage
Возможно, стоит добавить, что он, вероятно, доступен под своим коротким названием, которое, скорее всего, ИНДЕКС~1.HTM , @timemage
- Подключение Arduino ethernet shield (ip-адрес - 0.0.0.0)
- Разбор HTTP с аутентификацией в Arduino + Ethernet Shield
- Как подключить устройство SPI к плате Etherntet на Arduino Uno
- Отправка буквы за буквой на ЖК-дисплей, однако дисплей знает полную строку?
- связь между двумя arduino с помощью ENC28J60?
- Два порта на Uno с Ethernet-экраном
- Ethernet Shield не работает с TFT-экраном
- Отправить строку через текстовое поле веб-сервера без использования SD-карты?
То, что вы подали, - это не 369 байт?, @timemage
Вас просто смущает упоминание о "Microsoft Edge"?, @timemage
@timemage нет, это не так, @antisocialkid
Сообщается, что в файле содержится 369 байт. Итак, что же содержит файл, если не то, что вы хотели?, @timemage
@timemage файл содержит только HTML-код, вы можете увидеть скриншот моей ошибки ниже, в разделе ответов., @antisocialkid
Ответы, которые вы даете, не кажутся ужасно связанными с заданными вопросами, и я не знаю, что еще я могу сказать или попросить, чтобы помочь вам, кроме этого: ваш вопрос * нуждается в уточнении *. Дополнительная информация, которую вы предоставляете, должна быть отредактирована в вашем вопросе. Здесь недостаточно информации, чтобы я подумал, что то, что вы видите, неожиданно., @timemage
@timemage Я новичок и не могу сказать, что очень хорошо понимаю, в чем проблема с размером файла. Я просто создал html-файл с простой страницей, а затем загрузил файл на SD-карту. Когда я загружаю код в arduino, вы также можете видеть на картинке, что он не читает мой файл., @antisocialkid
Привет @antisocialkid и добро пожаловать на Arduino Stack Exchange. Было бы очень полезно, если бы вы могли добавить скриншот (или исходный текст) того, что находится внутри
index.htm - файл на SDкарте. Для этого вставьте SD-карту в компьютер и откройте `index.htm - файл в текстовом редакторе вроде Блокнота., @sa_leinad