[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 차이를 모르겠다. 이건 공부해보자.
[문제 상황 및 해야할 일]
시리얼 통신을 하는데 NS USB2UART02 모듈을 인식하지 못하는 문제가 있다. 드라이버 문제인 줄 알았으나 아예 인식을 하지 못하여 곤란하다.
거리를 동적으로 출력하고 싶은데 시간을 사용해서 거리를 인식해야하는지 고민이다.
거리를 인식했으면 이것을 confing 파일을 하나 더 생성해서 만들고 변수값을 저장하여서 실행시킬때 지금 어디에 있는지 확인하고 싶다.