void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
String data = Serial.readStringUntil('\n');
Serial.println(data.c_str());
}
위 코드는 Arduino 기기 안에서 실행되는 코드로, 9600 baudrate 로 Serial 포트를 개방하고 통신하기 위해 작성한 코드이다. 특히 loop 는 내부적으로 반복되는 함수 영역인데, 이 영역에서 시리얼 통신의 버퍼를 읽어들여 \n 라는 char 가 나올 때 까지 쌓아뒀다가 모이면 블럭킹이 해제되어 data에 담는다. 그리고 data에 담긴 String 을 c_str() 을 통해 char * 형태로 변환한 뒤 Serial 의 TX 를 통해 상대 기기에 전송한다.
즉 장비 입장에서 RX를 통해 Serial 의 어떤 입력 요청을 라인 단위로 받은 뒤, 해당 입력을 다시 장비에 연결된 TX 로 전송한다.
Baudrate 는 통신 속도를 의미하는 것으로, Serial 통신은 기본적으로 어떤 클럭 정보를 같이 송수신하지 않고 타이밍에 맞춰 같은 속도로 읽기를 시도한다. 이는 동기화되는 시점이 미묘하게 달라도 결과적으로 한 비트 영역 안에서 시간 오차가 발생하기 때문에 읽어들이는 건 동일하다.
SerialPort sp = new SerialPort();
sp.BaudRate = 9600;
sp.PortName = "COM3";
sp.Open();
SerialPort 라는 클래스를 생성한 뒤 BaudRate 로 속도를 지정, PortName 에 포트 네임을 지정해주면 된다.