-
Spring MVC2 - 6 - (1). SpringMVC2에 아두이노와 시리얼 통신JAVA/웹 프로그래밍 - Spring 2020. 12. 21. 22:41
아래의 내용에 이어지는 내용이다.
designatedroom87.tistory.com/344?category=909022
Spring MVC2 - 5. SpringMVC2
프로젝트를 다시 만들자. maven project로 만든다. webapp폴더 하위에 WEB-INF폴더 만들고 이 폴더에 web.xml을 만든다. web.xml 더보기 El index.html index.htm i..
designatedroom87.tistory.com
아래의 내용을 참고해서 자바 프로젝트를 만들자.
designatedroom87.tistory.com/315?category=903927
Java 시리얼 통신 기본 설정
자바에서는 Serial을 바로 사용하지 못한다. 그래서 자바가 하드웨어적으로 단독적으로 사용하지 못해서 C언어의 도움을 받아야 한다. 아래의 사이트에서 다운을 받는다. rxtx.qbang.org/wiki/inde
designatedroom87.tistory.com
자바 프로젝트를 먼저 생성하는데, 이름은 ArduinoToSerial라고 짓는다.
프로젝트 및 기본 설정이 끝나면 아래의 5개의 파일을
src폴더에 저장한다.
이 파일들의 내용은 위의 내용에서 나오는 것들이다.
DataProc.java0.00MBMain.java0.00MBSerial.java0.00MBSerialRead.java0.00MBSerialWrite.java0.00MB아래의 내용도 연관있는 글이다.
designatedroom87.tistory.com/321
아두이노의 데이터를 웹에 전송하기
아두이노에서 데이터를 가져오는 내용은 아래의 내용에서 가지고 왔다. designatedroom87.tistory.com/316 아두이노와 자바의 시리얼 통신(아두이노에서 자바로 0과 1을 전송) 자바에서 시리얼 통신을 설
designatedroom87.tistory.com
그리고 아래는 아두이노의 소스 파일이다.
아두이노가 자바로 1과 0을 교대로 보내면서 반대로 아두이노 또한 자바로 부터 데이터를 읽어들인다.
만약 자바로 부터 읽은 데이터가 '1'이면 LED를 켜고, '0'이면 LED를 끄는 내용이다.
아두이노 소스 파일
더보기void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(13, OUTPUT); // 아두이노의 13번핀 옆에 L이라는 글자 옆에 LED가 있다. // 이 LED를 On/Off할 수 있다. } void loop() { // put your main code here, to run repeatedly: Serial.print(1); delay(1000); Serial.print(0); delay(1000); } // data를 받기 void serialEvent() { char c = Serial.read(); if (c == '1') digitalWrite(13, HIGH); else if (c == '0') digitalWrite(13, LOW); }
자바에서 바로 Web Server로 직접 가지 못한다.
자바에서 웹 서버 접속을 url활용
자바에서 웹으로 가기 위해서는 소켓을 만들던 인터페이스가 필요하다.springmvc2프로젝트로 이동한다.
view폴더에 arduino.jsp파일을 만든다.
arduino.jsp
더보기<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <meta charset="UTF-8"> <title>Hello</title> <link href='http://fonts.googleapis.com/css?family=Lato:100' rel='stylesheet' type='text/css'> <style> body { background-color: hsl(0, 60%, 65%); transition: background-color 1s; } h1 { font-family: 'Lato', sans-serif; font-size: 120px; font-weight: 100; color: white; text-align: center; margin: 60px; } h1:before{ content: attr(class) ":"; font-size: 22px; position: relative; top: -69px; left: 0; text-transform: uppercase; } </style> </head> <body id=b> <h1 id=data class="data">${applicationScope.data}</h1> <!-- ServletContext를 이용한 방법 --> <%-- <h1 id=data class="data">${data}</h1> --%> <script> setInterval(function(){ location.href="/serial1" }, 3000); </script> </body> </html>
IndexController로 이동한다. 아래의 함수를 추가한다.
@RequestMapping("/serialdata") public void serialdata(String data, HttpServletRequest request) { System.out.println("web data : " +data); // 아두이노로부터 전송된 데이터를 활용하여 처리 // DB처리 // web jsp에 데이터를 보내는 처리 ServletContext app = request.getServletContext(); // 전역 저장 객체 app.setAttribute("data", data); }
ArduinoToSerial프로젝트의 Main.java를 아래와 같이 실행시킨다.
그리고 springmvc2프로젝트의 IndexController.java를 다음과 같이 실행시키자.
콘솔 창의 화면은 다음과 같이 나타난다.
그리고, IndexController에 두 함수를 추가한다.
@RequestMapping("/serial1") public String serialdata1() { return "arduino1"; } @RequestMapping("/serial2") public ModelAndView serialdata(HttpServletRequest request) { ModelAndView mv = new ModelAndView(); ServletContext app = request.getServletContext(); // 전역 저장 객체 String data = (String)app.getAttribute("data"); mv.addObject("data",data); mv.setViewName("arduino2"); // arduino페이지로 이동 return mv; }
그리고 WEB-INF/view에 기존의 arduino.jsp파일을 삭제하고
arduino1.jsp과 arduino2.jsp 파일을 만든다.
arduino1.jsp
더보기<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <meta charset="UTF-8"> <title>Hello</title> <link href='http://fonts.googleapis.com/css?family=Lato:100' rel='stylesheet' type='text/css'> <style> body { background-color: hsl(0, 60%, 65%); transition: background-color 1s; } h1 { font-family: 'Lato', sans-serif; font-size: 120px; font-weight: 100; color: white; text-align: center; margin: 60px; } h1:before{ content: attr(class) ":"; font-size: 22px; position: relative; top: -69px; left: 0; text-transform: uppercase; } </style> </head> <body id=b> <h1 id=data class="data">${applicationScope.data}</h1> <!-- ServletContext를 이용한 방법 --> <%-- <h1 id=data class="data">${data}</h1> --%> <script> setInterval(function(){ location.href="/serial1" }, 3000); </script> </body> </html>
arduino2.jsp
더보기<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <meta charset="UTF-8"> <title>Hello</title> <link href='http://fonts.googleapis.com/css?family=Lato:100' rel='stylesheet' type='text/css'> <style> body { background-color: hsl(0, 60%, 65%); transition: background-color 1s; } h1 { font-family: 'Lato', sans-serif; font-size: 120px; font-weight: 100; color: white; text-align: center; margin: 60px; } h1:before{ content: attr(class) ":"; font-size: 22px; position: relative; top: -69px; left: 0; text-transform: uppercase; } </style> </head> <body id=b> <h1 id=data class="data">${data}</h1> <script> setInterval(function(){ location.href="/serial2" }, 3000); </script> </body> </html>
Main.java를 실행시키고, 서버를 실행시키고 난후에 http://localhost:9090/serial1에 접속해보자.
그리고, http://localhost:9090/serial2호출해서 데이터가 잘 나오는지 확인하자.
arduino1.jsp0.00MBarduino2.jsp0.00MBIndexController.java0.00MB아래는 두 프로젝트 전체 내용이다.
ArduinoToSerial & springmvc2.zip0.02MB아래의 내용에서 아두이노에 버튼을 연결하여 Serial통신을 해보자.
designatedroom87.tistory.com/346?category=909022
Spring MVC2 - 6 - (2). SpringMVC2에 아두이노와 시리얼 통신(버튼)
앞의 내용과 이어지는 부분이 있다. designatedroom87.tistory.com/345 Spring MVC2 - 6 - (1). SpringMVC2에 아두이노와 시리얼 통신 아래의 내용에 이어지는 내용이다. designatedroom87.tistory.com/344?catego..
designatedroom87.tistory.com
'JAVA > 웹 프로그래밍 - Spring' 카테고리의 다른 글
Spring MVC2 - 7. Web Socket( Led on/off, 서보모터 제어) (0) 2020.12.24 Spring MVC2 - 6 - (2). SpringMVC2에 아두이노와 시리얼 통신(버튼) (0) 2020.12.22 Spring MVC2 - 5. SpringMVC2 (0) 2020.12.21 Spring MVC2 - 4. MyBatis (0) 2020.12.18 Spring MVC2 - 3. Spring을 통해서 DB에 접근하기 (0) 2020.12.17