如何在Arduino中从SD卡打开网页?
我正试图用arduino板做以下工作:如何在Arduino中从SD卡打开网页?,arduino,sd-card,arduino-uno,Arduino,Sd Card,Arduino Uno,我正试图用arduino板做以下工作: 制作一个授权屏幕(登录) 如果客户端输入正确的用户和密码,则打开存储在SD卡中的htm文件 代码如下: #包括 #包括 #包括 字节mac[]={ 0xDE、0xAD、0xBE、0xEF、0xFE、0xED }; ip地址ip(192、168、1117); 以太网络服务器(80); 字符头[500]; int bufferSize=0; 文件; 无效设置(){ 以太网开始(mac,ip); server.begin(); Serial.println(Et
#包括
#包括
#包括
字节mac[]={
0xDE、0xAD、0xBE、0xEF、0xFE、0xED
};
ip地址ip(192、168、1117);
以太网络服务器(80);
字符头[500];
int bufferSize=0;
文件;
无效设置(){
以太网开始(mac,ip);
server.begin();
Serial.println(Ethernet.localIP());
Serial.begin(9600);
}
void循环(){
EthernetClient=server.available();
如果(客户){
序列号:println(“新客户”);
布尔currentLineIsBlank=true;
while(client.connected()){
if(client.available()){
char c=client.read();
如果(bufferSize<500)头[bufferSize++]=c;
如果(c='\n'&¤tLineIsBlank){
“arduino:admin”(用户:密码)
Serial.println(标题);
if(strstr(标题“YXJkdWlubzphZG1pbg=”)=NULL){
client.println(“HTTP/1.1200ok”);
client.println(“内容类型:text/html”);
client.println(“连接:关闭”);
客户。println(“阅读SD”);
if(strstr(头,“GET/HTTP/1.1”)){
file=SD.open(“ftp.htm”);
如果(文件){
while(file.available()){
client.write(file.read());
}
file.close();
}
打破
}否则{
客户。println(“”);
客户。println(“”);
client.println(“空白页”);
客户。println(“”);
}
}否则{
client.println(“HTTP/1.1”);
println(“WWW-Authenticate:Basic-realm=\“Secure\”);
client.println(“内容类型:text/html”);
client.println();
客户:println(“Denegado”);
}
缓冲区大小=0;
StrClear(收割台,500);
打破
}
如果(c=='\n'){
currentLineIsBlank=true;
}
如果(c!='\r'),则为else{
currentLineIsBlank=false;
}
}
}
延迟(1);
client.stop();
Serial.println(“客户端断开”);
}
}
void StrClear(字符*str,字符长度)
{
for(int i=0;i
我现在面临的问题是当我插入micro SD卡时。。。我的IP地址更改为255.255.255.255(我无法解释原因):
另一个问题是,登录弹出窗口工作,如果我有微型SD卡在外面。这很糟糕,因为我想从SD卡打开我的“迷你服务器”的主页
if(strstrstr(头,“YXJkdWlubzphZG1pbg=”)=NULL){
client.println(“HTTP/1.1200ok”);
client.println(“内容类型:text/html”);
client.println(“连接:关闭”);
客户。println(“阅读SD”);
if(strstr(头,“GET/HTTP/1.1”)){
file=SD.open(“ftp.htm”);
如果(文件){
while(file.available()){
client.write(file.read());
}
file.close();
}
打破
}否则{
客户。println(“”);
..........
..........
然后如何打开我卡上的web文件?插入卡时如何解决IP问题?所说的“IP方向”是指“IP地址”?您没有显示打印地址的代码,因此很难进行此操作。有趣的是,您只打印四个值中的三个,不过……好的,让我更改它,然后查看设置()方法,您将看到它。(Serial.println(Ethernet.localIP());@unwindln您知道吗,您可以从串行监视器复制粘贴?这是拍摄屏幕可怕照片的更好方法。为什么在Serial.begin()之前调用Serial.println这可能解释了为什么没有返回完整的IP。无法想象在这种情况下缓冲区的行为是可预测的