프로그램을 만들 때, 특정 데이터를 설정 값으로 사용하고 싶을 때가 있다.
ex) IP, Port 라던가, 우리가 웹에서 사용하는 아이디 저장 기능 같이...
그럴때 로컬 프로그램에서 사용하기 좋은건 레지스트리 설정 기능!
일단 윈도우키를 눌러 "regedit"이나 "레지스트리 편집기"를 검색한다.
그럼 위 사진과 같이.. 내가 먼저 설정해놓은 PINCHECKSW 키에 SETTING-UPBOARDPORT와 같은 값이 저장되어있음을 확인할 수 있다.
이 저장된 레지스트리 값을 통해 프로그램을 켤 때마다 마지막에 연결했던 포트로 자동 연결되도록 프로그래밍할 수 있는 것이다.
기본적으로 내가 사용한 기능은
1. 레지스트리에 COM Port 키를 생성
2. 생성된 키에 COM Port 값 저장
3. 프로그램 실행 시 자동으로 저장된 COM Port 키값 불러오기
정도가 있겠다.
//Win32의 RegistryKey class를 사용하기 위해 선언한다.
using Microsoft.Win32;
//메인윈도우 함수 내에서 레지스트리 기능을 사용하기 위해 선언
public RegistryKey reg;
//설정한 레지스트리 값들 가져오는 함수
public MainWindow()
{
//저장된 레지스트리 값들 가져오기
GetRegistryData();
//프로그램 시작 시 자동으로 상판 연결되도록. 단, 기본 연결 포트는 가장 최근 연결 성공한 포트로 설정한다.
if (Store.getInstance().topSerial.OpenComm(Properties.Settings.Default.rsCom, 115200, 8, StopBits.One, Parity.None, Handshake.None))
{
Store.getInstance().twLog.WriteLog("상판연결 성공");
//연결 성공한 포트를 레지스트리에 저장함.
reg = Registry.CurrentUser.CreateSubKey("Software").CreateSubKey("PINCHECKSW").CreateSubKey("SETTING");
reg.SetValue("UPBOARDPORT", Properties.Settings.Default.rsCom);
ConnectUpBoard.Background = new SolidColorBrush(System.Windows.Media.Color.FromRgb(43, 200, 43));
}
}
//설정한 레지스트리 값들 가져오는 함수의 정의
public void GetRegistryData()
{
reg = Registry.CurrentUser.CreateSubKey("Software").CreateSubKey("PINCHECKSW").CreateSubKey("SETTING");
if (reg.GetValue("UPBOARDPORT") != null)
{
Properties.Settings.Default.rsCom = reg.GetValue("UPBOARDPORT").ToString();
comboTop.SelectedItem = Properties.Settings.Default.rsCom;
}
}