분류 전체보기210 아두이노 이더넷 웹서버 만들기 -#12 이전 코드에 비해 크게 변경된것은 없으니 비교해서 보면 쉽게 이해가 될듯 하다. 중요한것은 파싱 함수를 하나 추가 한것이다. 일반 서버급의 속도로 바로 바로 링크페이지가 전환 되지 않는다는점도 이해가 필요하다. 물론 더 반응속도를 올리는것은 가능해 보인다. 추가로 이야기 한다면 아파치 웹서버나 기타 웹서버들이 기본적으로 어떻게 반응하는지에 대한 이해를 했으면 하다. 따라져보면 더 엄청난 기능을 하지만, 기본적인 이해는 이것으로도 충분하다. /*Web Server*/ #include #include #include // Enter a MAC address and IP address for your controller below. byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE,.. 2020. 5. 3. 아두이노 이더넷 웹서버 만들기 -#11 조금더 진행해보자. 파싱이라는 용어를 사용하지만, 그냥 문자열 추출, 문자열 분리 정도로 이해 하면 된다. 일단 클라이언트가 요청하는 문장은 아래와 같다. 사용자의 웹브라우저 종류, 아이피, 요청페이지, 기타 등등 이라고 보면 된다. 요즘 핸드폰에서는 좀 더 많은 정보를 제공하는것 같지만, 일단 비전공자라 넘어가자 내가 찾고 싶은 문장은 page1.html, page2.html 이다. 사실 파싱에 대해서 정답은 없지만, 나라면 이렇게 하겠다. 이정도다. 꼭 이것이 좋은 방법이라고는 모르겠다. 나는 ":" 콜론을 기준점으로 두고 문장을 찾았다. 그리고 Referer: 라는 단어를 중심으로 찾았다. 원하는 글자를 찾으면 1과 2를 넘겨주는 함수를 만들었다. new client GET /favicon.ico .. 2020. 5. 3. ATTINY85, 88보드 업로드 Mh-tiny attiny88 Digipark, https://raw.githubusercontent.com/MHEtLive/arduino-boards-index/master/package_mhetlive_index.json 드라이브 Http://github.com/MHEtLive/MHEtLiveArduino/releases/download/1.0.0/2.0a4.rar Tiny85 Digipark,attiny85 digispark http://digistump.com/package_digistump_index.json https://deneb21.tistory.com/394 http://blog.daum.net/_blog/BlogTypeView.do?blogid=0ZPt7&articleno=2423&ca.. 2020. 5. 2. 아두이노 이더넷 웹서버 만들기 -#10 이제 파싱이라는것을 해야 한다. 파싱을 하기전에 중요한 개념 하나를 이해 해야한다. 본인이, 여러분들이 보는게 다가 아니라는 사실이다. 첫날에 My First Heading이라는 페이지를 보여주는 웹서버를 만들었다. 단순하게 보면 눈에 보여지는 데이터는 My First Heading이라는 글자만 보인다. 그러나 실제 데이터는 HTML테그와 함께 더 많은 데이터가 들어 온다. 대표적으로 여러분의 눈을 속이는 프로그램이 노트패드다. 여러분들은 줄바꿈과 함께 한줄 한줄 데이터, 문장을 본다고 하지만, 실제 데이터는 선형적인 한 줄이다. C언어의 배열을 처음 배울때, 1차원 배열은 선형, 2차원 배열은 평면, 3차원 배열은 공간, 행렬에 비유해서 배울때가 있다. 그러나 실상은 어떤가 만약 내가 N차원 배열을 만.. 2020. 5. 2. 아두이노 이더넷 웹서버 만들기 -#9 지금까지 따라 왔다면 큰 어려움은 없을것으로 보여지고, 지금의 소스코드는 클라이언트가 서로 다른 페이지를 요청해도 무조건 같은 페이지만 보여준다. select라는 변수가 1,2의 값에 따라 어떤 페이지를 보여줄지 선택하는것이다. 그러면 클라이언트의 요청된 메시지를 분석해서 변수값을 변경하면 모든것은 끝이난다. 우노의 기본메모리가 2k라서 2페이지 이상 넣기는 어렵지만, 아끼고 아끼면 3,4페이지도 가능하다는점을 참고하면 좋을것이다. 저는 그냥 메가보드로 연습하라고 합니다. 그리고 한개페이지는 온도값 5개를 보여주고, 한개 페이지는 온도평균값 하나를 보여준다. 혹시 소스코드를 이해하는데 어려움이 있다면 댓글로 물어 보면 될듯 합니다. 다음에는 클라이언트의 요청문장을 파싱하는것으로 할 것이다. 파싱은 좀 어.. 2020. 5. 1. 아두이노 이더넷 웹서버 만들기 -#8 자 그러면 두개 소스코드도 정리가 되었으니 두개 페이지도 나누고 링크의 개념도 적용해 보죠. 클라이언트가 보통은 웹 주소로 접근합니다. 요즘 사람들은 약간 생소할 수도 있죠. 그냥 포탈에서 링크로 클릭 하거나, 쉬리나 알렉사가 찾아 주니까요. 그러나 10년전, 지금도 주소로 접근하는 사람들이 있죠. 예를 들이, http://192.168.5.177/index.html http://192.168.5.177/page1.html http://192.168.5.177/page2.html 이렇게 접근하는것으로 모르는 사람도 있겠지만 이게 기본이라 알고는 있어야 겠죠. 웹페이지의 링크의 개념도 비슷합니다. p+=sprintf(p,"Page1 \n"); http://colorscripter.com/info#e" ta.. 2020. 5. 1. 아두이노 이더넷 웹서버 만들기 -#7 개인적으로 지난번 소스코드도 딱히 어려운 부분이 없어 보이는데, 설명을 약간 추가해야 할 부분이라면 loop과 wepPage정도 일듯 합니다. loop은 클라이언트가 요청하는 정보를 표시하는 부분 혹은 모으는 부분과 클라이언트에게 정보를 보내는 부분으로 나누어 있다고 보시면 될듯 합니다. 그리고 void read_temp(char*& p) 함수의 정의 부분도 유심히 보면 좋을듯 합니다. 콜바이 밸류, 콜바이 레프런스 부분인데, 주소값을 참고하기위해서는 콜바이 레프런스가 필요합니다. 쉽게 말해서 어디까지 문장을 작성했는지 모르기 때문에 그 주소값이 필요한거죠. 주소라도 복사기 되기 때문에 그렇겠죠. void loop() { // listen for incoming clients EthernetClient .. 2020. 5. 1. 아두이노 이더넷 웹서버 만들기 -#6 한참 시간이 지났지만, 저번에 못다한 이야기를 해야 할 것 같아서 계속 합니다. 저번에는 웹페이지를 그냥 빈화면, 그냥 텍스트로 구성했다면 이번은 5개의 온도값을 표시하는것으로 진행하며, 좀더 나아가 웹페이 링크라는 개념도 들어 가는것으로 구현 할 것이다. 추가로 이야기 하지만 이것은 ESP8266으로 구현해도 동일한 개념이라서 같은 방식으로 이해해도 될듯 합니다. 일단 지난번 소스코드 그냥 원제작자의 소스코드라면 이번에는 수정이 들어간 소스코드로 정리하는것으로 이해하면 될듯 합니다. 소스코드의 수정본과 원본 코드의 비교만 하더라도 차이가 뭔지 이해하면 될듯 합니다. 그리고 그렇게 어렵지 않으니 참고만 하시면 될듯 합니다. /*Web Server*/ #include #include // Enter a M.. 2020. 5. 1. 아두이노 이더넷 웹서버 만들기 -#5 여기서 한번 더 복습을 하자. My First Heading 나는 단순히 "My First Heading"이라는 글자를 보여주고 싶은데, 쓸데 없는 문장을 많이 붙여서 전송하고 있다. , , 등등 이상한 글자들이 많이 붙여서 보내고 있다. 왜 그럴까 ? 그렇다 이것은 형식이다. 이렇게 보내야 웹브라우즈가 알아 먹는 형식이다. 이런 형식들을 통틀어 프로토콜이라는 용어를 사용한다. 만약 나는 만사가 귀찮고, "My First Heading" , 이것만 보내고 싶다면 어떻게 해야 할까 ? 방법은 한가지 방법뿐이다. 본인이 직접 웹브라우즈를 만들면 된다. 물론 만들수 없다. 쉬운일이 아니기 때문이다. 본인이 형식을 직접 만들어 혹은 무형식이라도 만들어서 하고 싶다면 본인만의 웹브라우즈를 만들어야 한다. 반대로 .. 2020. 4. 7. 이전 1 ··· 15 16 17 18 19 20 21 ··· 24 다음