Files
vms2016_kadisp/Sub/arMasterK/Project/EnumAStruct.cs

237 lines
6.3 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace arDev
{
public partial class MasterK
{
[Description("")]
public enum eMsgType
{
[Description("")]
Rx = 0,
[Description("")]
Tx,
RxRaw,
}
[Description("Operation Code , 이 코드값으로 컨트롤 보드에 명령합니다.")]
public enum eOpCode : byte
{
GET_IO_DATA = 0,
RELAY_OUTPUT,
}
/// <summary>
/// digital input/output direction
/// </summary>
public enum eIOPINDIR : byte
{
[Description("Digital Input")]
INPUT = 0,
[Description("Digital Output")]
OUTPUT = 1,
}
/// <summary>
/// error code list
/// </summary>
public enum eErrorCode : byte
{
[Description("포트가사용중입니다.")]
PortBusy = 0,
[Description("열려있지않습니다.")]
NotOpen,
[Description("쓰기오류")]
WriteError,
[Description("읽기오류")]
ReadError,
[Description("프레임오류")]
FrameError,
[Description("체크섬오류")]
ChecksumError
}
/// <summary>
/// message frame
/// </summary>
public struct sRecvMessage
{
/// <summary>
/// 국번
/// </summary>
public string Device;
/// <summary>
/// 명령어
/// </summary>
public char Command;
/// <summary>
/// 명령어타입
/// </summary>
public string CmdType;
/// <summary>
/// 블록수
/// </summary>
public int BlockCount;
/// <summary>
/// 데이터갯수
/// </summary>
public int DataLen;
/// <summary>
/// 데이터
/// </summary>
public string Data;
public string FullString;
/// <summary>
/// full message frame
/// </summary>
[Description("전체 메세지 영역")]
public byte[] Buffer;
/// <summary>
/// check byte (crc16)
/// </summary>
[Description("체크섬 2byte(CRC 16)")]
public byte[] checksum;
/// <summary>
/// checksum error
/// </summary>
[Description("체크섬에 오류가 있는지 확인합니다.(true일경우 오류)")]
public Boolean isCSError;
[Description("기타메세지")]
public string Message;
[Description("정보를 삭제합니다.")]
public void Clear()
{
Message = "NOTSET";
Data = null;
Buffer = null;
checksum = null;
isCSError = false;
BlockCount = 0;
DataLen = 0;
FullString = string.Empty;
}
[Description("응답코드가 NAK인지확인합니다. NAK응답은 컨트롤러로부터 오류가 수신되었음을 의미합니다.")]
public Boolean isNAK
{
get
{
if (Buffer[0] == 0x15) return true;
else return false;
}
}
[Description("오류가 있는지 체크합니다. 버퍼가 없거나 체크섬 오류 , DLC오류등을 체크 합니다.")]
public Boolean isError
{
get
{
if (Buffer == null || isCSError || BlockCount == 0 || isNAK) return true;
else return false;
}
}
}
public struct sSendMessage
{
/// <summary>
/// 국번
/// </summary>
public string Device;
/// <summary>
/// 명령어
/// </summary>
public char Command;
/// <summary>
/// 명령어타입
/// </summary>
public string CmdType;
/// <summary>
/// 변수길이
/// </summary>
public int DeviceLength;
public int NumberofBlock;
/// <summary>
/// 변수명
/// </summary>
public string VarName;
/// <summary>
/// 데이터갯수
/// </summary>
public int DataLen;
public string Data;
/// <summary>
/// full message frame
/// </summary>
[Description("전체 메세지 영역")]
public byte[] Buffer;
public string Strbuffer;
/// <summary>
/// check byte (crc16)
/// </summary>
[Description("체크섬 2byte(CRC 16)")]
public byte[] checksum;
/// <summary>
/// checksum error
/// </summary>
[Description("체크섬에 오류가 있는지 확인합니다.(true일경우 오류)")]
public Boolean isCSError;
[Description("기타메세지")]
public string Message;
[Description("정보를 삭제합니다.")]
public void Clear()
{
Data = string.Empty;
Message = "NOTSET";
Buffer = null;
checksum = null;
isCSError = false;
DeviceLength = 0;
NumberofBlock = 0;
DataLen = 0;
Strbuffer = string.Empty;
}
[Description("오류가 있는지 체크합니다. 버퍼가 없거나 체크섬 오류 , DLC오류등을 체크 합니다.")]
public Boolean isError
{
get
{
if (Buffer == null || isCSError || DeviceLength == 0) return true;
else return false;
}
}
}
}
}