개발

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

워시기 2024. 11. 14. 19:57
반응형

이제 본격적으로 제가 하는 방식으로 코드를 작성해 보겠습니다.

앞서 윈폼에서 바로 작성하는 방식으로 작업을 하였는데 C#의 로직부분만 최대한 드러내기 편한 구조로 작성을 할려고 하는 편입니다.

 

일단 기존에 작성한 솔루션을 로딩하겠습니다~

일단 수정할 부분과 어떤 기능들이 추가로 들어갈지 생각을 해보도록 하겠습니다.

 

수정 사항 및 추가 사항

1. UI에 있는 로직들을 옮긴다.

2. UI에 탐지장비와 테스트 통신할 수 있는 부분 추가

3. Set 버튼을 누를때 해당 정보를 파일에 저장

4. 검색된 장비들 테스트 송수신 가능

5. 프로그램 로딩시 파일을 읽어와서 통신 여부 확인 

 

위의 내용으로 대략적인 클래스 구조를 그려봤습니다.

 

윈폼 UI와 ControlManager와 서로 연결되어 있고 그 하위에 GPIB를 관장하는 클래스와 하위에 정보값들을 보관할 클래스,  통신 클래스를 만들었습니다. ControlManager에서 정보값들을 저장하기 위해 JsonManager클래스도 작성할 예정입니다.

물론 프로그램이 기능이 더 많아지고 통신 방식도 여러가지가 있다면 더 많은 클래스를 만들텐데 일단 위와 같이 하였습니다.

 

UI와 로직을 연결할 부분을 먼저 만들고 로직내 통신부를 만들겠습니다.

따로 관리하기 편하게 폴더를 추가하시고 폴더내에 클래스를 만들겠습니다.

저는 Control이라는 폴더에 위의 내용들을 바탕으로 클래스를 만들었습니다.

솔루션 이름에서 우클릭하여 Context Menu가 나오게 하여 폴더를 추가하고 클래스 파일을 추가한다.

 

솔루션 탐색기는 위와 같이 되어 있을것 입니다.

 

UI부터 수정을 하도록 하겠습니다.

처음에 레이아웃 작업할때 저는 주로 TablelayoutPanel을 쓴다고 말씀을 드렸는데 이제 빛을 발하겠네요.

디자이너 탭을 누르시고 그 상태에서 속성탭에 보시면 바로 밑에 현재 클릭한 도구가 나타납니다.


현재 좌측 디자인부분에 Tbox_Log를 클릭하였기에 속성에 Tbox_Log가 나타난 것입니다.

해당 부분을 클릭하면 폴다운 메뉴가 나타나는데 거기서 Tlp_Main을 선택하시면 해당 도구가 클릭됩니다.

대부분 도구의 Dock 속성을 fill로 하고 테이블 레이아웃은 선택하다보면 제대로 선택이 되었는지 헷갈리는데 속성에서 바로 선택하시면 편하게 해당 도구를 클릭하실 수 있습니다.

선택이 되면 편집을 하여 아래에 행을 추가하겠습니다.

비율도 적당히 수정하시면 됩니다. 저는 60:20:20으로 수정하였습니다.

그리고 사이즈도 많이 좁아져서 높이값을 수정하였습니다.

 

 

 잠깐~!

방금 VisualStudio에서 버그가 나서 얼른 캡쳐했습니다.

TableLayoutPanel 수정을 하다보면 수정값이 UI에 이상하게 반영되는 경우가 있습니다.

IDE 버그이니 이럴때는 솔루션 닫기를 하시고 다시 실행하시면 됩니다.

 

프로그램을 종료하지 마시고 위의 표시된 [ 솔루션 닫기 ]만 클릭하시고 다시 불러오세요.

프로그램을 종료하시고 다시 실행하면 시간이 아깝습니다.

IDE 버그

 

아래 새로 생긴곳에 테스트 통신을 할 수 있게 구성하시면 됩니다.

 

위와 같이 수정을 하였습니다.

자측 TextBox는 송수신 값이 표현될 예정이고

우측 제일 상단 ComboBox는 검색된 장비에 별칭을 붙여 Set을 하고 나면 별칭들을 ComboBox에 업데이트합니다.

그리고 중간에는 송신 메세지를 기입할 도구 입니다. 제일 하단의 두번튼은 송신과 송수신을 담당합니다.

각 도구들에 알맞은 이름으로 변경을 해주세요.

 

저는 좌측 창은 Tbox_GPIB_Msg, 우측 ComboBox는 Cbox_Device, 중간은 Tbox_msg, 버튼은 각각 Btn_Send, Btn_Query라고 작성하였습니다.

 

전체적으로 준비는 된것같습니다. 

이제 다음 포스팅부터 하나씩 클래스 작성을 진행하도록 하겠습니다.

여기까지 읽어주셔서 감사드립니다.

 

반응형