통합 예제 - Serial
serial 포트에서 RXD(2번pin) 와 TXD(3번pin) 결선한 후, 자체 loop-back 테스트하는 예제입니다.
예제 1 : 자체 loop-back test예제
# 시리얼 포트 OPEN
# D-SUB(9pin) 연결한 경우 : port="COM"
# USB to Serial 로 USB에 연결한 경우 : port="COM_USB"
ser = serial_open(port="COM_USB", baudrate=115200, bytesize=DR_EIGHTBITS, parity=DR_PARITY_NONE, stopbits=DR_STOPBITS_ONE)
wait(1)
# SEND DATA : "123ABC"
res = serial_write(ser, b"123ABC") # b는 바이트 타입을 의미
wait(1)
# READ DATA
res, rx_data = serial_read(ser)
# H/W 적으로 RXD,TXD가 연결되어 있어 res=6(바이트) rx_data = b"123ABC" 가 수신 됨
tp_popup("res ={0}, rx_data={1}".format(res, rx_data))
#해당 시리얼 포트를 닫음
serial_close(ser)
송신 데이터를 그대로 수신데이터로 받아서 결과를 TP pop-up 메시지로 출력합니다.
정상적으로 동작한 경우 res=6 rx_data = b”123ABC” 결과를 출력합니다.
예제 2 : 다양한 패킷 전송 예제
송신 패킷 : “MEAS_START" +data1[4byte]+data2[4byte]
data1: integer를 4byte로 변환 ex) 1 → 00000001
data2: integer를 4byte로 변환 ex) 2 → 00000002
ex) data1=1, data2=2 인 경우: “MEAS_START"+00000001+00000002
실제 패킷: 4D4541535F53544152540000000100000002
수신 패킷 : res=18, rx_data=“MEAS_START"+00000001+00000002
rxd1 추출 : 10~14번째 byte를 interger로 변환
rxd2 추출 : 14~18번째 byte를 interger로 변환
ser = serial_open(port="COM_USB", baudrate=115200, bytesize=DR_EIGHTBITS, parity=DR_PARITY_NONE, stopbits=DR_STOPBITS_ONE)
wait(1)
send_data = b"MEAS_START" # b는 바이트 타입을 의미
data1 =1
data2 =2
send_data += (data1).to_bytes(4, byteorder='big')
send_data += (data2).to_bytes(4, byteorder='big')
# SEND DATA
res = serial_write(ser, send_data)
wait(1)
# READ DATA
# H/W 적으로 RXD,TXD가 연결되어 있어 send_data 가 그대로 수신 됨
res, rx_data = serial_read(ser)
tp_popup("res ={0}, rx_data={1}".format(res, rx_data))
rxd1 = int.from_bytes(rx_data[10:10+4], byteorder='big', signed=True)
rxd2 = int.from_bytes(rx_data[14:14+4], byteorder='big', signed=True)
tp_popup("res={0}, rxd1={1}, rxd2={2}".format(res, rxd1, rxd2))
#해당 시리얼 포트를 닫음
serial_close(ser)
USB to serial 장비를 USB 포트에 연결하고 byte형 send_data를 전송합니다.
송신 데이터를 그대로 수신하도록 RXD(2pin) 와 TXD(3pin)를 결선하였으므로
res = 18, rx_data는 send_data와 같은 패킷을 가집니다.
rxd1 추출 : 10~14번째 byte를 interger로 변환
rxd2 추출 : 14~18번째 byte를 interger로 변환
최종 결과는 res=18, rxd1=1, rxd2=2 가 됩니다.