From fb5d135619fd54de84ad6acb28350407afa5f73c Mon Sep 17 00:00:00 2001 From: gudae Date: Mon, 15 Jun 2026 13:54:00 +0900 Subject: [PATCH] modify: login GUI --- .vs/Housing/DesignTimeBuild/.dtbcache.v2 | Bin 122439 -> 122699 bytes Database.ini | 9 + Hardware.ini | 13 +- Login/StartupLoginWindow.xaml | 5 +- Login/StartupLoginWindow.xaml.cs | 313 +++++++++++++++++++++-- MainWindow.xaml | 4 +- MainWindow.xaml.cs | 191 +++++++++++++- Services/BoardTestService.cs | 14 +- Services/HousingAssemblyRepository.cs | 85 +++++- Services/LoginAccountRepository.cs | 58 +++++ Services/LoginHistoryStore.cs | 99 +++++++ Services/LoginSettings.cs | 86 +++++++ Services/Ni6501StartSignalWatcher.cs | 191 ++++++++++++++ Services/StartSignalSettings.cs | 125 +++++++++ Services/StartSignalWatcher.cs | 40 +++ Services/TcpStartSignalWatcher.cs | 151 +++++++++++ 16 files changed, 1332 insertions(+), 52 deletions(-) create mode 100644 Services/LoginAccountRepository.cs create mode 100644 Services/LoginHistoryStore.cs create mode 100644 Services/LoginSettings.cs create mode 100644 Services/Ni6501StartSignalWatcher.cs create mode 100644 Services/StartSignalSettings.cs create mode 100644 Services/StartSignalWatcher.cs create mode 100644 Services/TcpStartSignalWatcher.cs diff --git a/.vs/Housing/DesignTimeBuild/.dtbcache.v2 b/.vs/Housing/DesignTimeBuild/.dtbcache.v2 index 1e212145c4cd59c351eff0ea1b604b17e6ce7b6e..f13f2f9b80909e91e2efc1a9cb7328d5de91e545 100644 GIT binary patch delta 9149 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 delta 8424 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 dgckLTCU0 diff --git a/Database.ini b/Database.ini index d4caecb..a76da2b 100644 --- a/Database.ini +++ b/Database.ini @@ -6,3 +6,12 @@ DbPw=your_password Encrypt=True TrustServerCertificate=True Timeout=5 + +[Login] +; 로그인 승인에 사용할 DB 테이블/컬럼입니다. +; 별도 작업자 테이블이 있으면 이 값을 해당 테이블/컬럼으로 바꾸세요. +Table=dbo.Housing_Assembly +IdColumn=Operator +PasswordColumn=Password +; DB 연결이 안 되는 상태에서 화면만 확인할 때 true로 둡니다. 운영 시 false로 바꾸세요. +OfflinePreview=true diff --git a/Hardware.ini b/Hardware.ini index e0f0927..129f34f 100644 --- a/Hardware.ini +++ b/Hardware.ini @@ -10,12 +10,21 @@ EndToken= DtrEnable=false RtsEnable=false +[StartSignal] +; USB-6501 +Enabled=true +Connection=Ni6501 +PhysicalChannel=Dev1/port0/line0 +ActiveState=High +PollIntervalMilliseconds=50 +TimeoutMilliseconds=30000 +PostSignalDelayMilliseconds=2000 +RequireInactiveBeforeStart=true + [Equipment] -; 목표: 장비 화면에 표시되는 현재 측정값을 읽습니다. ; V 출력: Keysight 34465A DMM 값 ; A 출력: Keysight E36233A Power Supply CH1 Current 값 ; USB 장비는 Keysight Connection Expert 또는 NI MAX에서 보이는 VISA 주소를 Resource에 넣으세요. -; 예: USB0::0x2A8D::0x1301::MY12345678::INSTR Timeout=5000 SettleMilliseconds=300 PreBoardCommand=VOLT 5, (@2);OUTP ON, (@2) diff --git a/Login/StartupLoginWindow.xaml b/Login/StartupLoginWindow.xaml index 84a2c3e..2f7b687 100644 --- a/Login/StartupLoginWindow.xaml +++ b/Login/StartupLoginWindow.xaml @@ -513,7 +513,8 @@ -