본문 바로가기
  • "하나씩 기록하다보면 누군가에게 도움이 되지 않을까"
IT/Python

[Python] Serial 통신(읽기/쓰기), 사용가능한 시리얼 포트 검색

by raVineL 2021. 2. 2.
728x90

시리얼 포트 열어서  데이터 읽기 쓰기

 - While로 루프돌면서 읽기 있을 때마다 데이터 찍기

 - 데이터 쓸 때는 ser.write로 작성

 

import serial
   
ser = serial.Serial(
                port=SerialPort,  
                baudrate=int(SerialBaudRate),
                parity=serial.PARITY_ODD,
                stopbits=serial.STOPBITS_ONE,
                bytesize=serial.EIGHTBITS,
                timeout=0)
                
                
ser.write(binascii.unhexlify(datas)) # 시리얼 쓰기(입력)

if ser.readable(): # 시리얼 읽기
	res = ser.readline()
	print(res.decode()[:len(res) - 1])
	
    
    

 

사용가능한 시리얼 포트 검색

 - 사용 가능한 시리얼 포트 검색 소스

@staticmethod
    def serial_ports():
        """ Lists serial port names

            :raises EnvironmentError:
                On unsupported or unknown platforms
            :returns:
                A list of the serial ports available on the system
        """
        if sys.platform.startswith('win'):
            ports = ['COM%s' % (i + 1) for i in range(256)]
        elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
            # this excludes your current terminal "/dev/tty"
            ports = glob.glob('/dev/tty[A-Za-z]*')
        elif sys.platform.startswith('darwin'):
            ports = glob.glob('/dev/tty.*')
        else:
            raise EnvironmentError('Unsupported platform')

        result = []
        for port in ports:
            try:
                s = serial.Serial(port)
                s.close()
                result.append(port)
            except (OSError, serial.SerialException):
                pass
        return result

 

리눅스 결과 (라즈비안)

윈도우 결과 (윈도우 10)

728x90

댓글