Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Arduino中从SD卡打开网页?_Arduino_Sd Card_Arduino Uno - Fatal编程技术网

如何在Arduino中从SD卡打开网页?

如何在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

我正试图用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(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。无法想象在这种情况下缓冲区的行为是可预测的