我正在尝试使用arduino board one执行以下操作:
制作授权画面(登录)。
如果客户输入正确的用户名和密码,则打开存储在SD卡中的htm文件。
以下是代码:
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 117);
EthernetServer server(80);
char header[500];
int bufferSize = 0;
File file;
void setup() {
Ethernet.begin(mac, ip);
server.begin();
Serial.println(Ethernet.localIP());
Serial.begin(9600);
}
void loop() {
EthernetClient client = server.available();
if (client) {
Serial.println("Nuevo Cliente");
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if(bufferSize < 500) header[bufferSize++] = c;
if (c == '\n' && currentLineIsBlank) {
'arduino:admin' (user:password)
Serial.println(header);
if(strstr(header, "YXJkdWlubzphZG1pbg==") != NULL) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("Reading SD");
if(strstr(header, "GET / HTTP/1.1")) {
file = SD.open("ftp.htm");
if (file) {
while(file.available()) {
client.write(file.read());
}
file.close();
}
break;
} else {
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("BLANK PAGE");
client.println("</html>");
}
} else {
client.println("HTTP/1.1 401 Unauthorized");
client.println("WWW-Authenticate: Basic realm=\"Secure\"");
client.println("Content-Type: text/html");
client.println();
client.println("<html><h1 style='text-align:center;color:red;'>Denegado<h1/></html>");
}
bufferSize = 0;
StrClear(header, 500);
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
Serial.println("client disconnected");
}
}
void StrClear(char *str, char length)
{
for (int i = 0; i < length; i++) {
str[i] = 0;
}
}
我现在面临的问题是当我插入micro SD卡时...我的IP地址变为255.255.255.255(我无法解释原因):
另一个问题是登录弹出窗口有效,如果我有外面的micro SD卡。 。 。这很糟糕,因为我想从SD卡打开我的“迷你服务器”的主要网页。
if(strstr(header, "YXJkdWlubzphZG1pbg==") != NULL) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("Reading SD");
if(strstr(header, "GET / HTTP/1.1")) {
file = SD.open("ftp.htm");
if (file) {
while(file.available()) {
client.write(file.read());
}
file.close();
}
break;
} else {
client.println("<!DOCTYPE HTML>");
..........
..........
如何在卡上打开网络文件?如何在插入卡时解决IP问题?