Main Content

fwrite (serial)

(제거될 예정임) 장치에 이진 데이터 쓰기

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

구문

fwrite(obj,A)
fwrite(obj,A,'precision')
fwrite(obj,A,'mode')
fwrite(obj,A,'precision','mode')

설명

fwrite(obj,A)는 직렬 포트 객체 obj에 연결된 장치에 이진 데이터 A를 씁니다.

fwrite(obj,A,'precision')precision으로 지정된 정밀도로 이진 데이터를 씁니다.

precision에 따라 각 값에 대한 비트 수가 정해지고, 비트를 정수, 부동소수점, 문자 값 중 어떤 값으로 해석해야 하는지가 결정됩니다. precision이 지정되지 않은 경우 uchar(8비트 부호 없는 문자)가 사용됩니다. precision에 사용할 수 있는 값은 에 나와 있습니다.

fwrite(obj,A,'mode')mode로 지정된 명령줄 액세스 방식으로 이진 데이터를 씁니다. modesync이면 A가 동기식으로 기록되고 명령줄이 차단됩니다. modeasync이면 A가 비동기식으로 기록되고 명령줄이 차단되지 않습니다. mode가 지정되지 않으면 쓰기 작업이 동기화됩니다.

fwrite(obj,A,'precision','mode')precision으로 지정된 정밀도와 mode로 지정된 명령줄 액세스 방식으로 이진 데이터를 씁니다.

장치에 데이터를 쓰려면 fopen 함수를 사용하여 obj에 장치가 연결되어 있어야 합니다. 연결된 직렬 포트 객체는 Status 속성값으로 open을 갖습니다. obj가 장치에 연결되어 있지 않은 상태에서 쓰기 작업을 수행하려고 하면 오류가 반환됩니다.

fwrite가 실행될 때마다 쓰여진 값 개수만큼 ValuesSent 속성값이 증가합니다.

출력 버퍼가 기록되는 데이터를 모두 수용하지 못하면 오류가 발생합니다. OutputBufferSize 속성으로 출력 버퍼의 크기를 지정할 수 있습니다.

직렬 객체에서 FlowControl 속성을 hardware로 설정할 경우 하드웨어 연결이 감지되지 않으면 fwrite가 오류 메시지를 반환합니다. 이는 장치가 연결되어 있지 않거나, 연결된 장치가 데이터를 수신할 준비가 되었음을 어설션하지 않을 경우에 발생합니다. 원격 장치의 상태와 흐름 제어 설정을 확인하여 하드웨어 흐름 제어로 인해 MATLAB®에서 오류가 발생하는지 여부를 알아보십시오.

참고

장치가 데이터를 수신할 준비가 되었음을 어설션하고 있는지 확인하려면 FlowControlnone으로 설정하십시오. 장치에 연결되면 PinStatus 구조체에서 ClearToSend를 확인하십시오. ClearToSendoff이면 원격 장치 쪽에 문제가 있는 것입니다. ClearToSendon이면 데이터 수신을 위해 준비된 하드웨어 FlowControl 장치가 있는 것으로, fwrite를 실행할 수 있습니다.

동기 쓰기 작업과 비동기 쓰기 작업 비교

기본적으로 쓰기 작업을 하면 데이터는 장치에 동기적으로 기록되며, 작업이 완료될 때까지 명령줄이 차단됩니다. mode 입력 인수를 async로 구성하여 비동기 쓰기를 수행할 수 있습니다. 비동기 쓰기의 특징은 다음과 같습니다.

  • 출력 버퍼의 바이트 수가 반영되도록 BytesToOutput 속성값이 계속 업데이트됩니다.

  • 출력 버퍼가 비어 있으면 OutputEmptyFcn 속성에 지정된 콜백 함수가 실행됩니다.

TransferStatus 속성을 통해 비동기 쓰기 작업이 진행 중인지 여부를 확인할 수 있습니다.

fwrite를 사용한 쓰기 작업 완료 규칙

다음과 같은 경우 fwrite를 사용한 이진 쓰기 작업이 완료됩니다.

  • 지정된 데이터가 다 기록되었을 때

  • Timeout 속성으로 지정된 시간이 경과하면

    참고

    이진 쓰기 작업에는 Terminator 속성이 사용되지 않습니다.

지원되는 정밀도

다음 표에는 precision에 사용할 수 있는 값이 나와 있습니다.

데이터형

정밀도

해석 방식

문자

uchar

8비트 부호 없는 문자

schar

부호 있는 8비트 문자

char

부호 있는 8비트 문자 또는 부호 없는 문자

정수

int8

8비트 정수

int16

16비트 정수

int32

32비트 정수

uint8

8비트 부호 없는 정수

uint16

16비트 부호 없는 정수

uint32

32비트 부호 없는 정수

short

16비트 정수

int

32비트 정수

long

32비트 또는 64비트 정수

ushort

16비트 부호 없는 정수

uint

32비트 부호 없는 정수

ulong

32비트 또는 64비트 부호 없는 정수

부동소수점

single

32비트 부동소수점

float32

32비트 부동소수점

float

32비트 부동소수점

double

64비트 부동소수점

float64

64비트 부동소수점

버전 내역

R2006a 이전에 개발됨

모두 축소

R2021a: serial 객체 인터페이스는 제거될 예정임

이 함수를 serial 객체와 함께 사용하는 것은 제거될 예정입니다. 직렬 포트 장치에 액세스하려면 대신 serialport 객체를 해당 함수 및 속성과 함께 사용하십시오.

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

참고 항목

함수