Files
vms2016_kadisp/cVMS.NET_CS/Device/Base/CMachine.cs
2024-11-26 20:15:16 +09:00

161 lines
3.7 KiB
C#

using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using System.Threading.Tasks;
namespace vmsnet
{
//###########################################################################################
//##
//## 작성자 : tindevil(tindevil@nate.com , tindevil@jdtek.co.kr)
//## 소유자 : 작성자 , JDTEK
//## 최초작성일 : 2011-11-16
//## 설명 : DA100사용시 미리 정의한 함수목록
//##
//###########################################################################################
/// <summary>
/// 측정된 정보가 들어있는곳.. 센서의 갯수만큼이 배열로 존재한다. 내부 time,temp 는 같은배열크기를 가진다.
/// </summary>
/// <remarks></remarks>
public class Mcdata
{
private List<double> dtime = new List<double>(0);
private List<double> dtemp = new List<double>(0);
public Mcdata()
{
dtime = new List<double>(0);
dtemp = new List<double>(0);
}
/// <summary>
/// 자료의 시간이 저장됨
/// </summary>
/// <value></value>
/// <returns></returns>
/// <remarks></remarks>
public List<double> DataTime
{
get
{
return this.dtime;
}
set
{
this.dtime = value;
}
}
/// <summary>
/// 자료의 온도가 저장됨
/// </summary>
/// <value></value>
/// <returns></returns>
/// <remarks></remarks>
public List<double> DataTemp
{
get
{
return this.dtemp;
}
set
{
this.dtemp = value;
}
}
}
/// <summary>
/// 각장치마다 별도의 클래스가 될수있으므로 반드시 재정의 되어야한다.
/// </summary>
/// <remarks></remarks>
public abstract class CMachine
{
public bool DoRequest = false; ////현재 진행중이라는 뜻
public string IP; ////Ip Address
public int PORT;
public bool isOn; ////Connect 접속가능여부
public bool isBusy; ////Busy 사용중인가
public bool isLock; ////사용불가 플래그
public short idx = (short) 0;
public string Name;
public bool Disable = true;
public DateTime ConnectTry;
public UInt16 ConnTryCount = 0;
public enum ESENDMSGRESULT
{
SUC = 1,
FAIL = 0,
DISC = 2
}
/// <summary>
/// 반환시 사용되는 데이터값
/// </summary>
/// <remarks></remarks>
public struct ReturnData
{
/// <summary>
/// yyyy-MM-dd HH:mm:ss
/// </summary>
public string time;
public int value;
public bool err;
public short unit;
public short ch;
public bool timeerror;
public bool dataerror;
}
public CMachine(string p_ip,int port, string name)
{
this.IP = p_ip;
this.PORT = port;
this.isOn = false;
this.isBusy = false;
this.isLock = false;
this.Name = name;
}
/// <summary>
/// 연결을시도합니다. 연결완료를 반환합니다.
/// </summary>
/// <returns></returns>
/// <remarks></remarks>
abstract public Task<bool> Connect();
/// <summary>
/// 연결을 종료합니다.
/// </summary>
/// <remarks></remarks>
abstract public void Disconnect();
/// <summary>
/// 데이터를 반환합니다.
/// </summary>
/// <param name="unitchs">시작유닛+채널번호입니다.(001 ~ 560)</param>
/// <param name="unitche">종료유닛+채널번호입니다.(001 ~ 560)</param>
/// <returns>반환데이터</returns>
/// <remarks></remarks>
abstract public ReturnData[] GetDataBinary(string unitchs, string unitche);
abstract public ReturnData[] GetDataBinary(int unitchs, int unitche);
abstract public bool SyncDate();
abstract public bool SetInit();
}
}