Веб-сервер 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-экраном
- Ограничения подключения ко многим ардуино через Ethernet?
То, что вы подали, - это не 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