小题大做之远程LED控制-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: kevinzhang19701

小题大做之远程LED控制

[复制链接]
发表于 2016-2-2 13:04 | 显示全部楼层
谢谢楼主分享,么么哒
 楼主| 发表于 2016-2-2 15:16 | 显示全部楼层
苍穹绝音 发表于 2016-2-2 13:04
谢谢楼主分享,么么哒

发表于 2016-2-26 21:11 | 显示全部楼层
大哥,看不到代码。。。不知道站内消息在哪里
 楼主| 发表于 2016-2-29 09:04 | 显示全部楼层
965728310 发表于 2016-2-26 21:11
大哥,看不到代码。。。不知道站内消息在哪里

代码,可以参考下列链接。如有问题,请及时联系我。

http://www.dfrobot.com.cn/community/thread-10590-1-1.html
发表于 2016-8-17 00:55 | 显示全部楼层
老师老师,我啊,就差最后一步 了,那个myservlet2是不是有问题啊,我按照您的代码稍微改了一下,然后在浏览器里打开了servlet2,并且网页上正确的显示了最新的A4 A5的值,但是 到 arduino板子那里就不行了,client.avaliable();返回值是零,板子连接上了但是什么也没有收到,板子发出的查询请求在服务器那里有反应的。但是板子什么也没有收到,我很苦恼,我研究您的代码有一个星期了,中间从什么也不知道的小白,一路自学直到能勉强看懂您的代码实在是不容易。就差这一步就能实现您的这个教程了,暑假快开学了,我想赶在开学之前搞定它,请老师帮帮忙吧,如果方便的话,你能不能看看我的代码呢?看看是不是我哪里改坏了?
发表于 2016-8-17 08:28 | 显示全部楼层
老师你看,我对您的myservlet2代码做出的改动只是改了一下名字(改成了responseServlet),然后砍掉了两个灯,只剩两个灯,增加了两行声明数据库的代码,其中我最有疑问的是 那行 response.setContenType("text/text");  为甚么我只见过 "text/html",我查了方法的文档貌似没找到“text/text”作为参数的呀?[mw_shl_code=java,true] protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        String a2 = "0";
        String a3 = "0";
        String n  = "0";
        
        response.setContentType("text/text");
        try (PrintWriter out1 = response.getWriter())
        {
            Connection conn = null;
            Statement stmt = null;
            ResultSet rs1 = null;
            int s = 0;
            
            try
            {
                    Class.forName("com.mysql.jdbc.Driver");
                            System.out.println("成功加载数据库");
                conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/mydata?" +
                                   "user=root&password=521314");
                stmt = (Statement) conn.createStatement();
                System.out.println("==");
                System.out.println("查询最后一条记录...");
                rs1 = stmt.executeQuery("SELECT * FROM t1 ORDER BY aid DESC LIMIT 1;");
               
                while(rs1.next())
                {
                    n = rs1.getString(2);
                    if (n.equals("1"))
                    {
                        a2 = "1";
                    }
                    else
                    {
                        a2 = "0";
                    }
                    n = rs1.getString(3);
                    if (n.equals("1"))
                    {
                        a3 = "1";
                    }
                    else
                    {
                        a3 = "0";
                    }
                  
                }
            }
            catch (SQLException ex)
            {
                System.out.println("Error in connection: " + ex.toString());
                System.out.println("SQLException: " + ex.getMessage());
                System.out.println("SQLState: " + ex.getSQLState());
                System.out.println("VendorError: " + ex.getErrorCode());
            } catch (ClassNotFoundException e) {
                                // TODO 自动生成的 catch 块
                                e.printStackTrace();
                        }
            
            /* TODO output your page here. You may use following sample code. */
            //out1.println("<!DOCTYPE html>");
           // out1.println("<html>");
           // out1.println("<head>");
          //  out1.println("<title>Servlet myservlet2</title>");
           // out1.println("<meta charset=\"UTF-8\">");
           // out1.println("</head>");
           // out1.println("<body>");
            out1.println("A2=" + a2 + ",A3=" + a3 );
           // out1.println("</body>");
           // out1.println("</html>");
        
        }
    }
   
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                processRequest(request,response);
        }

        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // TODO Auto-generated method stub
               
                processRequest(request,response);

        }
        public String getServletInfo() {
        return "Short description";
    }// </editor-fold>[/mw_shl_code]
就这个servlet的运行结果来看,它成功显示了当前数据库里的小灯信息,然而我的板子没有收到啊。。。。
我再把我的板子的代码贴出来,也是做了改动(简化)的
[mw_shl_code=cpp,true]#include <SPI.h>
#include <Ethernet.h>
byte mac[]    = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress dnserver(192, 168, 0,105);
IPAddress     ip(192, 168,0,111);
EthernetClient client;
char c;
String result;
void setup() {
  Serial.begin(9600);
  Ethernet.begin(mac, ip);
  delay(3000);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  Serial.println("Ethernet connecting...");

}

void loop() {
  if (client.connect(dnserver, 80))
  {
      Serial.println("Connected");
      client.println("POST http://192.168.0.105:80/remoteControlByYuancong/ResponseServlet HTTP/1.1");
      client.println("Host:192.168.0.105");
      client.println();
      Serial.println(client.available());
       while(client.available())
       {
        c = client.read();
        result += c;
       }
       Serial.println("==");
       Serial.println(result.substring(0,8));
      if (result.substring(0,3).equals("A2=1"))
      {
        digitalWrite(2, HIGH);
      }
      else
      {
        digitalWrite(2, LOW);
      }
      if (result.substring(5,8).equals("A3=1"))
      {
        digitalWrite(3, HIGH);
      }
      else
      {
        digitalWrite(3, LOW);
      }
      
   
   Serial.println("end");
    client.stop();
    result = "";
  }


  else
  {
    Serial.println("connection failed");
  }


}[/mw_shl_code]
串口监视器输出的信息是是连接成功然而输出的client.avaliable();的返回值为0.
板子什么也没收到,跪求老师解答,您的帖子是两年前的,希望您还有印象。。。

这是那一个servlet的运行结果

这是那一个servlet的运行结果
发表于 2016-8-17 20:09 | 显示全部楼层
嗯 对了我没有买IO板应该不要紧吧,老师如果我发的代码你看不出来有什么问题,想看其他的什么就告诉我,我会贴上来,总之,都努力这么长时间了,这个问题一定要搞定,不然一个暑假就相当于什么也没有做成了
发表于 2016-8-18 09:34 | 显示全部楼层
昨天晚上我梦到你回复了
 楼主| 发表于 2016-8-18 13:29 | 显示全部楼层
本帖最后由 kevinzhang19701 于 2016-8-18 13:31 编辑

好久没来了,这陈年旧帖还有人看啊。哈哈哈。

我看看到底写了啥?
 楼主| 发表于 2016-8-18 13:55 | 显示全部楼层
荒草中的铁皮屋 发表于 2016-8-17 08:28
老师你看,我对您的myservlet2代码做出的改动只是改了一下名字(改成了responseServlet),然后砍掉了两个 ...

response.setContentType("text/text");

这句没有问题。是Servlet返回给请求者的回复字符串。一般情况,我们用浏览器提交请求,Servlet回复html字符串,这样可以在浏览器内看到格式化的内容。但是,Arduino不是浏览器,它只能识别text字符。因此,我这里指定了text类型。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 00:32 , Processed in 0.289225 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表