예제로 배우는 PyQt

예제 중심으로 배우는 PyQt 프로그래밍

시리얼통신 위젯 제작

시리얼통신 위젯 제작

시리얼 통신의 모든 부분을 책임지는 위젯을 제작해본다.

  • 시리얼통신 설정
  • 시리얼 통신 동작
  • 단독 실행 가능
  • 다른 곳에 붙여 쓸 수 있도록 제작

예제보기

댓글

댓글 본문
  1. 머리가나빠서슬픈짐승
    안녕하세요 여러분 제가 문제를 해결했습니다.

    저와 같은 문제가 있으신분 즉, send는 되는데 receive가 안된분들에 한해서 해결할 수 있습니다.

    buf - self.serial.readAll() 대신에

    buf = ''
    if self.serial.waitForReadyRead(10):
    buf = self.serial.readAll()

    while self.serial.waitForReadyRead(10):
    buf += self.serial.readAll()
    이코드를 집어넣으면 잘 됩니당
    아마도 바이트형태로 받아지는거라 readAll을 하면 뭐가 쪼개지나봐여 자세한 이유는 모르겠슴다
    그래서 저 위의 코드 형식으로 붙여붙여 읽으면 읽어진답니다!
    아고 이대로 올리니까 탭이 없어지는데 알아서 하실 수 있으시겠져? 화이팅 하셔용 다들
  2. 머리가나빠서슬픈짐승
    안녕하세요 열심이 보고 따라하고 있는 초보입니다.

    가상 시뮬레이터 만들어서 설정을 했고 다만 라이센스를 구매하지 않아 32비트로 설정했습니다.

    예제 실행시에 커넥트도 잘되고 putty로 확인했을때 send되는 데이터도 확인을 했습니다

    그런데 텍스트박스에는 데이터가 위의 예시처럼 찍혀서 나오지를 않더라구요

    문제를 해결하기 위해 serialreadthread 부분에서 run함수에 print(buf)를 하여 확인하였는데
    (그러니까 if 부분에서 buf가 아예 없어서 이벤트가 안넘어가더라구요)

    아무런 데이터가 찍히지 않더라구요. putty로 확인했을땐 test data란 문구가 잘 나오는데 말이죠..

    수신된 데이터를 확인 하고 싶은데 확인할 수 없으니 슬픕니다..putty로 확인하는거 말고 pyqt 위젯으로
    위의 gif 화면처럼 확인하고 싶습니다..
  3. 처음파이썬
    버튼을 클릭 할 때 마다 Connect ↔ Disconnect 반복하긴하는데.. 처음부터 다시 한 번 보겠습니다.
    감사합니다.
    대화보기
    • 임덕규
      시뮬레이터 설정은 무리없이 잘 하셨을거라 생각됩니다.

      예제 프로그램 두 개를 다 켜놓고 포트만 다르고 동일한 옵션으로 설정하시고 두 군데 모두 `Connect` 버튼을 클릭하시고 둘다 Disconnect 로 버튼이름이 변경되어야 합니다.

      별 특별한 연결은 없어서, 다시 한 번 꼼꼼히 진행해보시기 바랍니다.
      대화보기
      • 처음파이썬
        제가 너무 초보라서 모르는 부분이 많은데요...
        말씀하신 port 1과 port 2 연결 관련해서...
        시뮬레이터는 HHD Virtual Serial Port Tool 프로그램 설치해서 연결하였고..
        1) 하이퍼터미널 - to - 하이퍼터미널
        2) Putty - to - Putty
        3) 예제 프로그램 - to - 하이퍼터미널 or Putty
        위 3가지는 잘 전송이 됩니다.
        그런데, 예제 프로그램을 VSCode 창 2개로 열어서 위젯 2개까지는 올렸는데..
        "예제 프로그램 - to - 예제 프로그램" 에서만 Connect 누르고 Send를 눌러도 아무런 동작이 없어 문의드립니다.
        대화보기
        • 임덕규
          가상 시리얼포트 시뮬레이터에서 만들 두 개의 포트를 서로 이어주셔야 합니다.

          실제로는 PC와 어떤 시리얼포트를 가진 장비가 통신합니다. 옛날에는 시리얼포트가 기본으로 들어가 있었는데 요즘에는 없거든요. 그래서 노트북이나 일반 PC에는 USB 시리얼 포트 케이블을 하나 사서 꽂으면 리얼 시리얼 포트가 한 개 생깁니다.

          우리는 USB시리얼 포트 조차도 사용하지 않기 때문에 가상 시리얼포트 시뮬레이터로 포트를 두 개 생성하고 Port 1 과 Port 2를 서로 이어주는 작업을 해줘야만 데이터 통신이 가능합니다.

          사용하고 계시는 시뮬레이터를 잘 살펴보시면 연결을 하는 부분이 있을거라 생각합니다.
          대화보기
          • 처음파이썬
            예제 프로그램 실행해서 위젯 열고 하이퍼터미널로 보내면 하이퍼터미널에서는 TEST DATA가 잘 보입니다.
            그런데, VSCode 창 2개를 열고 동일 예제를 각각에서 실행시키면 알려주신 데로 위젯 2개를 열 수 있는데요...
            각각 위젯에서 포트1과 포트2로 설정하고 Connect 누른 후 한 쪽에서 Send를 보내면 다른 쪽에서 아무런 반응이 없습니다.
            뭔가 잘 못 한 것이 있을까요?
            대화보기
            • 임덕규
              프로그램(예제)을 두 번 실행하면 됩니다. 시리얼 프로그램 두 개가 통신하는 예제입니다.
              대화보기
              • 처음파이썬
                빠른 답변 감사합니다.
                그런데, 제가 잘 몰라서 다시 한 번 문의드립니다.
                가상 serial 포트는 만들었는데...
                위젯을 두 개 실행 시킨다는 것이 동일한 코드를 반복해서 작성 후 run 시키면 될까요?
                위젯 두 개 실행 시킬 수 있는 방법을 좀 더 자세히 알려주실 수 있을까요?
                대화보기
                • 임덕규
                  안녕하세요. 위젯을 두 개 실행시키시면 됩니다. 대신 가상 시리얼 라인을 만들어주는 프로그램을 실행시키고 하셔야 하는데 버추어 시리얼 예뮬레이터 같은 제품을 설치하시거나 리눅스환경이라면 기본 명령어로도 만들 수 있습니다
                  대화보기
                  • 처음파이썬
                    처음 파이썬 공부하고있는 파린이 입니다.
                    예제를 보고 실행했는데...위젯이 2개가 아니고 하나만 나오는데요...이게 정상인가요?
                    위에 실행되고 있는 영상을 보면 위젯 2개를 서로 통신하고 있는 것 처럼 보여서요..
                  • yjmoon
                    감사합니다 잘 보겠습니다!
                  • 태하
                    감사합니다. Layout 참조하니까 구조 만드는데 도움 되었습니다.
                    대화보기
                    • 임덕규
                      Layout Widget 글을 참고하시기 바랍니다.
                      대화보기
                      • 태하
                        파이썬을 최근에 접한 초보 입니다.
                        시리얼 자동으로 연결하는 gui 검색해서 여기깨 오게 되었습니다.
                        1.고정괸 크기의 시리얼 통신 연결 메뉴를 만들려고 127번 줄에 self.gb.setFixedSize(300, 300) 를 삽입하였습니다.
                        2. 프로그램을 실행시키면 Qgroupbox ‘serial’ 크기는 고정 되었는데, 윈도우 사이즈에 따라 위치 고정이 안됩니다.
                        예를 들어 윈도우 사이즈를 좌우로 크게 늘리면 qgroupbox가 좌측, 그리고 가운데에 있는데, 이 ui를 좌상에 고정하려면 어느 부분을 손봐야 하나요?
                      • 임덕규
                        https://opentutorials.org......723

                        이 예제를 참고해 보시기 바랍니다.
                        대화보기
                        • 전영균
                          임덕규님 감사합니다. 만들어주신 소스를 이용해서 이것저것 해보고 있습니다.
                          아직 해결하지 못한 게...

                          시리얼통신에서 받은 값(센서값이라고 가정)을
                          센서값으로 저장하고, 값이 변경될 때마다 QDial과 QLCDNumber로 만든 위젯에 반영하고 싶습니다.
                          QDial과 QLCDNumber는 서로 연동시켰는데....

                          class SerialReadThread(QThread):
                          ###### 생략 ###############
                          def run(self):
                          """
                          들어온 데이터가 있다면 시그널을 발생
                          :return:
                          """
                          while True:
                          self.mutex.lock()
                          if not self._status:
                          self.cond.wait(self.mutex)

                          buf = self.serial.readAll()
                          if buf:
                          self.received_data.emit(buf)
                          self.usleep(1)
                          self.mutex.unlock()


                          에서 buf값을 센서값으로 저장한 후에 QLCDNumber에 반영하고 싶은데, 어쩔 줄을 모르고 헤매이네요.

                          조언 부탁드립니다.
                        • Einwassermelone(지나가던사람2)
                          def run을 true일 때 무한으로 loop하는방식에서 QSerialPort.readyRead 시그널이 발생할때마다 run을 돌리는 방식으로 변경하여 실험중입니다. 현재까지 실험 결과, 훨씬 안정적인 read를 유지합니다. 또한 disconnect시 console창에 QIODevice::read (QSerialPort): device not open 오류가 무한으로 뜨는 현상도 없습니다.

                          윈도우 10, 64bit, Python 3.7.6, PyQt5 5.11.3 입니다
                        • 지나가던 사람
                          윈도우7문제는 read하는 쪽 sleep이 너무 짧아서 생기는 문제 같습니다.
                          1초 가까이 넉넉하게 주니까 받는 주기가 늦어지기는한데 끊기거나 잃어버리는 데이터는 없네요.
                          윈도우 버전 문제보다는 사양 문제같기도 합니다. 테스트하면서 맞춰야 할듯 합니다...
                          대화보기
                          • 지나가던 사람
                            예 해당 예제를 테스트 한것입니다. 일단 pyqt5버전이 15.11이 아닌 15.12.3 버전이었습니다. 잘못봤네요.ㅎㅎ... 그리고 윈도우 10에서는 잘 돌아가는데 윈도우 7에서 하니까 또 read부분이 1~2번만 들어오고 멈추는 현상이 있습니다.
                            정리하면
                            15.12.3이상 버전에서는 read가 전혀 안되고
                            15.12.3이하 버전에서는 윈도우 10에서는 되는데 윈도우 7에서 하니까 안되네요
                            윈도우 10은 64비트고 윈도우 7은 32비트 였습니다.
                            라이브러리 자체가 문제가 있는것 같기도 합니다. 버전문제는 구글링해보니까 관련이슈가 있긴했습니다.
                            버전을 다운그레이드 하고나서 윈도우 7에서 안돼는건 잘 모르겠네요... 그래서 저는 pyserial로 변경 중입니다...
                            대화보기
                            • 임덕규
                              이 예제도 똑같이 멈추던가요?
                              대화보기
                              • 지나가던사람2
                                저도 read data 부분에서 계속 이유없이 읽기를 멈추는 현상이 나오던데....혹시 모르니 저도 pyqt5 버전을 다운그레이드 해서 시도해보겠습니다
                                대화보기
                                • 지나가던 사람
                                  pyqt5 5.13.14환경에서 했는데 serial receive 부분만 안돼서 pyqt5버전을 5.11.이하까지 내리니까 되네요. 좋은 소스코드 감사합니다. 다른분들은 저같은 현상때문에 삽질 안하시길 빕니다.
                                • 정해용
                                  connect 상태에서 데이터를 받다가 disconnect 버튼을 눌러서 포트를 닫으니까
                                  QIODevice::read (QSerialPort): device not open
                                  라는 에러가 계속 나오네요..
                                  Thread애서 해당 포트에 계속 읽기를 시도해서 그런게 아닌가 싶은데..
                                  어떤 처리가 필요할까요?
                                • 개발자화이팅
                                  자료 감사드려요. 저는 맥북 Python3.7로 예제를 돌려봤습니다.
                                  __platform__ = sys.platform
                                  맥북 Mojave를 사용 중이여서 __platform__ = Darwin으로 설정되어 있더군요.

                                  return {"linux": '/dev/ttyS', "win32": 'COM'}[__platform__]
                                  darwin의 경우, get_port_path는 어떤 걸 return 해야 하나요?
                                • jead
                                  빠르게 답변주셔서 정말 감사합니다.
                                  Qt디자이너에서 만든 UI를 사용하는 예제에서처럼
                                  class MyWindow(QMainWindow, form_class)
                                  super().__init__그냥 이것을 사용해서 동작을 안했다는 것일까 해서 보고있습니다.
                                  QWidget.__init__(self,flags=Qt.Widget) 이부분에서
                                  flags=Qt.Widget의 의미가 무엇인지 여쭤볼 수 있을까요?
                                  Qt.Widget이 선언되었는지 아닌지를 확인하는 부분인지요?
                                  Qt.Widget 을 검색해보니 QWidget이 검색되고 Widgets 처럼 기본적인 widget들만 나오는데
                                  이 예제 내에서 Qt.Widget이 특별한 의미를 지니고 있는지 궁금합니다.
                                  대화보기
                                  • 임덕규
                                    시리얼 포트 콤보 박스가 채워지는 원리는
                                    첫 실행시
                                    OS에 따라 주어지는 포트에 모두 열기를 시도하여
                                    열리는 포트만 정리하여
                                    콤보박스에 해당 리스트를 넘기는 방법입니다.
                                    대화보기
                                    • jead
                                      안녕하세요.
                                      올려주신 코드를 통해서 시리얼 통신을 공부하고 있는데요.

                                      올려주신 예제중에 Qt Designer로 Ui 만들기를 참고하여
                                      제가 입맛대로 예제처럼 버튼들을 예쁘게 배열한 후 시리얼 통신을 테스트했는데요.

                                      만든 UI에다 해당 동작을 실현하려 했더니 setupUI(self) 관련 오류가 나기에 기존 QWidget.__init__ 부분을 super().__init()
                                      self.setupUi(self) 로 변경
                                      fill_serial_info(self): 에서 상수를 채우는 위젯들을 제가 만든 위젯으로 이름변경했습니다.

                                      헌데 실제로 실행하니 시리얼 데이터는 통신하는데 선언된 serial 콤보박스에 포트내용 등이 채워지지 않네요.

                                      from PyQt5.QtCore import Qt 와 관계있을까요?
                                      코드를 보니까 Qwidget과 별개로 Qt.widget을 따로 쓰는데요.
                                      만약에 다른 class에서 Ui form을 MyWindow로 정한 상태에서
                                      해당 좌표를 비워두고 serial controller 클래스에만들어서 넣어줘야만 하나요?
                                    • 임덕규
                                      안녕하세요.
                                      1. 그 문장은 시그널 선언입니다. received_data라는 이름의 QByteArray 데이터 형을 전달하는 시그널을 만들어 줍니다.
                                      https://github.com......L62
                                      에서 데이터를 전송 받았을때 emit을 통하여 데이터를 시그널로 쏴줍니다. 누가 연결 되어있건간에 데이터 형식만 맞는 슬롯이라면 데이터를 받을 수 있겠지요.

                                      2. 간단한 데이터 통신 프로토콜의 헤드입니다. 쓰든 안쓰든 상관없지만 아스키 코드표를 참고하시면 알 수 있습니다. http://zapiro.tistory.com......%9C
                                      STX, ETX를 사용하였습니다. 시리얼 통신으로는 데이터의 시작부분과 끝부분을 정확히 알 수 없기 때문에 시작과 끝을 검사하여 데이터를 받습니다. 다른 경우로는 0x0d 0x0a를 데이터 끝으로 잡기도 하고요.

                                      도움이 되셨길 바랍니다.
                                      대화보기
                                      • 최형준
                                        너무너무 감사한 자료 감사합니다.
                                        열심히 코드를 이해하고 있는데 아주 작은 질문 두개만 드립니다 ㅠ 찾아봐도 안나오네요 ㅠ 감사합니다!

                                        1. received_data=pyqtSignal(QByteArray, name=rrceivedData")
                                        이 문장이 해석해주시면안될까요 ㅠ 예를들면
                                        self.pb.clicked.connect(self.A) 가 pb를 클릭하면 A라는 슬롯을 발생시켜라 라고 해석하는 것처럼요 ㅠ 저부분이 이해가 안되네요

                                        2. bytes([0x02]) 가 무엇인가요??
                                        bytes("abc","utf-8") 은 abc 를 utf8로 인코딩한 바이트 열 이란걸 알겠는데 0x02는 모르겠네요 ㅠ 감사합니다
                                      • 임덕규
                                        독학으로 하고 있습니다. 저는 현업에서 사용중이기 때문에 항상 부딪히는 문제나 많이 쓰는 것을 정리하여 여기에 올리고 있습니다. 지금도 작성하고 공개하지 못한 것이 많으니 종종 찾아오셔서 필요한 부분을 찾으시기 바랍니다. 감사합니다.
                                        대화보기
                                        • 김창현
                                          혹시 pyqt5 어디를 참조하시면서 공부하시나요??
                                        • 임덕규
                                          네에. 경고 메세지가 뜨는 이유가 있습니다만, 제가 다음 예제에 적으려고 그냥 두었습니다. 실제 데이터를 주고 받는데는 문제가 없습니다. PyQt는 C++로 만들어져 있는 라이브러리를 사용합니다. Python 타입으로 C++ 타입의 무언가를 호출하려하니 중간에서 사실 처리는 해주고 있지만 경고를 보여 주는 것입니다.

                                          조만간 예제로 설명드리겠습니다. 감사합니다.
                                          대화보기
                                          • 김창현
                                            안녕하세요 window에서 위 코드를 작성 후 실행하니 터미널에서 이런 메세지가 나오는데 신경 안써도 되는 것인가요? 두개를 띄워서 서로 sending하는데는 문제가 없었습니다.
                                            Trying to create a QVariant instance of QMetaType::Void type, an invalid QVariant will be constructed instead
                                          • 임덕규
                                            네. 제가 만들어둔 예제 코드를 보시면 port 검색에서 해당 내용이 있습니다. 그리고 에디터로는 파이참 커뮤니티 버전을 추천해 드립니다. 스파이더는 제가 사용해보질 않아서 잘 모르겠습니다. 파이참은 파이썬에 최적화 된 개발툴인지라 여러모로 편리한 기능이 많습니다.
                                            대화보기
                                            • BERA
                                              그리고 리눅스는 com1, com2 이런 식으로 인식하는 것 같지 않더군요... 이것도 구글링 해보니 복잡하더군요.... 리눅스를 좀 더 공부해야할듯 싶습니다.
                                              대화보기
                                              • BERA
                                                C#을 배우는 도중에 파이썬으로 넘어온 거라... 컴파일한 적이 없는데도 컴파일이라는 단어를 쓴 것 같습니다. 이해해주시기 바랍니다.

                                                올려주신 코드를 복사하여 우분투에 깔려있는 편집기(Idle, Spyder 둘 다 테스트)에 붙여넣기 후 세이브 했습니다. 그리고 실행버튼을 눌러 실행한 것입니다. 원래 윈도우에서 이렇게 하면 창이 뜨는데 리눅스에서는 PyQt5.QtSerialPort 모듈이 없다는 메시지가 뜹니다.

                                                그래서 오류 매시지를 구글링해보니 아래와 같이 조치를 취하라고 나옵니다. 1번은 하라는대로 설치했는데 2번과 3번은 무슨 말인지 조차 감이 안옵니다...

                                                You have to install:

                                                1)
                                                sudo apt-get install libqt5serialport5
                                                sudo apt-get install libqt5serialport5-dev

                                                2) add in the .pro file
                                                QT += serialport

                                                3) int the .h file add:
                                                #include <QtSerialPort/QSerialPort>
                                                대화보기
                                                • 임덕규
                                                  파이썬은 컴파일하는 언어가 아니라서 컴파일이 어떤 부분에서 나왔는지 알려주시기 바라며, IPython에서는 제대로 동작 하지 않을 수 있습니다. 리눅스에서도 됐던 소스라서 아마 간단한 문제일듯 합니다. 조금만 더 자세히 적어주시기 바랍니다. 감사합니다.
                                                  대화보기
                                                  • BERA
                                                    올려주신 예제는 윈도우에선 정상적으로 실행이 잘 됩니다.

                                                    그런데 리눅스 버전 중 하나인 우분투에서 컴파일하고 실행하려 하니 아래와 같은 오류를 뿜어냅니다.


                                                    Python 3.6.5 (default, Apr 1 2018, 05:46:30)
                                                    Type "copyright", "credits" or "license" for more information.

                                                    IPython 5.5.0 -- An enhanced Interactive Python.
                                                    ? -> Introduction and overview of IPython's features.
                                                    %quickref -> Quick reference.
                                                    help -> Python's own help system.
                                                    object? -> Details about 'object', use 'object??' for extra details.

                                                    runfile('/home/bera/sample.py', wdir='/home/bera')
                                                    Traceback (most recent call last):

                                                    File "<ipython-input-1-8fdd1dce6b55>", line 1, in <module>
                                                    runfile('/home/bera/sample.py', wdir='/home/bera')

                                                    File "/usr/lib/python3/dist-packages/spyder/utils/site/sitecustomize.py", line 705, in runfile
                                                    execfile(filename, namespace)

                                                    File "/usr/lib/python3/dist-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
                                                    exec(compile(f.read(), filename, 'exec'), namespace)

                                                    File "/home/bera/sample.py", line 25, in <module>
                                                    from PyQt5.QtSerialPort import QSerialPort

                                                    ModuleNotFoundError: No module named 'PyQt5.QtSerialPort'


                                                    이 문제를 해결하려고 구글링을 해보니 아래와 같이 조치를 취하랍니다.

                                                    You have to install:

                                                    1)
                                                    sudo apt-get install libqt5serialport5
                                                    sudo apt-get install libqt5serialport5-dev

                                                    2) add in the .pro file
                                                    QT += serialport

                                                    3) int the .h file add:
                                                    #include <QtSerialPort/QSerialPort>


                                                    그래서 1번은 하라는 대로 설치했는데 2번과 3번을 어떻게 하는 것인지 잘 모르겠습니다. 너무 초보적인 질문이 아닌가 모르겠습니다. 사실 리눅스 이제 처음 배우는 초보입니다. 너무 한심한 질문이더라도 너그러이 이해해주시고 답변 부탁드립니다.
                                                  • 임덕규
                                                    몇 년전에 이것과 같은 동작을 하는 시리얼 프로그램을 패키징하여 사용한 적이 있습니다. 당시에는 에러가 발생하지 않고 잘 되어었습니다. 전체 에러 메세지를 올려주시면 문제를 같이 해결하는데 도움이 될 것 같습니다.

                                                    감사합니다.
                                                    대화보기
                                                    • 로봇쟁이
                                                      혹시 해당 py 파일을 패키징 해보신적이 있으신가요??
                                                      pyinstaller를 통해서 진행한 이후에 실행시켜보니
                                                      Failed to execute scrip에 대한 FATAl error가 나오는데요.

                                                      진행하셨으면 방법좀 알려주시면 안될까요..??ㅜㅜ
                                                    • BERA
                                                      빠른 답변 정말 감사드립니다.
                                                      저울 회사에 문의해서 API를 구해보도록 하겠습니다.
                                                      어쨌는 정말 훌륭한 파이썬 강좌입니다.
                                                      정말 많은 도움이 되고 있습니다.
                                                      책 수십 권 산 것보다 훨씬 더 도움이 되고 있습니다.
                                                      감사합니다!!!!
                                                      대화보기
                                                      • 임덕규
                                                        일단 시중에서 사신 저울 중 데이터를 내보내는 장치가 없다면 불가능합니다.

                                                        저울과 통신할 수 있는 API를 지원하는 저울이 있다면 접속하여 데이터를 가져올 수 있겠네요. Serial란에 댓글을 올리신것으로 보아 Serial통신으로 가져올 수 있는지를 여쭈어 보신거라면 해당 저울이 RS232통신등이 가능해야 하며 저울 Firmware단에서 그것을 지원해 줘야 합니다.

                                                        예전 직장에서도 저울을 만들 때 사용하는 로드셀의 데이터를 PyQt 등을 이용하여 표출하였습니다. 모든건 장치에서 지원하느냐에 달려있지요.
                                                        대화보기
                                                        • BERA
                                                          강좌 정말 잘 보고 있습니다.
                                                          제가 해보고 싶은 것은 전자저울에서 중량 데이터를 컴퓨터로 받아보고 싶습니다. 이것이 가능한지 궁금합니다.
                                                        • 임덕규
                                                          감사합니다. 조만간 대량의 예제를 업데이트 할 예정입니다. 많은 도움되길 바랍니다.
                                                          대화보기
                                                          • 맥주는기네스
                                                            강좌를 통해 많이 배우고 있습니다, 감사합니다. ~
                                                            대화보기
                                                            • 임덕규
                                                              안녕하세요. Port는 실제 물리 Serial Port가 존재하거나 가상 Serial Port를 설정해주시면 화면과 같이 보이게 됩니다. 설정 방법에 대해서는 가상 시리얼 포트에 대해서 검색해 보시기 바랍니다.
                                                              대화보기
                                                              • 맥주는기네스
                                                                예제의 코드를 통해 생성된 위젯에서 Port창의 Port number가 보이질 않습니다.