Skip to content

수위 측정 기본 코드 및 목업 소켓 서버 추가

오병준 requested to merge feature/waterlevel into main

1. 수위 측정 센서 라즈베리파이 코드 추가

제가 담당한 수위 측정 센서 라즈베리파이에서 아직 HW가 없는 ADC와 수위 센서 부분을 제외 코드를 main에 우선 merge합니다.

수위 측정 기능은 ADC와 센서를 받고 나면 업데이트해 다시 merge하겠습니다.

2. 소켓 통신 규칙

상호간 소켓 연결을 위한 기본 규칙을 몇 가지 추가합니다.

소켓 통신을 위한 서버 IP와 포트는 includes/types.h 에 정의된 것을 사용합니다.

2-1. IP

SERVER_IP는 우선 임의로 설정해 놓았습니다. 추후 다같이 모여 테스트할 때 확정하면 될 것 같습니다.

2-2. PORT

정의된 포트는 다음과 같습니다.

symbol port user
SERVER_PORT_1 5001 김동현
SERVER_PORT_2 5002 김민승
SERVER_PORT_3 5003 오병준

소켓 설정 부분은 제가 작성한 코드의 thread_job_socket에서 init_socket_server 함수 호출을 참고하시면 도움이 될 것 같습니다.

2-3. 통신

복잡한 데이터를 주고받을 것이 아니므로, 통신은 int 형 변수 하나만 주고받기로 하면 좋을 것 같습니다.

클라이언트는 센서 값을 측정해 8비트 unsigned 값 (0~255)으로 변환하고, 해당 값을 int형 변수에 담아 전송합니다.

int value = some_sensor_data();
write(sock, &value, sizeof(value));

서버 또한 동일하게 이 값을 int형 변수로 수신합니다.

int rcv;
read(fd, &rcv, sizeof(rcv));

3. 로컬 목업 소켓 서버

소켓 서버 역할을 하는 동예님의 앰프 라즈베리파이가 없어도 소켓 통신을 테스트할 수 있는 테스트용 소켓 서버를 추가합니다.

사용 방법은 다음과 같습니다. 참고

  1. 프로젝트 디렉터리에서 make server-mockup을 실행합니다.
  2. build/server-mockup 을 실행하면 목업 서버가 시작됩니다.
  3. 자신의 소스코드에서 #define SERVER_MOCK 1#include "types.h" 전에 선언합니다.

이렇게 하면 SERVER_IP가 자신의 로컬호스트 주소 127.0.0.1 로 설정되며, build/server-mockup가 실행하는 서버 소켓과 연결됩니다.

Edited by 오병준

Merge request reports