?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

센서값을 웹서버로 전달하는데 질문 있습니다.

페이지 정보

작성자 좋은망구 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-04-09 21:28 조회3,860회 댓글1건

본문

<아두이노 스케치 시리얼모니터 결과입니다>

 

사운드 센서로 소리를 측정하고 아파치 + jsp로 만든 서버로 전송하여 db에 저장을하려고 합니다.

아두이노에서 웹서버에 연결하여 Get 방식으로 값을 보내는데 성공하였으나 값이 지속적으로 전달되지

않고 한번만 전송 된 뒤에 연결이 끊어집니다.

지속적으로 값을 전송하고 싶은데 어떻게 해야 하는지 조언부탁드립니다.

 


<아두이노 소스> ( 이더넷(W5100) Web Client 기본 예제 활용하였습니다.)

#include <SPI.h>
#include <Ethernet.h>


byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress server(192, 168, 21, 6); 

IPAddress ip(192, 168, 21, 6);


EthernetClient client;

void setup() {
 
  Serial.begin(9600);
  
  while (!Serial) {
    ; 
  }

  
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    
    Ethernet.begin(mac, ip);
  }
  delay(1000);
  Serial.println("connecting...");

}

void loop() {
  // if there are incoming bytes available
  // from the server, read them and print them:
  // if you get a connection, report back via serial:
  analogRead(0);
  delay(1000);
  int val=analogRead(0);
  if (client.connect(server, 8080)) {
    Serial.println("connected");
    client.print("GET /eedeede/param2.jsp?aaa=");
    client.println(val);
    client.println("HTTP/1.1");
    client.println("Host: 192.168.21.6");
    client.println("Connection: close");
    client.println();
  
  } else {
   
    Serial.println("connection failed");
  }
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
    
    
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    while (true);
  }
}

<서버 소스>

<html>
<head>
<title>param</title>
<script>
   var Request = function()
   {
       this.getParameter = function( name )
       {
           var rtnval = '';
           var nowAddress = unescape(location.href);
           var parameters = (nowAddress.slice(nowAddress.indexOf('?')+1,nowAddress.length)).split('&');
           for(var i = 0 ; i < parameters.length ; i++)
           {
               var varName = parameters[i].split('=')[0];
               if(varName.toUpperCase() == name.toUpperCase())
               {
                   rtnval = parameters[i].split('=')[1];
                   break;
               }
           }
           document.write( rtnval );
           return rtnval;
           
       }
   }
   var request = new Request();
</script>
</head>
<body>
   <%
      SqlSessionFactory sqlSessionFactory = SqlSessionManager.getSqlSession();
      SqlSession sqlSession = sqlSessionFactory.openSession();

      try{
         HashMap inst = new HashMap();
         
         inst.put("data1",(request.getParameter("aaa")));
         
         sqlSession.insert("Test.getTestInsert2", inst);
         
         sqlSession.commit();
         System.out.println("저장성공");
         
         System.out.println("sql삽입성공");
       }catch(Exception e){
           e.printStackTrace() ;
       }finally{
       }  
      
   %>
</body>
</html>

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

접속 실패했을 때 client.stop(); 호출하고 delay(1000); 정도로 약간 시간을 줘보세요.
loop() 함수 돌면서 너무 빠르게 connection request 가 반복 사용되지 않도록 시간 여유를 delay() 함수로 줘보세요.