==================================Outline====================================
리눅스 시리얼 통신
- 가상 시리얼 포트 설치
- 시리얼 데이터 통신의 기법
- canonical
- non-canonical
- asynchronous
- multi-flexing
----------------------------------------------------------------------------
리눅스 시리얼 통신
가상 시리얼 포트 설치
모든 장치는 리눅스에서는 파일로 간주한다.
'/dev' 디렉토리에 serial port 또한 파일로 존재한다.
가상 머신를 실행하여 시리얼 포트를 설치해보자. 가상 머신이 구동 중에는 시리얼 포트 설치가 불가함으로 ‘halt' 명령어를 사용하여 구동을 중지 후 전원을 끈다.
그 후에 시리얼포트를 설치한다.
총 2개를 설치한다.
가상 머신을 사용하여 가상 머신과 본체가 통신을 할 수 있도록 소프트웨어적으로 시리얼 포트를 설치한다.
요놈을 설치해준다. 설치 후 실행시킨다.
가상 시리얼 포트를 만들어준다.
하이퍼 터미널을 두 개 실행시켜서 통신을 해보자.
가상의 시리얼 포트는 재부팅을 하더라도 지속적으로 존재한다.
VMware를 종료하고 다시 시작하면 추가한 포트가 보이게 된다.
추가한 두 개의 포트에 가상 시리얼 포트를 하나씩 연결해준다.
가상 머신을 구동시킨다.
시리얼 포트 중에 2번째 것을 disconnect시킨다.
연결이 해제되면 해당 장치가 회색으로 변하는 것을 알 수 있다.
시리얼 데이터 통신의 기법
'struct termios'는 터미널의 input/output을 설정하는 구조체이다.
Canonical: 한 줄씩(엔터 전) 데이터를 통신한다. Dos의 기법과 같다.
Non-Canonical : 정해진 데이터 크기에 도달했을 때 데이터를 읽어들인다.
** Canonical과 non-canonical의 송신하는 데이터의 크기가 고정(non-canonical)이 되었는지 아닌지(canonical)의 차이이다.
Asynchronous: 소프트웨어적인 인터럽트가 발생하면 데이터를 처리하는 방식이다.
Multi Flexing: select함수의 개념이다.
SPEED를 사용할 때 대문자 ‘B'를 붙여줘야 한다.
'O_NOCTTY'는 프로그램 명령어를 보냈을 때 해당 내용을 송신하지 않고 내부적인 프로그램 명령어로 사용하라는 옵션이다.
//tc: terminal control
//attr: attribute
//get 명령어의 반대개념은 set이다.
Canonical
canonical 방식으로 시리얼 통신을 해보자. 하이퍼 터미널에서는 송신을 하고 canonical 프로그램에서는 받는 방식으로 하자.
리눅스에서 수신
리눅스에서 송신
Non-canonical
데이터가 5byte가 되면 수신하도록 설정해보자.
Asynchronous(인터럽트 방식)
fcntl로 인터럽트를 시리얼포트로 전송해준다.
//시리얼 통신은 canonical 혹은 non-canonical 중 반드시 하나를 사용해야 한다.
Multi-flexing
동시에 두 곳 이상의 포트를 감시한다.
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20151207 / 리눅스 시리얼 통신_남수진 (2) | 2015.12.08 |
---|---|
20151207 리눅스 시리얼 통신 이량경_ (4) | 2015.12.08 |
20151207 임현수 업무일지 리눅스 시리얼통신 (4) | 2015.12.08 |
2015-12-07 Linux Serial 통신개인업무일지 - 천정호 (5) | 2015.12.08 |
20151207 - 홍준모 Linux 와 Window 간의 시리얼 통신 1일차, 케노니칼, 논 케노니칼 실습 (4) | 2015.12.07 |
20151207 일일업무보고서_박서연_LinuxSerial통신 (6) | 2015.12.07 |
20151207 - 엄민웅 시리얼 통신 Canonical, Non-Canonical, Asynchronous, Multi Flexing (4) | 2015.12.07 |
20151207-김재홍-Serial_1일차-리눅스시리얼통신 (5) | 2015.12.07 |