3.7.0 3.6.0 3.5.0 3.4.0 3.3.0 3.2.2 3.2.1 3.2.0 Korean English Chinese Czech Dutch French German Hungarian Italian Japanese Polish Portuguese Spanish
3.7.0 3.6.0 3.5.0 3.4.0 3.3.0 3.2.2 3.2.1 3.2.0 Korean English Chinese Czech Dutch French German Hungarian Italian Japanese Polish Portuguese Spanish

통합 예제 - Serial

serial 포트에서 RXD(2번pin) 와 TXD(3번pin) 결선한 후, 자체 loop-back 테스트하는 예제입니다.

예제 1 : 자체 loop-back test예제 

Python
# 시리얼 포트 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로 변환

Python
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 가 됩니다.