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,
}
///
/// digital input/output direction
///
public enum eIOPINDIR : byte
{
[Description("Digital Input")]
INPUT = 0,
[Description("Digital Output")]
OUTPUT = 1,
}
///
/// error code list
///
public enum eErrorCode : byte
{
[Description("포트가사용중입니다.")]
PortBusy = 0,
[Description("열려있지않습니다.")]
NotOpen,
[Description("쓰기오류")]
WriteError,
[Description("읽기오류")]
ReadError,
[Description("프레임오류")]
FrameError,
[Description("체크섬오류")]
ChecksumError
}
///
/// message frame
///
public struct sRecvMessage
{
///
/// 국번
///
public string Device;
///
/// 명령어
///
public char Command;
///
/// 명령어타입
///
public string CmdType;
///
/// 블록수
///
public int BlockCount;
///
/// 데이터갯수
///
public int DataLen;
///
/// 데이터
///
public string Data;
public string FullString;
///
/// full message frame
///
[Description("전체 메세지 영역")]
public byte[] Buffer;
///
/// check byte (crc16)
///
[Description("체크섬 2byte(CRC 16)")]
public byte[] checksum;
///
/// checksum error
///
[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
{
///
/// 국번
///
public string Device;
///
/// 명령어
///
public char Command;
///
/// 명령어타입
///
public string CmdType;
///
/// 변수길이
///
public int DeviceLength;
public int NumberofBlock;
///
/// 변수명
///
public string VarName;
///
/// 데이터갯수
///
public int DataLen;
public string Data;
///
/// full message frame
///
[Description("전체 메세지 영역")]
public byte[] Buffer;
public string Strbuffer;
///
/// check byte (crc16)
///
[Description("체크섬 2byte(CRC 16)")]
public byte[] checksum;
///
/// checksum error
///
[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;
}
}
}
}
}