사용자 도구

사이트 도구

English

cubloc:getstr2:index

Getstr2

Variable = Getstr2(채널, Length, UntilChar)

Variable : 결과가 저장될 문자열 변수
채널 : 사용채널 (1,2,3중 하나)
Length : 수신할 바이트수
UntilChar : 수신종료 캐릭터 Ascii코드

설명

수신 버퍼에 있는 데이터에서 지정된 바이트(Length) 수 만큼의 데이터를 읽어와 문자열 변수에 저장하는 명령입니다. 수신데이터중 Untilchar 에 해당하는 Ascii코드가 발견되면, UntilChar 바로 전까지만 문자열변수에 저장합니다. 수신버퍼에 데이터가 남아있어도 그대로 두고 명령수행을 종료합니다.

Length에서 지정한 숫자까지 버퍼에서 읽어왔는데도 UntilChar를 발견할 수 없다면, 명령수행을 종료합니다. 수신버퍼에 들어있는 데이터수가 length보다 적은경우에는 읽어올 수 있는 데이터까지 읽어온상태에서 명령수행을 종료합니다.

데이터를 다 읽어온 다음에는 문자열 데이터의 끝을 의미하는 NULL캐릭터를 가장끝에 자동적으로 저장합니다. 만약 읽어온 데이터중 NULL 문자 (ASCII코드 0)가 포함되어 있다면, 실제로 그 곳까지가 문자열 데이터로 인식됩니다.

따라서 Length를 정할 때, 저장할 곳의 “문자열변수”와 같은 사이즈를 선택하거나, 적은 사이즈로 선택되어야 합니다. CUBLOC 특성상 RUN TIMEERROR를 발생시킬수 없기 때문에, 사이즈의 오류가 발생한다면, 예상하지 않은 결과를 얻게 됩니다. 예를 들어 Length를 문자열변수의 크기보다크게 지정했을 경우,다른 변수의 영역까지 침범할 수 있습니다. Getstr명령을 사용할 때, 반드시 Length의 크기를 문자열 변수크기보다 같거나작게 지정해 주어야합니다.

  Dim a2 as string * 10
  A2 = Getstr2(1,20) 

문자열 변수의 크기는 10인데 수신바이트는 20으로 했다면, 예상치못한 에러가 발생됩니다. 이 명령수행뒤 SYS(1)에는 실제로 수신된 바이트수가 들어 있습니다.

사용예

   ' RX와 TX단자를 서로 쇼트시킨뒤 아래 프로그램을 실행시키면, Debug터미널에 Comfile이라고 표시됩니다.
    Const Device = CB210
    Dim ST1 As String * 20
    Opencom 1,19200,3,50,50
    Wait 500
     Putstr 1,"ComfileATech"    ' 문자열 Comfile을 채널1으로 송신.
    Wait 20                            ' 수신할 여유를 줍니다.
    ST1 = Getstr2(1,17,&h41)   ' A가 나올때까지 버퍼로부터 수신, &h41은 A의 Ascii코드
     Debug ST1
    Debug Cr, Dec Sys(1),Cr   '실제로 수신된 바이트수인 8을 표시합니다. 맨뒤에 UntilChar는 카운트에 포함됩니다.

명령어 목록으로 가기

cubloc/getstr2/index.txt · 마지막으로 수정됨: 2020/08/19 00:24 저자 Comfile Technology