C# 24

C#으로 하는 GPIB 통신 -10-

JsonManager.cs       ( v )DeviceInfo.cs           ( v )CommManager.cs    ( v )GpibManager.cs       ( v )ControlManager.cs   ( v )Form1.cs                  (    )드디어 C#으로 하는 GPIB 통신의 마지막 포스팅입니다.여기까지 읽어주신 분들께 감사드립니다. 이제 이 프로그램의 기능은 클래스에서 구현을 모두 하였고 UI와 연결을 하도록 하겠습니다.using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;us..

개발 2024.11.17

C#으로 하는 GPIB 통신 -9-

JsonManager.cs       ( v )DeviceInfo.cs           ( v )CommManager.cs    ( v )GpibManager.cs       ( v )ControlManager.cs   (    )Form1.cs                  (    )안녕하세요~이제 GPIB 통신 프로그램에서 GPIB 통신을 다루는 부분을 마무리 하고 UI과 연계해서 GPIB 통신을 제어하는 ControlManager 클래스를 작성하네요. UI의 기능을 많이 정의하지 않다 보니 ControlManager 부분에 많은 메서드가 많이 사용되지는 않겠네요.현재 작성하고 있는 프로그램의 기능이 단순하다 보니 그러한데GPIB 통신 프로그램으로 기본적인 기능은 있으니 내용을 보시고 참고하셔서 ..

개발 2024.11.16

C#으로 하는 GPIB 통신 -8-

JsonManager.cs       ( v )DeviceInfo.cs           ( v )CommManager.cs    ( v )GpibManager.cs       (    )ControlManager.cs   (    )Form1.cs                  (    )앞서 CommManager까지 작성을 완료하였습니다이제 GPIB를 관장하는 클래스를 작성하도록 하겠습니다. using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Ivi.Visa;namespace GPIB_Demo{ public class GpibManager ..

개발 2024.11.16

C#으로 하는 GPIB 통신 -7-

JsonManager.cs       ( v )DeviceInfo.cs           ( v )CommManager.cs    (    )GpibManager.cs       (    )ControlManager.cs   (    )Form1.cs                  (    )지난번까지 DeviceInfo 클래스까지 작성을 하였습니다.이제 통신에 관한 클래스를 만들어 보겠습니다. 통신부는 VISA를 이용해서 작성을 하면 됩니다.검색하시면 관련 자료 많이 찾으실 수 있을꺼예요.다만 라이브러리에 맞는 예제를 찾으셔야 시간 낭비를 줄일 수 있습니다.제조사 라이브러리가 주는 장점도 있는데 특정기능을 VISA로 구현하려면 어려운 경우가 있는데 이것을 쉽게 할 수 있는 메서드가 있습니다. 그리고 계..

개발 2024.11.15

C#으로 하는 GPIB 통신 -6-

이제 현재 UI 작업하였고 클래스도 만들어 구조를 정하였습니다.각각 클래스에 코드 작업을 하도록 하겠습니다. JsonManager.cs (v)DeviceInfo.csCommManager.csGpibManager.csControlManager.csForm1.cs위의 클래스를 코딩작업을 해야 합니다.앞서 JsonManager.cs 클래스는 완료하였고 이제 DeviceInfo.cs를 작업하겠습니다.구조를 정하고 각 기능 클래스들을 하나씩 작성하고 마지막으로 UI에 붙여주도록 하겠습니다. DeviceInfo.cs 파일은 검색된 장비들에 대한 데이타를 보관할 클래스가 필요하다고 생각하여서 만들었습니다.단일 장비일경우 활용도가 약할텐데 다수의 같은 구조의 데이타를 가진 장비의 정보를 가진 객체를 활용할려면 장비 정..

개발 2024.11.15

C# Dictionary를 JSON으로 저장하기

프로그램 작성시 설정값들을 만들고 이 값을 저장하여 프로그램 재실행시 사용해야 될 경우가 있습니다.이럴때 저장을 하는 다양한 방법이 있습니다.저는 보통 예전에 설정 파일들은 INI파일 또는 xml로 저장을 하고 프로그램 시작시 설정값을 가져오는 방식으로 작성을 합니다. JSON 파일도 쓰기가 많이 좋아서  최근에 다루기 시작했는데 이번에 C#으로 JSON 파일을 저장하고 로드하는 방법에 대해 적어볼까 합니다.현재 제가 기록하고 있는 C#으로 GPIB 통신하기에도 장비검색이후 별칭으로 주소값과 함께 저장하는 내용으로 작성하였습니다.JSON은 형태가 키-값 페어로 저장되기에 현재 저장될 딕셔너리 형태 "장비 별칭" : "주소"와 같기에 딕셔너리 데이타를 JSON 데이타로 저장하는 코드를 작성하기로 하였습니다..

개발 2024.11.15

C#으로 하는 GPIB 통신 - 5 -

이제 본격적으로 제가 하는 방식으로 코드를 작성해 보겠습니다.앞서 윈폼에서 바로 작성하는 방식으로 작업을 하였는데 C#의 로직부분만 최대한 드러내기 편한 구조로 작성을 할려고 하는 편입니다. 일단 기존에 작성한 솔루션을 로딩하겠습니다~일단 수정할 부분과 어떤 기능들이 추가로 들어갈지 생각을 해보도록 하겠습니다. 수정 사항 및 추가 사항1. UI에 있는 로직들을 옮긴다.2. UI에 탐지장비와 테스트 통신할 수 있는 부분 추가3. Set 버튼을 누를때 해당 정보를 파일에 저장4. 검색된 장비들 테스트 송수신 가능5. 프로그램 로딩시 파일을 읽어와서 통신 여부 확인  위의 내용으로 대략적인 클래스 구조를 그려봤습니다. 윈폼 UI와 ControlManager와 서로 연결되어 있고 그 하위에 GPIB를 관장하는 ..

개발 2024.11.14

CR(Carriage Return) LF(Line Feed)란?

프로그램을 하시다 보면 CR LF라는 단어를 접하실 것입니다.개행하는 문자인데 모르시는 분들도 계실까봐 잠시 적어봅니다. 프로그램이 실행되고 해당 내용을 표시할 때 문자열에 문자열이 이어지면 보는 사람이 참으로 헷갈릴것입니다.한줄 정도면 어떻게든 이해될텐데 몇십줄이 연속적으로 이어지면 시인성이 참으로 떨어지겠지요. 그래서 개행을 하는것이고 보통 코드에서는 \r \n 이렇게 문자열 뒤에 붙여서 개행하도록 합니다. 물론 자동으로 개행하는 코드도 있는데 아닐경우는 뒤에 개행 문자를 붙여주면 됩니다. C#에서도 Console.Write와 Console.WriteLine이 있습니다.참고로 C# 코드 작성시 저는 보통 CR LF를 써야만 할때가 아니면 문자열 뒤에 Environment.NewLine을 입력하여 개행..

개발 2024.11.13

C#으로 하는 GPIB 통신 -4-

앞서 많은 작업에 필요한 사전 작업을 다 한것 같습니다.중간 중간에 여러 필요한 정보들이 있을때 또 말씀을 드리겠습니다. 일단 앞으로 작업을 정리하자면1. 윈폼으로 코드 작성 장비 검색, 장비 등록2. 제작한 윈폼으로 GPIB 통신 연결, 케이블 연결 방법, 장비 검색, 장비 등록, 1:1 통신으로 명령어 전송 및 쿼리,3. 제작한 윈폼으로 장비 2대 연결하여 계측기 자동화 해보기 위와 같이 될 듯 합니다.중간 중간에 여러 필요한 정보들이 있을때 또 말씀을 드리겠습니다. 이제 작업을 시작할것인데각자의 스타일이 있듯이 제가 코드 작성하는 스타일이 있으니 참고만 부탁드려요.처음 보시는 분은 그저 따라만 하시다가 익숙해지시면 본인이 원하는 스타일로 작성하시면 됩니다.  자~! 일단 디자인한 부분을 확인해보겠습..

개발 2024.11.13

윈폼에서 디자이너 로드 오류 해결방법

윈폼을 작업하다 보면 깜빡하고 UI 도구 이름을 설정안하고 이벤트를 만들다보니 코드에서 삭제할 때 다시 윈폼 디자이너로 가면 접근 오류가 나타납니다.   윈폼을 잘 안해보시다가 할 경우 갑작스런 현상에 당황을 하실텐데 위의 경우는 윈폼 디자이너부분과 코드 부분이 Partial Class이기 때문입니다. 윈폼의 경우 기본 제공 또는 구매한 도구(사용자 정의 도구도 있습니다.)를 이용해서 윈폼에 쉽게 배치하고 이후 동작에 대한 코드를 기록하는 방법을 사용합니다.웹이나 다른 언어의 경우 코드로만 컴포넌트들을 배치하는 경우도 있는데 윈폼이 이 경우보다 초기 디자인 작업이 많이 쉬운것 같습니다. 물론 정형화되어 있기에 보다 미려한 UI를 만들고자 하면 한계가 있습니다.물론 실력이 된다면 Form의 디자인을 코드 ..

개발 2024.11.12
반응형