반응형
- 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
{
CommManager commManager;
Dictionary<uint, DeviceInfo> deviceInfoDic = new Dictionary<uint, DeviceInfo>();
public GpibManager()
{
commManager = new CommManager();
}
//==================================================
// 장비 연결하고 정보를 받아오는 메서드
//==================================================
public Dictionary<uint, DeviceInfo> ConnectGetInfo()
{
uint index = 1;
//장비 검색시 세션 리스트내부 세션정보, Datagridview 초기화
deviceInfoDic.Clear();
try
{
List<string> deviceList = commManager.FindGpibRsc().ToList(); //GPIB 장비 검색
foreach (var item in deviceList)
{
IMessageBasedSession session = (IMessageBasedSession)GlobalResourceManager.Open(item); //앞에서 검색된 주소값을 통해 장비 정보 확인
session.FormattedIO.WriteLine("*IDN?");
string receivedData = session.FormattedIO.ReadLine();
DeviceInfo deviceInfo = new DeviceInfo(session, item, receivedData);
deviceInfoDic.Add(index, deviceInfo); //세션 정보를 클래스 리스트에 입력
index++;
}
}
catch (Exception es)
{
}
return deviceInfoDic;
}
//==================================================
// 송신 메서드
//==================================================
public void SendMsg(string msg, IMessageBasedSession session)
{
commManager.SendMsg(msg, session);
}
//==================================================
// 송수신 메서드
//==================================================
public string QueryMsg(string msg, IMessageBasedSession session)
{
return commManager.QueryMsg(msg, session);
}
}
}
작성된 메서드는
- GPIB 장비 검색하고 검색된 주소값을 바탕으로 세션을 생성하여 장비의 정보값을 받아와서 딕셔너리에 입력
- GPIB 통신을 이용하여 장비에 명령어 전송
- GPIB 통신을 이용하여 장비에 명령어 쿼리
GpibManager 클래스는 CommManager 클래스의 리소스 파인드와 연결기능으로 하나의 메서드를 만들고 송신, 송수신은 CommManager의 메서드를 그대로 사용합니다.
여기 클래스의 주목적은 GPIB 통신을 하는 장비들의 기능을 작성하려고 하였습니다.
ControlManager 바로 CommManager로 할까하다 여기서는 아니지만 확장의 생각까지 하다보니 한번 만들어 봤습니다.
이제 ControlManager와 UI가 남았네요.
여기까지 읽어 주셔서 감사합니다~
반응형
'개발' 카테고리의 다른 글
C#으로 하는 GPIB 통신 -10- (83) | 2024.11.17 |
---|---|
C#으로 하는 GPIB 통신 -9- (85) | 2024.11.16 |
C#으로 하는 GPIB 통신 -7- (16) | 2024.11.15 |
C#으로 하는 GPIB 통신 -6- (13) | 2024.11.15 |
C# Dictionary를 JSON으로 저장하기 (3) | 2024.11.15 |