SD 카드의 지정된 파일에서 한 줄 읽기
이 FP 명령은 s_FullFileName에서 지정한 파일을 d2_dutReadLine에서 지정한 포인터 위치부터 지정한 최대 바이트 수까지 또는 줄바꿈 문자(CR, LF, CR+LF)가 감지될 때까지 읽습니다. 결과는 d1_Out에서 지정한 영역에 저장됩니다.
입력
파일 이름
입력/출력
포인터 위치와 읽을 최대 문자 수
출력
출력 영역
SD 카드 메모리 사전 주의사항도 참조해 주십시오.
SD 메모리 카드 명령의 트리거 EN이 TRUE로 전환된 후 SD 메모리 액세스 활성 플래그(sys_bIsSDMemoryAccessActive)는 TRUE로 전환되고 실행이 완료될 때까지 TRUE로 유지됩니다. 이 시간 동안에는 다른 SD 메모리 카드 명령을 실행할 수 없습니다.
SD 메모리 액세스 완료 플래그(sys_blsSDMemoryAccessDone)가FALSE이고 TRUE가 되며, 명령이 완료되면 TRUE를 유지합니다.
명령 실행이 완료될 때까지 출력 영역의 데이터를 읽지 마십시오.
FALSE: 명령이 에러 없이 완료된 경우
TRUE: 에러가 발생하여 명령이 완료된 경우
sys_iSDMemoryAccessErrorCode를 사용하여 에러 코드를 평가합니다.
인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.
인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bStart: BOOL:=FALSE;
(*activates the instruction*)
dutSDReadString: FP_SD_READ_LINE_DUT;
sStringRead1: STRING[32]:='';
@'': @'';
END_VAR
변수 bStart가 FALSE에서 TRUE로 변경되면 함수가 실행됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_CONTACT,,bStart,5,1,7,3,R);
B(B_VAROUT,,dutSDReadString.udiReadCharPosition,16,2,18,4,);
B(B_VARIN,,0,8,2,10,4,);
B(B_F,E_MOVE!,,10,0,16,4,,?DEN?D?AENO?C);
L(1,2,5,2);
L(7,2,10,2);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,'\TestLine.csv',10,4,12,6,);
B(B_CONTACT,,bStart,2,1,4,3,R);
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,1,12,3,N);
B(B_VARIN,,dutSDReadString,10,5,12,7,);
B(B_VAROUT,,sStringRead1,27,4,29,6,);
B(B_F,FP_SD_READ_LINE!,,12,2,27,7,,?DEN?Ds_FullFileName?Dd2_dutReadLine?Ad2_dutReadLine?AENO?Cd1_Out);
L(1,2,2,2);
L(4,2,10,2);
L(12,2,12,4);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(bStart)And not sys_bIsSDMemoryAccessActive then
dutSDReadString.udiReadCharPosition:=0;
FP_SD_READ_LINE(s_FullFileName := '\TestLine.csv',
d2_dutReadLine := dutSDReadString,
d1_Out => sStringRead1);
END_IF;