본문 바로가기

c#

c# 시리얼(Serial) 포트 연결정보 레지스트리에 저장하기

어쩌다 보니 첫글이 되어버렸다.

이걸 올리려고 네이버 블로그도 해보고 네이트블로그도 해봤지만 소스코드가 만족스러운 수준으론는 안나오더라

여기저기 알아보니 SyntaxHighlighter라는 프로그램이 있는데 소스를 아래와같이 표현해주네.

거뚜 또 티스토리에서만 되는거 같더라니... 어쩔수 없이 가입하려고 보니 초대장이 필요하대. 제길.

여기 저기 기웃기웃 구걸구걸 하다가 neoadonis란 분이 초대장을 투척해주심. 감사 (__)

일단 올려봄. 거의 내가 참고하려고 올린거니까 좋은 잘만든 소스는 아님. ㅠㅠ 언제쯤 만족스런 코드를 올려볼수 있을까.

.
</br></br>
 
using System;
using System.Collections.Generic;
using System.Text;

using Microsoft.Win32;
using System.IO.Ports;

namespace SMGSerial
{
    public class SMG_SerialConnectionInfo
    {
        public static string SerialPortName = "";
        public static int SerialBaudRate = 9600;
        public static int SerialDataBits = 8;
        public static Parity SerialParity = Parity.None;
        public static StopBits SerialStopBits = StopBits.One;

        public static void Save()
        {
            Registry.SetValue(@"HKEY_CURRENT_USER\SMGSerial\PortConfig", "PortName", SerialPortName);
            Registry.SetValue(@"HKEY_CURRENT_USER\SMGSerial\PortConfig", "BaudRate", SerialBaudRate);
            Registry.SetValue(@"HKEY_CURRENT_USER\SMGSerial\PortConfig", "DataBits", SerialDataBits);
            Registry.SetValue(@"HKEY_CURRENT_USER\SMGSerial\PortConfig", "Parity", SerialParity);
            Registry.SetValue(@"HKEY_CURRENT_USER\SMGSerial\PortConfig", "StopBits", SerialStopBits);
        }

        public static void Load()
        {
            SerialPortName= (Registry.GetValue(@"HKEY_CURRENT_USER\SMGSerial\PortConfig", "PortName", "") == null ? SerialPortName : 
                            (string)Registry.GetValue(@"HKEY_CURRENT_USER\SMGSerial\PortConfig", "PortName", ""));
            #region 포트 번호가 바뀌었을때 처리 - 포트번호를 null초기화 하여 다시 환경설정을 하도록 한다.
            string PortNameTemp = string.Empty;
            foreach (string comport in SerialPort.GetPortNames())
            {
                if (SerialPortName == comport)
                {
                    PortNameTemp = comport;
                }
            }
            if (PortNameTemp == string.Empty) SerialPortName = "";
            #endregion

            SerialBaudRate = (Registry.GetValue(@"HKEY_CURRENT_USER\SMGSerial\PortConfig", "BaudRate", "") == null ? SerialBaudRate :
                             (int)Registry.GetValue(@"HKEY_CURRENT_USER\SMGSerial\PortConfig", "BaudRate", ""));
            SerialDataBits = (Registry.GetValue(@"HKEY_CURRENT_USER\SMGSerial\PortConfig", "DataBits", "") == null ? SerialDataBits :
                             (int)Registry.GetValue(@"HKEY_CURRENT_USER\SMGSerial\PortConfig", "DataBits", ""));
            SerialParity = GetParity((string)Registry.GetValue(@"HKEY_CURRENT_USER\SMGSerial\PortConfig", "Parity", ""));
            SerialStopBits = GetStopBits((string)Registry.GetValue(@"HKEY_CURRENT_USER\SMGSerial\PortConfig", "SerialStopBits", ""));
        }

        public static string GetParity(Parity param)
        {
            string rtnValue = string.Empty;

            switch (param)
            {
                case Parity.Even :
                    rtnValue = "Even";
                    break;
                case Parity.Mark :
                    rtnValue = "Mark";
                    break;
                case Parity.None :
                    rtnValue = "None";
                    break;
                case Parity.Odd :
                    rtnValue = "Odd";
                    break;
                case Parity.Space :
                    rtnValue = "Space";
                    break;
                default:
                    rtnValue = "None";
                    break;
            }
            return rtnValue;
        }

        public static Parity GetParity(string param)
        {
            Parity rtnValue = Parity.None;

            switch (param)
            {
                case "Even":
                    rtnValue = Parity.Even;
                    break;
                case "Mark":
                    rtnValue = Parity.Mark;
                    break;
                case "None":
                    rtnValue = Parity.None;
                    break;
                case "Odd":
                    rtnValue = Parity.Odd;
                    break;
                case "Space":
                    rtnValue = Parity.Space;
                    break;
                default:
                    rtnValue = Parity.None;
                    break;
            }
            return rtnValue;
        }

        public static string GetStopBits(StopBits param)
        {
            string rtnValue = string.Empty;

            switch (param)
            {
                case StopBits.None :
                    rtnValue = "None";
                    break;
                case StopBits.One :
                    rtnValue = "One";
                    break;
                case StopBits.OnePointFive :
                    rtnValue = "OnePointFive";
                    break;
                case StopBits.Two :
                    rtnValue = "Two";
                    break;
                default:
                    rtnValue = "One";
                    break;
            }
            return rtnValue;
        }

        public static StopBits GetStopBits(string param)
        {
            StopBits rtnValue = StopBits.One;

            switch (param)
            {
                case "None":
                    rtnValue = StopBits.None;
                    break;
                case "One":
                    rtnValue = StopBits.One;
                    break;
                case "OnePointFive":
                    rtnValue = StopBits.OnePointFive;
                    break;
                case "Two":
                    rtnValue = StopBits.Two;
                    break;
                default:
                    rtnValue = StopBits.One;
                    break;
            }
            return rtnValue;
        }
    }
}

'c#' 카테고리의 다른 글

visualstudio 첫 셋팅 저장  (0) 2020.05.20
어디서인가 퍼온글...  (0) 2011.01.06
c# 폼의 중복실행 방지  (0) 2010.08.17
c# 특정 폴더나 사이트 열기  (1) 2010.08.16
c# DateTime에서 ToString으로 변환할때...  (0) 2010.08.10