프로그래밍/Language C#
[C#] enum을 쓰는 이유...
[C#] enum을 쓰는 이유...
2014.06.17① 기억이 용이하다.enum대신 정수형 변수를 대신 사용할 수 도 있다. 하지만, 이렇게 될때 각 정수의 의미가 무엇인지를 만드는 사람이 기억하고 있어야 한다. 값이 많아질 수록 혼란스러울거다. 보통, 사람은 숫자보다 문자를 더 잘 기억한다. 그리고, enum의 원소들을에게 의미를 부여한 이름을 준다면 더 기억하기가 쉬울 것이다. ② 소스의 가독성(Readability)이 높아진다.enum의 원소만 봄으로써, 그 상수의 의미를 보다 쉽게 파악 할 수 있고, 소스 전체의 가독성을 높이는데 도움이 된다. 예를 들어 whatdays = 0; 이라고 표현한다면, 이게 월요일인지,, 일요일인지, 도무지 알 길이 없다. 하지만 whatdays = mon; 이라고 한다면, 두말할나위없이 이해할 수 있다. 두명이상의 ..
Modbus RTU, CRC
Modbus RTU, CRC
2014.01.21-CRC순환 중복 검사, CRC(cyclic redundancy check)는 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식을 말한다. -RTURTU는 SCADA 시스템에서 주로 사용되는 용어인데, 원격지에서 데이터를 수집해 전송 가능한 형식으로 데이터를 변환한 뒤 중앙기지국으로 송신하는 장치이다. RTU는 또한 주 장치로부터 정보를 수집하고, 주 장치에서 지시되는 일련의 작업 절차들을 수행하기도 한다. RTU는 신호 감지 또는 측정을 위한 입력 채널, 제어와 지시 및 경고를 위한 출력 채널 그리고 통신 포트 등을 갖추고 있다.
[Design Pattern] Singleton Pattern (싱글톤 패턴)
[Design Pattern] Singleton Pattern (싱글톤 패턴)
2013.12.26안녕하세요. 오늘 하루종일 싱글톤 패턴 알아보다 이렇게 포스팅 올리네요. 물론, 코드는 제가 한것도 있지만 외국 사이트에 있는 코드를 약간 응용해서 했고요. 싱글톤을 배울 때는 C++로만 사용하는 방법만 배웠고 Winform에서 할려니 좀 해맸어요..ㅎㅎ 머..배운지 벌써 2년이 넘어가서 그런것도 있지만.. 우선은 Winform 2개를 한개의 프로젝트안에서 생성을 합니다. 그냥 생성만 하시면 됩니다. public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2.Instance.Show(); } } 메..
[C#] 통합 개발 환경 [integrated development environment]
[C#] 통합 개발 환경 [integrated development environment]
2013.12.23이것은 주로 퍼스널 컴퓨터용 고급 프로그래밍 언어의 컴파일러에 채용되고 있다. 컴퓨터를 써서 프로그램을 개발하는 과정에서 에디터, 컴파일러, 어셈블러, 링커, 디버거 등의 각 단계가 모두 하나의 프로그램 속에 통합되어 있는 형태. 이것은 프로그램을 에디터로 작성하고 이어서 컴파일러를 불러내어 컴파일하고 링크하여 실행시켜 볼 수 있다. 따라서 에디터를 빠져나와 컴파일을 하고 잘못된 곳이 있으면 다시 에디터를 불러내어 수정하는 등의 반복 작업이 필요 없으므로생산성을 높이고 개발 기간을 단축시킬 수 있다. 또 이러한 환경에서는 컴파일러 자체가 메뉴 방식으로 구성되어 있어 사용이 간편하고 에디터에서 컴파일러에 대한 도움말까지 이용할 수 있어 매우 편리하다.[네이버 지식백과] 통합 개발 환경 [integrated..
[C#] 엔터키 이벤트(KeyEvent)
[C#] 엔터키 이벤트(KeyEvent)
2013.11.22로그인을 하거나 값을 입력해서 확인 버튼을 누르는 경우가 많다. 하지만 습관이라는게 무서워서 그런지 나도 모르게 값을 입력을 하면 Enter Key를 누른다. 그래서 Enter Key Event 에 관해서 올려보자고 한다. private void Test_KeyDown(object sender, KeyEventArgs e){ if (e.KeyCode == Keys.Enter) { //to do } else { return; } } Text Box를 클릭을 하면 VS 2010 같은 경우 우측에서 번개 모양의 이벤트를 들어가서 메서드를 생성을 할 수 있다. KeyDown 이벤트를 더블 클릭하면 위에 코드처럼 메서드가 생성이 되면서 포커싱이 돌아간다. 작성을 완료하고 Text Box 에서 Enter Key를 ..
[C#] System.Security.SecurityException Window Serveice 등록시 Install Error
[C#] System.Security.SecurityException Window Serveice 등록시 Install Error
2013.07.23어쩌다 한번씩 윈도우 서비스를 만들어 처리해야할 경우가 있습니다.이럴때마다 서비스 등록시 아래와 같은 에러를 만나게 됩니다.워낙 드문 드문 하다보니 매번 잊어버리고 시간을 허비하게 하는 에러중 하나입니다. Service1 서비스를 설치하고 있습니다... EventLog 소스 Service1을(를) 로그 Application에 만들고 있습니다... 어셈블리 'C:\CrmService\CrmService\bin\Debug\CrmService.exe'을(를) 롤백하고 있습니다. 영향을 받는 매개 변수: logtoconsole = assemblypath = C:\CrmService\CrmService\bin\Debug\CrmService.exe i = logfile = C:\CrmService\CrmServic..
[C#] Serial Port, DiscardInBuffer
[C#] Serial Port, DiscardInBuffer
2013.07.18SerialPort serial;serial.DiscardInBuffer(); DiscardInBuffer() DiscardInBuffer는 수신 버퍼의 데이터를 모두 삭제할 때 쓰는데, 다량의 데이터를 수신 했을 시 소스에서 미쳐 처리하지 못하면 계속버퍼에 데이터가 쌓이고 데이터를 갱신, 출력 못하는 버퍼에 있는 데이터를 우선 출력해줍니다. 만약 최신 데이터를 유지해야하는 경우 예를 들면, 온도 데이터를 수신하는 중이라고 할 때 온도와 같이 수시로 변하는 데이터는 최신 값이 유지 출력 되어야 된다. 이럴 때 꼼수로 버퍼 데이터를 삭제 해주면 최신의 값을 유지 할 수 있다.
[C#] Console.Write & WriteLine 차이점
[C#] Console.Write & WriteLine 차이점
2013.05.31C# Console 프로그램을 하면 문자들을 출력하는 2개의 함수를 볼 수 있습니다. C# 콘솔에서 가장 많이 쓰이는 함수들이죠. Write 와 WriteLine 함수의 차이점을 간단히 이야기를 하면 Write와 WriteLine 함수는 괄호 안에 있는 문자열을 화면에 출력을 해 줍니다. 하지만 WriteLine은 문자열 뒤에 뉴라인(NewLine)문자를 추가합니다. Test Exampleusing System;using System.Collections.Generic;using System.Linq;using System.Text; namespace ConsoleApplication1{ class Program { static void Main(string[] args) { Console.Write("..
[C#] DB 연동
[C#] DB 연동
2011.12.23C#에서 DB를 연동하는 가장 간단한 소스이다.. 불필요한것도 있지만..귀찮아서 수정은 안하겠다...ㅎㅎ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Win..
[C#] Thread 실습
[C#] Thread 실습
2011.11.17using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Threading; namespace MorTest { public class Number { String name; public Number(String na) { name = na; } public String Name { get { return name; } set { name = value } } public virtual void Print() { } } public class JungSu : Number { public JungSu(String na) : base(na) {..
[C#] Thread 생성
[C#] Thread 생성
2011.11.16using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace Thread_연습 { public class Shape { private volatile bool print; public void Print() { while (!print) { Console.WriteLine("룰루 랄라~ 룰루랄라~"); } Console.WriteLine("집에 가자~"); } public void Stop() { print = true; } } class Program { static void Main(string[] args) { Shape sp = new Shape..
[C#] 전화번호부 2탄 (List,IEnumberable 적용,클래스 상속)
[C#] 전화번호부 2탄 (List,IEnumberable 적용,클래스 상속)
2011.11.14using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace MorningTest { public class Number { string name; string num; public Number(string na, string nu) { name = na; num =nu; } public string Name { get { return name; } set { name = value; } } public string Num { get { return num; } set { num = value; } } public virtual void Print(..