사용자 도구

사이트 도구

English

cubloc:getstr2:index

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
cubloc:getstr2:index [2016/03/23 13:08]
Comfile Technology 만듦
cubloc:getstr2:index [2020/08/19 00:24] (현재)
Comfile Technology [대상제품]
줄 1: 줄 1:
 +====== 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)에는 실제로 수신된 바이트수가 들어 있습니다.
 +
 +
 +==== 사용예 ====
 +<code xbasic>
 +   '​ 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는 카운트에 포함됩니다.
 +</​code>​
 +
 +
 +
 +[[cubloc:​|명령어 목록으로 가기]]