IT관련 지식들 2016. 6. 30. 15:15

c.c

defines.h

s.c



통신을 할 일이 생겨서 소켓통신을 찾아봤다.


서버는 다음의 흐름을 가진다.


socket() : 구조체 생성

bind() : IP addr등의 값 설정.

listen() : 대기

accept() : 연결

<<read(), write()>>

close()


클라이언트는 다음의 흐름을 가진다.


socket() : 구조체생성

connect() : 연결

<< read(), write() >>

close()


코드는 첨부파일 참조.

posted by 동글동글82
:
IT관련 지식들 2016. 6. 30. 11:56
싸이로드 세미나 보고.(6/29)

  1. 이미지 센서와 성능
    1. CCD와 CMOS의 차이점
    2. EMVA1228 비교 테이블
    3. 이미지 성능 관련 요소.
      1. Shot noise
      2. Pixel Size
      3. Quantum efficiency
        1. 양자 효율
      4. Temporal dark noise
      5. Saturation capacity
        1. Full Well depth
      6. Signal to noise ratio
      7. Dynamic range
      8. Absolute Sensitivity threshold
      9. Gain
    4. 사용 환경에 따른 고려가 필요.
      1. 빠른 이동 중이라면 fps가 늘어야 한다
      2. 셔터 속도가 빠르면 광량이 적기 때문에 픽셀사이즈, 양자효율들을 확인한다.
      3. 밤에 광량이 적은 상태에서 촬영을 해야하는 조건이 추가된다면 또 다른 조건들을 생각해봐야한다.
    5.   SDK - point grey
      1. Spinnaker - GenICam 표준을 따름
      2. FlayCapture2
  2. 열화상카메라 기초교육.
    1. 각 픽셀에 온도값을 받아서 온도 캘리브레이션 내용과 비교하여 열 영상을 출력.
    2. 적외선 카메라 선정시 고려사항
      1. 측정하는 온도범위
        1. 각 제품의 적정 온도 범위가 다름
      2. 데이터 수집 속도
        1. 노출 시간과 프레임 속도
      3. 목표물의 크기와 측정 거리
        1. 목표물의 한 픽셀안에 들어오지 않는 경우 온도가 다르게 표현될 수 있다.
        2. 측정거리가 멀먼 온도가 실제 온도보다 낮게 나올 수 있다.
      4. 적합한 디텍터와 필터.
        1. 가시광선, 적외선(NIR, MWIR & LWIR)
      5. 지원 SW, 개발툴
      6. 제조사의 지원 및 교육
      7. 추가 액세서리
  3. 3D 카메라의 측정 방법과 특성.
    1. Laser Triangulation
      1. 라인 레이저로 발사한 빛을 카메라가 받아서 거리를 연산
    2. Photogrammetry
      1. 다양한 각도에서 찍은 사진을 분석하여 하나의 3D이미지로 합성
    3. Stereometry
      1. 두개의 렌즈로 수집한 데이터를 분석하여 거리를 측정.
    4. TOF
      1. 레이더의 원리와 비슷.
      2. 동작 카메라의 특성을 가짐.
    5. Moire

각종 카메라와 그 원리에 대해서 알아볼 수 있는 좋은 세미나였습니다. 특히 첫번째 강의에서 카메라의 특성을 설명하면서 연구/개발에 적합한 제품의 선택 방법을 이야기한 부분은 많이 유용했습니다.


'IT관련 지식들' 카테고리의 다른 글

가상 머신 네트워크 설정.  (0) 2016.06.30
소켓 통신  (0) 2016.06.30
UML(Unified Modeling Language).  (0) 2016.06.20
가변인자를 사용한 매크로 (개인용 printf)  (0) 2016.06.16
usleep함수 사용.  (0) 2016.06.15
posted by 동글동글82
:
IT관련 지식들 2016. 6. 20. 10:47


개인적으로 이해한 UML에 대해 정리를 해 본다.


1. UML이란

  - Unified Modeling Language. 통합 모델링 언어.

  - 프로그램을 만들기 전에 그리는 프로그램에 대한 청사진, 설계도 

  - 개인 혹은 집단의 공통된 생각을 정리한다.


2. UML을 꼭 사용해야 하는지 물어본다면 다음의 사항을 고려해보자.

  - 그림으로 그려서 표현하는 것보다 코드를 보는 것이 간단할 경우 UML을 사용할 필요가 없다.


3. 어떤 UML을 저장해야 하는가?

  - 대부분의 UML은 수명이 길지 않다. 칠판, 노트 등 수명이 짧은 저장매체에 그리고 지우기를 반복한다.

  - 작은 동작(행위)들에서 시작해서 그림을 그리고 필요한 동작을 하나씩 추가한다.

많은 토론 끝에 저장할 만한 가치가 있는 UML이 남으면 팀원 모두가 공유할 수 있는 공간에 자료를 저장한다.

  - UML의 목적은 팀원들 간에 같은 설계를 이해하게 하는데 있다. UML이 목적이 되어서 그림을 잘 그리게 하는 것 보다, 같은 내용을 이해하고 빠르게 코딩에 들어가게 하는 것이 중요하다.


4. UML의 다이아그램 종류와 각 특징

use case diagram 

class diagram

behavior diagrams:

statechart diagram

activity diagram

interaction diagrams:

sequence diagram

collaboration diagram

implementation diagrams:

component diagram

deployment diagram


'IT관련 지식들' 카테고리의 다른 글

소켓 통신  (0) 2016.06.30
싸이로드 세미나(카메라)  (0) 2016.06.30
가변인자를 사용한 매크로 (개인용 printf)  (0) 2016.06.16
usleep함수 사용.  (0) 2016.06.15
pthread_create 함수 사용.  (0) 2016.06.15
posted by 동글동글82
:
IT관련 지식들 2016. 6. 16. 15:03

디버깅을 위해서 printf를 사용하고 나면 추후 소프트웨어 출하에서도 디버그 메세지가 나오는 경우가 생긴다.

매크로를 사용하면 문제를 없앨 수 있다.

추가로 가변인자를 잘 활용하여 원하는 출력을 가지는 디버그 로그를 확인할 수 있다.


#if defined(DEBUG)

#define TePrint(fmt,args...) printf( "[%s %d]" fmt, __FILE__,__LINE__, ## args )

#else

#define TePrint

#endif

'IT관련 지식들' 카테고리의 다른 글

싸이로드 세미나(카메라)  (0) 2016.06.30
UML(Unified Modeling Language).  (0) 2016.06.20
usleep함수 사용.  (0) 2016.06.15
pthread_create 함수 사용.  (0) 2016.06.15
VIM 설정 저장  (0) 2016.06.14
posted by 동글동글82
:
IT관련 지식들 2016. 6. 15. 17:36


1. 헤더 추가

#include <unistd.h>


2. 함수 사용

      - 마이크로 sec이기 때문에 1초를 하려면 다음과 같이 한다.

#define ONESEC (1000*1000)


usleep(ONESEC);

'IT관련 지식들' 카테고리의 다른 글

UML(Unified Modeling Language).  (0) 2016.06.20
가변인자를 사용한 매크로 (개인용 printf)  (0) 2016.06.16
pthread_create 함수 사용.  (0) 2016.06.15
VIM 설정 저장  (0) 2016.06.14
버추얼박스 해상도 문제  (0) 2016.06.10
posted by 동글동글82
:
IT관련 지식들 2016. 6. 15. 17:34

*pthread_create 함수 사용

- 목적 : 쓰레드를 추가로 생성해서 각 쓰레드에 업무를 분산하여 동작.


- 방법 

1. 헤더파일 추가

#include <pthread.h>


2. 파일에 함수 추가.


int pthread_create( pthread_t *th_id, const pthread_attr_t *attr, void* 함수명, void *arg );

ex) 

pthread_t thread;

void *thread_Picture(void *arg);


pthread_create(&thread, NULL, &thread_Picture, NULL)


함수 인자값의 의미는 다음과 같다.

pthread_t thread; <- thread 번호를 저장할 변수공간이라고 하는데, 출력하기가 어렵다.

NULL : attributes. 정확히 몰라서 NULL을 입력했다.

void *thread_Picture(void *arg); <- 스레드가 생성되면서 동작할 함수.

NULL : argument. 정확히 몰라서 NULL을 입력했다.


성공적으로 스레드를 생성하면 0을 return한다.


3. 컴파일


이후 빌드를 할 때 -D_REENTRANT -lpthread 옵션을 추가로 써서 컴파일을 진행한다.

ex)

${CC} ${OBJ} -o ${NAME} ${LIBS}

==> ${CC} ${OBJ} -o ${NAME} ${LIBS} -D_REENTRANT -lpthread



참고사항

- ps -ax 명령어를 사용해도 PID는 같은 값이 나온다. 그렇다 하더라도 서로 다른 상황에서 돌아가고 있으므로 헷갈리지 말자.

- pthread 함수를 정리한 사이트 방문하여 좀 더 살펴볼 필요가 있음



posted by 동글동글82
:
IT관련 지식들 2016. 6. 14. 10:23

VIM을 실행할 때 마다 사용할 설정을 위해서는 아래 파일에명령어를 써 놓는다.


home/"user"/.vimrc


설정할 만한 명령어


set nu

posted by 동글동글82
:
IT관련 지식들 2016. 6. 10. 14:38

버추얼 박스의 해상도가 이상하게 나오는 경우에는 버추얼박스 게스트확장 CD를 삽입해서 문제를 해결한다.


버추얼박스 

장치 메뉴 -> 게스트 이미지 CD 삽입


리눅스

cd /media/XXX/VBOXADDITIONS_X.X.XX_XXXXX

sudo ./VBoxLinuxAdditions.run

sudo reboot.

'IT관련 지식들' 카테고리의 다른 글

pthread_create 함수 사용.  (0) 2016.06.15
VIM 설정 저장  (0) 2016.06.14
우분투 64bit에서 32bit 패킷이 동작하지 않을 때.  (0) 2016.06.10
Samba 설치 및 설정 (우분투)  (0) 2016.06.07
리눅스 명령어 모음.  (0) 2016.06.07
posted by 동글동글82
:
IT관련 지식들 2016. 6. 10. 14:17


13.xx 버전 이후부터 32bit 라이브러리를 제거했다는 이야이가 있다.


따라서 패킷을 풀기 위해서 다음과 같은 작업이 필요하다.


@kangmin/:sudo dpkg --add-architecture i386 && sudo apt-get update

@kangmin/:sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386


'IT관련 지식들' 카테고리의 다른 글

VIM 설정 저장  (0) 2016.06.14
버추얼박스 해상도 문제  (0) 2016.06.10
Samba 설치 및 설정 (우분투)  (0) 2016.06.07
리눅스 명령어 모음.  (0) 2016.06.07
xming 사용방법  (0) 2016.06.07
posted by 동글동글82
:
IT관련 지식들 2016. 6. 7. 16:20

작업 내용

- 삼바 설치

- ID를 등록해서 로그인 후 폴더 생성

- 윈도우에서 접속


1. 삼바 설치

>sudo apt-get install samba


>sudo service smbd start


2 ID 등록

> sudo service smbd stop


> sudo vim /etc/samba/smb.conf


[kangmin]이란 아이디를 만들어서 path에 접속할 수 있도록 설정 수정


> sudo smbpasswd -a kangmin

패스워드를 등록


> sudo service smbd start


3. 윈도우에서 접속

- 네트워크 드라이브 추가

- 이때 윈도우 탐색기에서 IP(\\192.168.128.6)를 먼저 입력하여 정상적으로 접속 가능한지 확인 후 네트워트 드라이브를 연결한다.


'IT관련 지식들' 카테고리의 다른 글

버추얼박스 해상도 문제  (0) 2016.06.10
우분투 64bit에서 32bit 패킷이 동작하지 않을 때.  (0) 2016.06.10
리눅스 명령어 모음.  (0) 2016.06.07
xming 사용방법  (0) 2016.06.07
스마트 톨링(smart tolling)  (0) 2016.06.01
posted by 동글동글82
: