Skip to content

Serial Communication

전기 통신과 컴퓨터 과학 분야에서 직렬 통신은 연속적으로 통신 채널이나 컴퓨터 버스를 거쳐 한 번에 하나의 비트 단위로 데이터를 전송하는 과정을 말한다. 이 용어는 여러 개의 병렬 채널을 갖춘 링크 위에서 동시에 여러 개의 비트를 보내는 병렬 통신과 대조된다.

컴퓨터에서 데이터 처리가 병렬로 되는데, 통신을 위해 병렬 통신을 하려면 여러개의 채널이 필요하다. 거리와 비용을 고려하면 많을 경우 병렬 통신은 문제가 될 수 있다. 결국 병렬로 처리되는 데이터를 통신할 때 시간으로 나누어 차례대로 전송함으로써 문제를 해결할 수 있다.

직렬 통신에서 데이터가 계속되어 전송되면, 각 비트를 구별할 방법이 필요하다. 디지털 회로의 입장에서 수신된 데이터의 비트가 시간적으로 어디서 부터 시작이고 끝인지를 알 필요가 있다. 이렇게 데이터 비트를 복구하기 위해 데이터의 시간적 위치를 알리기 위해 동기신호를 보내는 경우와 동기 신호 없이 신호 자체에서 데이터 비트를 복원하는 방식으로 나눌 수 있다.

  • 동기 방식 : 데이터 신호와는 별도로 동기신호를 함께 보낸다.
  • 비동기 방식 : 데이터 신호만을 보내고 각각의 방식에 따라 데이터 비트를 찾아낸다.

Categories

Examples

  • answerjet-relay

How to debugging

RealTerm와 Virtual Serial Port Emulator의 조합으로 Windows 환경에서 디버깅이 가능하다.

Serial Terminal Basics

Linux

minicom 또는 screen을 사용하면 된다.

Windows

To see a list of all the available COM ports, type

[System.IO.Ports.SerialPort]::getportnames()

Now create an instance of the port you want with this command

$port= new-Object System.IO.Ports.SerialPort COM#,Baudrate,None,8,one

With that, you can now connect to and send data to or from that COM port.

$port.open()
$port.WriteLine("some string")
$port.ReadLine()
$port.Close()

리눅스 권한 추가

ls명령으로 시리얼 그룹을 확인하면 된다.

$ ls -la /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0 Aug 10 17:56 /dev/ttyUSB0

아마도 dialout그룹일 것이다. 아래와 같이 사용자를 그룹에 추가하고

sudo adduser $USER dialout

재부팅하고 다음 명령으로 확인한다:

$ id -Gn
yourname adm dialout cdrom sudo dip plugdev lpadmin lxd sambashare docker

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 brlttybrltty를 제거하면 된다.

See also

Favorite site

References


  1. Serial_Communication_-_Hard_Copy_Arduino.pdf