프로그래밍 언어/C# 8

C# 스레드 사용하기

안녕하세요. 오늘은 C# 윈폼환경에서 스레드를 사용해보겠습니다. 가장많이 스레드를 쓰는 이유는 메인스레드에서 UI를 변경할경우 렉이 걸리게되는데 그때 스레드를 사용합니다 위의 동영상처럼 버튼을 클릭하면 숫자가 1씩 올라가고 버튼을 클릭하면 숫자가 멈추는 프로그램을 해볼겁니다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 public partial class Form1 : Form { Thread th; int num=0; bool flag = false; public Form1() { InitializeComponent(); } private ..

C# 시리얼통신 데이터 잘려서 읽히는 경우

안녕하세요. C# SerialPort 클래스를 이용해요 DataReceived 이벤트에 데이터를 읽을 때, 데이터 수신을 한 번에 못하는 경우가 있습니다. 예를 들어 MCU와 C#으로 UART 통신을 하는 경우, MCU에서 C#으로 12bytes를 보냅니다. 그러면 DataReceived에서 12bytes를 한 번에 수신하는 경우가 있고, 여러번에 나눠서 수신하는 경우가 있습니다. 이러한 이유는 RX에 신호가들어오면 Receive 이벤트가 발생합니다. 이벤트가 발생하고 처리를할때 수신버퍼에 데이터가 있는만큼 처리를 합니다.(BytesToRead()가 수신버퍼에 있는 바이트수를 보는 함수입니다) 그렇기 때문에 코드는 같더라도 BaudRate에 따라서 이벤트가발생했을때 12bytes가 모두 수신되는 경우도 ..

C# 예외처리 try,catch,finally

안녕하세요 오늘은 C# 예외처리에 대해 알아보겠습니다 예외처리란 프로그램을 작성한사람이 의도치않은 오류가 발생할때, 오류가 생기면 해결을 해주는 기능을 얘기합니다 예를들어 모든수는 0으로 나눌 수 없습니다. 1 2 3 4 5 6 7 static void Main() { int a = 0; Console.WriteLine(100/a); } cs 예외 발생: 'System.DivideByZeroException'(practice.exe) 처리되지 않은 'System.DivideByZeroException' 형식의 예외가 practice.exe에서 발생했습니다. 0으로 나누려 했습니다. 100을 0으로 나누려고 했기때문에 "System.DivideByZeroException"에러가 발생합니다. 저 메세지는 C..

C# this키워드

안녕하세요. 오늘은 C# this에 대해 알아보겠습니다 this는 객체 자기 자신을 지칭할 때 사용합니다. 객체 내부에서 자신의 필드나 메소드에 접근할때 사용합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 namespace practice { class person { public string name; public person(string name) { this.name = name; } } static class Program { static void Main() { person ps = new person("nana"); Console.WriteLine(ps.name); } } } Colored by Color Scripter cs 5번..

C# 생성자

안녕하세요. 오늘은 C# 생성자에 대해 알아보겠습니다. 생성자란 객체를 만들 때, 객체안에 있는 변수의 값을 초기화 해주는것 입니다. 객체를 만들때 값을 초기화해주므로 편합니다. 생성자는 메소드 오버로딩 기능이 있어서 다양하게 생성이 가능합니다 만드는 규칙은 한정자와 클래스이름과 매개변수를 적어주면 됩니다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class person { public string name; public string job; public int age; public person() { Console.WriteLine("생성자의 매개변수가 없습니다"); } public person(string _name, int _age) { n..

C# Format 메소드 사용하기

안녕하세요. 오늘은 C# Format메소드에 대해 알아보겠습니다. Format 메소드는 문자열 서식을 맞추는 메소드입니다. 문자열의 일정한 틀과 모양을 갖추는 것을 의미합니다. *왼쪽/오른쪽 맞춤 - 기본 1 2 string result = string.Format("A{0}D", "BC"); Console.WriteLine(result); cs 결과값 ABCD {0}에 BC를 넣고 문자열을 저장합니다. - 공간을 만들고 앞쪽부터 문자열을 채우고 삽입합니다 1 2 result = string.Format("A{0,-5}D", "BC"); Console.WriteLine(result); cs 결과값 ABC D -공간을 만들고 뒷쪽부터 문자열을 채우고 삽입합니다 1 2 result = string.Forma..

C# 문자열 다루기

안녕하세요. 오늘은 C# 문자열 다루는 여러 방법을 예시를 통해서 알아보겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 static class Program { static void Main() { //문자열 안에서 찾기 // IndexOf 문자열 내에서 찾고자 하는 지정된 문자 또는 문자열의 위치를 앞에서부터 찾습니다 Console.WriteLine("\"wowon\".IndexOf(\"on\") : "+ ..

C# 선그리기(Pen,DrawLine)

안녕하세요. 오늘은 C#으로 윈도우폼에서 선 그리는것을 할 것입니다. 기본적으로 컴퓨터의 좌표계를 알아야 합니다. 컴퓨터의 좌표계입니다. 선을 그리기 위해서는 네단계가 필요합니다. 첫번째로 Graphics개체에 대한 참조를 가져옵니다.두번째로 선의 굵기와 색을 정합니다. 세번째로는 시작점과 끝점을 정합니다.네번째로 Graphics개체를 해제합니다. 첫번째) Graphics개체에 대한 참조 Graphics graphics = CreateGraphics(); 두번째)선의 굵기와 색 정하기System.Drawing.Pen에 있는 Pen 클래스를 사용합니다.1. Pen name = new Pen(color);2. Pen name = new Pen(color,width); color : 선의 색width : 선의..