Hi6 Robot Controller Manual - Robot Language HRScr
Korean
Korean
  • Hi6 로봇제어기 기능설명서 - 로봇언어 HRScript
  • 1. 개요
    • 1.1 HRScript의 소개
  • 2. 기본 문법
    • 2.1 명령문
    • 2.2 식별자
    • 2.3 명령문의 종류
      • 2.3.1 프로시져
      • 2.3.2 대입문
      • 2.3.3 주석문
      • 2.3.4 레이블
    • 2.4 첫 번째 프로그램 - Hello, World !
    • 2.5 자료형 (type)
      • 2.5.1 문자열 자료형
      • 2.5.2 숫자 자료형
      • 2.5.3 bool 자료형
      • 2.5.4 배열과 객체형
    • 2.6 변수
    • 2.7 2진수와 16진수
    • 2.8 연산자와 수식
    • 2.9 함수
      • 2.9.1 수학 함수
      • 2.9.2 문자열 함수
      • 2.9.3 날짜, 시간 함수
      • 2.9.4 생성자 함수
      • 2.9.5 기타 함수
    • 2.10 import문
  • 3. 제어문과 서브프로그램
    • 3.1 주소 (Address)
    • 3.2 정지, 대기문
      • 3.2.1 stop문
      • 3.2.2 end문
      • 3.2.3 delay문
      • 3.2.4 wait문
    • 3.3 분기문
      • 3.3.1 goto 문
      • 3.3.2 gosub~retsub 문
    • 3.4 조건문
      • 3.4.1 단문 if문
      • 3.4.2 복문 if~endif 문
      • 3.4.3 복문 if~else~endif 문
      • 3.4.4. 복문 if~elseif~else~endif문
      • 3.4.5. switch~case~break~end_switch문
    • 3.5. 내포된 (nested) 제어문
    • 3.6 반복문
      • 3.6.1 for~next문
      • 3.6.2 break문, continue문
    • 3.7 call문, jump문과 서브프로그램
      • 3.7.1 call문
      • 3.7.2 매개변수와 param문, return문
      • 3.7.3 def문
      • 3.7.4 jump문
    • 3.8 지역변수와 전역변수
      • 3.8.1 지역변수
      • 3.8.2 전역변수
      • 3.8.3 우선순위
  • 4. 배열과 객체
    • 4.1 배열
      • 4.1.1 배열
      • 4.1.2 다차원 배열
      • 4.1.3 배열 생성자 함수
      • 4.1.4 배열 원소 추가 append_arr
      • 4.1.5 배열에 다른 배열을 추가 extend_arr
    • 4.2 객체 (object)
    • 4.3 배열과 객체의 복사 대입(assignment)
    • 4.4 참조 전달(call-by-reference)과 값 전달(call-by-value)
  • 5. 로봇언어로 로봇 움직이기
    • 5.1 포즈 (pose)
    • 5.2 시프트 (shift)
    • 5.3 포즈식 (pose expression)
    • 5.4 move문
    • 5.5 mkucs함수 - 사용자좌표계
    • 5.6 selucrd문
    • 5.7 contpath문
    • 5.8 coldet문
    • 5.9 colsense문
    • 5.10 softxyz문
    • 5.11 softxyz_lim문
    • 5.12 softjoint문
    • 5.13 softjoint_lim문
    • 5.14 외부 제어
    • 5.15 convcrd문
    • 5.16 pose_trans문
    • 5.17 pose_inv문
    • 5.18 axisctrl문
    • 5.19 smov문
    • 5.20 shift문
    • 5.21 shift_lim문
  • 6. 외부장치와 통신하기
    • 6.1 fb객체 : 디지털 I/O
      • 6.1.1 입출력 변수
      • 6.1.2 예제
      • 6.1.3 fn객체
      • 6.1.4 pulse문
    • 6.2 http_cli 모듈 : HTTP 클라이언트
      • 6.2.1 생성자
      • 6.2.2 멤버변수
      • 6.2.3 멤버 프로시져
        • get
        • put
        • post
        • delete
      • 6.2.4 HTTP client 통신 코드
      • 6.2.5 HTTP client 통신 예제
    • 6.3 티치펜던트 console bar로 입출력하기
      • 6.3.1 print문
      • 6.3.2 input문
    • 6.4 modbus 모듈:모드버스 마스터
    • 6.5 Sci 모듈:시리얼 통신
      • 6.5.1 생성자
      • 6.5.2 멤버 프로시져
        • send
        • recv
        • open
        • close
        • clr_rbuf
      • 6.5.3 시리얼 통신 예제
  • 7. enet 모듈 : 이더넷 TCP/UDP 통신
    • 7.1 peer-to-peer, client 예제
      • 7.1.1 peer-to-peer, client 예제 - 문자열 송수신
      • 7.1.2 peer-to-peer, client 예제 - 바이너리 송수신
    • 7.2 TCP server 예제
      • 7.2.1 ethernet TCP server - 문자열 송수신
      • 7.2.2 ethernet TCP server - 바이너리 송수신
    • 7.3 ENet 객체
      • 7.3.1 ENet 생성자
      • 7.3.2 ENet 멤버변수
      • 7.3.3 ENet 멤버 함수
        • accept
        • close
        • connect
        • listen
        • open
        • recv
        • recv_bbuf
        • send
        • send_bbuf
        • set_send_trail_null
        • state
    • 7.4 BBuf 객체
      • 7.4.1 BBuf 생성자
      • 7.4.2 지원 형식 (format)
      • 7.4.3 BBuf 멤버 함수
        • append
        • clear
        • nbyte
        • read_num
        • read_nums
  • 8. 앨리어스 (alias)
  • 9. 파일
    • 9.1 파일시스템
      • 9.1.1 mkdir문
      • 9.1.2 copyfile문
      • 9.1.3 delfile문
    • 9.2 load/save
      • 9.1.1 load_job문
      • 9.1.2 load_csv문
      • 9.1.3 save_csv문
  • 10. 기타
    • 10.1 기타 프로시져
      • 10.1.1 gather문
      • 10.1.2 tonl문
      • 10.1.3 seltool문
      • 10.1.4 triggout문
      • 10.1.5 intr_def문
      • 10.1.6 typeof문
      • 10.1.7 gasp_check문
      • 10.1.8 optime문
      • 10.1.9 count_up문
      • 10.1.10 count_dn문
      • 10.1.11 cycle_end문
      • 10.1.12 speed_out문
      • 10.1.13 task문
      • 10.1.14 toolchng문
      • 10.1.15 json_parse문
    • 10.2 기타 함수
      • 10.2.1 rducs 함수
      • 10.2.2 segment 함수
      • 10.2.3 intersection 함수
      • 10.2.4 rand 함수
      • 10.2.5 sig2int 함수
    • 10.3 시스템 변수
      • _acc_rate 변수
      • _dec_rate 변수
      • _intr.no 변수
      • _intr.target 변수
      • _spd_rate 변수
      • _task.enable 변수
      • _tool 변수
      • _vel_rpm_cmd 변수
      • _weaving 변수
Powered by GitBook
On this page
  • UDP peer-to-peer
  • TCP client

Was this helpful?

Edit on GitHub
  1. 7. enet 모듈 : 이더넷 TCP/UDP 통신
  2. 7.1 peer-to-peer, client 예제

7.1.2 peer-to-peer, client 예제 - 바이너리 송수신

바이너리 송수신은 BBuf (Binary Buffer) 객체를 통해 수행합니다. (송수신 부분만 다르고, 나머지는 문자열 송수신과 동일합니다.)

송신

  1. enet.BBuf 객체 생성.

  2. 원하는 바이너리 데이터를 BBuf.append() 함수로 BBuf 객체에 추가.

  3. ENet.send_bbuf() 함수로 BBuf 객체를 송신.

수신

  1. enet.BBuf 객체 생성.

  2. ENet.recv_bbuf() 함수로 BBuf 객체에 바이너리 데이터를 수신

  3. 원하는 바이너리 데이터를 BBuf.read_nums() 함수로 BBuf 객체로부터 읽기.

UDP peer-to-peer

     # 1. enet 모듈 import 후, 생성자로 ENet 객체 생성
     import enet
     var cli=enet.ENet() # TCP 통신인 경우, ENet("tcp")

     # 2. IP주소와 port번호 설정
     cli.ip_addr="192.168.1.172" # remote (상대방) IP address
     cli.lport=51001 # local (자신) port
     cli.rport=51002 # remote (상대방) port 
     # (port no. 49152–65535 contains dynamic or private ports)

     # 3. ethernet socket 열기
     cli.open
     
     print cli.state() # 1이면 정상

     # 송신 --------------------------------
     # 4-1. BBuf 객체 생성
     var bbuf=enet.BBuf()

     # (sample binary data)
     var arr=[ -3, 0, 1 ]
     
     # 4-2. binary data를 BBuf 객체에 추가.
     bbuf.clear()
     bbuf.append("s4", arr) # little endian signed-4byte data 추가

     # 4-3. BBuf 객체를 송신
     var ret
     ret=cli.send_bbuf(bbuf)

     # 수신 --------------------------------
     # 4-1. BBuf 객체 생성
     var bbuf2=enet.BBuf()
     
     # 4-2. BBuf 객체에 binary data를 수신
     #     (3초간 수신 없으면 *TimeOut 레이블로 jump)
     cli.recv_bbuf bbuf2,3000,*TimeOut

     # 4-3. binary data를 BBuf 객체로부터 읽기.
     var nums=bbuf2.read_nums("U2", 0, 3) # big-endian unsigned-2byte data 3개 읽기
     print nums
     # --------------------------------

     # 5. ethernet socket 닫기
     cli.close
     print cli.state() # 0이면 정상
     delay 1.5
     end

     *TimeOut
     print "time out!"
     cli.close
     end

TCP client

(peer-to-peer와는 lport와 connect 부분만 다름.)

     # 1. enet 모듈 import 후, 생성자로 ENet 객체 생성
     import enet
     var cli=enet.ENet() # TCP 통신인 경우, ENet("tcp")

     # 2. IP주소와 port번호 설정
     cli.ip_addr="192.168.1.172" # remote (상대방) IP address
     cli.lport=0 # local (자신) port; 무작위
     cli.rport=51002 # remote (상대방) port 
     # (port no. 49152–65535 contains dynamic or private ports)

     # 3. ethernet socket 열기
     cli.open
     cli.connect # 서버에 접속.
     print cli.state() # 1이면 정상

     # 송신 --------------------------------
     # 4-1. BBuf 객체 생성
     var bbuf=enet.BBuf()

     # (sample binary data)
     var arr=[ -3, 0, 1 ]
     
     # 4-2. binary data를 BBuf 객체에 추가.
     bbuf.clear()
     bbuf.append("s4", arr) # little endian signed-4byte data 추가

     # 4-3. BBuf 객체를 송신
     var ret
     ret=cli.send_bbuf(bbuf)

     # 수신 --------------------------------
     # 4-1. BBuf 객체 생성
     var bbuf2=enet.BBuf()
     
     # 4-2. BBuf 객체에 binary data를 수신
     #     (3초간 수신 없으면 *TimeOut 레이블로 jump)
     cli.recv_bbuf bbuf2,3000,*TimeOut

     # 4-3. binary data를 BBuf 객체로부터 읽기.
     var nums=bbuf2.read_nums("U2", 0, 3) # big-endian unsigned-2byte data 3개 읽기
     print nums
     # --------------------------------

     # 5. ethernet socket 닫기
     cli.close
     print cli.state() # 0이면 정상
     delay 1.5
     end

     *TimeOut
     print "time out!"
     cli.close
     end
Previous7.1.1 peer-to-peer, client 예제 - 문자열 송수신Next7.2 TCP server 예제

Last updated 2 years ago

Was this helpful?

"s4"나 "U2" 같은 문자열 인수가 endian 방식, signed/unsigned, byte수 같은 binary data 형식을 결정합니다. 자세한 내용은 을 참조하십시오.

7.4.2 지원 형식 (format)