Main Window, 시리얼 통신

Hyun Ho An·2024년 1월 10일

[GUI]
현재 GUI는 Main Window에서 변수값을 설정하고 config 파일을 저장하는 것까지 완성했다.

Qt Designer 툴을 사용하여 틀을 제작하였다.
이를 작동시키기 위해 Qt Desinger가 설정한 변수값에 이벤트를 설정하면 된다.
예를 들어, 푸쉬버튼이면

    self.pushButton_4.clicked.connect(self.savedata)
    self.pushButton_5.clicked.connect(self.set_value)

위와 같이 클릭시 이벤트를 설정하면 savedata라는 함수를 불러와 실행한다.

    item = self.tableWidget.item(3, 0)
    STEP_NUMBER_X = item.text()

위의 코드는 현재 테이블에서 값을 불러와서 다시 저장하는 함수이다. 이때 gobal 전역변수를 불러왔는데 함수를 정의하면 전역변수를 인식하지 못한다.

따라서 함수를 선언할 때,

def savedata(self):
    global INTERVAL, WAIT_TIME, START_POSITION, STEP_NUMBER_X, STEP_NUMBER_Y, STEP_NUMBER_Z, STEP_DISTANCE, HUGE_TIME, MEASURE_TIME, CYCLE_WAIT_TIME, CYCLE_NUMBER
    INTERVAL, WAIT_TIME, START_POSITION, STEP_NUMBER_X, STEP_NUMBER_Y, STEP_NUMBER_Z, STEP_DISTANCE, HUGE_TIME, MEASURE_TIME, CYCLE_WAIT_TIME, CYCLE_NUMBER = Load_Data()

위와 같이 전역 변수를 불러와주면 된다.

    item = self.tableWidget.item(0, 0)
    item.setText(_translate("MainWindow", str(INTERVAL) + ' ms'))

위 코드는 그냥 변수값을 Mainwindow에 띄어주는 코드이다.

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

main함수를 위와같이 MainWindow를 불러와서 실행시키면 된다.

이를 시리얼 통신을 통해서 라즈베리파이에 변수값을 전달해서 작동시켜려한다.

[시리얼 통신]
시리얼 통신은 NS USB2UART02 모듈을 사용하여서 라즈베리파이 피코의 RX,TX에 연결하여 데이터를 주고받으려 한다.

import serial
ser = serial.Serial("COM11", 9600)
ser.write(b"on\n")

위와 같이 시리얼 통신을 열어준 후에 write를 하면 라즈베리파이에서 on이라는 값을 읽게 된다.
이 값을 통해서,

from my_Start import *
import sys
import machine

if __name__ == '__main__':
    while True:
         v = sys.stdin.readline().strip()
         if v.lower() == "on":
            my_Start()
            

위와 같이 값을 읽어드리면 되는데, v.lower higher 차이를 모르겠다. 이건 공부해보자.

[문제 상황 및 해야할 일]

  1. 시리얼 통신을 하는데 NS USB2UART02 모듈을 인식하지 못하는 문제가 있다. 드라이버 문제인 줄 알았으나 아예 인식을 하지 못하여 곤란하다.

  2. 거리를 동적으로 출력하고 싶은데 시간을 사용해서 거리를 인식해야하는지 고민이다.

  3. 거리를 인식했으면 이것을 confing 파일을 하나 더 생성해서 만들고 변수값을 저장하여서 실행시킬때 지금 어디에 있는지 확인하고 싶다.

profile
한국해양대학교/인공지능공학부

0개의 댓글