Main Content

serial

(제거될 예정임) 직렬 포트 객체 만들기

serial은 향후 릴리스에서 제거될 예정입니다. serialport를 대신 사용하십시오. 코드 업데이트에 대한 자세한 내용은 호환성 관련 고려 사항 항목을 참조하십시오.

설명

예제

s = serial('port')'port'로 지정된 직렬 포트와 연결된 직렬 포트 객체 s를 만듭니다. 'port'가 존재하지 않거나 사용 중이면 직렬 포트 객체를 장치에 연결할 수 없습니다.

예제

s = serial('port',Name,Value)는 지정된 속성 이름과 속성값을 갖는 직렬 포트 객체를 만듭니다. 잘못된 속성 이름이나 속성값을 지정하면 오류가 반환되고 직렬 포트 객체가 생성되지 않습니다.

예제

모두 축소

이 예제에서는 직렬 포트 객체를 만드는 방법을 보여줍니다.

seriallist 함수를 사용하여 사용 가능한 직렬 포트를 찾습니다.

seriallist

직렬 포트 객체 s를 만들고 이 객체를 직렬 포트 COM1에 연결합니다. 직렬 포트 객체를 만들려면 포트를 첫 번째 인수로 지정해야 합니다.

s = serial('COM1');

COM3로 지정된 직렬 포트와 연결된 직렬 포트 객체 s2를 만듭니다. 객체를 생성할 때 포트 인수 뒤에 선택적으로 이름-값 쌍을 지정하여 통신 속성을 설정할 수 있습니다. 이 예제에서는 전송 속도를 4800으로 설정하고 종결자를 CR로 설정합니다. 이러한 값은 객체 출력값에서 확인할 수 있습니다.

s2 = serial('COM3','BaudRate',4800,'Terminator','CR')

입력 인수

모두 축소

직렬 포트 이름으로, 문자형 벡터 또는 string형으로 지정됩니다. seriallist 함수는 사용 가능한 직렬 포트 목록을 제공합니다. 직렬 포트 객체를 만들려면 포트를 지정해야 합니다.

포트 이름은 직렬 포트가 있는 플랫폼에 따라 달라집니다. 다음 목록은 다양한 플랫폼에 대한 직렬 생성자의 한 예입니다.

플랫폼직렬 포트 생성자
Linux® 64s = serial('/dev/ttyS0')
macOS 64s = serial('/dev/tty.KeySerial1')
Windows® 64s = serial('COM1')

예: s = serial('COM1')

데이터형: char | string

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: s = serial('COM2','BaudRate',1200,'DataBits',7);

serial과 함께 사용할 수 있는 직렬 포트 객체 속성의 목록을 보려면 serial Properties 항목을 참조하십시오.

참고

포트는 직렬 객체를 만들 때 사용되는 첫 번째 인수여야 합니다. 첫 번째 인수 뒤에는 지원되는 이름-값 쌍을 원하는 수만큼 지정할 수 있습니다.

비트가 전송되는 속도로, 'BaudRate'와 함께 double형이 쉼표로 구분되어 지정됩니다. 전송 속도는 bps 단위로 구성합니다. 전송되는 비트는 시작 비트, 데이터 비트, 패리티 비트(사용된 경우) 및 정지 비트를 포함합니다. 그러나 데이터 비트만 저장됩니다.

전송 속도(baud rate)는 통신 채널에서 정보가 전송되는 속도입니다. 직렬 포트의 경우, 9600보드는 직렬 포트가 최대 9600bps로 전송할 수 있다는 의미입니다. 정보 단위가 1보드(1비트)이면 비트 레이트와 전송 속도가 동일합니다. 1보드를 10비트(예: 데이터 비트 8개 + 프레임 비트 2개)로 지정하면 비트 레이트는 여전히 9600이지만 전송 속도는 9600/10, 즉 960입니다. BaudRate는 항상 초당 비트 수(bps) 단위로 구성합니다.

참고

데이터를 성공적으로 읽거나 쓰려면 먼저 컴퓨터와 주변 기기를 같은 전송 속도로 구성해야 합니다.

표준 전송 속도는 110bps, 300bps, 600bps, 1200bps, 2400bps, 4800bps, 9600bps, 14400bps, 19200bps, 38400bps, 57600bps, 115200bps, 128000bps, 256000bps 등입니다.

직렬 객체를 만든 후에 다음 구문을 사용하여 BaudRate 속성을 설정할 수도 있습니다.

s.BaudRate = 4800;

예: s = serial('COM1','BaudRate',4800);

데이터형: double

장치의 바이트 순서로, 'ByteOrder'와 함께 littleEndian 또는 bigEndian이 쉼표로 구분되어 지정됩니다. ByteOrderlittleEndian이면 장치가 첫 번째 메모리 주소에 첫 번째 바이트를 저장합니다. ByteOrderbigEndian이면 장치가 첫 번째 메모리 주소에 마지막 바이트를 저장합니다.

예를 들어, 장치 메모리에 16진수 값 4F52가 저장된다고 가정해 보겠습니다. 이 값은 2바이트, 즉 4F와 52로 구성되어 있으므로 두 개의 메모리 위치가 사용됩니다. 빅 엔디안 형식을 사용하면 더 낮은 저장 주소에 4F가 저장됩니다. 리틀 엔디안 형식을 사용하면 더 낮은 저장 주소에 52가 저장됩니다.

이 속성을 지정하지 않은 경우 읽기 및 쓰기 연산에 사용되는 디폴트 값은 littleEndian 바이트 순서입니다. 바이트 순서를 bigEndian으로 변경하려는 경우에만 속성을 지정해야 합니다.

직렬 객체를 만든 후에 다음 구문을 사용하여 ByteOrder 속성을 설정할 수도 있습니다.

s.ByteOrder = 'bigEndian';

참고

읽기 또는 쓰기 연산을 수행하기 전에 ByteOrder를 장치에 적합한 값으로 구성하십시오. 장치가 바이트를 저장하는 순서는 장치 설명서를 참조하십시오.

예: s = serial('COM1','ByteOrder','bigEndian');

데이터형: char | string

전송할 데이터 비트의 수로, 'DataBits'와 함께 5, 6, 7 또는 8(디폴트 값)이 쉼표로 구분되어 지정됩니다. 데이터는 5개, 6개, 7개 또는 8개의 비트 단위로 최하위 비트부터 전송됩니다. ASCII 문자를 전송하려면 최소 7개의 데이터 비트가 필요합니다. 이진 데이터를 전송하려면 8개의 비트가 필요합니다. 5비트 및 6비트 데이터 형식은 특화된 통신 장비에서 사용됩니다.

참고

컴퓨터와 주변 기기가 서로 같은 수의 데이터 비트를 전송하도록 구성해야 합니다.

직렬 데이터 형식은 데이터 비트 외에 1개의 시작 비트, 1개 또는 2개의 정지 비트 및 1개의 패리티 비트(사용되는 경우)로 구성됩니다. 정지 비트의 수는 StopBits 속성으로 지정하고 패리티 검사 유형은 Parity 속성으로 지정합니다.

직렬 객체를 만든 후에 다음 구문을 사용하여 DataBits 속성을 설정할 수도 있습니다.

s.DataBits = 7;

예: s = serial('COM1','DataBits',7);

데이터형: double

패리티 검사 유형으로, 'Parity'와 함께 none, odd, even, mark 또는 space가 쉼표로 구분되어 지정됩니다.

{none}

디폴트 값. 패리티 검사 안 함. 패리티 검사가 수행되지 않으며 패리티 비트가 전송되지 않습니다.

odd

홀수 패리티 검사. 데이터에서 마크 비트(1)의 개수를 센 다음 홀수 개의 마크 비트를 얻도록 패리티 비트가 어설션되거나 어설션 해제됩니다.

even

짝수 패리티 검사. 데이터에서 마크 비트의 수를 센 다음 짝수 개의 마크 비트를 얻도록 패리티 비트가 어설션되거나 어설션 해제됩니다.

mark

마크 패리티 검사. 패리티 비트가 어설션됩니다.

space

스페이스 패리티 검사. 패리티 비트가 어설션 해제됩니다.

패리티 검사는 1비트 오류만 감지할 수 있습니다. 2비트 오류가 발생한 경우, 실제로는 틀렸지만 유효해 보이는 패리티가 데이터에 있을 수 있습니다.

직렬 데이터 형식은 패리티 비트 외에 1개의 시작 비트, 5개~8개의 데이터 비트 및 1개 또는 2개의 정지 비트로 구성됩니다. 데이터 비트의 수는 DataBits 속성으로 지정하고 정지 비트의 수는 StopBits 속성으로 지정합니다.

직렬 객체를 만든 후에 다음 구문을 사용하여 Parity 속성을 설정할 수도 있습니다.

s.Parity = 'even';

예: s = serial('COM1','Parity','even');

데이터형: char | string

바이트의 끝을 나타내는 데 사용되는 비트 수로, 'StopBits'와 함께 1, 1.5 또는 2가 쉼표로 구분되어 지정됩니다. StopBits1이면 데이터 전송의 끝을 나타내는 데 정지 비트 1개가 사용됩니다. StopBits2이면 데이터 전송의 끝을 나타내는 데 정지 비트 2개가 사용됩니다. StopBits1.5이면 평상시에 비트 1개를 전송하는 데 걸리는 시간의 150% 동안 정지 비트가 전송됩니다.

참고

컴퓨터와 주변 기기가 서로 같은 수의 정지 비트를 전송하도록 구성해야 합니다.

가능한 값의 요약:

{1}

디폴트 값. 바이트의 끝을 나타내기 위해 정지 비트 1개가 전송됩니다.

1.5

평상시에 비트 1개를 전송하는 데 걸리는 시간의 150% 동안 정지 비트가 전송됩니다.

2

바이트의 끝을 나타내기 위해 정지 비트 2개가 전송됩니다.

직렬 데이터 형식은 정지 비트 외에 1개의 시작 비트, 5개~8개의 데이터 비트 및 1개의 패리티 비트(사용되는 경우)로 구성됩니다. 데이터 비트의 수는 DataBits 속성으로 지정하고 패리티 검사 유형은 Parity 속성으로 지정합니다.

직렬 객체를 만든 후에 다음 구문을 사용하여 StopBits 속성을 설정할 수도 있습니다.

s.StopBits = 2;

예: s = serial('COM1','StopBits',2);

데이터형: double

종결자 문자로, 'Terminator'와 함께 string형이 쉼표로 구분되어 지정됩니다. Terminator를 문자의 ASCII 코드를 나타내는 0 ~ 127 범위의 정수값으로 구성하거나 Terminator를 ASCII 문자로 구성할 수 있습니다. 예를 들어, Terminator를 캐리지 리턴으로 구성하려면 값을 CR 또는 13으로 지정하십시오. Terminator를 라인 피드로 구성하려면 값을 LF 또는 10으로 지정하십시오. TerminatorCR/LF 또는 LF/CR로 설정할 수도 있습니다. TerminatorCR/LF이면 종결자에서 캐리지 리턴 다음에 라인 피드가 옵니다. Terminator가 LF/CR이면 종결자에서 라인 피드 다음에 캐리지 리턴이 옵니다. 이 두 값에 상응하는 정수는 없습니다.

또한 Terminator를 1×2 셀형 배열로 설정할 수 있습니다. 셀의 첫 번째 요소는 읽기 종결자이고 셀형 배열의 두 번째 요소는 쓰기 종결자입니다.

fprintf 함수를 사용하여 쓰기 작업을 수행하면 모든 \nTerminator 속성값으로 바뀝니다. %s\nfprintf의 디폴트 형식입니다. Terminator 값을 읽으면 fgetl, fgets 또는 fscanf를 사용한 읽기 작업이 완료됩니다. 종결자는 이진 모드의 작업에서 무시됩니다.

BytesAvailableFcnModeterminator로 설정되어 있으면 종결자를 사용하여 bytes-available 이벤트를 생성할 수도 있습니다.

직렬 객체를 만든 후에 다음 구문을 사용하여 Terminator 속성을 설정할 수도 있습니다.

s.Terminator = 'CR';

예: s = serial('COM1','Terminator','CR');

데이터형: char | string

serial과 함께 사용할 수 있는 직렬 포트 객체 속성의 목록을 보려면 serial Properties 항목을 참조하십시오.

장치와 통신하기 전에 먼저 fopen 함수를 통해 obj에 장치가 연결되어 있어야 합니다. 연결된 직렬 포트 객체는 Status 속성값으로 open을 갖습니다. 객체가 장치에 연결되어 있지 않은 상태에서 읽기 또는 쓰기 작업을 시도하면 오류가 반환됩니다. 하나의 직렬 포트에는 하나의 직렬 포트 객체만 연결할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

모두 확장

R2022a: 경고

serial은 향후 릴리스에서 제거될 예정입니다. serialport를 대신 사용하십시오.

다음 예제에서는 권장되는 기능을 사용하여 직렬 포트에 연결하는 방법을 보여줍니다.

기능대체 기능
s = serial("COM1");
s.BaudRate = 115200;
fopen(s)
s = serialport("COM1",115200);

권장되는 인터페이스는 추가 기능을 제공하며 성능이 개선되었습니다. 권장되는 기능의 사용 방법에 대한 자세한 내용은 코드를 serialport 인터페이스로 전환하기 항목을 참조하십시오.

참고 항목

함수

도움말 항목