전체 글 (87) 썸네일형 리스트형 ScottPlot Multi Axis 그리기 - C# ScottPlot 가 버젼 5로 업데이트 되고 사용하는 방법이나 함수가 많이 변경이 된듯 합니다. 이번 포스팅에서는 버젼 5를 기준으로 멀티 축을 그리는 방법에 대한 코드를 공유합니다. (소스 코드) public partial class Form1 : Form { private ScottPlot.AxisPanels.RightAxis? YRight2 = null; // 오른쪽 Y축 추가 private ScottPlot.AxisPanels.LeftAxis? YLeft2 = null; // 왼쪽 Y축 추가 public Form1() { InitializeComponent(); graphInit(); } private void graphInit() { YLeft2 = formsPlot1.Plot.Axes.Add.. 사칙연산을 통해 알아보는 Lambda 와 Func 델리게이트 활용 - C# 델리게이트와 lambda 에 대해 공부를 하면서 어느경우에 써먹을 수 있나 생각을 많이 하게 됩니다. 이번 포스팅에서는 간단하게 사칙연산을 위한 lambda 와 Func 델리케이트의 활용에 대해 포스팅 해 보았습니다. 위와 같이 폼을 하나 구성하고 콤보 박스에 각연산에 대한 항목을 Items 에 추가하고 이벤트 함수를 만들면 됩니다. private double calculate(Func func, double a, double b) { var result = func(a, b); return result; } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { var a = double.Parse(textBox1.Text);.. 항목이 여러개인 List<>에서 각각의 항목을 나누어서 배열로 변환 C# 배열이나 구조체 형식의 List 의 경우 각각의 요소에 대해 배열로 만들 경우가 발생한다. 형식 자체를 배열로 만드는 것은 ToArray() 를 사용할 수 있지만 각각의 요소를 배열로 만들 경우는 아래와 같이 사용하면 된다. class Point { public int X { get; set; } public int Y { get; set; } } List ListPoints = new List() ; 배열변환 #1 : var arrayX = ListPoints.ConvertAll(s => s.X).ToArray() ; var arrayY = ListPoints.ConvertAll(s => s.Y).ToArray() ; 배열변환 #2 : var arrayX = ListPoints.Select(s => s.. 설정값 저장을 위한 ini 파일 과 yaml 파일 사용방법 - C# 장비제어 프로그램 개발시에 시스템의 하드웨어 설정값등을 저장하고 불러 오는 용도로 ini 파일 저장과 yaml 파일 저장 방법을 사용할 수 있도록 테스트 프로그램을 작성해 보았습니다. ini 파일 저장은 인터넷에 있는 Class 를 다운받아 사용하였습니다. yaml 은 YamlDotNet 라이브러리를 사용하였습니다. 코드 작성이나 향후 항목 변경이 되었을 경우 코드 변경에서는 yaml이 편하고 좋습니다. 하지만 프로그램 사용자가 yaml 데이타를 직접 수정할 경우에는 규칙을 지켜서 수정해야 하는 번거로움은 좀 있네요.. 파일에 저장되는 형태는 아래와 같습니다. ini 저장 데이타 파일 [Temperature] Offset-1=12.3 Offset-2=53.987 [System] Name=test Item.. Peak Detection 알고리즘 - C# 아래 이미지와 같은 그래프가 있을때 최고 peak 값 1개를 찾는 것은 쉽다. 그런데 아래 그림에서 각각의 peak 점을 모두 찾아야 할 경우가 있다. 이처럼 peak 가 여럿인 그래프에서 모든 peak 점을 찾는 알고리즘을 만들어 보았다. private List PeakDetect(in double[] data, int count, double threshold) { List peakPos = new List(); List peaks = new List(); double[] imsi = new double[count + 1]; bool peak; for(int index = 0 ; index < data.Length - count ; index++) { Array.Copy(data, index, ims.. 순차적인 작업처리에 대한 알고리즘 구현 장비제어 프로그램을 하다보면 작업 프로세스가 순차적으로 이루어 지는 경우가 많이 있습니다. 또한 각각의 순차적인 작업 내에서 에러 발생이나 상황에 따른 작업 Skip 이 필요한 경우도 발생을 합니다. 코드를 순차적으로 짜면 되겠지만 그렇게 되면 조건문도 많이 들어가고 나중에 코드를 보거나 수정이 필요할 때 많이 피곤해 집니다. 저는 이런 상황에서 while 문과 switch 문을 사용하여 처리를 합니다. 이렇게 코딩을 하면 보기도 편하고 수정도 편하고 작업의 스킵이나 오류 발생시 처리도 상당히 요긴합니다. 아래에 작업에 대한 코드 예를 들었습니다. int WorkFunction() { int error = 0 ; int index = 0 ; bool NextSkip = false ; while(true).. Tag 속성을 이용하여 RadioButton 사용 코딩 줄이기 #2 - C# RadioButton 사용방법 2번째 입니다. 지난번에 이어 이번에도 Tag 속성을 이용하여 RadioButton 을 간단하게 사용하는 방법을 구현합니다. 위 그림과 같이 GroupBox 안에 3개의 RadioButton 을 넣습니다. 그리고 순서대로 Tag 속성을 0,1,2 로 설정합니다. 첫번째 메뉴인 등심에 Checked 를 하고 GroupBox의 Tag 속성을 0으로 설정합니다. 그리고 RadioButton 3개의 Clicked 이벤트를 아래 코드와 같이 동일한 이벤트 함수로 구현합니다. private void MenuClicked(object sender, EventArgs e) { RadioButton radio = sender as RadioButton; if (radio != null) {.. Stopwatch 를 이용한 Timeout 기능 구현 - C# 특정 함수를 구현함에 있어 함수에서의 작업이 언제 끝날지 알수 없는 작업을 구현할 경우 무한루프를 사용하게 됩니다., 무한루프 안에서 특정 작업이 마무리 되면 break 로 빠져 나오겠지만 어떠한 문제로 인해 작업이 진행되지 않고 계속 무한루프를 돌게 되는 경우가 았습니다. 이런경우 Timeout 기능을 넣어서 일정시간이 지나도 작업이 끝나지 않을경우 무한루프를 빠져 나오도록 프로그램을 구현합니다. Timeout 기능은 여러 방법이 있지만 이번 포스팅에서는 Stopwatch 객체를 이용해서 구현해 보았습니다. public int WorkFunction(int TimeOut) { int result = 0 ; System.Diagnostics.Stopwatch sw = new System.Diagnosti.. 이전 1 2 3 4 5 6 ··· 11 다음