문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
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:|명령어 목록으로 가기]] |