본문 바로가기

Study/C#(Window programming)16

NTC 온도센서(A1737) 온도 구하기2 NTC A1737은 amphenol사의 ntc인데 이 제품은 온도에 따른 저항 값이 완전히 선형적이지 않습니다. 위 표와 같이 -40~0까지 저항이 급속히 떨어지며 0도부터 210도까지도 선형적이지 않고 아래 그림과 같이 몇번의 전환점이 있습니다.NTC온도센서(A1737)온도 구하기 https://answerofgod.tistory.com/891를 통해 선형보간법을 사용하여 온도를 구했었습니다.하지만 수행시간이 올래걸리다 보니(내부에 for문이 있음)좀 더 간단한 Steinhart-Hart 방정식으로 변경하였습니다.#include // log 함수를 사용하기 위해 math.h 헤더 포함#define VDDA_VOLTAGE 3.3f // MCU 공급 전압 (V)#defi.. 2025. 11. 20.
cvs파일 로그 저장하기 cvs로 로그를 저장하는 방법은 여러가지가 있으며, FileStream과 StreamWriter를 이용하여 만들어 보겠습니다. 1. 먼저 파일을 만들어 줍니다. 저의 경우 통신이 시작될 때 로그 기록을 위해 파일을 생성하였습니다. 파일생성은 FileStream으로 해줍니다. 1 2 3 4 FileStream fs1; leftFile = "./Log/left_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv"; fs1 = System.IO.File.Create(leftFile); fs1.Close(); Colored by Color Scripter cs Line 2 : 생성할 파일명을 만들어 줍니다.(저는 현재날짜와 시간이 들어가도록 하였으며, csv파일로 만들도.. 2023. 12. 19.
폴더 만들기 모니터링 프로그램을 만들다 보면, LOG를 저장할 필요성이 있습니다. 이런 때에는 폴더를 따로 만들어 저장하면, 정리하기 편합니다. private void init_folder() { string folder = "./Log"; DirectoryInfo di = new DirectoryInfo(folder); if (di.Exists) { return; } di.Create(); } folder를 새로 만들때 현재 프로그램이 실행되고 있는 sub folder로 만들기 위해서는 상대경로로 지정해 줍니다. "./Log" dot 하나는 현재의 경로를 뜻합니다. dot 2개는 상위폴더이고, '/'는 하위 폴더입니다. 따라서 위와 같이 "./Log"로 쓰게되면 하위폴더 명을 Log로 하겠다는 의미입니다. Dire.. 2023. 12. 14.
PCAN USB 데이터 가져와서 뿌리기 예제 앞서 PCAN USB 연결/해제 하기 에서 UI와 PCAN 연결/해제를 구현해 보았습니다. 우선 타이머를 설정합니다. 타이머는 널널하게 1ms로 설정하였습니다. 1ms마다 readmessage()를 실행하게 됩니다. private void timer1_Tick(object sender, EventArgs e) { ReadMessage(); } readmessage에서는 can id를 검색해서 필요한 id만 가져오게 됩니다. private void ReadMessage() { TPCANMsg CANMsg; TPCANTimestamp CANTimeStamp; TPCANStatus stsResult; strMsg = new StringBuilder(256); stsResult = PCANBasic.Read(m.. 2021. 10. 27.
PCAN USB 연결/해제 하기 C#을 이용하여 PCAN으로 데이터를 읽어와서 UI로 뿌려주는 예제입니다. peak-can 사이트에 가시면 간단한 API 소스를 다운받을 수 있는데 특정 Msg만 가져와서 UI로 뿌려보겠습니다. 우선 API를 다운 받으셔서 PCANBasic.cs파일을 추가해 주셔야합니다. UI는 위와 같이 배터리 SOC를 쉽게 알아볼 수 있도록 UI를 만들었습니다. Initialize가 PCAN을 연결하는 것이고, Release는 연결을 해제하는 버튼입니다. 1.연결하기 연결시의 코드입니다. TPCANStatus stsResult; strMsg = new StringBuilder(256); m_PcanHandle = PCANBasic.PCAN_USBBUS1; try{ stsResult = PCANBasic.Initial.. 2021. 9. 2.
c# RichTextBox 텍스트 라인 유지(FIFO방식) 일반적인 터미널을 보게되면, 버퍼가 가득차면 오래된 로그부터 사라집니다. c#에서도 터미널처럼 제일 오래된 라인부터 없애고 텍스트 박스의 텍스트를 일정 라인수만큼 유지할 수 있습니다. int maxline = 10000; if (messageRich.Lines.Length > maxline) { messageRich.Select(0, messageRich.GetFirstCharIndexFromLine(messageRich.Lines.Length - maxline)); messageRich.SelectedText = ""; messageRich.AppendText("\n"); } else { messageRich.AppendText("\n"); } messageRich.ScrollToCaret(); mes.. 2020. 8. 20.

인기글