Serial Communication
전기 통신과 컴퓨터 과학 분야에서 직렬 통신은 연속적으로 통신 채널이나 컴퓨터 버스를 거쳐 한 번에 하나의 비트 단위로 데이터를 전송하는 과정을 말한다. 이 용어는 여러 개의 병렬 채널을 갖춘 링크 위에서 동시에 여러 개의 비트를 보내는 병렬 통신과 대조된다.
컴퓨터에서 데이터 처리가 병렬로 되는데, 통신을 위해 병렬 통신을 하려면 여러개의 채널이 필요하다. 거리와 비용을 고려하면 많을 경우 병렬 통신은 문제가 될 수 있다. 결국 병렬로 처리되는 데이터를 통신할 때 시간으로 나누어 차례대로 전송함으로써 문제를 해결할 수 있다.
직렬 통신에서 데이터가 계속되어 전송되면, 각 비트를 구별할 방법이 필요하다. 디지털 회로의 입장에서 수신된 데이터의 비트가 시간적으로 어디서 부터 시작이고 끝인지를 알 필요가 있다. 이렇게 데이터 비트를 복구하기 위해 데이터의 시간적 위치를 알리기 위해 동기신호를 보내는 경우와 동기 신호 없이 신호 자체에서 데이터 비트를 복원하는 방식으로 나눌 수 있다.
- 동기 방식 : 데이터 신호와는 별도로 동기신호를 함께 보낸다.
- 비동기 방식 : 데이터 신호만을 보내고 각각의 방식에 따라 데이터 비트를 찾아낸다.
Categories
- POSIX:termios - Linux (POSIX)의 시리얼 통신 방법
- WindowsApi:SerialCommunications - Windows의 시리얼 통신 방법
- pySerial (Python)
- pyserial-asyncio - asyncio extension package for pyserial
- pyparallel - Python parallel port access library
- pyserial-terminal - A more capable, modular terminal
Examples
- answerjet-relay
How to debugging
RealTerm와 Virtual Serial Port Emulator의 조합으로 Windows 환경에서 디버깅이 가능하다.
- RealTerm: 가상 시리얼 포트를 생성하고 포트간 Redirection 가능한다.
- Virtual Serial Port Emulator: 특정 시리얼 포트에 데이터를 전송할 수 있다.
Serial Terminal Basics
Linux
Windows
To see a list of all the available COM ports, type
Now create an instance of the port you want with this command
With that, you can now connect to and send data to or from that COM port.
리눅스 권한 추가
ls명령으로 시리얼 그룹을 확인하면 된다.
아마도 dialout그룹일 것이다. 아래와 같이 사용자를 그룹에 추가하고
재부팅하고 다음 명령으로 확인한다:
Documentation
- ezTCP 기술자료 - 시리얼 매니저 프로토콜 - 문서버전 2.5
- https://www.sollae.co.kr/ko/download/pds_files/an_serial_manager_protocol_ko.pdf
-
An_serial_manager_protocol_ko.pdf - 시리얼 통신 프로토콜 샘플 요구시 참고용으로 좋은 자료
Troubleshooting
Win32를 사용한 타임아웃 설정 방법
COMMTIMEOUTS (Structure) 항목을 참조.
Ubuntu 에서 /dev/ttyUSB0 연결이 저절로 끊기는 현상
Universal Serial Bus#Ubuntu 에서 /dev/ttyUSB0 연결이 저절로 끊기는 현상 항목 참조. 간단히, sudo apt purge brltty
로 brltty를 제거하면 된다.
See also
- Universal asynchronous receiver-transmitter (UART)
- QextSerialPort
- System.IO.Ports.SerialPort: C#의 RS-232 통신.
- Modbus
- RS-232 / RS-422 / RS-423 / RS-485
Favorite site
- Wikipedia (en) Serial communication
- Embedded: RS-485
- 시리얼 통신 RS232 , RS422, RS485
- RS232/RS422/RS485 통신이란?
- [추천] 시리얼 통신 기초 (Serial Communication) 1
- [추천] KLDP - The Linux Serial Programming HOWTO
- 네트워크를 통해 시리얼 포트(COM)에 연결하기 | GeekNews
- [원문] RFC 2217 - Telnet Com Port Control Option
- 해결책 중 하나는 텔넷과 RFC2217 - 텔넷 COM 포트 제어 옵션을 함께 사용하는 것
- Telnet+RFC2217 시리얼 포트 포워딩을 지원하는 소프트웨어가 많이 있음 (윈도와 리눅스를 지원하는 서버, 클라이언트들)
References
-
Serial_Communication_-_Hard_Copy_Arduino.pdf ↩