?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

2개의 소스를 하나로 합치려고 합니다.

페이지 정보

작성자 좋은망구 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-05-26 18:20 조회874회 댓글2건

본문

소스를 따로 구현하여 합치려고 합니다.

아두이노에서 자바톰켓서버로 일정 초(delay(800))마다 값을 전송하는 소스와

자바톰켓서버에서 아두이노로 값을 보내 led를 키고 끄는 소스입니다.

 

일정주기마다 값이 보내지면 led가 안보내지고 led가 켜지면 일정주기마다 값이 안보내집니다.

조언 부탁드립니다..

 

-- 아래의 소스는 일정 초마다 자바톰켓서버로 측정값을 보내는 코드 입니다.

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

  IPAddress server(192, 168, 21, 6); 
  IPAddress ip(192, 168, 21, 11);
  byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

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

void loop() {

    EthernetClient client;
  
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac, ip);
  }
  
  int val1=analogRead(0);
  int val2=0;
  
  if (client.connect(server, 8080)) {
    Serial.println("connected");
    client.print("GET /FloorNoise/FloorNoiseMain.jsp?val=");
    client.print(val1);
    client.print("&vive=");
    client.print(val2);
    client.println("&adr=106_102")
  } else {
       Serial.println("connection failed");
  }  

  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    while (true);
  }
delay(800);
}

 

---- 아래의 소스는 자바 서버에서 값을 보내면 led를 키는 소스입니다.

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

boolean incoming = 0;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 21, 11) ;
EthernetServer server(80) ;

void setup()
{
  pinMode(13, OUTPUT);

  Ethernet.begin(mac, ip);
  server.begin();
  Serial.begin(9600);
}

void loop()
{
  EthernetClient client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (incoming && c == ' ') {
          incoming = 0;
        }
        if (c == '$') {
          incoming = 1;
        }

        if (incoming == 1) {
          Serial.println(c);

          if (c == '1') {
            Serial.println("ON");
            digitalWrite(13, HIGH);
          }
          if (c == '2') {
            Serial.println("OFF");
            digitalWrite(13, LOW);
          }

        }
      }
    }
    client.stop();
  }

댓글목록

최고관리자님의 댓글

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

바톰켓서버로 측정값을 보내는 코드에서 loop() 함수가 반복될 때 delay() 함수를 쓰지 마세요. delay() 함수로 지연이되면 loop() 안에서 이더넷과 상호 동작하는 코드도 지연이 되버립니다. millis() 함수 이용해서 시간을 체크해서 Request 날리세요.
http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_begin&wr_id=18