이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

직렬 I/O 시작하기

예제: 시작하기

이 예제에서는 몇 가지 기본적인 직렬 포트 명령을 보여줍니다.

참고

Windows® 플랫폼에서 예제가 표시됩니다.

직렬 포트 COM1에 연결되어 있고 전송 속도가 4,800으로 구성된 장치가 있는 경우 다음 예제를 실행합니다.

s = serial('COM1');
set(s,'BaudRate',4800);
fopen(s);
fprintf(s,'*IDN?')
out = fscanf(s);
fclose(s)
delete(s)
clear s

*IDN? 명령은 장치에 out으로 반환되는 식별 정보를 쿼리하는 명령입니다. 장치에서 이 명령을 지원하지 않거나 장치가 다른 직렬 포트에 연결되어 있는 경우에는 이전 예제를 적절히 수정하십시오.

참고

*IDN?는 많은 최신 장치에서 사용되는 SCPI(Standard Commands for Programmable Instrument) 언어로 지원되는 명령 중 하나입니다. 장치에서 SCPI 언어를 지원하는지 알아보려면 장치 설명서를 참조하십시오.

직렬 포트 세션

이 예제에서는 직렬 포트 작업을 수행하는 절차를 처음부터 끝까지 설명합니다.

직렬 포트 세션은 직렬 포트에 연결된 장치와 통신할 때 진행하게 될 모든 절차로 구성됩니다. 즉, 다음과 같은 절차입니다.

  1. 직렬 포트 찾기 — seriallist 함수를 사용하여 시스템상의 직렬 포트 목록을 표시합니다.

  2. 직렬 포트 객체 만들기 — serial 생성 함수를 사용하여 특정 직렬 포트에 대한 직렬 포트 객체를 만듭니다.

    필요하다면 객체 생성 중에 속성을 구성하십시오. 특히, 전송 속도, 데이터 비트 수 등, 직렬 포트 통신과 관련된 속성을 구성할 수 있습니다.

  3. 장치에 연결 — fopen 함수를 사용하여 장치에 직렬 포트 객체를 연결합니다.

    객체가 연결된 후 속성값을 구성하여 필요한 장치 설정을 변경하고 데이터를 읽고 씁니다.

  4. 속성 구성 — 원하는 직렬 포트 객체 동작을 설정하려면 set 함수나 점 표기법을 사용하여 속성에 값을 할당하십시오.

    실제로, 객체 생성 중이나 생성 직후를 비롯해 언제든 다수의 속성을 구성할 수 있습니다. 반대로, 장치 설정과 직렬 포트 응용 프로그램의 요구 사항에 따라 디폴트 속성값을 허용하고 이 단계를 건너뛸 수도 있습니다.

  5. 데이터 쓰기 및 읽기 — fprintf 또는 fwrite 함수를 사용하여 장치에 데이터를 쓰고 fgetl, fgets, fread, fscanf 또는 readasync 함수를 사용하여 장치에서 데이터를 읽습니다.

    직렬 포트 객체는 이전에 구성한 속성값이나 디폴트 속성값에 따라 동작합니다.

  6. 연결 끊기 및 정리 — 더 이상 직렬 포트 객체가 필요하지 않으면 fclose 함수를 사용하여 장치에서 연결을 끊고, delete 함수를 사용하여 메모리에서 제거하고, clear 명령을 사용하여 MATLAB® 작업 공간에서 제거하십시오.

직렬 포트 세션은 여러 직렬 포트 설명서에 자세한 예제가 나와 있습니다. 위에서 설명한 절차에 따른 기본 예제를 보려면 예제: 시작하기 항목을 참조하십시오.

속성을 구성하고 반환하기

이 예제에서는 직렬 포트 속성 이름과 속성값을 표시하고 속성에 값을 할당하는 방법을 설명합니다.

속성값을 구성하여 원하는 직렬 포트 객체 동작을 설정합니다. set 함수, get 함수 또는 점 표기법을 사용하여 속성값을 표시하거나 구성할 수 있습니다.

속성 이름과 속성값 표시하기

직렬 포트 객체를 만든 후 set 함수를 사용하여 구성 가능한 속성을 전부 명령줄에 표시합니다. 그 밖에도, 속성에 유한한 문자열 값 세트가 있는 경우 set는 이들 값도 표시합니다.

s = serial('COM1');
set(s)
    ByteOrder: [ {littleEndian} | bigEndian ] 
    BytesAvailableFcn
    BytesAvailableFcnCount
    BytesAvailableFcnMode: [ {terminator} | byte ]
    ErrorFcn
    InputBufferSize
    Name
    OutputBufferSize
    OutputEmptyFcn
    RecordDetail: [ {compact} | verbose ]
    RecordMode: [ {overwrite} | append | index ]
    RecordName
    Tag
    Timeout
    TimerFcn
    TimerPeriod
    UserData

    SERIAL specific properties:
    BaudRate
    BreakInterruptFcn
    DataBits
    DataTerminalReady: [ {on} | off ]
    FlowControl: [ {none} | hardware | software ]
    Parity: [ {none} | odd | even | mark | space ]
    PinStatusFcn
    Port
    ReadAsyncMode: [ {continuous} | manual ]
    RequestToSend: [ {on} | off ]
    StopBits
    Terminator

한 개 또는 그 이상의 속성과 속성의 현재 값을 명령줄에 표시하려면 get 함수를 사용하십시오. 모든 속성과 속성의 현재 값을 표시하는 방법은 다음과 같습니다.

get(s)
    ByteOrder = littleEndian
    BytesAvailable = 0
    BytesAvailableFcn = 
    BytesAvailableFcnCount = 48
    BytesAvailableFcnMode = terminator
    BytesToOutput = 0
    ErrorFcn = 
    InputBufferSize = 512
    Name = Serial-COM1
    OutputBufferSize = 512
    OutputEmptyFcn = 
    RecordDetail = compact
    RecordMode = overwrite
    RecordName = record.txt
    RecordStatus = off
    Status = closed
    Tag = 
    Timeout = 10
    TimerFcn = 
    TimerPeriod = 1
    TransferStatus = idle
    Type = serial
    UserData = []
    ValuesReceived = 0
    ValuesSent = 0

    SERIAL specific properties:
    BaudRate = 9600
    BreakInterruptFcn = 
    DataBits = 8
    DataTerminalReady = on
    FlowControl = none
    Parity = none
    PinStatus = [1x1 struct]
    PinStatusFcn = 
    Port = COM1
    ReadAsyncMode = continuous
    RequestToSend = on
    StopBits = 1
    Terminator = LF

한 속성에 대해 현재 값을 표시하려면 get에 속성 이름을 제공하십시오.

get(s,'OutputBufferSize')
ans =
   512

여러 속성에 대해 현재 값을 표시하려면 속성 이름을 셀형 배열의 요소로 포함하십시오.

get(s,{'Parity','TransferStatus'})
ans = 
    'none'    'idle'

단일 속성값을 표시하려면 점 표기법을 사용하십시오.

s.Parity
ans =
none

속성값 구성하기

다음과 같이 set 함수를 사용하여 속성값을 구성할 수 있습니다.

set(s,'BaudRate',4800);

또는 점 표기법을 사용할 수도 있습니다.

s.BaudRate = 4800;

여러 속성에 대한 값을 구성하려면 set에 여러 속성 이름/속성값 쌍을 제공하십시오.

set(s,'DataBits',7,'Name','Test1-serial')

점 표기법을 사용하여 한 번에 하나의 속성값만 구성할 수 있습니다.

실제로는, 객체 생성 도중을 비롯하여 직렬 포트 객체가 존재하는 동안에는 언제든 여러 속성을 구성할 수 있습니다. 하지만 객체가 장치에 연결되어 있는 동안이나 정보를 디스크에 기록할 때 일부 속성은 구성할 수 없습니다. 속성을 구성할 수 있는 시점에 대한 정보는 Property Reference 항목을 참조하십시오.

속성 이름 지정하기

직렬 포트 속성 이름은 대/소문자를 혼용하여 표시됩니다. 이렇게 하면 속성 이름을 더 쉽게 읽을 수 있으므로, 속성 이름을 지정할 때 대/소문자 중 원하는 문자를 사용하십시오. 예를 들어, BaudRate 속성을 구성하는 방법은 다음과 같습니다.

s.BaudRate = 4800;
s.baudrate = 4800;

디폴트 속성값

속성에 대한 값을 명시적으로 정의하지 않으면 항상 디폴트 값이 사용됩니다. 구성 가능한 속성은 전부 디폴트 값을 가지고 있습니다.

참고

운영 체제에서는 전송 속도와 같은 모든 직렬 포트 설정에 대해 디폴트 값을 제공합니다. 하지만 이런 설정은 MATLAB 코드로 재정의되며 직렬 포트 응용 프로그램에는 아무런 영향도 주지 않습니다.

속성에 유한한 문자열 값 세트가 있는 경우 {} 안에 디폴트 값이 표시됩니다. 예를 들어, Parity 속성의 디폴트 값은 none입니다.

set(s,'Parity')
[ {none} | odd | even | mark | space ]

속성 함수 도움말 페이지에서 속성의 디폴트 값을 찾을 수 있습니다.