237 lines
6.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|