Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 월패드
- 배당
- 애플
- ConnectedHomeIP
- 국내주식
- 해외주식
- RS-485
- Espressif
- Apple
- 코스피
- 티스토리챌린지
- MQTT
- cluster
- 공모주
- esp32
- Home Assistant
- 힐스테이트 광교산
- Bestin
- 파이썬
- 나스닥
- raspberry pi
- Python
- 매터
- homebridge
- matter
- 오블완
- 홈네트워크
- 미국주식
- 현대통신
- SK텔레콤
Archives
- Today
- Total
YOGYUI
PyQt Serial Port List 본문
반응형
- requires: PyQt5
PyQt5의 QtSerialPort 모듈로 현재 장비에서 접근 가능한 시리얼 포트를 리스트업해보자
공식 API 문서는 다음을 참고
https://doc.qt.io/qt-5/qtserialport-index.html
https://doc.qt.io/qt-5/qserialportinfo.html
from typing import List, Dict, Union
from PyQt5 import QtSerialPort
def list_serial() -> List[Dict[str, Union[str, int, bool]]]:
available = QtSerialPort.QSerialPortInfo().availablePorts()
lst = [{
'port': x.portName(),
'manufacturer': x.manufacturer(),
'description': x.description(),
'serialnumber': x.serialNumber(),
'systemlocation': x.systemLocation(),
'productidentifier': x.productIdentifier(),
'vendoridentifier': x.vendorIdentifier(),
'isbusy': x.isBusy(),
'isvalid': x.isValid()
} for x in available]
return lst
if __name__ == '__main__':
serial_list = list_serial()
for elem in serial_list:
print('{')
for i, (key, value) in enumerate(elem.items()):
print(" '{}': '{}'".format(key, value), end='')
if i == len(elem.items()) - 1:
print('')
else:
print(',')
print('}')
결과 예시 (Raspberry pi에서 구동)
{
'port': 'ttyUSB2',
'manufacturer': 'FTDI',
'description': 'FT232R USB UART',
'serialnumber': 'AG0KADO0',
'systemlocation': '/dev/ttyUSB2',
'productidentifier': '24577',
'vendoridentifier': '1027',
'isbusy': 'False',
'isvalid': 'True'
},
{
'port': 'ttyUSB3',
'manufacturer': 'FTDI',
'description': 'FT232R USB UART',
'serialnumber': 'AG0KAJ76',
'systemlocation': '/dev/ttyUSB3',
'productidentifier': '24577',
'vendoridentifier': '1027',
'isbusy': 'False',
'isvalid': 'True'
},
{
'port': 'ttyAMA0',
'manufacturer': '',
'description': '',
'serialnumber': '',
'systemlocation': '/dev/ttyAMA0',
'productidentifier': '0',
'vendoridentifier': '0',
'isbusy': 'False',
'isvalid': 'True'
},
{
'port': 'ttyS0',
'manufacturer': '',
'description': '',
'serialnumber': '',
'systemlocation': '/dev/ttyS0',
'productidentifier': '0',
'vendoridentifier': '0',
'isbusy': 'False',
'isvalid': 'True'
}
파이썬 + PyQt5 로 플랫폼에 상관없이 시리얼 포트 리스트업 가능
반응형
'Software > Python' 카테고리의 다른 글
Python::구조적 패턴 매칭 - 파이썬에서 switch/case문을?! (0) | 2021.03.21 |
---|---|
Python으로 순서도 그리기 (schemdraw) (0) | 2021.01.27 |
Flask - Dynamic Page Update (Ajax) (0) | 2021.01.10 |
Flask - extension을 이용한 HTTP 인증 절차 구현 (0) | 2021.01.08 |
Pyserial 시리얼 통신 모듈 커스터마이징 (0) | 2021.01.01 |