initial commit

This commit is contained in:
Arin(asus)
2024-11-26 20:15:16 +09:00
commit 973524ee77
435 changed files with 103766 additions and 0 deletions

BIN
cVMS.NET_CS/Alert.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

342
cVMS.NET_CS/Class/CFDB.cs Normal file
View File

@@ -0,0 +1,342 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using System.IO;
using System.Text;
using AR;
using System.Reflection;
namespace vmsnet
{
public class CFDB
{
// ..\Database\volt /* 전압 */
string _BaseDir;
System.Text.StringBuilder[] StrBuf; ////데이터버퍼
DateTime[] LastTime; ////데이터시간
System.IO.FileInfo[] File; ////데이터파일정보
int MaxCount = 10;
public bool IsReady { get; private set; }
public CFDB(params string[] dirarrays)
{
var dir = System.IO.Path.Combine(dirarrays);
_BaseDir = dir;
StrBuf = new System.Text.StringBuilder[MaxCount];
LastTime = new DateTime[MaxCount];
File = new System.IO.FileInfo[MaxCount];
if (System.IO.Directory.Exists(_BaseDir) == false)
{
try
{
System.IO.Directory.CreateDirectory(_BaseDir);
IsReady = true;
}
catch
{
IsReady = false;
}
}
else IsReady = true;
////Data Initialize
for (int i = 0; i < MaxCount; i++)
{
StrBuf[i] = new System.Text.StringBuilder();
LastTime[i] = DateTime.Now;
File[i] = null;
}
}
////지정한 기간내 파일의 존재여부를 확인합니다.
//public int GetfileCount(string table, DateTime sd, DateTime ed)
//{
// return GetfileS(table, sd, ed).Count;
//}
/// <summary>
/// 데이터를 기록합니다.
/// </summary>
/// <param name="time">기록시간(파일명이 결정됨)</param>
/// <param name="table">기록할테이블명(파일명)</param>
/// <param name="buffer">기록할데이터(열데이터가 틀려서 고정할 수 없다)</param>
/// <returns></returns>
/// <remarks></remarks>
public bool InsertData(DateTime time, string table, StringBuilder buffers)
{ // volt 파일생성
string DayStr = time.ToString("yyyyMMdd");
byte TableIndex = byte.Parse(table.Substring(5));
////해당데이터의 시간과 파일정보를 기록
LastTime[TableIndex - 1] = time;
// 파일명 : (time.Hour ).ToString("00") + "_" + table + ".txt"
File[TableIndex - 1] = new System.IO.FileInfo(_BaseDir + "\\" + DayStr.Substring(0, 4) + "\\" + DayStr.Substring(4, 2) + "\\" + DayStr.Substring(6) + "\\" + (time.Hour ).ToString("00") + "_" + table + ".txt");
if (!File[TableIndex - 1].Directory.Exists)
File[TableIndex - 1].Directory.Create();
////각테이블별로 시작 열번호를 넣는다.
int si = 1 + 160 * (TableIndex - 1);
int ei = si + (160 - 1);
////파일이 없다면 제목줄을 생성해준다.
if (!File[TableIndex - 1].Exists)
{
////헤더를 추가해야한다.
var Header = new System.Text.StringBuilder();
Header.Append("\t" + "TIME");
for (int j = si; j <= ei; j++)
{
Header.Append("\t" + "C" + j.ToString("000"));
}
//Header.Append(vbTab + "KA")
Header.AppendLine(); ////제목줄을 한칸띄운다
// 파일에 헤더 쓰기
//File[TableIndex - 1].WriteText(Header); // 이전 단독모드
/* 작성자: 이재웅, 작성일: 2024-09-23, 작성내용: 접근모드를 공유모드로 전환 */
using (FileStream fs = new FileStream(File[TableIndex - 1].FullName, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
using (StreamWriter writer = new StreamWriter(fs))
{ writer.Write(Header.ToString()); }
}
StrBuf[TableIndex - 1].AppendLine("\t" + time.ToFileTime().ToString() + buffers.ToString());
////4kb 단위로 파일을 기록한다.
if (StrBuf[TableIndex - 1].Length > 4096) ////실제파일 기록은 ★5초마다★ 한다.
{
//File[TableIndex - 1].AppendText(StrBuf[TableIndex - 1]); // 이전은 단독모드
/* 작성자: 이재웅, 작성일: 2024-09-23, 작성내용: 접근모드를 공유모드로 전환 */
using (FileStream fs = new FileStream(File[TableIndex - 1].FullName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
using (StreamWriter writer = new StreamWriter(fs))
{ writer.Write(StrBuf[TableIndex - 1].ToString()); }
StrBuf[TableIndex - 1].Clear();
}
return true;
}
~CFDB()
{
////버퍼에 남아잇는 데이터를 기록한다.
for (int i = 0; i < MaxCount; i++)
{
if (StrBuf[i].Length > 0)
{
try
{
using (var writer = new StreamWriter(File[i].FullName, true, System.Text.Encoding.Default))
writer.Write(StrBuf[i].ToString());//
}
catch { }
}
StrBuf[i].Clear();
}
}
/// <summary>
/// 저장폴더내에 존재하는 날짜정보를 반환합니다.
/// </summary>
/// <returns></returns>
/// <remarks></remarks>
//public List<string> GetDateList()
//{
// List<string> REtval = new List<string>();
// System.IO.DirectoryInfo BDI = new System.IO.DirectoryInfo(_BaseDir);
// foreach (System.IO.DirectoryInfo Fd_Year in BDI.GetDirectories())
// {
// foreach (System.IO.DirectoryInfo FD_Mon in Fd_Year.GetDirectories())
// {
// foreach (System.IO.DirectoryInfo Fd_Day in FD_Mon.GetDirectories())
// {
// if (Fd_Day.GetFiles().Length > 0)
// {
// REtval.Add(Fd_Year.Name + FD_Mon.Name + Fd_Day.Name);
// }
// }
// }
// }
// REtval.Sort();
// return REtval;
//}
//public enum eTableList
//{
// DATAB1 = 1,
// DATAB2 = 2,
// DATAB3 = 3,
// DATAB4 = 4,
// DATAB5 = 5
//}
/// <summary>
/// 저장폴더내에 존재하는 날짜정보를 반환합니다.
/// </summary>
/// <param name="tablename">찾고자하는테이블명(파일은 시_테이블명.txt로 되어있다.</param>
/// <returns></returns>
/// <remarks></remarks>
//public List<string> GetDateList(eTableList tablename)
//{
// List<string> REtval = new List<string>();
// System.IO.DirectoryInfo BDI = new System.IO.DirectoryInfo(_BaseDir);
// foreach (System.IO.DirectoryInfo Fd_Year in BDI.GetDirectories())
// {
// foreach (System.IO.DirectoryInfo FD_Mon in Fd_Year.GetDirectories())
// {
// foreach (System.IO.DirectoryInfo Fd_Day in FD_Mon.GetDirectories())
// {
// if (Fd_Day.GetFiles("*_" + tablename.ToString() +".txt").Length > 0)
// {
// REtval.Add(Fd_Year.Name + FD_Mon.Name + Fd_Day.Name);
// }
// }
// }
// }
// REtval.Sort();
// return REtval;
//}
public List<(int Year, int Month)> GetAvailableDates()
{
var availableDates = new List<(int Year, int Month)>();
if (!Directory.Exists(_BaseDir))
return availableDates;
// Get all year directories
foreach (var yearDir in Directory.GetDirectories(_BaseDir))
{
if (int.TryParse(Path.GetFileName(yearDir), out int year))
{
// Get all month directories within the year directory
foreach (var monthDir in Directory.GetDirectories(yearDir))
{
if (int.TryParse(Path.GetFileName(monthDir), out int month))
{
availableDates.Add((year, month));
}
}
}
}
return availableDates;
}
////기간내 존재하는 파일을 반환합니다(테이블단위)
public List<string> GetfileS(string table, DateTime sd, DateTime ed)
{
List<string> REtval = new List<string>();
int SttYear = sd.Year;
int EndYear = ed.Year;
if (EndYear < SttYear) return REtval;
int SttMonth = sd.Month;
int EndMonth = ed.Month;
int SttDay = sd.Day;
int EndDay = ed.Day;
int si = int.Parse(sd.ToString("yyyyMMdd"));
int ei = int.Parse(ed.ToString("yyyyMMdd"));
bool SameDay = si == ei ? true : false;
//for (int dayinfo = si; dayinfo <= ei; dayinfo++)
//{
// string dayStr = dayinfo.ToString();
// string dirname = Path.Combine(_BaseDir, dayStr.Substring(0, 4), dayStr.Substring(4, 2), dayStr.Substring(6));
// var dir = new DirectoryInfo(dirname);
// if (!dir.Exists) continue;
// int startHour = (dayinfo == si) ? int.Parse(sd.ToString("HH")) : 0;
// int endHour = (dayinfo == ei) ? int.Parse(ed.ToString("HH")) : 23;
// // 동일 날짜인 경우
// if (SameDay)
// {
// startHour = int.Parse(sd.ToString("HH"));
// endHour = int.Parse(ed.ToString("HH"));
// }
// for (int hourinfo = startHour; hourinfo <= endHour; hourinfo++)
// {
// string filename = Path.Combine(dir.FullName, $"{hourinfo:00}_{table}.txt");
// if (System.IO.File.Exists(filename))
// {
// REtval.Add(filename);
// }
// }
//}
////20140101
for (int dayinfo = si; dayinfo <= ei; dayinfo++)
{
string DayStr = dayinfo.ToString();
var dirname = Path.Combine(_BaseDir, DayStr.Substring(0, 4), DayStr.Substring(4, 2), DayStr.Substring(6));
var dir = new System.IO.DirectoryInfo(dirname);
if (!dir.Exists) continue;
////폴더가 존재하므로 해당 테이블파일이 존재하는지 확인한다
if (SameDay)
{
////동일날짜라면 해당 시간대만 조회하면됨
for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++)
{
string fn = dir.FullName + "\\" + (hourinfo).ToString("00") + "_" + table + ".txt";
if (System.IO.File.Exists(fn))
REtval.Add(fn);
}
}
else
{
if (dayinfo == si) ////시작일이라면 시작시간부터 24시까지 이다.
{
for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= 23; hourinfo++)
{
string fn = dir.FullName + "\\" + (hourinfo).ToString("00") + "_" + table + ".txt";
if (System.IO.File.Exists(fn))
REtval.Add(fn);
}
}
else if (dayinfo == ei) ////종료일이라면 1~ 종료시까지이다.
{
for (int hourinfo = 0; hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++)
{
string fn = dir.FullName + "\\" + (hourinfo).ToString("00") + "_" + table + ".txt";
if (System.IO.File.Exists(fn))
REtval.Add(fn);
}
}
else
{
////중간에 끼어있는 날짜라면 1~24모두가 속한다.
for (int hourinfo = 0; hourinfo <= 23; hourinfo++)
{
string fn = dir.FullName + "\\" + (hourinfo).ToString("00") + "_" + table + ".txt";
if (System.IO.File.Exists(fn))
REtval.Add(fn);
}
}
}
}
REtval.Sort();
return REtval;
}
}
}

360
cVMS.NET_CS/Class/CFDBA.cs Normal file
View File

@@ -0,0 +1,360 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using AR;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
namespace vmsnet
{
public class CFDBA
{
// ..\Database\Alarm /* 알람 */
string _BaseDir;
public class ReadProgessArgs : EventArgs
{
public double value { get; set; }
public ReadProgessArgs(double value)
{
this.value = value;
}
}
public class MessageArgs : EventArgs
{
public string Message { get; set; }
public MessageArgs(string value)
{
Message = value;
}
}
//public event EventHandler<ReadProgessArgs> ReadingProgressValueChanged;
public event EventHandler<MessageArgs> Message;
public CFDBA(params string[] dirarrays)
{
var dir = System.IO.Path.Combine(dirarrays);
_BaseDir = dir;
if (System.IO.Directory.Exists(_BaseDir) == false)
{
System.IO.Directory.CreateDirectory(_BaseDir);
}
}
/// <summary>
/// 데이터를 기록합니다.
/// </summary>
/// <param name="time">기록시간(파일명이 결정됨)</param>
/// <param name="table">기록할테이블명(파일명)</param>
/// <param name="buffer">기록할데이터(열데이터가 틀려서 고정할 수 없다)</param>
/// <returns></returns>
/// <remarks></remarks>
public bool InsertData(DateTime time, int ch, COMM.EALAMRAISETYPE raiseType, float volt, COMM.EALAMTYPE almType, float maxvolt, float minvolt, string am, string am2)
{
string DayStr = time.ToString("yyyyMMdd");
System.IO.FileInfo fi = new System.IO.FileInfo(_BaseDir + "\\" + DayStr.Substring(0, 4) + "\\" + DayStr.Substring(4, 2) + "\\" + DayStr.Substring(6) + "\\" + (time.Hour + 1).ToString("00") + ".txt");
if (!fi.Directory.Exists)
{
try
{
fi.Directory.Create();
}
catch
{
PUB.log.AddE($"fail:make directory value={fi.Directory.FullName}");
return false;
}
}
System.Text.StringBuilder StrBuf = new System.Text.StringBuilder();
////파일이 없다면 제목줄을 생성해준다.
if (!fi.Exists)
{
////헤더를 추가해야한다.
System.Text.StringBuilder Header = new System.Text.StringBuilder();
Header.Append("\t" + "ATIME CH RTYPE VOLT ATYPE MAXVOLT MINVOLT AM AM2");
Header.AppendLine(); ////제목줄을 한칸띄운다
StrBuf.Append(Header.ToString());
}
////실제데이터를 추가
int timeNumber = (int)(PUB.get_TimeNumber(time)); // time.Hour * 3600 + time.Minute * 60 + time.Second
StrBuf.AppendLine($"\t{timeNumber}\t{ch}\t{(int)raiseType}\t{volt}\t{(int)almType}\t{maxvolt}\t{minvolt}\t{am}\t{am2}");
try
{
//fi.WriteText(StrBuf.ToString(), true); // 이전은 단독모드
/* 작성자: 이재웅, 작성일: 2024-09-23, 작성내용: 접근모드를 공유모드로 전환 */
using (FileStream fs = new FileStream(fi.FullName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
using (StreamWriter writer = new StreamWriter(fs))
{ writer.Write(StrBuf.ToString()); }
StrBuf.Clear();
}
catch (Exception)
{
PUB.log.AddE($"fail:write aldata file={fi.FullName}");
return false;
}
return true;
}
////기간내 존재하는 파일을 반환합니다(테이블단위)
public List<string> GetfileS(DateTime sd, DateTime ed)
{
List<string> retval = new List<string>();
int SttYear = sd.Year;
int EndYear = ed.Year;
if (EndYear < SttYear)
{
return retval;
}
int SttMonth = sd.Month;
int EndMonth = ed.Month;
int SttDay = sd.Day;
int EndDay = ed.Day;
int si = System.Convert.ToInt32(sd.ToString("yyyyMMdd"));
int ei = System.Convert.ToInt32(ed.ToString("yyyyMMdd"));
bool SameDay = si == ei ? true : false;
////20140101
for (int dayinfo = si; dayinfo <= ei; dayinfo++)
{
string DayStr = dayinfo.ToString();
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(_BaseDir + "\\" + DayStr.Substring(0, 4) + "\\" + DayStr.Substring(4, 2) + "\\" + DayStr.Substring(6));
if (!dir.Exists)
{
continue;
}
////폴더가 존재하므로 해당 테이블파일이 존재하는지 확인한다
if (SameDay)
{
////동일날짜라면 해당 시간대만 조회하면됨
for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++)
{
string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") + ".txt";
if (System.IO.File.Exists(fn))
{
retval.Add(fn);
}
}
}
else
{
if (dayinfo == si) ////시작일이라면 시작시간부터 24시까지 이다.
{
for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= 23; hourinfo++)
{
string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") + ".txt";
if (System.IO.File.Exists(fn))
{
retval.Add(fn);
}
}
}
else if (dayinfo == ei) ////종료일이라면 1~ 종료시까지이다.
{
for (int hourinfo = 0; hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++)
{
string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") + ".txt";
if (System.IO.File.Exists(fn))
{
retval.Add(fn);
}
}
}
else
{
////중간에 끼어있는 날짜라면 1~24모두가 속한다.
for (int hourinfo = 0; hourinfo <= 23; hourinfo++)
{
string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") + ".txt";
if (System.IO.File.Exists(fn))
{
retval.Add(fn);
}
}
}
}
}
retval.Sort();
return retval;
}
/// <summary>
/// 이번달이후의 데이터를 조회합니다.
/// </summary>
/// <param name="ch"></param>
/// <returns></returns>
/// <remarks></remarks>
public (TimeSpan, DocumentElement.ALARMDataTable) GetAlarmData(int ch)
{
////이번달이후의 데이터를 가져온다.
DateTime sd = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01 00:00:00"));
DateTime ed = DateTime.Now;
return GetAlarmData(ch, sd, ed);
}
public (TimeSpan, DocumentElement.ALARMDataTable) GetAlarmData(DateTime sd, DateTime ed)
{
return GetAlarmData(-1, sd, ed);
}
public (TimeSpan, DocumentElement.ALARMDataTable) GetAlarmData(DateTime sd, DateTime ed, int rtypes, int rtypee)
{
return GetAlarmData(-1, sd, ed, rtypes, rtypee);
}
public volatile bool cancel;
private readonly object lockObject = new object();
/// <summary>
/// 지정된시간사이의 데이터를 조회합니다.
/// </summary>
/// <param name="stime">시작시간(20120319161800)</param>
/// <param name="etime">종료시간(년월일시분초)</param>
/// <returns></returns>
/// <remarks></remarks>
public (TimeSpan, DocumentElement.ALARMDataTable) GetAlarmData(int ch, DateTime sd, DateTime ed, int rtypes = -1, int rtypee = -1)
{
DateTime dtStart = DateTime.Now;
List<string> files = GetfileS(sd, ed);
//전체파일의 내용을 버퍼에 담는다
Dictionary<string, string[]> lines = new Dictionary<string, string[]>();
foreach (var fn in files)
{
lines.Add(fn, System.IO.File.ReadAllLines(fn));
}
var totallines = lines.Sum(t => t.Value.Length);
Message?.Invoke(this, new MessageArgs($"total : {totallines} lines"));
var progressMax = (double)totallines;
var progressVal = 0.0;
var currentline = 0;
var alertprogress = 0.0;
//ReadingProgressValueChanged?.Invoke(this, new ReadProgessArgs(0));
var alaramDT = new DocumentElement.ALARMDataTable();
cancel = false;
try
{
foreach (var line in lines)
{
foreach (string linedata in line.Value)
{
lock (lockObject)
{
if (cancel)
{
//Console.WriteLine("작업이 취소되었습니다.");
//token.ThrowIfCancellationRequested(); // OperationCanceledException을 발생시켜 작업을 종료합니다.
//return (new TimeSpan(0), null);
//cancel = true;
Message?.Invoke(this, new MessageArgs($"job cancel"));
break;
}
}
currentline += 1;
progressVal = currentline / progressMax;
if (progressVal - alertprogress >= 5)
{
alertprogress = progressVal;
Message?.Invoke(this, new MessageArgs($"Progress : {progressVal} lines"));
//ReadingProgressValueChanged?.Invoke(this, new ReadProgessArgs(progressVal));
}
if (linedata.Trim() == "") continue;
string[] buf = linedata.Split(System.Convert.ToChar("\t"));
if (buf.GetUpperBound(0) < 8) continue; ////데이터수량이 안맞다.
string chStr = buf[2];
if (chStr.IsNumeric() == false) continue; ////채널정보가 일치하지 않는경우
if (ch > -1 && chStr != ch.ToString()) continue;
if (rtypes != -1 && rtypee != -1) ////rtype도 검색한다.
{
if (buf[3] != rtypes.ToString() && buf[3] != rtypee.ToString()) continue;
}
var v_atime = buf[1];
var v_ch = short.Parse(buf[2]);
var v_rtype = short.Parse(buf[3]);
//존재하는 데이터는 처리하지 않느낟.
if (alaramDT.Where(t => t.ATIME == v_atime && t.CH == v_ch && t.RTYPE == v_rtype).Any() == false)
{
var newdr = alaramDT.NewALARMRow();
newdr.ATIME = v_atime;// buf[1];
newdr.TIME = PUB.get_TimeString(decimal.Parse(newdr.ATIME), line.Key);
newdr.CH = v_ch;// short.Parse(buf[2]);
newdr.RTYPE = v_rtype;// short.Parse(buf[3]);
newdr.VOLT = float.Parse(buf[4]);
newdr.ATYPE = short.Parse(buf[5]);
newdr.MAXVOLT = float.Parse(buf[6]);
newdr.MINVOLT = float.Parse(buf[7]);
newdr.AM = buf[8];
newdr.AM2 = buf[9];
alaramDT.AddALARMRow(newdr);
}
else
{
//중복데이터
PUB.log.AddAT($"알람중복데이터 atime={v_atime},ch={v_ch},rtype={v_rtype}");
}
}
if (cancel)
{
//Console.WriteLine("작업이 취소되었습니다.");
//token.ThrowIfCancellationRequested(); // OperationCanceledException을 발생시켜 작업을 종료합니다.
//return (new TimeSpan(0), null);
break;
}
}
}
catch (OperationCanceledException)
{
Console.WriteLine("작업이 정상적으로 취소되었습니다.");
throw; // 예외를 다시 던져 작업이 중지되도록 합니다.
}
alaramDT.AcceptChanges();
var ts = DateTime.Now - dtStart;
return (ts, alaramDT);
}
}
}

215
cVMS.NET_CS/Class/CFDBK.cs Normal file
View File

@@ -0,0 +1,215 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using System.Text;
using System.IO;
namespace vmsnet
{
public class CFDBK
{
// ..\Database\Ka /* 전류 */
string _BaseDir;
System.Text.StringBuilder StrBuf; ////데이터버퍼
DateTime LastTime; ////데이터시간
System.IO.FileInfo File; ////데이터파일정보
public CFDBK(params string[] dirarrays)
{
var dir = System.IO.Path.Combine(dirarrays);
_BaseDir = dir;
if (System.IO.Directory.Exists(_BaseDir) == false)
{
System.IO.Directory.CreateDirectory(_BaseDir);
}
StrBuf = new System.Text.StringBuilder();
LastTime = DateTime.Now;
File = null;
}
////지정한 기간내 파일의 존재여부를 확인합니다.
public int GetfileCount(DateTime sd, DateTime ed)
{
return GetfileS(sd, ed).Count;
}
/// <summary>
/// 데이터를 기록합니다.
/// </summary>
/// <param name="time">기록시간(파일명이 결정됨)</param>
/// <param name="buffer">기록된데이터</param>
/// <param name="Header">데이터의헤더(신규파일생성시)</param>
/// <returns></returns>
/// <remarks></remarks>
public bool InsertData(DateTime time, string buffer, StringBuilder Header)
{
string DayStr = time.ToString("yyyyMMdd");
//Dim TableIndex As Byte = table.Substring(5, 1)
////해당데이터의 시간과 파일정보를 기록
LastTime = time;
File = new System.IO.FileInfo(_BaseDir + "\\" + DayStr.Substring(0, 4) + "\\" + DayStr.Substring(4, 2) + "\\" + DayStr.Substring(6) + "\\" +
(time.Hour + 1).ToString("00") +".txt");
if (!File.Directory.Exists)
{
File.Directory.Create();
}
////파일이 없다면 제목줄을 생성해준다.
if (!File.Exists)
{
//File.WriteText(Header, true); // 이전은 단독모드
/* 작성자: 이재웅, 작성일: 2024-09-23, 작성내용: 접근모드를 공유모드로 전환 */
using (FileStream fs = new FileStream(File.FullName, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
using (StreamWriter writer = new StreamWriter(fs))
{ writer.WriteLine(Header); }
}
StrBuf.AppendLine(System.Convert.ToString("\t" + time.ToFileTime().ToString() + buffer));
////4kb 단위로 파일을 기록한다.
if (StrBuf.Length > 500) ////실제파일 기록은 5초마다 한다.
{
//File.WriteText(StrBuf, true); // 이전은 단독모드
/* 작성자: 이재웅, 작성일: 2024-09-23, 작성내용: 접근모드를 공유모드로 전환 */
using (FileStream fs = new FileStream(File.FullName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
using (StreamWriter writer = new StreamWriter(fs))
{ writer.Write(StrBuf.ToString()); }
StrBuf.Clear();
}
return true;
}
~CFDBK()
{
if (StrBuf.Length > 0) File.WriteText(StrBuf, true);
StrBuf.Clear();
}
/// <summary>
/// 저장폴더내에 존재하는 날짜정보를 반환합니다.
/// </summary>
/// <returns></returns>
/// <remarks></remarks>
public List<string> GetDateList()
{
List<string> REtval = new List<string>();
System.IO.DirectoryInfo BDI = new System.IO.DirectoryInfo(_BaseDir);
foreach (System.IO.DirectoryInfo Fd_Year in BDI.GetDirectories())
{
foreach (System.IO.DirectoryInfo FD_Mon in Fd_Year.GetDirectories())
{
foreach (System.IO.DirectoryInfo Fd_Day in FD_Mon.GetDirectories())
{
if (Fd_Day.GetFiles().Length > 0)
{
REtval.Add(Fd_Year.Name + FD_Mon.Name + Fd_Day.Name);
}
}
}
}
REtval.Sort();
return REtval;
}
////기간내 존재하는 파일을 반환합니다(테이블단위)
public List<string> GetfileS(DateTime sd, DateTime ed)
{
List<string> REtval = new List<string>();
int SttYear = sd.Year;
int EndYear = ed.Year;
if (EndYear < SttYear)
{
return REtval;
}
int SttMonth = sd.Month;
int EndMonth = ed.Month;
int SttDay = sd.Day;
int EndDay = ed.Day;
int si = System.Convert.ToInt32(sd.ToString("yyyyMMdd"));
int ei = System.Convert.ToInt32(ed.ToString("yyyyMMdd"));
bool SameDay = si == ei ? true : false;
////20140101
for (int dayinfo = si; dayinfo <= ei; dayinfo++)
{
string DayStr = dayinfo.ToString();
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(_BaseDir + "\\" + DayStr.Substring(0, 4) + "\\" + DayStr.Substring(4, 2) + "\\" + DayStr.Substring(6));
if (!dir.Exists)
{
continue;
}
////폴더가 존재하므로 해당 테이블파일이 존재하는지 확인한다
if (SameDay)
{
////동일날짜라면 해당 시간대만 조회하면됨
for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++)
{
string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") +".txt";
if (System.IO.File.Exists(fn))
{
REtval.Add(fn);
}
}
}
else
{
if (dayinfo == si) ////시작일이라면 시작시간부터 24시까지 이다.
{
for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= 23; hourinfo++)
{
string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") +".txt";
if (System.IO.File.Exists(fn))
{
REtval.Add(fn);
}
}
}
else if (dayinfo == ei) ////종료일이라면 1~ 종료시까지이다.
{
for (int hourinfo = 0; hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++)
{
string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") +".txt";
if (System.IO.File.Exists(fn))
{
REtval.Add(fn);
}
}
}
else
{
////중간에 끼어있는 날짜라면 1~24모두가 속한다.
for (int hourinfo = 0; hourinfo <= 23; hourinfo++)
{
string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") +".txt";
if (System.IO.File.Exists(fn))
{
REtval.Add(fn);
}
}
}
}
}
REtval.Sort();
return REtval;
}
}
}

View File

@@ -0,0 +1,40 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
namespace vmsnet
{
public class ChartData
{
public double Volt { get; set; }
public DateTime Time { get; set; }
}
public class ChartListData
{
public List<int> ChannelList; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׷캰 ä<><C3A4> <20><><EFBFBD><EFBFBD>
public List<string> FileList; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׷캰 <20><><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>
public ChartListData()
{
ChannelList = new List<int>(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׷캰 ä<><C3A4> <20><><EFBFBD><EFBFBD>
FileList = new List<string>(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׷캰 <20><><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>
}
/// <summary>
/// ä<><C3A4> <20><> <20><><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
/// </summary>
public void Clear()
{
ChannelList.Clear();
FileList.Clear();
}
public override string ToString()
{
return $"{this.ChannelList.Count}Ch,{this.FileList.Count}Files";
}
}
}

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
namespace vmsnet
{
class RemoteCommand : EventArgs
{
public rCommand Command;
public object Data;
public RemoteCommand(rCommand cmd, object data)
{
Command = cmd;
Data = data;
}
}
}

View File

@@ -0,0 +1,54 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using System.IO;
using System.Text;
using AR;
namespace vmsnet
{
public class NotifyData
{
public int idx_m { get; set; }
/// <summary>
/// 0<><30><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public int idx_u { get; set; }
/// <summary>
/// 0<><30><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public int idx_c { get; set; }
/// <summary>
/// ä<>ι<EFBFBD>ȣ 1<><31><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
/// </summary>
public int chno { get; set; }
public float offset { get; set; }
public byte decpos { get; set; }
public bool use { get; set; }
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)
/// </summary>
public int value { get; set; }
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD>(filetime-long)
/// yyyy-MM-dd HH:mm:ss
/// </summary>
public string time { get; set; }
public override string ToString()
{
return $"[{chno}-{(this.use ? "O" : "X")}] M{idx_m}U{idx_u}C{idx_c},V={value}";
}
}
}

View File

@@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
namespace vmsnet
{
// struct SCell
//{
// public string name;
// public Color backcolor;
// public short idx;
// public string group;
//}
enum rCommand
{
ValueUpdate,
DisableUIItems,
EnableUIItems,
StateMessage,
UpdateAlarmSetting,
SaveGroupClass,
DAQConnected,
DAQDisconnected,
DAQTryConnect,
RefreshChart,
}
enum ConnState
{
Disconnected,
Connected,
TryConnect,
}
}

1380
cVMS.NET_CS/DS1.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

8
cVMS.NET_CS/DS1.cs Normal file
View File

@@ -0,0 +1,8 @@
namespace vmsnet
{
partial class DS1
{
}
}

9
cVMS.NET_CS/DS1.xsc Normal file
View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TableUISettings />
</DataSetUISetting>

42
cVMS.NET_CS/DS1.xsd Normal file
View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="DS1" targetNamespace="http://tempuri.org/DS1.xsd" xmlns:mstns="http://tempuri.org/DS1.xsd" xmlns="http://tempuri.org/DS1.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
<DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections />
<Tables />
<Sources />
</DataSource>
</xs:appinfo>
</xs:annotation>
<xs:element name="DS1" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="DS1" msprop:EnableTableAdapterManager="true" msprop:Generator_DataSetName="DS1">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="channel" msprop:Generator_RowEvHandlerName="channelRowChangeEventHandler" msprop:Generator_RowDeletedName="channelRowDeleted" msprop:Generator_RowDeletingName="channelRowDeleting" msprop:Generator_RowEvArgName="channelRowChangeEvent" msprop:Generator_TablePropName="channel" msprop:Generator_RowChangedName="channelRowChanged" msprop:Generator_UserTableName="channel" msprop:Generator_RowChangingName="channelRowChanging" msprop:Generator_RowClassName="channelRow" msprop:Generator_TableClassName="channelDataTable" msprop:Generator_TableVarName="tablechannel">
<xs:complexType>
<xs:sequence>
<xs:element name="use" msprop:Generator_ColumnPropNameInTable="useColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="use" msprop:Generator_UserColumnName="use" msprop:Generator_ColumnVarNameInTable="columnuse" type="xs:boolean" minOccurs="0" />
<xs:element name="cname" msprop:Generator_ColumnPropNameInTable="cnameColumn" msprop:nullValue="_throw" msprop:Generator_ColumnPropNameInRow="cname" msprop:Generator_UserColumnName="cname" msprop:Generator_ColumnVarNameInTable="columncname" type="xs:string" minOccurs="0" />
<xs:element name="c1" msprop:Generator_ColumnPropNameInTable="c1Column" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="c1" msprop:Generator_UserColumnName="c1" msprop:Generator_ColumnVarNameInTable="columnc1" type="xs:string" minOccurs="0" />
<xs:element name="c2" msprop:Generator_ColumnPropNameInTable="c2Column" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="c2" msprop:Generator_UserColumnName="c2" msprop:Generator_ColumnVarNameInTable="columnc2" type="xs:string" minOccurs="0" />
<xs:element name="cc" msprop:Generator_ColumnPropNameInTable="ccColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="cc" msprop:Generator_UserColumnName="cc" msprop:Generator_ColumnVarNameInTable="columncc" type="xs:int" minOccurs="0" />
<xs:element name="idx" msprop:Generator_ColumnPropNameInTable="idxColumn" msprop:nullValue="_throw" msprop:Generator_ColumnPropNameInRow="idx" msprop:Generator_UserColumnName="idx" msprop:Generator_ColumnVarNameInTable="columnidx" type="xs:int" minOccurs="0" />
<xs:element name="tidx" msprop:Generator_ColumnPropNameInTable="tidxColumn" msprop:nullValue="_throw" msprop:Generator_ColumnPropNameInRow="tidx" msprop:Generator_UserColumnName="tidx" msprop:Generator_ColumnVarNameInTable="columntidx" type="xs:int" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="group" msprop:Generator_RowEvHandlerName="groupRowChangeEventHandler" msprop:Generator_RowDeletedName="groupRowDeleted" msprop:Generator_RowDeletingName="groupRowDeleting" msprop:Generator_RowEvArgName="groupRowChangeEvent" msprop:Generator_TablePropName="group" msprop:Generator_RowChangedName="groupRowChanged" msprop:Generator_UserTableName="group" msprop:Generator_RowChangingName="groupRowChanging" msprop:Generator_RowClassName="groupRow" msprop:Generator_TableClassName="groupDataTable" msprop:Generator_TableVarName="tablegroup">
<xs:complexType>
<xs:sequence>
<xs:element name="cname" msprop:Generator_ColumnPropNameInTable="cnameColumn" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="cname" msprop:Generator_UserColumnName="cname" msprop:Generator_ColumnVarNameInTable="columncname" type="xs:string" minOccurs="0" />
<xs:element name="value" msprop:Generator_ColumnPropNameInTable="valueColumn" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="value" msprop:Generator_UserColumnName="value" msprop:Generator_ColumnVarNameInTable="columnvalue" type="xs:string" minOccurs="0" />
<xs:element name="idx" msprop:Generator_ColumnPropNameInTable="idxColumn" msprop:nullValue="_throw" msprop:Generator_ColumnPropNameInRow="idx" msprop:Generator_UserColumnName="idx" msprop:Generator_ColumnVarNameInTable="columnidx" type="xs:int" minOccurs="0" />
<xs:element name="gname" msprop:Generator_ColumnPropNameInTable="gnameColumn" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="gname" msprop:Generator_UserColumnName="gname" msprop:Generator_ColumnVarNameInTable="columngname" type="xs:string" minOccurs="0" />
<xs:element name="rname" msprop:Generator_ColumnPropNameInTable="rnameColumn" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="rname" msprop:Generator_UserColumnName="rname" msprop:Generator_ColumnVarNameInTable="columnrname" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>

13
cVMS.NET_CS/DS1.xss Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool to store the dataset designer's layout information.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ex:showrelationlabel="False" ViewPortX="-10" ViewPortY="0" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:channel" ZOrder="2" X="180" Y="301" Height="162" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="158" />
<Shape ID="DesignTable:group" ZOrder="1" X="91" Y="571" Height="124" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="120" />
</Shapes>
<Connectors />
</DiagramLayout>

View File

@@ -0,0 +1,160 @@
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();
}
}

View File

@@ -0,0 +1,529 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using System.Runtime.InteropServices;
// DAQDA100.vb
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
//
// Copyright (c) 2004 Yokogawa Electric Corporation. All rights reserved.
//
// This is defined export DAQDA100.dll.
// Declare Functions for Visual Basic .NET
//
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// 2004/11/01 Ver.2 Rev.1
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
namespace vmsnet
{
sealed class DAQDA100
{
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// @see DAQDARWIN
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// communication
public const int DAQDA100_COMMPORT = 34150;
// total number
public const int DAQDA100_NUMCHANNEL = 360;
public const int DAQDA100_NUMALARM = 4;
public const int DAQDA100_NUMUNIT = 6;
public const int DAQDA100_NUMSLOT = 6;
public const int DAQDA100_NUMTERM = 10;
// string length without NULL
public const int DAQDA100_MAXCHNAMELEN = 3;
public const int DAQDA100_MAXCHRANGLEN = 6;
public const int DAQDA100_MAXUNITLEN = 6;
public const int DAQDA100_MAXMODULELEN = 6;
public const int DAQDA100_MAXRELAYLEN = DAQDA100_MAXCHNAMELEN;
// maximum value
public const int DAQDA100_MAXDECIMALPOINT = 4;
// valid
public const int DAQDA100_VALID_OFF = 0;
public const int DAQDA100_VALID_ON = 1;
// flag
public const int DAQDA100_FLAG_OFF = 0x0000;
public const int DAQDA100_FLAG_ENDDATA = 0x0001;
// data status
public const int DAQDA100_DATA_UNKNWON = 0x00000000;
public const int DAQDA100_DATA_NORMAL = 0x00000001;
public const int DAQDA100_DATA_DIFFINPUT = 0x00000002;
public const int DAQDA100_DATA_READER = 0x00000003;
public const int DAQDA100_DATA_PLUSOVER = 0x00007FFF;
public const int DAQDA100_DATA_MINUSOVER = 0x00008001;
public const int DAQDA100_DATA_SKIP = 0x00008002;
public const int DAQDA100_DATA_ILLEGAL = 0x00008003;
public const int DAQDA100_DATA_ABNORMAL = 0x00008004;
public const int DAQDA100_DATA_NODATA = 0x00008005;
// alarm type
public const int DAQDA100_ALARM_NONE = 0;
public const int DAQDA100_ALARM_UPPER = 1;
public const int DAQDA100_ALARM_LOWER = 2;
public const int DAQDA100_ALARM_UPDIFF = 3;
public const int DAQDA100_ALARM_LOWDIFF = 4;
public const int DAQDA100_ALARM_INCRATE = 5;
public const int DAQDA100_ALARM_DECRATE = 6;
// channel/relay type
public const int DAQDA100_CHTYPE_MAINUNIT = -1;
public const int DAQDA100_CHTYPE_STANDALONE = 0;
public const int DAQDA100_CHTYPE_MATHTYPE = 0x0080;
public const int DAQDA100_CHTYPE_SWITCH = 0x0040;
public const int DAQDA100_CHTYPE_COMMDATA = 0x0020;
public const int DAQDA100_CHTYPE_CONSTANT = 0x0010;
public const int DAQDA100_CHTYPE_REPORT = 0x0100;
// mode
public const int DAQDA100_MODE_OPE = 0;
public const int DAQDA100_MODE_SETUP = 1;
public const int DAQDA100_MODE_CALIB = 2;
// talker output type
public const int DAQDA100_TALK_MEASUREDDATA = 0;
public const int DAQDA100_TALK_OPEDATA = 1;
public const int DAQDA100_TALK_CHINFODATA = 2;
public const int DAQDA100_TALK_REPORTDATA = 4;
public const int DAQDA100_TALK_SYSINFODATA = 5;
public const int DAQDA100_TALK_CALIBDATA = 8;
public const int DAQDA100_TALK_SETUPDATA = 9;
// status byte
public const int DAQDA100_STATUS_OFF = 0x0000;
public const int DAQDA100_STATUS_ADCONV = 0x0001;
public const int DAQDA100_STATUS_SYNTAX = 0x0002;
public const int DAQDA100_STATUS_TIMER = 0x0004;
public const int DAQDA100_STATUS_MEDIA = 0x0008;
public const int DAQDA100_STATUS_RELEASE = 0x0020;
public const int DAQDA100_STATUS_SRQ = 0x0040;
public const int DAQDA100_STATUS_ALL = 0x00FF;
// establish
public const int DAQDA100_SETUP_ABORT = DAQDA100_VALID_OFF;
public const int DAQDA100_SETUP_STORE = DAQDA100_VALID_ON;
// unit number
public const int DAQDA100_UNITNO_MAINUNIT = DAQDA100_CHTYPE_MAINUNIT;
public const int DAQDA100_UNITNO_STANDALONE = DAQDA100_CHTYPE_STANDALONE;
// computation
public const int DAQDA100_COMPUTE_START = 0;
public const int DAQDA100_COMPUTE_STOP = 1;
public const int DAQDA100_COMPUTE_RESTART = 2;
public const int DAQDA100_COMPUTE_CLEAR = 3;
public const int DAQDA100_COMPUTE_RELEASE = 4;
// reporting
public const int DAQDA100_REPORT_RUN_START = 0;
public const int DAQDA100_REPORT_RUN_STOP = 1;
// report type
public const int DAQDA100_REPORT_HOURLY = 0;
public const int DAQDA100_REPORT_DAILY = 1;
public const int DAQDA100_REPORT_MONTHLY = 2;
public const int DAQDA100_REPORT_STATUS = 3;
// report status
public const int DAQDA100_REPSTATUS_NONE = 0x0000;
public const int DAQDA100_REPSTATUS_HOURLY_NEW = 0x0001;
public const int DAQDA100_REPSTATUS_HOURLY_VALID = 0x0002;
public const int DAQDA100_REPSTATUS_DAILY_NEW = 0x0004;
public const int DAQDA100_REPSTATUS_DAILY_VALID = 0x0008;
public const int DAQDA100_REPSTATUS_MONTHLY_NEW = 0x0010;
public const int DAQDA100_REPSTATUS_MONTHLY_VALID = 0x0020;
// wiring method
public const int DAQDA100_WIRE_1PH2W = 1;
public const int DAQDA100_WIRE_1PH3W = 2;
public const int DAQDA100_WIRE_3PH3W2I = 3;
public const int DAQDA100_WIRE_3PH3W3I = 4;
public const int DAQDA100_WIRE_3PH4W = 5;
// mesurement item
public const int DAQDA100_POWERITEM_I0 = 0x0000;
public const int DAQDA100_POWERITEM_I1 = 0x0001;
public const int DAQDA100_POWERITEM_I2 = 0x0002;
public const int DAQDA100_POWERITEM_I3 = 0x0003;
public const int DAQDA100_POWERITEM_I13 = 0x000D;
public const int DAQDA100_POWERITEM_P0 = 0x0010;
public const int DAQDA100_POWERITEM_P1 = 0x0011;
public const int DAQDA100_POWERITEM_P2 = 0x0012;
public const int DAQDA100_POWERITEM_P3 = 0x0013;
public const int DAQDA100_POWERITEM_P13 = 0x001D;
public const int DAQDA100_POWERITEM_PF0 = 0x0020;
public const int DAQDA100_POWERITEM_PF1 = 0x0021;
public const int DAQDA100_POWERITEM_PF2 = 0x0022;
public const int DAQDA100_POWERITEM_PF3 = 0x0023;
public const int DAQDA100_POWERITEM_PF13 = 0x002D;
public const int DAQDA100_POWERITEM_PH0 = 0x0030;
public const int DAQDA100_POWERITEM_PH1 = 0x0031;
public const int DAQDA100_POWERITEM_PH2 = 0x0032;
public const int DAQDA100_POWERITEM_PH3 = 0x0033;
public const int DAQDA100_POWERITEM_PH13 = 0x003D;
public const int DAQDA100_POWERITEM_V0 = 0x0040;
public const int DAQDA100_POWERITEM_V1 = 0x0041;
public const int DAQDA100_POWERITEM_V2 = 0x0042;
public const int DAQDA100_POWERITEM_V3 = 0x0043;
public const int DAQDA100_POWERITEM_V13 = 0x004D;
public const int DAQDA100_POWERITEM_VA0 = 0x0050;
public const int DAQDA100_POWERITEM_VA1 = 0x0051;
public const int DAQDA100_POWERITEM_VA2 = 0x0052;
public const int DAQDA100_POWERITEM_VA3 = 0x0053;
public const int DAQDA100_POWERITEM_VA13 = 0x005D;
public const int DAQDA100_POWERITEM_VAR0 = 0x0060;
public const int DAQDA100_POWERITEM_VAR1 = 0x0061;
public const int DAQDA100_POWERITEM_VAR2 = 0x0062;
public const int DAQDA100_POWERITEM_VAR3 = 0x0063;
public const int DAQDA100_POWERITEM_VAR13 = 0x006D;
public const int DAQDA100_POWERITEM_FREQ = 0x007F;
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// DA100 specifications
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// number
public const int DAQDA100_NUMCH_BYUNIT = DAQDA100_NUMSLOT * DAQDA100_NUMTERM;
// all
public const int DAQDA100_CHTYPE_MEASALL = 0x0F;
public const int DAQDA100_CHNO_ALL = -1;
public const int DAQDA100_LEVELNO_ALL = -1;
// code
public const int DAQDA100_CODE_BINARY = 0;
public const int DAQDA100_CODE_ASCII = 1;
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// range
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// range type
public const int DAQDA100_RANGETYPE_VOLT = 0x00000000;
public const int DAQDA100_RANGETYPE_DI = 0x00010000;
public const int DAQDA100_RANGETYPE_TC = 0x00020000;
public const int DAQDA100_RANGETYPE_RTD = 0x00040000;
public const int DAQDA100_RANGETYPE_SKIP = 0x00080000;
public const int DAQDA100_RANGETYPE_MA = 0x00100000;
public const int DAQDA100_RANGETYPE_POWER = 0x00200000;
public const int DAQDA100_RANGETYPE_STRAIN = 0x00400000;
public const int DAQDA100_RANGETYPE_PULSE = 0x00800000;
// SKIP
public const int DAQDA100_RANGE_SKIP = DAQDA100_RANGETYPE_SKIP;
// VOLT
public const int DAQDA100_RANGE_VOLT_20MV = DAQDA100_RANGETYPE_VOLT + 1;
public const int DAQDA100_RANGE_VOLT_60MV = DAQDA100_RANGETYPE_VOLT + 2;
public const int DAQDA100_RANGE_VOLT_200MV = DAQDA100_RANGETYPE_VOLT + 3;
public const int DAQDA100_RANGE_VOLT_2V = DAQDA100_RANGETYPE_VOLT + 4;
public const int DAQDA100_RANGE_VOLT_6V = DAQDA100_RANGETYPE_VOLT + 5;
public const int DAQDA100_RANGE_VOLT_20V = DAQDA100_RANGETYPE_VOLT + 6;
public const int DAQDA100_RANGE_VOLT_50V = DAQDA100_RANGETYPE_VOLT + 7;
// TC
public const int DAQDA100_RANGE_TC_R = DAQDA100_RANGETYPE_TC + 1;
public const int DAQDA100_RANGE_TC_S = DAQDA100_RANGETYPE_TC + 2;
public const int DAQDA100_RANGE_TC_B = DAQDA100_RANGETYPE_TC + 3;
public const int DAQDA100_RANGE_TC_K = DAQDA100_RANGETYPE_TC + 4;
public const int DAQDA100_RANGE_TC_E = DAQDA100_RANGETYPE_TC + 5;
public const int DAQDA100_RANGE_TC_J = DAQDA100_RANGETYPE_TC + 6;
public const int DAQDA100_RANGE_TC_T = DAQDA100_RANGETYPE_TC + 7;
public const int DAQDA100_RANGE_TC_N = DAQDA100_RANGETYPE_TC + 8;
public const int DAQDA100_RANGE_TC_W = DAQDA100_RANGETYPE_TC + 9;
public const int DAQDA100_RANGE_TC_L = DAQDA100_RANGETYPE_TC + 10;
public const int DAQDA100_RANGE_TC_U = DAQDA100_RANGETYPE_TC + 11;
public const int DAQDA100_RANGE_TC_KP = DAQDA100_RANGETYPE_TC + 12;
// RTD
public const int DAQDA100_RANGE_RTD_1MAPT = DAQDA100_RANGETYPE_RTD + 1;
public const int DAQDA100_RANGE_RTD_2MAPT = DAQDA100_RANGETYPE_RTD + 2;
public const int DAQDA100_RANGE_RTD_1MAJPT = DAQDA100_RANGETYPE_RTD + 3;
public const int DAQDA100_RANGE_RTD_2MAJPT = DAQDA100_RANGETYPE_RTD + 4;
public const int DAQDA100_RANGE_RTD_2MAPT50 = DAQDA100_RANGETYPE_RTD + 5;
public const int DAQDA100_RANGE_RTD_1MAPTH = DAQDA100_RANGETYPE_RTD + 6;
public const int DAQDA100_RANGE_RTD_2MAPTH = DAQDA100_RANGETYPE_RTD + 7;
public const int DAQDA100_RANGE_RTD_1MAJPTH = DAQDA100_RANGETYPE_RTD + 8;
public const int DAQDA100_RANGE_RTD_2MAJPTH = DAQDA100_RANGETYPE_RTD + 9;
public const int DAQDA100_RANGE_RTD_1MANIS = DAQDA100_RANGETYPE_RTD + 10;
public const int DAQDA100_RANGE_RTD_1MANID = DAQDA100_RANGETYPE_RTD + 11;
public const int DAQDA100_RANGE_RTD_1MANI120 = DAQDA100_RANGETYPE_RTD + 12;
public const int DAQDA100_RANGE_RTD_CU10GE = DAQDA100_RANGETYPE_RTD + 13;
public const int DAQDA100_RANGE_RTD_CU10LN = DAQDA100_RANGETYPE_RTD + 14;
public const int DAQDA100_RANGE_RTD_CU10WEED = DAQDA100_RANGETYPE_RTD + 15;
public const int DAQDA100_RANGE_RTD_CU10BAILEY = DAQDA100_RANGETYPE_RTD + 16;
public const int DAQDA100_RANGE_RTD_J263B = DAQDA100_RANGETYPE_RTD + 17;
// DI
public const int DAQDA100_RANGE_DI_LEVEL = DAQDA100_RANGETYPE_DI + 1;
public const int DAQDA100_RANGE_DI_CONTACT = DAQDA100_RANGETYPE_DI + 2;
// mA
public const int DAQDA100_RANGE_MA_20MA = DAQDA100_RANGETYPE_MA + 1;
// POWER
public const int DAQDA100_RANGE_POWER_25V05A = DAQDA100_RANGETYPE_POWER + 1;
public const int DAQDA100_RANGE_POWER_25V5A = DAQDA100_RANGETYPE_POWER + 2;
public const int DAQDA100_RANGE_POWER_250V05A = DAQDA100_RANGETYPE_POWER + 3;
public const int DAQDA100_RANGE_POWER_250V5A = DAQDA100_RANGETYPE_POWER + 4;
// STRAIN
public const int DAQDA100_RANGE_STRAIN_2K = DAQDA100_RANGETYPE_STRAIN + 1;
public const int DAQDA100_RANGE_STRAIN_20K = DAQDA100_RANGETYPE_STRAIN + 2;
public const int DAQDA100_RANGE_STRAIN_200K = DAQDA100_RANGETYPE_STRAIN + 3;
// PULS
public const int DAQDA100_RANGE_PULSE_RATE = DAQDA100_RANGETYPE_PULSE + 1;
public const int DAQDA100_RANGE_PULSE_GATE = DAQDA100_RANGETYPE_PULSE + 2;
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// Connection
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int openDA100(string strAddress, ref int errorCode);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int closeDA100(int daqda100);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int sendLineDA100(int daqda100, string strLine);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int receiveLineDA100(int daqda100, string strLine, int maxLine, ref int lenLine);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int receiveByteDA100(int daqda100, ref byte byteData, int maxData, ref int lenData);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int sendTriggerDA100(int daqda100);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int updateStatusDA100(int daqda100);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int runCommandDA100(int daqda100, string strCmd);
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// Control
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int switchModeDA100(int daqda100, int iMode);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int switchCodeDA100(int daqda100, int iCode);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int reconstructDA100(int daqda100);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int initSetValueDA100(int daqda100);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int ackAlarmDA100(int daqda100);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int setDateTimeNowDA100(int daqda100);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int switchComputeDA100(int daqda100, int iCode);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int switchReportDA100(int daqda100, int iReportRun);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int establishDA100(int daqda100, int iSetup);
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// Set on Operation Mode
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int setRangeDA100(int daqda100, int chType, int chNo, int iRange, int spanMin, int spanMax, int scaleMin, int scaleMax, int scalePoint, int bFilter, int iItem, int iWire);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int setChDELTADA100(int daqda100, int chType, int chNo, int refChNo, int spanMin, int spanMax);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int setChRRJCDA100(int daqda100, int chType, int chNo, int refChNo, int spanMin, int spanMax);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int setChUnitDA100(int daqda100, int chType, int chNo, string strUnit);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int setChAlarmDA100(int daqda100, int chType, int chNo, int levelNo, int iAlarmType, int value, int relayType, int relayNo);
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// Measurement
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int measInstChDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int mathInstChDA100(int daqda100, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int measInfoChDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int mathInfoChDA100(int daqda100, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int updateSystemConfigDA100(int daqda100);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int updateReportStatusDA100(int daqda100);
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// Talker
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int talkOperationChDataDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int talkOperationDataDA100(int daqda100, int startChType, int startChNo, int endChType, int endChNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int talkSetupChDataDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int talkSetupDataDA100(int daqda100, int startChType, int startChNo, int endChType, int endChNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int talkCalibrationChDataDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int talkCalibrationDataDA100(int daqda100, int startChType, int startChNo, int endChType, int endChNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int getSetDataByLineDA100(int daqda100, string strLine, int maxLine, ref int lenLine, ref int pFlag);
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// Get Data
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int dataValueDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int dataStatusDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int dataAlarmDA100(int daqda100, int chType, int chNo, int levelNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern double dataDoubleValueDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int dataStringValueDA100(int daqda100, int chType, int chNo, string strValue, int lenValue);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int dataYearDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int dataMonthDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int dataDayDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int dataHourDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int dataMinuteDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int dataSecondDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int alarmTypeDA100(int daqda100, int chType, int chNo, int levelNo);
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// Get Channel Information
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int channelPointDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int channelStatusDA100(int daqda100, int chType, int chNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int toChannelUnitDA100(int daqda100, int chType, int chNo, string strUnit, int lenUnit);
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// Get System Information
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern double unitIntervalDA100(int daqda100);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int unitValidDA100(int daqda100, int unitNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int moduleCodeDA100(int daqda100, int unitNo, int slotNo);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int toModuleNameDA100(int daqda100, int unitNo, int slotNo, string strName, int lenName);
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// Get Status
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int statusByteDA100(int daqda100);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int statusCodeDA100(int daqda100);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int statusReportDA100(int daqda100);
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
// Utility
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern double toDoubleValueDA100(int dataValue, int point);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int toStringValueDA100(int dataValue, int point, string strValue, int lenValue);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int toAlarmNameDA100(int iAlarmType, string strAlarm, int lenAlarm);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int alarmMaxLengthDA100();
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int versionAPIDA100();
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int revisionAPIDA100();
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int toErrorMessageDA100(int errCode, string errStr, int errLen);
[DllImport("DAQDA100", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern int errorMaxLengthDA100();
// -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
}
}

1232
cVMS.NET_CS/Device/DA100.cs Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,72 @@
using System;
using System.Windows.Media.Media3D.Converters;
using vmsnet.Configures;
namespace vmsnet
{
public class DigitalIndicator : JdModbusRTU
{
/// <summary>
/// default value = 1
/// </summary>
public byte SlaveID { get; set; } = 1;
public DigitalIndicator(byte slaveID = 0) : base("", new RtuConfigure { BaudRate = 9600, DataBits = 8, StopBits = System.IO.Ports.StopBits.One, Parity = System.IO.Ports.Parity.None })
{
SlaveID = slaveID;
}
public DigitalIndicator(string comPort, RtuConfigure configure, byte slaveId = 0) : base(comPort, configure)
{
SlaveID = slaveId;
}
/// <summary>
/// value 값을 디스플레이에 전송합니다.
/// 전송 주소는 기본 0으로 설정되어 있습니다
/// 이 명령은 회신값을 체크하고 True를 반환하지 않습니다.
/// False 반환시에는 장치 상태를 점검 하세요
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public bool SetKA(int value)
{
var buffer = splitI32(value);
return WriteValue(buffer);
}
public bool WriteValue(UInt16[] values)
{
if (IsOpen == false)
{
ErrorMessage = "포트가 열리지 않았습니다";
return false;
}
if (master == null)
{
ErrorMessage = "모드버스가 초기화 되지 않았습니다";
return false;
}
try
{
master.WriteMultipleRegisters(this.SlaveID, 0, values);
return true;
}
catch (Exception ex)
{
ErrorMessage = ex.Message;
return false;
}
}
UInt16[] splitI32(Int32 value)
{
var hValue = (UInt16)(value >> 16);
var lValue = (UInt16)(value & 0xFFFF);
return new ushort[] { hValue, lValue };
}
}
}

1422
cVMS.NET_CS/Device/GM10.cs Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,88 @@
using COMM;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AR.Device
{
public class CSequence : AR.StateMachineSequence
{
public CSequence(int stepLen = 255) : base(stepLen) { }
public void Clear(ESMStep idx)
{
base.Clear((int)idx);
}
public int Get(ESMStep idx)
{
return base.Get((int)idx);
}
public void Set(ESMStep idx, byte value)
{
base.Set((int)idx, value);
}
public void Update(ESMStep idx, int incValue = 1)
{
base.Update((int)idx, incValue);
}
public TimeSpan GetTime(ESMStep idx = 0)
{
return base.GetTime((int)idx);
}
public int GetData(ESMStep idx)
{
return base.GetData((int)idx);
}
public void ClearData(ESMStep idx) { base.ClearData((int)idx); }
public void AddData(ESMStep idx, byte value = 1)
{
base.AddData((int)idx, value);
}
public void SetData(ESMStep idx, byte value)
{
_runseqdata[(int)idx] = value;
}
}
public class CStateMachine : AR.StateMachine
{
/// <summary>
/// Sequece Value / data
/// </summary>
public CSequence seq;
public ESMStep PrePauseStep = ESMStep.NOTSET;
public CStateMachine()
{
seq = new CSequence(255);
}
public new ESMStep Step { get { return (ESMStep)base.Step; } }
public void SetNewStep(ESMStep newstep_, Boolean force = false)
{
//일시중지라면 중지전의 상태를 백업한다
if (newstep_ == ESMStep.PAUSE && this.Step != ESMStep.PAUSE && this.Step != ESMStep.WAITSTART) PrePauseStep = this.Step;
base.SetNewStep((byte)newstep_, force);
}
public new ESMStep getNewStep
{
get
{
return (ESMStep)newstep_;
}
}
public new ESMStep getOldStep
{
get
{
return (ESMStep)oldstep_;
}
}
}
}

176
cVMS.NET_CS/Dialog/Frm_About.Designer.cs generated Normal file
View File

@@ -0,0 +1,176 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
namespace vmsnet
{
partial class Frm_About : System.Windows.Forms.Form
{
//Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
[System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
{
try
{
if (disposing && components != null)
{
components.Dispose();
}
}
finally
{
base.Dispose(disposing);
}
}
internal System.Windows.Forms.Label ApplicationTitle;
internal System.Windows.Forms.Label Version;
internal System.Windows.Forms.Label Copyright;
internal System.Windows.Forms.TableLayoutPanel MainLayoutPanel;
internal System.Windows.Forms.TableLayoutPanel DetailsLayoutPanel;
//Windows Form 디자이너에 필요합니다.
private System.ComponentModel.Container components = null;
//참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다.
//수정하려면 Windows Form 디자이너를 사용하십시오.
//코드 편집기를 사용하여 수정하지 마십시오.
[System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Frm_About));
this.MainLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
this.DetailsLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
this.Panel1 = new System.Windows.Forms.Panel();
this.lb_Status = new System.Windows.Forms.Label();
this.Version = new System.Windows.Forms.Label();
this.Copyright = new System.Windows.Forms.Label();
this.ApplicationTitle = new System.Windows.Forms.Label();
this.MainLayoutPanel.SuspendLayout();
this.DetailsLayoutPanel.SuspendLayout();
this.Panel1.SuspendLayout();
this.SuspendLayout();
//
// MainLayoutPanel
//
this.MainLayoutPanel.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("MainLayoutPanel.BackgroundImage")));
this.MainLayoutPanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
this.MainLayoutPanel.ColumnCount = 2;
this.MainLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 153F));
this.MainLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 551F));
this.MainLayoutPanel.Controls.Add(this.DetailsLayoutPanel, 1, 1);
this.MainLayoutPanel.Controls.Add(this.ApplicationTitle, 1, 0);
this.MainLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.MainLayoutPanel.Location = new System.Drawing.Point(0, 0);
this.MainLayoutPanel.Name = "MainLayoutPanel";
this.MainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 47F));
this.MainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 209F));
this.MainLayoutPanel.Size = new System.Drawing.Size(704, 186);
this.MainLayoutPanel.TabIndex = 0;
this.MainLayoutPanel.Click += new System.EventHandler(this.MainLayoutPanel_MouseClick);
this.MainLayoutPanel.MouseClick += new System.Windows.Forms.MouseEventHandler(this.MainLayoutPanel_MouseClick);
//
// DetailsLayoutPanel
//
this.DetailsLayoutPanel.BackColor = System.Drawing.Color.Transparent;
this.DetailsLayoutPanel.ColumnCount = 1;
this.DetailsLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 545F));
this.DetailsLayoutPanel.Controls.Add(this.Panel1, 0, 0);
this.DetailsLayoutPanel.Location = new System.Drawing.Point(156, 50);
this.DetailsLayoutPanel.Name = "DetailsLayoutPanel";
this.DetailsLayoutPanel.RowCount = 1;
this.DetailsLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 136F));
this.DetailsLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 136F));
this.DetailsLayoutPanel.Size = new System.Drawing.Size(545, 136);
this.DetailsLayoutPanel.TabIndex = 1;
//
// Panel1
//
this.Panel1.Controls.Add(this.lb_Status);
this.Panel1.Controls.Add(this.Version);
this.Panel1.Controls.Add(this.Copyright);
this.Panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.Panel1.Location = new System.Drawing.Point(0, 0);
this.Panel1.Margin = new System.Windows.Forms.Padding(0);
this.Panel1.Name = "Panel1";
this.Panel1.Size = new System.Drawing.Size(545, 136);
this.Panel1.TabIndex = 4;
this.Panel1.Click += new System.EventHandler(this.MainLayoutPanel_MouseClick);
//
// lb_Status
//
this.lb_Status.Anchor = System.Windows.Forms.AnchorStyles.None;
this.lb_Status.BackColor = System.Drawing.Color.Transparent;
this.lb_Status.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.lb_Status.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(0)))));
this.lb_Status.Location = new System.Drawing.Point(219, 80);
this.lb_Status.Name = "lb_Status";
this.lb_Status.Size = new System.Drawing.Size(318, 48);
this.lb_Status.TabIndex = 3;
this.lb_Status.Text = "Homepage : http://jdtek.co.kr\nEmail : help@jdtek.co.kr\nTel : 062-364-0177 / FAX :" +
" 062-364-0179";
this.lb_Status.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// Version
//
this.Version.Anchor = System.Windows.Forms.AnchorStyles.None;
this.Version.BackColor = System.Drawing.Color.Transparent;
this.Version.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Version.Location = new System.Drawing.Point(3, 114);
this.Version.Name = "Version";
this.Version.Size = new System.Drawing.Size(241, 20);
this.Version.TabIndex = 1;
this.Version.Text = "버전 {0}.{1:00}";
//
// Copyright
//
this.Copyright.Anchor = System.Windows.Forms.AnchorStyles.None;
this.Copyright.BackColor = System.Drawing.Color.Transparent;
this.Copyright.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Copyright.Location = new System.Drawing.Point(3, 94);
this.Copyright.Name = "Copyright";
this.Copyright.Size = new System.Drawing.Size(241, 17);
this.Copyright.TabIndex = 2;
this.Copyright.Text = "저작권";
//
// ApplicationTitle
//
this.ApplicationTitle.BackColor = System.Drawing.Color.Transparent;
this.ApplicationTitle.Dock = System.Windows.Forms.DockStyle.Fill;
this.ApplicationTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.ApplicationTitle.Location = new System.Drawing.Point(156, 0);
this.ApplicationTitle.Name = "ApplicationTitle";
this.ApplicationTitle.Size = new System.Drawing.Size(545, 47);
this.ApplicationTitle.TabIndex = 0;
this.ApplicationTitle.Text = "응용 프로그램 제목";
this.ApplicationTitle.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
this.ApplicationTitle.Click += new System.EventHandler(this.MainLayoutPanel_MouseClick);
//
// Frm_About
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(704, 186);
this.Controls.Add(this.MainLayoutPanel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.KeyPreview = true;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Frm_About";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Load += new System.EventHandler(this.SplashScreen1_Load);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Frm_About_KeyDown);
this.MainLayoutPanel.ResumeLayout(false);
this.DetailsLayoutPanel.ResumeLayout(false);
this.Panel1.ResumeLayout(false);
this.ResumeLayout(false);
}
internal System.Windows.Forms.Label lb_Status;
internal System.Windows.Forms.Panel Panel1;
}
}

View File

@@ -0,0 +1,130 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using System.Reflection;
namespace vmsnet
{
public sealed partial class Frm_About
{
public Frm_About()
{
InitializeComponent();
this.Text = String.Format("{0} 정보", AssemblyProduct);
this.ApplicationTitle.Text = AssemblyTitle;
this.Version.Text = String.Format("버전 {0}", AssemblyVersion);
this.Copyright.Text = AssemblyCopyright;
//this.labelCompanyName.Text = AssemblyCompany;
//this.textBoxDescription.Text = AssemblyDescription;
}
public void Frm_About_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
this.Close();
}
}
public void SplashScreen1_Load(object sender, System.EventArgs e)
{
}
public void MainLayoutPanel_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
this.Close();
}
#region
public string AssemblyTitle
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
if (attributes.Length > 0)
{
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
if (titleAttribute.Title != "")
{
return titleAttribute.Title;
}
}
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
}
}
public string AssemblyVersion
{
get
{
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
}
public string AssemblyDescription
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyDescriptionAttribute)attributes[0]).Description;
}
}
public string AssemblyProduct
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyProductAttribute)attributes[0]).Product;
}
}
public string AssemblyCopyright
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
}
}
public string AssemblyCompany
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyCompanyAttribute)attributes[0]).Company;
}
}
#endregion
private void MainLayoutPanel_MouseClick(object sender, EventArgs e)
{
}
}
}

View File

@@ -0,0 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="MainLayoutPanel.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
R0lGODlhxwNcAIcAAAAAAP///+/w8o2Wo660vYWPnJ2lsLa8xL7Dyt7h5ZWeqaattsbL0c7S19ba3ufp
6/f4+P7+/v39/fz8/Pv7+/r6+vn5+fj4+Pf39/b29vX19fT09PPz8/Ly8vHx8fDw8O/v7+7u7u3t7ezs
7Ovr6+rq6unp6ejo6Ofn5+bm5uXl5eTk5OPj4+Li4uHh4eDg4N/f397e3t3d3dzc3Nvb29ra2tnZ2djY
2NfX19bW1tXV1dTU1NPT09LS0tHR0dDQ0M/Pz87Ozs3NzczMzMvLy8rKysnJycjIyMfHx8bGxsXFxcTE
xMPDw8LCwsHBwcDAwL+/v76+vr29vby8vLu7u7q6urm5ubi4uLe3t7a2trW1tbS0tLOzs7KysrGxsbCw
sK+vr66urq2traysrKurq6qqqqmpqaioqKenp6ampqWlpaSkpKOjo6KioqGhoaCgoJ+fn56enp2dnZyc
nJubm5qampmZmZiYmJeXl5aWlpWVlZSUlJOTk5KSkpGRkZCQkI+Pj46Ojo2NjYyMjIuLi4qKiomJiYiI
iIeHh////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ACH/C05FVFNDQVBFMi4wAwEBAAAh+QQBAACJACwAAAAAxwNcAAAI1QBdCBxIsKDBgwgTKlzIsKHDhxAj
SpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlxZMYDLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjR
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
</value>
</data>
</root>

169
cVMS.NET_CS/Dialog/Frm_Msg.Designer.cs generated Normal file
View File

@@ -0,0 +1,169 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
namespace vmsnet
{
partial class Frm_Msg : System.Windows.Forms.Form
{
//Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
[System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
{
try
{
if (disposing && components != null)
{
components.Dispose();
}
}
finally
{
base.Dispose(disposing);
}
}
internal System.Windows.Forms.Label ApplicationTitle;
internal System.Windows.Forms.Label Version;
internal System.Windows.Forms.Label Copyright;
internal System.Windows.Forms.TableLayoutPanel MainLayoutPanel;
internal System.Windows.Forms.TableLayoutPanel DetailsLayoutPanel;
//Windows Form 디자이너에 필요합니다.
private System.ComponentModel.Container components = null;
//참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다.
//수정하려면 Windows Form 디자이너를 사용하십시오.
//코드 편집기를 사용하여 수정하지 마십시오.
[System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Frm_Msg));
this.MainLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
this.DetailsLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
this.Panel1 = new System.Windows.Forms.Panel();
this.lb_Status = new System.Windows.Forms.Label();
this.Version = new System.Windows.Forms.Label();
this.Copyright = new System.Windows.Forms.Label();
this.ApplicationTitle = new System.Windows.Forms.Label();
this.MainLayoutPanel.SuspendLayout();
this.DetailsLayoutPanel.SuspendLayout();
this.Panel1.SuspendLayout();
this.SuspendLayout();
//
// MainLayoutPanel
//
this.MainLayoutPanel.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("MainLayoutPanel.BackgroundImage")));
this.MainLayoutPanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
this.MainLayoutPanel.ColumnCount = 2;
this.MainLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 153F));
this.MainLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 551F));
this.MainLayoutPanel.Controls.Add(this.DetailsLayoutPanel, 1, 1);
this.MainLayoutPanel.Controls.Add(this.ApplicationTitle, 1, 0);
this.MainLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.MainLayoutPanel.Location = new System.Drawing.Point(0, 0);
this.MainLayoutPanel.Name = "MainLayoutPanel";
this.MainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 47F));
this.MainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 209F));
this.MainLayoutPanel.Size = new System.Drawing.Size(704, 186);
this.MainLayoutPanel.TabIndex = 0;
//
// DetailsLayoutPanel
//
this.DetailsLayoutPanel.BackColor = System.Drawing.Color.Transparent;
this.DetailsLayoutPanel.ColumnCount = 1;
this.DetailsLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 545F));
this.DetailsLayoutPanel.Controls.Add(this.Panel1, 0, 0);
this.DetailsLayoutPanel.Location = new System.Drawing.Point(156, 50);
this.DetailsLayoutPanel.Name = "DetailsLayoutPanel";
this.DetailsLayoutPanel.RowCount = 1;
this.DetailsLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 136F));
this.DetailsLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 136F));
this.DetailsLayoutPanel.Size = new System.Drawing.Size(545, 136);
this.DetailsLayoutPanel.TabIndex = 1;
//
// Panel1
//
this.Panel1.Controls.Add(this.lb_Status);
this.Panel1.Controls.Add(this.Version);
this.Panel1.Controls.Add(this.Copyright);
this.Panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.Panel1.Location = new System.Drawing.Point(0, 0);
this.Panel1.Margin = new System.Windows.Forms.Padding(0);
this.Panel1.Name = "Panel1";
this.Panel1.Size = new System.Drawing.Size(545, 136);
this.Panel1.TabIndex = 4;
//
// lb_Status
//
this.lb_Status.Anchor = System.Windows.Forms.AnchorStyles.None;
this.lb_Status.BackColor = System.Drawing.Color.Transparent;
this.lb_Status.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.lb_Status.Location = new System.Drawing.Point(141, 97);
this.lb_Status.Name = "lb_Status";
this.lb_Status.Size = new System.Drawing.Size(396, 31);
this.lb_Status.TabIndex = 3;
this.lb_Status.Text = "#";
this.lb_Status.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// Version
//
this.Version.Anchor = System.Windows.Forms.AnchorStyles.None;
this.Version.BackColor = System.Drawing.Color.Transparent;
this.Version.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Version.Location = new System.Drawing.Point(3, 114);
this.Version.Name = "Version";
this.Version.Size = new System.Drawing.Size(241, 20);
this.Version.TabIndex = 1;
this.Version.Text = "버전 {0}.{1:00}";
//
// Copyright
//
this.Copyright.Anchor = System.Windows.Forms.AnchorStyles.None;
this.Copyright.BackColor = System.Drawing.Color.Transparent;
this.Copyright.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Copyright.Location = new System.Drawing.Point(3, 94);
this.Copyright.Name = "Copyright";
this.Copyright.Size = new System.Drawing.Size(241, 17);
this.Copyright.TabIndex = 2;
this.Copyright.Text = "저작권";
//
// ApplicationTitle
//
this.ApplicationTitle.BackColor = System.Drawing.Color.Transparent;
this.ApplicationTitle.Dock = System.Windows.Forms.DockStyle.Fill;
this.ApplicationTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.ApplicationTitle.Location = new System.Drawing.Point(156, 0);
this.ApplicationTitle.Name = "ApplicationTitle";
this.ApplicationTitle.Size = new System.Drawing.Size(545, 47);
this.ApplicationTitle.TabIndex = 0;
this.ApplicationTitle.Text = "응용 프로그램 제목";
this.ApplicationTitle.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
//
// Frm_Msg
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(704, 186);
this.ControlBox = false;
this.Controls.Add(this.MainLayoutPanel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Frm_Msg";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Load += new System.EventHandler(this.SplashScreen1_Load);
this.MainLayoutPanel.ResumeLayout(false);
this.DetailsLayoutPanel.ResumeLayout(false);
this.Panel1.ResumeLayout(false);
this.ResumeLayout(false);
}
internal System.Windows.Forms.Label lb_Status;
internal System.Windows.Forms.Panel Panel1;
}
}

View File

@@ -0,0 +1,117 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using System.Reflection;
namespace vmsnet
{
public sealed partial class Frm_Msg
{
public Frm_Msg()
{
InitializeComponent();
this.Text = String.Format("{0} 정보", AssemblyTitle);
ApplicationTitle.Text = AssemblyProduct;
Version.Text = String.Format("버전 {0}", AssemblyVersion);
Copyright.Text = AssemblyCopyright;
//this.Text = String.Format("{0} 정보", AssemblyTitle);
//this.labelProductName.Text = AssemblyProduct;
//this.labelVersion.Text = String.Format("버전 {0}", AssemblyVersion);
//this.labelCopyright.Text = AssemblyCopyright;
//this.labelCompanyName.Text = AssemblyCompany;
//this.textBoxDescription.Text = AssemblyDescription;
}
public void SplashScreen1_Load(object sender, System.EventArgs e)
{
}
#region
public string AssemblyTitle
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
if (attributes.Length > 0)
{
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
if (titleAttribute.Title != "")
{
return titleAttribute.Title;
}
}
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
}
}
public string AssemblyVersion
{
get
{
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
}
public string AssemblyDescription
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyDescriptionAttribute)attributes[0]).Description;
}
}
public string AssemblyProduct
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyProductAttribute)attributes[0]).Product;
}
}
public string AssemblyCopyright
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
}
}
public string AssemblyCompany
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyCompanyAttribute)attributes[0]).Company;
}
}
#endregion
}
}

View File

@@ -0,0 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="MainLayoutPanel.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
R0lGODlhxwNcAIcAAAAAAP///+/w8o2Wo660vYWPnJ2lsLa8xL7Dyt7h5ZWeqaattsbL0c7S19ba3ufp
6/f4+P7+/v39/fz8/Pv7+/r6+vn5+fj4+Pf39/b29vX19fT09PPz8/Ly8vHx8fDw8O/v7+7u7u3t7ezs
7Ovr6+rq6unp6ejo6Ofn5+bm5uXl5eTk5OPj4+Li4uHh4eDg4N/f397e3t3d3dzc3Nvb29ra2tnZ2djY
2NfX19bW1tXV1dTU1NPT09LS0tHR0dDQ0M/Pz87Ozs3NzczMzMvLy8rKysnJycjIyMfHx8bGxsXFxcTE
xMPDw8LCwsHBwcDAwL+/v76+vr29vby8vLu7u7q6urm5ubi4uLe3t7a2trW1tbS0tLOzs7KysrGxsbCw
sK+vr66urq2traysrKurq6qqqqmpqaioqKenp6ampqWlpaSkpKOjo6KioqGhoaCgoJ+fn56enp2dnZyc
nJubm5qampmZmZiYmJeXl5aWlpWVlZSUlJOTk5KSkpGRkZCQkI+Pj46Ojo2NjYyMjIuLi4qKiomJiYiI
iIeHh////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ACH/C05FVFNDQVBFMi4wAwEBAAAh+QQBAACJACwAAAAAxwNcAAAI1QBdCBxIsKDBgwgTKlzIsKHDhxAj
SpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlxZMYDLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjR
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
</value>
</data>
</root>

68
cVMS.NET_CS/Dialog/Frm_SMsg.Designer.cs generated Normal file
View File

@@ -0,0 +1,68 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
namespace vmsnet
{
partial class Frm_SMsg : System.Windows.Forms.Form
{
//Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
[System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
{
try
{
if (disposing && components != null)
{
components.Dispose();
}
}
finally
{
base.Dispose(disposing);
}
}
//Windows Form 디자이너에 필요합니다.
private System.ComponentModel.Container components = null;
//참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다.
//수정하려면 Windows Form 디자이너를 사용하십시오.
//코드 편집기를 사용하여 수정하지 마십시오.
[System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
{
this.Label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
//Label1
//
this.Label1.Dock = System.Windows.Forms.DockStyle.Fill;
this.Label1.Location = new System.Drawing.Point(0, 0);
this.Label1.Name = "Label1";
this.Label1.Size = new System.Drawing.Size(516, 56);
this.Label1.TabIndex = 0;
this.Label1.Text = "...";
this.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
//Frm_SMsg
//
this.AutoScaleDimensions = new System.Drawing.SizeF((float) (7.0F), (float) (12.0F));
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(516, 56);
this.Controls.Add(this.Label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Name = "Frm_SMsg";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "잠시만 기다려주세요";
this.ResumeLayout(false);
}
internal System.Windows.Forms.Label Label1;
}
}

View File

@@ -0,0 +1,18 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
namespace vmsnet
{
public partial class Frm_SMsg
{
public Frm_SMsg()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,168 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
namespace vmsnet
{
partial class Frm_SelectCH : System.Windows.Forms.Form
{
//Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
[System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
{
try
{
if (disposing && components != null)
{
components.Dispose();
}
}
finally
{
base.Dispose(disposing);
}
}
//Windows Form 디자이너에 필요합니다.
private System.ComponentModel.Container components = null;
//참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다.
//수정하려면 Windows Form 디자이너를 사용하십시오.
//코드 편집기에서는 수정하지 마세요.
[System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Frm_SelectCH));
this.Button1 = new System.Windows.Forms.Button();
this.Panel1 = new System.Windows.Forms.Panel();
this.Button4 = new System.Windows.Forms.Button();
this.Button3 = new System.Windows.Forms.Button();
this.Button2 = new System.Windows.Forms.Button();
this.CheckedListBox1 = new System.Windows.Forms.ListView();
this.ColumnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.Panel1.SuspendLayout();
this.SuspendLayout();
//
// Button1
//
this.Button1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.Button1.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Button1.Location = new System.Drawing.Point(0, 624);
this.Button1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.Button1.Name = "Button1";
this.Button1.Size = new System.Drawing.Size(388, 101);
this.Button1.TabIndex = 1;
this.Button1.Text = "확인";
this.Button1.UseVisualStyleBackColor = true;
this.Button1.Click += new System.EventHandler(this.Button1_Click);
//
// Panel1
//
this.Panel1.Controls.Add(this.Button4);
this.Panel1.Controls.Add(this.Button3);
this.Panel1.Controls.Add(this.Button2);
this.Panel1.Dock = System.Windows.Forms.DockStyle.Right;
this.Panel1.Location = new System.Drawing.Point(219, 0);
this.Panel1.Name = "Panel1";
this.Panel1.Size = new System.Drawing.Size(169, 624);
this.Panel1.TabIndex = 2;
//
// Button4
//
this.Button4.Dock = System.Windows.Forms.DockStyle.Top;
this.Button4.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Button4.Location = new System.Drawing.Point(0, 166);
this.Button4.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.Button4.Name = "Button4";
this.Button4.Size = new System.Drawing.Size(169, 83);
this.Button4.TabIndex = 4;
this.Button4.Text = "선택 반전";
this.Button4.UseVisualStyleBackColor = true;
this.Button4.Visible = false;
this.Button4.Click += new System.EventHandler(this.Button4_Click);
//
// Button3
//
this.Button3.Dock = System.Windows.Forms.DockStyle.Top;
this.Button3.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Button3.Location = new System.Drawing.Point(0, 83);
this.Button3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.Button3.Name = "Button3";
this.Button3.Size = new System.Drawing.Size(169, 83);
this.Button3.TabIndex = 3;
this.Button3.Text = "전체 해제";
this.Button3.UseVisualStyleBackColor = true;
this.Button3.Click += new System.EventHandler(this.Button3_Click);
//
// Button2
//
this.Button2.Dock = System.Windows.Forms.DockStyle.Top;
this.Button2.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Button2.Location = new System.Drawing.Point(0, 0);
this.Button2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.Button2.Name = "Button2";
this.Button2.Size = new System.Drawing.Size(169, 83);
this.Button2.TabIndex = 2;
this.Button2.Text = "전체 선택";
this.Button2.UseVisualStyleBackColor = true;
this.Button2.Visible = false;
this.Button2.Click += new System.EventHandler(this.Button2_Click);
//
// CheckedListBox1
//
this.CheckedListBox1.CheckBoxes = true;
this.CheckedListBox1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.ColumnHeader2});
this.CheckedListBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.CheckedListBox1.FullRowSelect = true;
this.CheckedListBox1.GridLines = true;
this.CheckedListBox1.HideSelection = false;
this.CheckedListBox1.Location = new System.Drawing.Point(0, 0);
this.CheckedListBox1.MultiSelect = false;
this.CheckedListBox1.Name = "CheckedListBox1";
this.CheckedListBox1.Size = new System.Drawing.Size(219, 624);
this.CheckedListBox1.TabIndex = 3;
this.CheckedListBox1.UseCompatibleStateImageBehavior = false;
this.CheckedListBox1.View = System.Windows.Forms.View.Details;
//
// ColumnHeader2
//
this.ColumnHeader2.Text = "Title";
this.ColumnHeader2.Width = 214;
//
// Frm_SelectCH
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(388, 725);
this.Controls.Add(this.CheckedListBox1);
this.Controls.Add(this.Panel1);
this.Controls.Add(this.Button1);
this.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Frm_SelectCH";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "채널 선택";
this.Load += new System.EventHandler(this.Frm_SelectCH_Load);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Frm_SelectCH_KeyDown);
this.Panel1.ResumeLayout(false);
this.ResumeLayout(false);
}
internal Button Button1;
internal Panel Panel1;
internal Button Button2;
internal Button Button4;
internal Button Button3;
internal ColumnHeader ColumnHeader2;
public ListView CheckedListBox1;
}
}

View File

@@ -0,0 +1,115 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using AR;
namespace vmsnet
{
public partial class Frm_SelectCH
{
public Frm_SelectCH(DS1.channelDataTable lst)
{
// 디자이너에서 이 호출이 필요합니다.
InitializeComponent();
// InitializeComponent() 호출 뒤에 초기화 코드를 추가하세요.
this.CheckedListBox1.Items.Clear();
foreach (var item in lst)
{
ListViewItem lv = this.CheckedListBox1.Items.Add(System.Convert.ToString(item.cname));
lv.SubItems.Add(item.cname.ToString());
//lv.SubItems.Add(item.CH)
lv.Checked = item.use;
lv.Tag = item.idx;
lv.BackColor = item.use ? Color.Lime : Color.White;
}
CheckedListBox1.ItemChecked += CheckedListBox1_ItemChecked;
}
public Frm_SelectCH(TrendCtrlII.CChinfo[] lst)
{
// 디자이너에서 이 호출이 필요합니다.
InitializeComponent();
// InitializeComponent() 호출 뒤에 초기화 코드를 추가하세요.
this.CheckedListBox1.Items.Clear();
foreach (var item in lst)
{
ListViewItem lv = this.CheckedListBox1.Items.Add(System.Convert.ToString(item.TITLE));
lv.SubItems.Add(item.TITLE.ToString());
//lv.SubItems.Add(item.CH)
lv.Checked = item.Show;
lv.Tag = item.Idx;
lv.BackColor = item.Show ? Color.Lime : Color.White;
}
CheckedListBox1.ItemChecked += CheckedListBox1_ItemChecked;
}
private void CheckedListBox1_ItemChecked(object sender, ItemCheckedEventArgs e)
{
e.Item.BackColor = e.Item.Checked ? Color.Lime : Color.White;
}
public void Frm_SelectCH_Load(object sender, EventArgs e)
{
}
public void Frm_SelectCH_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
this.Close();
}
}
public void Button2_Click(object sender, EventArgs e)
{
foreach (ListViewItem item in CheckedListBox1.Items)
{
item.Checked = true;
item.BackColor = item.Checked ? Color.Lime : Color.White;
}
}
public void Button3_Click(object sender, EventArgs e)
{
foreach (ListViewItem item in CheckedListBox1.Items)
{
item.Checked = false;
item.BackColor = item.Checked ? Color.Lime : Color.White;
}
}
public void Button4_Click(object sender, EventArgs e)
{
foreach (ListViewItem item in CheckedListBox1.Items)
{
item.Checked = !item.Checked;
item.BackColor = item.Checked ? Color.Lime : Color.White;
}
}
public void Button1_Click(object sender, EventArgs e)
{
if (CheckedListBox1.CheckedItems.Count > 10)
{
UTIL.MsgE("최대 10개까지 선택 가능 합니다");
return ;
}
DialogResult = DialogResult.OK;
}
}
}

View File

@@ -0,0 +1,377 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA
AABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcrvQCHK70BByu
9AYcrvQKHK70DByu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu
9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu
9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9AwcrvQKHK70Bxyu9AQcrvQCAAAAAByu
9AIcrvQGHK70DByu9BUcrvQdHK70Ixyu9CYcrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu
9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu
9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jhyu9CMcrvQdHK70FRyu
9AwcrvQGHK70Ahyu9AMcrvQMHK70GRyu9CocrvQ7HK70Rhyu9EwcrvROHK70Thyu9E4crvROHK70Thyu
9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu
9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70TRyu
9EYcrvQ7HK70Kxyu9BkcrvQMHK70BByu9AUcrvQSHK70Jwuh7VYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ
6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ
6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ
6WYAmelmAJnpZgCZ6WYAmelmCqDtWByu9CgcrvQTHK70Bhyu9AYcrvQWHK70Lgmi7nEYsvzXHLb//xy2
//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2
//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2
//8ctv//HLb//xy2//8ctv//HLb//xy2//8Zs/3fC6PweRyu9C4crvQWHK70Bxyu9AYcrvQUHK70Kxex
+8Actv//HLb//x23//8et///ILj//yK6//8lu///Kb3//yzA//8wwv//NcT//znH//89yv//Qcv//0bN
//9Kz///TdH//1HS//9T1P//V9X//1nW//9X1f//U9T//1HS//9N0f//Ss///0bN//9By///Pcr//znH
//81xP//MML//yzA//8pvf//Jbv//yK6//8guP//Hrf//xy2//8ctv//GbP81Ryu9CwcrvQVHK70Bhyu
9AQcrvQPHK70IBu1/tUctv//HLb//x63//8nuv//JLv//ym9//8uwP//M8P//zrH//9By///R87//0/R
//9X1f//Xdj//2Tb//9r3f//cd///3bi//974///f+X//4Dm//9/5f//e+P//3bi//9x3///a93//2Tb
//9d2P//V9X//0/R//9Hzv//Qcv//zrH//8zw///LsD//ym9//8mu///JLr//x63//8ctv//HLb/8hyu
9CAcrvQQHK70BRyu9AIcrvQIHK70Ehy1/qIctv//HLb//za+//8juf//Irn//yW8//8rv///MML//zbF
//89yf//RM3//0rQ//9S0///Wdb//1/Z//9m3P//a97//3Hg//904v//d+L//3jk//934v//dOL//3Hg
//9r3v//Ztz//1/Z//9Z1v//UtP//0rQ//9Ezf//Pcn//zbF//8wwv//K7///yW8//8iuf//Mr7//x23
//8ctv//HLb/xRyu9BIcrvQIHK70Ahyu9AEcrvQEHK70CBy0/C8ctv/8HLb//1PJ//8kuv//Ibn//yW7
//8qv///MMH//zXE//87yP//Qsv//0nP//9Q0///Vtb//13Y//9j2v//ad3//23e//9x4P//c+H//3Ti
//9z4f//ceD//23e//9p3f//Y9r//13Y//9W1v//UNP//0nP//9Cy///O8j//zXE//8wwf//Kr///yW7
//8iuf//Q8P//yO5//8ctv//HLX+TByu9AgcrvQEHK70AQAAAAAcrvQBHK70Ahyu9AMctv+bHLb//0/H
//83wP//Irn//yS7//8ovf//LsD//zTE//86yP//QMv//0bO//9N0f//VNT//1nW//9f2f//ZNv//2nd
//9r3v//bd7//27g//9t3v//a97//2nd//9k2///X9n//1nW//9U1P//TdH//0bO//9Ay///Osj//zTE
//8uwP//KL3//yS7//8lu///ac///x+4//8ctv++HK70Axyu9AIcrvQBAAAAAAAAAAAAAAAAAAAAAAAA
AAActv8bHLb/9iS4//9mz///I7r//yK6//8nvf//LL///zLC//83xf//Pcn//0PN//9K0P//UNP//1XV
//9a1///X9n//2Pa//9r3f//zvT//+37//+w7f//Ztz//2Pa//9f2f//Wtf//1XV//9Q0///StD//0PN
//89yf//N8X//zLC//8sv///J73//yS6//89wf//Usn//xy2//8ctv82AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAHLb/jRy2//9Vyv//OMD//yO5//8lvP//Kr///y7B//80xP//Osj//0DL
//9Gzf//StD//1DT//9V1f//Wdb//13Y//+f6P//////////////////dN7//13Y//9Z1v//VdX//1DT
//9K0P//Rs3//0DL//86yP//NMT//y7B//8qv///Jbz//ya7//9q0P//JLn//xy2/64AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Ehy2//Mluf//aM///yS6//8juv//J73//yy/
//8xwv//NsX//zvI//9By///Rs7//0rQ//9Q0///VNT//1bW//+T5P/////////////7/v//adr//1bW
//9U1P//UNP//0rQ//9Gzv//Qcv//zvI//82xf//McL//yy///8nvf//JLr//z7C//9SyP//HLb//By2
/yoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/34ctv//VMr//zrA
//8juf//Jbz//ym9//8uwP//MsL//zfF//88yf//Qcv//0bN//9K0P//TdH//1DT//9U1P//nuf//8fx
//+C4P//UtP//1DT//9N0f//StD//0bN//9By///PMn//zfF//8ywv//LsD//ym9//8lvP//Jrv//2rQ
//8kuf//HLb/ogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2
/wwctv/tJLn//2nP//8nu///Jrv//yq9//8twP//MsL//zbE//87x///P8n//0TM//9Izf//S8///03Q
//9P0f//UdH//1HS//9R0f//T9H//03Q//9Lz///SM3//0TM//8/yf//O8f//zbE//8ywv//LcD//yq9
//8nu///QsL//1HI//8ctv/5HLb/IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAActv9yHLb//1TJ//8/wv//J7v//yq8//8uvv//MsH//zXD//86xP//Psf//0LK
//9Fy///SMz//0rN//9Mzv//Tc///07P//9Nz///TM7//0rN//9IzP//Rcv//0LK//8+x///OsT//zXD
//8ywf//Lr7//yq8//8svP//bdH//yS5//8ctv+TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv8GHLb/5CS4//9s0f//Lbz//yy8//8vvf//Mr///zXC
//85w///PcX//0DI//9Dyf//Rsr//0nL//9Ozf//1fP///n9//+K3v//Ssz//0nL//9Gyv//Q8n//0DI
//89xf//OcP//zXC//8yv///L73//yy8//9GxP//UMj//xy2//Mctv8YAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Zhy2//9Vyf//RcP//y68
//8wvf//Mr7//zbA//85wf//PMP//0DE//9Cx///RMf//0bJ//9w1f/////////////Q8f//R8n//0bJ
//9Ex///Qsf//0DE//88w///OcH//zbA//8yvv//ML3//zK+//9w0v//I7n//xy2/4cAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Axy2
/9siuP//b9H//zW+//8yvv//NL///zbA//84wv//O8L//z7D//9Axf//QsX//0TH//9x1f//////////
///U8v//Rcj//0TH//9Cxf//QMX//z7D//87wv//OML//zbA//80v///Mr7//03F//9PyP//HLb/7Ry2
/xIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAABy2/1cctv//VMn//0zF//81vv//Nr///ze///85wP//O8H//zzC//8/w///QcT//0LE
//9v0//////////////T8v//Q8X//0LE//9BxP//P8P//zzC//87wf//OcD//ze///82v///OMD//3LS
//8guP//HLb/eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/wMctv/PIrj//3TT//88wP//OsD//zvA//88wf//PsL//z/C
//9Aw///QsP//0PD//9w0//////////////T8v//RMX//0PD//9Cw///QMP//z/C//8+wv//PMH//zvA
//87wP//VMn//1DI//8ctv/nHLb/DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv9OHLb//1PJ//9Vyf//PsD//z7B
//8/wf//QMH//0HC//9Cwv//Q8P//0PD//9w0v/////////////T8f//RMP//0PD//9Dw///QsL//0HC
//9Awf//P8H//z7B//9Bwv//d9X//x+3//8ctv9sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/xiK4
//961f//RsT//0LC//9Cwv//Q8P//0TD//9Fw///RcP//0bE//9x0//////////////U8f//RsT//0bE
//9Fw///RcP//0TD//9Dw///QsL//0PC//9dzP//Ucj//xy2/94ctv8GAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAHLb/Pxy2//9Vyf//Xs3//0nE//9IxP//SMT//0jE//9IxP//ScT//0nF//900///////////
///V8v//SsX//0nF//9JxP//SMT//0jE//9IxP//SMT//0zH//991f//H7f//xy2/10AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/7oiuP//ftb//1LI//9Ox///Tsf//07H//9Ox///Tsf//07H
//931P/////////////W8v//Tsf//07H//9Ox///Tsf//07H//9Ox///Tsf//2bP//9RyP//HLb/1Ry2
/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/zMctv//Vsn//2jP//9Uyf//U8n//1PJ
//9Tyf//U8n//1PJ//971v/////////////X8v//U8n//1PJ//9Tyf//U8n//1PJ//9Tyf//V8r//4HY
//8ft///HLb/UQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv+rIbj//4XZ
//9dzP//Wsv//1rL//9ay///Wsv//1rL//+B1//////////////Y8///Wsv//1rL//9ay///Wsv//1rL
//9ay///cdL//1LJ//8ctv/JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAActv8nHLb//FfK//900///Yc3//2DN//9gzf//YM3//2DN//+F2f/////////////a8///YM3//2DN
//9gzf//YM3//2DN//9kzv//h9n//x+3//8ctv9CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAHLb/nB+3//+L2///atD//2bP//9mz///Zs///2bP//+K2v//////////
///b9P//Zs///2bP//9mz///Zs///2fP//981f//Usn//xy2/70AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Gxy2//lYyv//f9b//23R//9t0f//bdH//23R
//+P3P/////////////d9P//bdH//23R//9t0f//bdH//3DR//+M2v//Hrf//xy2/zYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/40ft///ktz//3bU
//9z0///c9P//3PT//+U3f/////////////e9f//c9P//3PT//9z0///c9P//4bZ//9SyP//HLb/rgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2
/xUctv/zWMr//4ra//961f//etX//3rV//+Z3//////////////g9f//etX//3rV//961f//fdX//5Hc
//8et//8HLb/KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAActv+BH7f//5be//+C2P//gNf//4DX//+Q3P///v/////////Q8P//gNf//4DX
//+A1///kd3//1TJ//8ctv+iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv8MHLb/7VnK//+V3f//htn//4bZ//+G2f//m+D//6/m
//+K2v//htn//4bZ//+J2f//lt3//x63//kctv8hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/ciC3//+a3///j9z//43b
//+N2///jdv//43b//+N2///jdv//43b//+b4P//VMn//xy2/5MAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Bhy2
/+RZyv//n+H//5Pd//+T3f//k93//5Pd//+T3f//k93//5bd//+a3///Hrf/8xy2/xsAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAABy2/2Met///oOH//5vg//+a3///mt///5rf//+a3///mt///6bj//9Uyf//HLb/hwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/wMctv/YWcr//6rk//+f4f//n+H//5/h//+f4f//ouH//57h
//8et//tHLb/EgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv9UHrf//6Ti//+m4///peL//6Xi
//+l4v//r+X//1LI//8ctv97AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/zFrL
//+z6P//quX//6rl//+s5f//oeL//x63/+cctv8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAHLb/RR63//+p5P//tuj//7Pn//+96v//VMn//xy2/2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/71GxP//wuz//8Xt//+S3f//HLb/3hy2/wYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/zYctv//Mr3//1HI//8iuP//HLb/YAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv+HHLb//xy2
//8ctv+lHLb/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAHLb/Jxy2/zYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP////////z9gAAAAAAB/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAA
AAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9gAAAAAAB/P3wAAAAAA/8/fgAAAAAH/z9+AAAAAAf
/P38AAAAAD/8/fwAAAAAP/z9/gAAAAB//P3+AAAAAH/8/f8AAAAA//z9/wAAAAD//P3/gAAAAf/8/f+A
AAAB//z9/8AAAAP//P3/4AAAA//8/f/gAAAH//z9//AAAAf//P3/8AAAD//8/f/4AAAf//z9//gAAB//
/P3//AAAP//8/f/8AAA///z9//4AAH///P3//gAAf//8/f//AAD///z9//8AAP///P3//4AB///8/f//
gAH///z9///AA////P3//8AD///8/f//4Af///z9///wB////P3///AP///8/f//+A////z9///4H///
/P3///wf///8/f///n////z9/////////P3////////8/SgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAHK70ARuu9AIcrvQEG670BByu9AQbrvQEHK70BBuu9AQcrvQEG670BByu
9AQbrvQEHK70BBuu9AQcrvQEG670BByu9AQbrvQEHK70BBuu9AQcrvQEG670BByu9AQbrvQEHK70BBuu
9AQcrvQEG670BByu9AMbrvQBAAAAABuu9AIbrvQIG670Ehuu9BobrvQeG670Hhuu9B4brvQeG670Hhuu
9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu
9B4brvQeG670Hhuu9B4brvQaG670Ehuu9AgbrvQCG670Bxyu9BgVqPE+EqfwThKn8FUSp/BWEqfwVhKn
8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn
8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8E4UqPE/G670GRyu9AgbrvQLG670JAuk8IARq/bDEqz3zBKs
98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs
98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqv3xQyk8YYbrvQkG670Cxuu9AocrvQgGbP92hy2
//8et///Ibj//yW7//8qvv//MsP//znG//9Cy///SM7//1HS//9X1f//Xtf//2PZ//9l2///Ydn//1vW
//9W1P//TtD//0fO//8+yf//N8X//y/B//8pvf//I7r//yC4//8ctv//GrT96Ruu9CEcrvQKG670BRuu
9BMbtf7MG7b//yq6//8juf//KL3//y/B//85x///Qsz//07R//9Y1f//Ytr//2vd//9z4f//eOL//3rk
//934v//cN///2nd//9e2P//VdT//0nP//9Ayv//NcT//y3A//8lu///Krv//xy2//8btv/iG670Exuu
9AYbrvQBHK70BRuz+18ctv/zRMT//yS6//8mvP//Lb///zbF//8/yv//Ss///1PU//9d2P//Zdv//2ze
//9w3///ceD//2/f//9q3f//Y9r//1nW//9R0///Rc3//zzJ//8ywv//K7///yS6//9Awv//H7f/+Byz
/HAbrvQFHK70AQAAAAAbrvQBG7L6GBu2/70+wf//M7///yS7//8qvv//NMP//zvI//9Gzv//T9L//1jW
//9f2f//Z9v//5fn//+17v//eOD//2Pa//9d2P//VNT//03R//9CzP//Osf//zDB//8pvf//Kbv//03H
//8ctv/LG7L6Ihuu9AEAAAAAAAAAAAAAAAAAAAAAHLb/Qym6//xHxP//I7r//ye9//8vwf//NsX//0DK
//9Hzv//T9L//1bV//9w3P//3fb///7+//+f6P//Wdb//1TU//9M0f//Rc3//zzJ//80xP//K7///ya8
//8/wv//Nr///hu2/1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv8EHLb/w0bE//8tvP//JLv//yu+
//8xwv//Osf//0HL//9Iz///TtH//1nV//+h5///yfH//3Tc//9R0///TdH//0XN//8/yv//NsX//zDB
//8ovf//Jbv//07G//8juP/VG7b/CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv9HH7f/61HH
//8pu///K73//zDA//83xP//Pcf//0TL//9Jzf//TM///0/Q//9P0P//TtD//0vO//9IzP//Qcr//zzG
//80w///LsD//ym8//9Dw///Nb7/8hy2/1YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABu2
/w4btv+sQcL//zvB//8svP//ML7//zbC//88xP//Qcn//0XK//9KzP//id7//6fm//9Y0P//SMv//0TK
//8/x///OsT//zTB//8vvv//Mb3//1DH//8dtv+6G7b/FgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAABy2/y4puv/3Tsb//zC8//8yvv//NsD//zrC//9AxP//Qsb//1PM///P8f//7/r//3TW
//9Ex///Qsb//z7D//85wf//NL///zG9//9Jxf//N7//+xu2/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAG7b/ARy2/6xIxP//PsH//zS+//83v///OsH//z3C//9AxP//Ucn//8/w
///w+v//c9T//0LE//9Aw///PML//znA//82v///Nb///1PI//8iuP+/G7b/BAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG7b/OB62/+Fcy///PsH//zzA//8+wf//QML//0HC
//9SyP//z/D///D6//9z0///QsP//0HC//8/wf//PcH//zzA//9UyP//M77/6Ry2/0UAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv8JG7b/mUbE//9Rx///QMH//0HC
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
rEHwD6xB+B+sQfgfrEH8P6xB/j+sQf5/rEE=
</value>
</data>
</root>

View File

@@ -0,0 +1,281 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using vmsnet;
namespace vmsnet
{
partial class Frm_trend_Real : System.Windows.Forms.Form
{
//Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
[System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
{
try
{
if (disposing && components != null)
{
components.Dispose();
}
}
finally
{
base.Dispose(disposing);
}
}
//참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다.
//수정하려면 Windows Form 디자이너를 사용하십시오.
//코드 편집기를 사용하여 수정하지 마십시오.
[System.Diagnostics.DebuggerStepThrough()]
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Frm_trend_Real));
this.ToolTip1 = new System.Windows.Forms.ToolTip();
this.Panel1 = new System.Windows.Forms.Panel();
this.cmb_tanks = new System.Windows.Forms.ComboBox();
this.btSelectCH = new System.Windows.Forms.Button();
this.Label4 = new System.Windows.Forms.Label();
this.TableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.Panel2 = new System.Windows.Forms.Panel();
this.bsCHList = new System.Windows.Forms.BindingSource();
this.documentElement1 = new vmsnet.DocumentElement();
this.Timer1 = new System.Windows.Forms.Timer();
this.ds1 = new vmsnet.DS1();
this.ToolStrip2 = new System.Windows.Forms.ToolStrip();
this.ToolStripLabel1 = new System.Windows.Forms.ToolStripLabel();
this.cmb_volt = new System.Windows.Forms.ToolStripComboBox();
this.ToolStripLabel2 = new System.Windows.Forms.ToolStripLabel();
this.cmb_time = new System.Windows.Forms.ToolStripComboBox();
this.prb1 = new System.Windows.Forms.ToolStripProgressBar();
this.btConfig = new System.Windows.Forms.ToolStripButton();
this.Panel1.SuspendLayout();
this.TableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.bsCHList)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.documentElement1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.ds1)).BeginInit();
this.ToolStrip2.SuspendLayout();
this.SuspendLayout();
//
// Panel1
//
this.Panel1.BackColor = System.Drawing.Color.WhiteSmoke;
this.Panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.Panel1.Controls.Add(this.cmb_tanks);
this.Panel1.Controls.Add(this.btSelectCH);
this.Panel1.Controls.Add(this.Label4);
this.Panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.Panel1.Location = new System.Drawing.Point(0, 0);
this.Panel1.Margin = new System.Windows.Forms.Padding(0);
this.Panel1.Name = "Panel1";
this.Panel1.Padding = new System.Windows.Forms.Padding(3);
this.Panel1.Size = new System.Drawing.Size(1247, 39);
this.Panel1.TabIndex = 7;
this.Panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.Panel1_Paint);
//
// cmb_tanks
//
this.cmb_tanks.Dock = System.Windows.Forms.DockStyle.Fill;
this.cmb_tanks.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmb_tanks.Font = new System.Drawing.Font("Microsoft Sans Serif", 14F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.cmb_tanks.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(0)))));
this.cmb_tanks.FormattingEnabled = true;
this.cmb_tanks.Location = new System.Drawing.Point(72, 3);
this.cmb_tanks.Name = "cmb_tanks";
this.cmb_tanks.Size = new System.Drawing.Size(1052, 32);
this.cmb_tanks.TabIndex = 16;
this.cmb_tanks.SelectedIndexChanged += new System.EventHandler(this.cmb_group_SelectedIndexChanged);
//
// btSelectCH
//
this.btSelectCH.Dock = System.Windows.Forms.DockStyle.Right;
this.btSelectCH.Location = new System.Drawing.Point(1124, 3);
this.btSelectCH.Name = "btSelectCH";
this.btSelectCH.Size = new System.Drawing.Size(118, 31);
this.btSelectCH.TabIndex = 19;
this.btSelectCH.Text = "채널선택";
this.btSelectCH.UseVisualStyleBackColor = true;
this.btSelectCH.Click += new System.EventHandler(this.btSelectCH_Click);
//
// Label4
//
this.Label4.Dock = System.Windows.Forms.DockStyle.Left;
this.Label4.Location = new System.Drawing.Point(3, 3);
this.Label4.Name = "Label4";
this.Label4.Size = new System.Drawing.Size(69, 31);
this.Label4.TabIndex = 15;
this.Label4.Text = "그룹";
this.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// TableLayoutPanel1
//
this.TableLayoutPanel1.ColumnCount = 1;
this.TableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.TableLayoutPanel1.Controls.Add(this.Panel2, 0, 1);
this.TableLayoutPanel1.Controls.Add(this.Panel1, 0, 0);
this.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.TableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.TableLayoutPanel1.Name = "TableLayoutPanel1";
this.TableLayoutPanel1.RowCount = 2;
this.TableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 39F));
this.TableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.TableLayoutPanel1.Size = new System.Drawing.Size(1247, 864);
this.TableLayoutPanel1.TabIndex = 9;
//
// Panel2
//
this.Panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.Panel2.Location = new System.Drawing.Point(3, 42);
this.Panel2.Name = "Panel2";
this.Panel2.Size = new System.Drawing.Size(1241, 819);
this.Panel2.TabIndex = 8;
//
// bsCHList
//
this.bsCHList.DataMember = "TRENDVIEWCHLIST";
this.bsCHList.DataSource = this.documentElement1;
this.bsCHList.Sort = "SHOW,IDX";
//
// documentElement1
//
this.documentElement1.DataSetName = "DocumentElement";
this.documentElement1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
//
// Timer1
//
this.Timer1.Interval = 200;
this.Timer1.Tick += new System.EventHandler(this.Timer1_Tick);
//
// ds1
//
this.ds1.DataSetName = "DS1";
this.ds1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
//
// ToolStrip2
//
this.ToolStrip2.Dock = System.Windows.Forms.DockStyle.Bottom;
this.ToolStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripLabel1,
this.cmb_volt,
this.ToolStripLabel2,
this.cmb_time,
this.prb1,
this.btConfig});
this.ToolStrip2.Location = new System.Drawing.Point(0, 864);
this.ToolStrip2.Name = "ToolStrip2";
this.ToolStrip2.Size = new System.Drawing.Size(1247, 29);
this.ToolStrip2.TabIndex = 10;
this.ToolStrip2.Text = "ToolStrip2";
//
// ToolStripLabel1
//
this.ToolStripLabel1.Name = "ToolStripLabel1";
this.ToolStripLabel1.Size = new System.Drawing.Size(55, 26);
this.ToolStripLabel1.Text = "전압범위";
//
// cmb_volt
//
this.cmb_volt.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmb_volt.Items.AddRange(new object[] {
"Auto",
"3v",
"5v",
"7v",
"9v",
"11v",
"13v",
"15v",
"17v",
"20v"});
this.cmb_volt.Name = "cmb_volt";
this.cmb_volt.Size = new System.Drawing.Size(75, 29);
this.cmb_volt.SelectedIndexChanged += new System.EventHandler(this.cmb_volt_SelectedIndexChanged);
//
// ToolStripLabel2
//
this.ToolStripLabel2.Name = "ToolStripLabel2";
this.ToolStripLabel2.Size = new System.Drawing.Size(55, 26);
this.ToolStripLabel2.Text = "시간범위";
//
// cmb_time
//
this.cmb_time.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmb_time.Items.AddRange(new object[] {
"1분",
"3분",
"5분",
"10분",
"30분",
"60분"});
this.cmb_time.Name = "cmb_time";
this.cmb_time.Size = new System.Drawing.Size(75, 29);
this.cmb_time.SelectedIndexChanged += new System.EventHandler(this.cmb_time_SelectedIndexChanged_1);
//
// prb1
//
this.prb1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
this.prb1.Name = "prb1";
this.prb1.Size = new System.Drawing.Size(100, 26);
//
// btConfig
//
this.btConfig.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
this.btConfig.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.btConfig.Image = global::vmsnet.Properties.Resources.graphsetting;
this.btConfig.ImageTransparentColor = System.Drawing.Color.Magenta;
this.btConfig.Name = "btConfig";
this.btConfig.Size = new System.Drawing.Size(23, 26);
this.btConfig.Text = "config";
this.btConfig.Click += new System.EventHandler(this.btConfig_Click);
//
// Frm_trend_Real
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1247, 893);
this.Controls.Add(this.TableLayoutPanel1);
this.Controls.Add(this.ToolStrip2);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.Name = "Frm_trend_Real";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "트렌드뷰(실시간)";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Frm_trend_FormClosing);
this.Load += new System.EventHandler(this.Frm_trend_Load);
this.Panel1.ResumeLayout(false);
this.TableLayoutPanel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.bsCHList)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.documentElement1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.ds1)).EndInit();
this.ToolStrip2.ResumeLayout(false);
this.ToolStrip2.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
internal System.Windows.Forms.ToolTip ToolTip1;
internal System.Windows.Forms.Panel Panel1;
internal System.Windows.Forms.ComboBox cmb_tanks;
internal System.Windows.Forms.Label Label4;
internal System.Windows.Forms.TableLayoutPanel TableLayoutPanel1;
internal System.Windows.Forms.Panel Panel2;
internal Button btSelectCH;
internal Timer Timer1;
private System.ComponentModel.IContainer components;
private BindingSource bsCHList;
private DocumentElement documentElement1;
private DS1 ds1;
internal ToolStrip ToolStrip2;
internal ToolStripLabel ToolStripLabel1;
internal ToolStripComboBox cmb_volt;
internal ToolStripLabel ToolStripLabel2;
internal ToolStripComboBox cmb_time;
internal ToolStripProgressBar prb1;
private ToolStripButton btConfig;
}
}

View File

@@ -0,0 +1,555 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using TrendCtrlII;
using AR;
using System.Data.SqlTypes;
using System.Diagnostics.Eventing.Reader;
using System.Data.Linq;
namespace vmsnet
{
public partial class Frm_trend_Real
{
private string lasttime = "";
private DateTime EndDate = DateTime.Now;
private bool init = false;
private HMI.DispCtrl DispCtrl1;
readonly ScottPlot.WinForms.FormsPlot formsPlot1;
ScottPlot.Plottables.Scatter[] Streamer1;
List<float>[] dataVolt = null;
List<double>[] dataTime = null;
short voltlimit = 0;
short timelimit = 10;
public Frm_trend_Real(HMI.DispCtrl dispctrl)
{
// 디자이너에서 이 호출이 필요합니다.
InitializeComponent();
// InitializeComponent() 호출 뒤에 초기화 코드를 추가하세요.
//현재데이터베이스를 복제한다.
MakeTempDatabase();
formsPlot1 = new ScottPlot.WinForms.FormsPlot() { Dock = DockStyle.Fill };
formsPlot1.MouseDown += FormsPlot1_MouseDown;
formsPlot1.MouseUp += FormsPlot1_MouseUp;
formsPlot1.MouseMove += FormsPlot1_MouseMove;
CrossHair = formsPlot1.Plot.Add.Crosshair(0, 0);
CrossHair.TextColor = ScottPlot.Colors.White;
CrossHair.TextBackgroundColor = CrossHair.HorizontalLine.Color;
formsPlot1.Plot.YLabel("VOLTAGE");
formsPlot1.Plot.XLabel("COUNT");
formsPlot1.Plot.Axes.Bottom.MinimumSize = PUB.TREND.graph_bottom_minsize;
this.formsPlot1.Plot.ShowLegend();
formsPlot1.Plot.Axes.DateTimeTicksBottom();
this.formsPlot1.Plot.Axes.ContinuouslyAutoscale = true;
this.formsPlot1.Plot.RenderManager.RenderStarting += (s1, e1) =>
{
ScottPlot.Tick[] ticks = formsPlot1.Plot.Axes.Bottom.TickGenerator.Ticks;
for (int i = 0; i < ticks.Length; i++)
{
DateTime dt = DateTime.FromOADate(ticks[i].Position);
string label = $"{dt:yy-MM-dd\nHH:mm:ss}";
ticks[i] = new ScottPlot.Tick(ticks[i].Position, label);
}
};
Panel2.Controls.Clear();
this.Panel2.Controls.Add(this.formsPlot1);
////그룹데이터목록
this.cmb_tanks.Items.Clear();
for (int i = 0; i <= dispctrl.GROUPS.Length - 1; i++)
{
var grp = dispctrl.GROUPS[i];
this.cmb_tanks.Items.Add(grp.);
}
DispCtrl1 = dispctrl;
PUB.RemoteCommandEvent += Pub_RemoteCommandEvent;
Refresh_전해조목록();
if (this.cmb_tanks.Items.Count > 0)
this.cmb_tanks.SelectedIndex = 0;
Streamer1 = new ScottPlot.Plottables.Scatter[0];
dataVolt = new List<float>[0];
dataTime = new List<double>[0];
}
public void Frm_trend_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
{
saveviewSetting();
PUB.RemoteCommandEvent -= Pub_RemoteCommandEvent;
formsPlot1.MouseDown -= FormsPlot1_MouseDown;
formsPlot1.MouseUp -= FormsPlot1_MouseUp;
formsPlot1.MouseMove -= FormsPlot1_MouseMove;
Timer1.Stop();
}
void MakeTempDatabase()
{
//현재데이터베이스를 복제한다.
this.documentElement1.Clear();
this.documentElement1.GRP.Merge(PUB.DS.GRP);
this.documentElement1.CHANNEL.Merge(PUB.DS.CHANNEL);
this.documentElement1.AcceptChanges();
this.ds1.Clear();
this.ds1.AcceptChanges();
}
private void Refresh_전해조목록()
{
this.cmb_tanks.Items.Clear();
var grplist = this.documentElement1.GRP.Where(t => t.USE == 1);
if (grplist.Any() == false)
{
UTIL.MsgE("활성화된 그룹이 없습니다");
return;
}
var namelist = grplist.Select(t => $"[{t.IDX:00}] {t.TITLE}").ToArray();
this.cmb_tanks.Items.AddRange(namelist);
}
public void Frm_trend_Load(System.Object sender, System.EventArgs e)
{
EndDate = DateTime.Now;
////마지막으로 선택한 그룹을 선택해준다.
var selidx0 = (PUB.CONFIG.tvr_selectgroup0); // XMl.Data("trendview", "selectgroup0", "0")
this.cmb_tanks.SelectedIndex = selidx0;
loadviewSetting();
init = true;
Timer1.Start();
}
private void Pub_RemoteCommandEvent(object sender, RemoteCommand e)
{
if (e.Command == rCommand.ValueUpdate)
{
//스트리머,데이터,선택된 채널 정보가 있어야 업데이트 가능하다
if (e.Data != null && this.Streamer1 != null && this.selectchlist.Any())
{
var data = e.Data as List<NotifyData>;
//선택된 채널의 정보만 사용
var recvdatas = data.Where(t => selectchlist.Contains(t.chno)).Select(t => t);
if (recvdatas.Any() == false) return; //대상채널데이터가 없다.
//받은데이터를 화면에 추가한다.
foreach (var newdata in recvdatas)
{
var ch = newdata.chno - 1;
var val = newdata.value;
var time = newdata.time;
//자료가없거나 스트리머가 없는 경우
if (ch >= this.Streamer1.Length || this.Streamer1[ch] == null) continue;
float value = 0;
if (PUB.CONFIG.datadiv != 0 && PUB.CONFIG.datadiv != 1)
value = (newdata.value) / PUB.CONFIG.datadiv;
else
value = (newdata.value);
//채널정보를 통해서 소수점위치와 옾셋값을 가져온다
if (newdata.decpos > 0) value = (float)(value / Math.Pow(10, newdata.decpos));
//최종옵셋
value += newdata.offset;
//데이터 추가
if (this.Streamer1[ch].IsVisible)
{
var v_time = DateTime.Parse(time);
this.dataTime[ch].Add(v_time.ToOADate());
this.dataVolt[ch].Add(value);
var mintime = DateTime.FromOADate(dataTime[ch].First());
var maxtime = DateTime.FromOADate(dataTime[ch].Last());
var ts = (maxtime - mintime);
if (ts.TotalMinutes >= this.timelimit)
{
//10개지운다
if (dataTime[ch].Count > 10)
{
dataTime[ch].RemoveRange(0, 10);
dataVolt[ch].RemoveRange(0, 10);
}
}
}
}
this.BeginInvoke(new Action(() =>
{
if (voltlimit != 0) formsPlot1.Plot.Axes.AutoScaleX();
this.formsPlot1.Refresh();
}));
}
}
}
#region "scott plot mouse event"
ScottPlot.Plottables.Crosshair CrossHair;
ScottPlot.Plottables.VerticalLine[] CursorLine;
private ScottPlot.Plottables.AxisLine GetLineUnderMouse(float x, float y)
{
ScottPlot.CoordinateRect rect = formsPlot1.Plot.GetCoordinateRect(x, y, radius: 10);
foreach (var axLine in formsPlot1.Plot.GetPlottables<ScottPlot.Plottables.AxisLine>().Reverse())
{
if (axLine.IsUnderMouse(rect))
return axLine;
}
return null;
}
private void FormsPlot1_MouseDown(object sender, MouseEventArgs e)
{
var lineUnderMouse = GetLineUnderMouse(e.X, e.Y);
if (lineUnderMouse != null)
{
PlottableBeingDragged = lineUnderMouse;
formsPlot1.Interaction.Disable(); // disable panning while dragging
}
}
private void FormsPlot1_MouseUp(object sender, MouseEventArgs e)
{
PlottableBeingDragged = null;
formsPlot1.Interaction.Enable(); // enable panning again
formsPlot1.Refresh();
}
ScottPlot.Plottables.AxisLine PlottableBeingDragged = null;
private void FormsPlot1_MouseMove(object sender, MouseEventArgs e)
{
//update cross line
ScottPlot.Pixel mousePixel = new ScottPlot.Pixel(e.X, e.Y);
ScottPlot.Coordinates mouseCoordinates = formsPlot1.Plot.GetCoordinates(mousePixel);
if (mouseCoordinates.X is double.NaN || mouseCoordinates.Y is double.NaN ||
mouseCoordinates.X is double.PositiveInfinity || mouseCoordinates.Y is double.PositiveInfinity ||
mouseCoordinates.X is double.NegativeInfinity || mouseCoordinates.Y is double.NegativeInfinity)
{
return;
}
if (CrossHair != null)
{
CrossHair.Position = mouseCoordinates;
var time = DateTime.FromOADate(mouseCoordinates.X);
CrossHair.VerticalLine.Text = $"{time:yy-MM-dd\nHH:mm:ss}";
CrossHair.HorizontalLine.Text = $"{mouseCoordinates.Y:N2}v";
formsPlot1.Refresh();
}
// this rectangle is the area around the mouse in coordinate units
ScottPlot.CoordinateRect rect = formsPlot1.Plot.GetCoordinateRect(e.X, e.Y, radius: 10);
if (PlottableBeingDragged is null)
{
// set cursor based on what's beneath the plottable
var lineUnderMouse = GetLineUnderMouse(e.X, e.Y);
if (lineUnderMouse is null) Cursor = Cursors.Default;
else if (lineUnderMouse.IsDraggable && lineUnderMouse is ScottPlot.Plottables.VerticalLine) Cursor = Cursors.SizeWE;
else if (lineUnderMouse.IsDraggable && lineUnderMouse is ScottPlot.Plottables.HorizontalLine) Cursor = Cursors.SizeNS;
}
else
{
// update the position of the plottable being dragged
if (PlottableBeingDragged is ScottPlot.Plottables.HorizontalLine hl)
{
hl.Y = rect.VerticalCenter;
hl.Text = $"{hl.Y:0.00}v";
}
else if (PlottableBeingDragged is ScottPlot.Plottables.VerticalLine vl)
{
vl.X = rect.HorizontalCenter;
var time = DateTime.FromOADate(vl.X);
//vl.Text = $"{vl.X:0.00}";
vl.Text = $"{time:yy-MM-dd\nHH:mm:ss}";
}
formsPlot1.Refresh();
}
}
#endregion
//그룹이 선택된 경우
public void cmb_group_SelectedIndexChanged(System.Object sender, System.EventArgs e)
{
if (cmb_tanks.SelectedIndex < 0) return;
if (System.Diagnostics.Debugger.IsAttached) Console.WriteLine($"grp selectedindex val={cmb_tanks.SelectedIndex}");
//현재등록된 목록을 모두 삭제
this.ds1.channel.Clear();
this.formsPlot1.Plot.Remove<ScottPlot.Plottables.DataStreamer>(); //데이터스트림삭제
this.formsPlot1.Refresh();
var grpName = cmb_tanks.Text.Substring(4).Trim();
var grpNo = int.Parse(cmb_tanks.Text.Substring(1, 2));
var grpdr = this.documentElement1.GRP.Where(t => t.TITLE.Equals(grpName)).FirstOrDefault();
if (grpdr == null) return;
var chlist = this.documentElement1.CHANNEL.Where(t => t.GIDX == grpdr.IDX);
if (chlist.Any() == false) return;
// 미리저장된 목록을 확인한다.
var chstr = "";
if (grpNo == 0) chstr = PUB.CONFIG.grp0chlist;
else if (grpNo == 1) chstr = PUB.CONFIG.grp1chlist;
else if (grpNo == 2) chstr = PUB.CONFIG.grp2chlist;
else if (grpNo == 3) chstr = PUB.CONFIG.grp3chlist;
else if (grpNo == 4) chstr = PUB.CONFIG.grp4chlist;
else if (grpNo == 5) chstr = PUB.CONFIG.grp5chlist;
else if (grpNo == 6) chstr = PUB.CONFIG.grp6chlist;
else if (grpNo == 7) chstr = PUB.CONFIG.grp7chlist;
else if (grpNo == 8) chstr = PUB.CONFIG.grp8chlist;
else if (grpNo == 9) chstr = PUB.CONFIG.grp9chlist;
var chbuf = chstr.Split((char[])(new[] { ',' }), StringSplitOptions.RemoveEmptyEntries);
//목록은 추가하지만 스트립을 추가하지 않으니 최초 선택시에는 데이터가 나오지 않는다.
//사용자는 채널 선택을 사용해야 데이터가 보인다.
this.ds1.channel.Clear();
this.selectchlist.Clear();
foreach (var dr in chlist)
{
var newdr = ds1.channel.NewchannelRow();
newdr.idx = dr.IDX;
newdr.use = chbuf.Contains(dr.IDX.ToString()) ? true : false;
newdr.c1 = "";
newdr.c2 = "";
newdr.cname = dr.TITLE;
newdr.cc = dr.COLOR;
ds1.channel.AddchannelRow(newdr);
}
ds1.channel.AcceptChanges();
formsPlot1.Refresh();
}
public void ToolStripButton1_Click_1(object sender, EventArgs e)
{
string dir = System.IO.Path.Combine(PUB.CONFIG.GetDatabasePath(), "DataBase", "volt");
UTIL.RunExplorer(dir);
}
private void loadviewSetting()
{
cmb_volt.SelectedIndex = (PUB.CONFIG.cell_voltindex); // Xml.Data("rtlview", "voltindex", "1")
cmb_time.SelectedIndex = (PUB.CONFIG.cell_timeindex); // XMl.Data("rtlview", "timeindex", "0")
}
private void saveviewSetting()
{
PUB.CONFIG.cell_voltindex = (cmb_volt.SelectedIndex);
PUB.CONFIG.cell_timeindex = (cmb_time.SelectedIndex);
PUB.CONFIG.Save();
}
public void bs_grp_CurrentChanged(object sender, EventArgs e)
{
////사용자가 그룹을 선택하면 해당 그룹에 연결된 채널목록을 가지고 사용 데이터 그룹을 결정함
}
/// <summary>
/// 1부터시작하는 채널의 번호입니다.(인덱스가 아님)
/// 채널선택화면에서 선택된 채널 번호만 들어있다.
/// docuementElement1 에는 모든 그룹/채널 정보가 들어있다
/// </summary>
List<int> selectchlist = new List<int>();
public void btSelectCH_Click(object sender, EventArgs e)
{
var grpName = cmb_tanks.Text.Substring(4).Trim();
var grpNo = int.Parse(cmb_tanks.Text.Substring(1, 2));
//현재선택된 그룹의 채널목록을 추출해야한다.
if (grpName.isEmpty())
{
UTIL.MsgE("채널 그룹을 선택하세요");
return;
}
var drGrp = documentElement1.GRP.Where(t => t.TITLE == grpName).FirstOrDefault();
if (drGrp == null)
{
UTIL.MsgE("선택된 채널 그룹 정보가 없습니다");
return;
}
//채널목록을 확인한다.
var chrows = documentElement1.CHANNEL.Where(t => t.GIDX == drGrp.IDX);
if (chrows.Any() == false)
{
UTIL.MsgE("해당 그룹에 등록된 채널정보가 없습니다");
return;
}
//현재 등록된 채널정보를 토대로 데이터를 선택한다
using (var f = new Frm_SelectCH(ds1.channel))
{
if (f.ShowDialog() == DialogResult.OK)
{
//현재등록된 목록을 모두 삭제
this.formsPlot1.Plot.Remove<ScottPlot.Plottables.Scatter>(); //데이터스트림삭제
this.formsPlot1.Refresh();
this.selectchlist.Clear();
//기존에 선택된 자료 선택하제
foreach (var item in ds1.channel.Where(t => t.use))
{
item.use = false;
}
ds1.channel.AcceptChanges();
foreach (ListViewItem item in f.CheckedListBox1.Items) //선택된 목록만 가져온다
{
int idx = int.Parse(item.Tag.ToString()); //.SubItems(0).Text)
//지정된 플롯의 표시여부를 변경한다.
if (this.Streamer1.Length < idx)
{
Array.Resize(ref Streamer1, idx);
Array.Resize(ref dataVolt, idx);
Array.Resize(ref dataTime, idx);
}
if (dataTime[idx - 1] == null) dataTime[idx - 1] = new List<double>();
if (dataVolt[idx - 1] == null) dataVolt[idx - 1] = new List<float>();
if (Streamer1[idx - 1] != null) this.Streamer1[idx - 1] = null;
Streamer1[idx - 1] = this.formsPlot1.Plot.Add.ScatterPoints(dataTime[idx - 1], dataVolt[idx - 1]);
Streamer1[idx - 1].LineWidth = 1;
Streamer1[idx - 1].MarkerSize = 0;
Streamer1[idx - 1].LegendText = $"CH{idx}";
Streamer1[idx - 1].IsVisible = item.Checked;
var dr = ds1.channel.Where(t => t.idx == idx).FirstOrDefault();
if (dr != null)
{
dr.use = item.Checked;
dr.EndEdit();
}
if (item.Checked) selectchlist.Add(idx); //선택채널에 추가한다.
}
ds1.channel.AcceptChanges();
//사용자목록에 저장한다
string chstr = string.Join(",", selectchlist.ToArray());
if (grpNo == 0) PUB.CONFIG.grp0chlist = chstr;
else if (grpNo == 1) PUB.CONFIG.grp1chlist = chstr;
else if (grpNo == 2) PUB.CONFIG.grp2chlist = chstr;
else if (grpNo == 3) PUB.CONFIG.grp3chlist = chstr;
else if (grpNo == 4) PUB.CONFIG.grp4chlist = chstr;
else if (grpNo == 5) PUB.CONFIG.grp5chlist = chstr;
else if (grpNo == 6) PUB.CONFIG.grp6chlist = chstr;
else if (grpNo == 7) PUB.CONFIG.grp7chlist = chstr;
else if (grpNo == 8) PUB.CONFIG.grp8chlist = chstr;
else if (grpNo == 9) PUB.CONFIG.grp9chlist = chstr;
PUB.CONFIG.Save();
if (CrossHair == null)
{
CrossHair = formsPlot1.Plot.Add.Crosshair(0, 0);
CrossHair.TextColor = ScottPlot.Colors.White;
CrossHair.TextBackgroundColor = CrossHair.HorizontalLine.Color;
}
formsPlot1.Plot.Axes.ContinuouslyAutoscale = true;
this.formsPlot1.Refresh();
}
}
}
public void Timer1_Tick(object sender, EventArgs e)
{
}
private void Panel1_Paint(object sender, PaintEventArgs e)
{
}
private void cmb_volt_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmb_volt.SelectedIndex < 0) return;
if (cmb_volt.SelectedIndex == 0) voltlimit = 0;
else voltlimit = short.Parse(this.cmb_volt.Text.Replace("v", ""));
if (this.formsPlot1 != null)
{
if (voltlimit == 0)
this.formsPlot1.Plot.Axes.ContinuouslyAutoscale = true;
else
{
this.formsPlot1.Plot.Axes.ContinuouslyAutoscale = false;
this.formsPlot1.Plot.Axes.SetLimitsY(0, voltlimit);
}
}
}
private void cmb_time_SelectedIndexChanged_1(object sender, EventArgs e)
{
if (cmb_time.SelectedIndex < 0) return;
timelimit = short.Parse(this.cmb_time.Text.Replace("분", ""));
}
private void btConfig_Click(object sender, EventArgs e)
{
if (UTIL.ShowPropertyDialog(PUB.TREND) == DialogResult.OK)
{
PUB.TREND.Save();
formsPlot1.Plot.Axes.Bottom.MinimumSize = PUB.TREND.graph_bottom_minsize;
if (PUB.TREND.y_scale_auto)
formsPlot1.Plot.Axes.AutoScaleY();
else
formsPlot1.Plot.Axes.SetLimitsY(PUB.TREND.graph_y_start, PUB.TREND.graph_y_end);
formsPlot1.Refresh();
}
}
}
}

View File

@@ -0,0 +1,398 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="ToolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>176, 17</value>
</metadata>
<metadata name="bsCHList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>476, 17</value>
</metadata>
<metadata name="documentElement1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="Timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>385, 17</value>
</metadata>
<metadata name="ds1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>577, 17</value>
</metadata>
<metadata name="ToolStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>650, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>81</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA
AABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcrvQCHK70BByu
9AYcrvQKHK70DByu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu
9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu
9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9AwcrvQKHK70Bxyu9AQcrvQCAAAAAByu
9AIcrvQGHK70DByu9BUcrvQdHK70Ixyu9CYcrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu
9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu
9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jhyu9CMcrvQdHK70FRyu
9AwcrvQGHK70Ahyu9AMcrvQMHK70GRyu9CocrvQ7HK70Rhyu9EwcrvROHK70Thyu9E4crvROHK70Thyu
9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu
9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70TRyu
9EYcrvQ7HK70Kxyu9BkcrvQMHK70BByu9AUcrvQSHK70Jwuh7VYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ
6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ
6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ
6WYAmelmAJnpZgCZ6WYAmelmCqDtWByu9CgcrvQTHK70Bhyu9AYcrvQWHK70Lgmi7nEYsvzXHLb//xy2
//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2
//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2
//8ctv//HLb//xy2//8ctv//HLb//xy2//8Zs/3fC6PweRyu9C4crvQWHK70Bxyu9AYcrvQUHK70Kxex
+8Actv//HLb//x23//8et///ILj//yK6//8lu///Kb3//yzA//8wwv//NcT//znH//89yv//Qcv//0bN
//9Kz///TdH//1HS//9T1P//V9X//1nW//9X1f//U9T//1HS//9N0f//Ss///0bN//9By///Pcr//znH
//81xP//MML//yzA//8pvf//Jbv//yK6//8guP//Hrf//xy2//8ctv//GbP81Ryu9CwcrvQVHK70Bhyu
9AQcrvQPHK70IBu1/tUctv//HLb//x63//8nuv//JLv//ym9//8uwP//M8P//zrH//9By///R87//0/R
//9X1f//Xdj//2Tb//9r3f//cd///3bi//974///f+X//4Dm//9/5f//e+P//3bi//9x3///a93//2Tb
//9d2P//V9X//0/R//9Hzv//Qcv//zrH//8zw///LsD//ym9//8mu///JLr//x63//8ctv//HLb/8hyu
9CAcrvQQHK70BRyu9AIcrvQIHK70Ehy1/qIctv//HLb//za+//8juf//Irn//yW8//8rv///MML//zbF
//89yf//RM3//0rQ//9S0///Wdb//1/Z//9m3P//a97//3Hg//904v//d+L//3jk//934v//dOL//3Hg
//9r3v//Ztz//1/Z//9Z1v//UtP//0rQ//9Ezf//Pcn//zbF//8wwv//K7///yW8//8iuf//Mr7//x23
//8ctv//HLb/xRyu9BIcrvQIHK70Ahyu9AEcrvQEHK70CBy0/C8ctv/8HLb//1PJ//8kuv//Ibn//yW7
//8qv///MMH//zXE//87yP//Qsv//0nP//9Q0///Vtb//13Y//9j2v//ad3//23e//9x4P//c+H//3Ti
//9z4f//ceD//23e//9p3f//Y9r//13Y//9W1v//UNP//0nP//9Cy///O8j//zXE//8wwf//Kr///yW7
//8iuf//Q8P//yO5//8ctv//HLX+TByu9AgcrvQEHK70AQAAAAAcrvQBHK70Ahyu9AMctv+bHLb//0/H
//83wP//Irn//yS7//8ovf//LsD//zTE//86yP//QMv//0bO//9N0f//VNT//1nW//9f2f//ZNv//2nd
//9r3v//bd7//27g//9t3v//a97//2nd//9k2///X9n//1nW//9U1P//TdH//0bO//9Ay///Osj//zTE
//8uwP//KL3//yS7//8lu///ac///x+4//8ctv++HK70Axyu9AIcrvQBAAAAAAAAAAAAAAAAAAAAAAAA
AAActv8bHLb/9iS4//9mz///I7r//yK6//8nvf//LL///zLC//83xf//Pcn//0PN//9K0P//UNP//1XV
//9a1///X9n//2Pa//9r3f//zvT//+37//+w7f//Ztz//2Pa//9f2f//Wtf//1XV//9Q0///StD//0PN
//89yf//N8X//zLC//8sv///J73//yS6//89wf//Usn//xy2//8ctv82AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAHLb/jRy2//9Vyv//OMD//yO5//8lvP//Kr///y7B//80xP//Osj//0DL
//9Gzf//StD//1DT//9V1f//Wdb//13Y//+f6P//////////////////dN7//13Y//9Z1v//VdX//1DT
//9K0P//Rs3//0DL//86yP//NMT//y7B//8qv///Jbz//ya7//9q0P//JLn//xy2/64AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Ehy2//Mluf//aM///yS6//8juv//J73//yy/
//8xwv//NsX//zvI//9By///Rs7//0rQ//9Q0///VNT//1bW//+T5P/////////////7/v//adr//1bW
//9U1P//UNP//0rQ//9Gzv//Qcv//zvI//82xf//McL//yy///8nvf//JLr//z7C//9SyP//HLb//By2
/yoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/34ctv//VMr//zrA
//8juf//Jbz//ym9//8uwP//MsL//zfF//88yf//Qcv//0bN//9K0P//TdH//1DT//9U1P//nuf//8fx
//+C4P//UtP//1DT//9N0f//StD//0bN//9By///PMn//zfF//8ywv//LsD//ym9//8lvP//Jrv//2rQ
//8kuf//HLb/ogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2
/wwctv/tJLn//2nP//8nu///Jrv//yq9//8twP//MsL//zbE//87x///P8n//0TM//9Izf//S8///03Q
//9P0f//UdH//1HS//9R0f//T9H//03Q//9Lz///SM3//0TM//8/yf//O8f//zbE//8ywv//LcD//yq9
//8nu///QsL//1HI//8ctv/5HLb/IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAActv9yHLb//1TJ//8/wv//J7v//yq8//8uvv//MsH//zXD//86xP//Psf//0LK
//9Fy///SMz//0rN//9Mzv//Tc///07P//9Nz///TM7//0rN//9IzP//Rcv//0LK//8+x///OsT//zXD
//8ywf//Lr7//yq8//8svP//bdH//yS5//8ctv+TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv8GHLb/5CS4//9s0f//Lbz//yy8//8vvf//Mr///zXC
//85w///PcX//0DI//9Dyf//Rsr//0nL//9Ozf//1fP///n9//+K3v//Ssz//0nL//9Gyv//Q8n//0DI
//89xf//OcP//zXC//8yv///L73//yy8//9GxP//UMj//xy2//Mctv8YAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Zhy2//9Vyf//RcP//y68
//8wvf//Mr7//zbA//85wf//PMP//0DE//9Cx///RMf//0bJ//9w1f/////////////Q8f//R8n//0bJ
//9Ex///Qsf//0DE//88w///OcH//zbA//8yvv//ML3//zK+//9w0v//I7n//xy2/4cAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Axy2
/9siuP//b9H//zW+//8yvv//NL///zbA//84wv//O8L//z7D//9Axf//QsX//0TH//9x1f//////////
///U8v//Rcj//0TH//9Cxf//QMX//z7D//87wv//OML//zbA//80v///Mr7//03F//9PyP//HLb/7Ry2
/xIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAABy2/1cctv//VMn//0zF//81vv//Nr///ze///85wP//O8H//zzC//8/w///QcT//0LE
//9v0//////////////T8v//Q8X//0LE//9BxP//P8P//zzC//87wf//OcD//ze///82v///OMD//3LS
//8guP//HLb/eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/wMctv/PIrj//3TT//88wP//OsD//zvA//88wf//PsL//z/C
//9Aw///QsP//0PD//9w0//////////////T8v//RMX//0PD//9Cw///QMP//z/C//8+wv//PMH//zvA
//87wP//VMn//1DI//8ctv/nHLb/DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv9OHLb//1PJ//9Vyf//PsD//z7B
//8/wf//QMH//0HC//9Cwv//Q8P//0PD//9w0v/////////////T8f//RMP//0PD//9Dw///QsL//0HC
//9Awf//P8H//z7B//9Bwv//d9X//x+3//8ctv9sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/xiK4
//961f//RsT//0LC//9Cwv//Q8P//0TD//9Fw///RcP//0bE//9x0//////////////U8f//RsT//0bE
//9Fw///RcP//0TD//9Dw///QsL//0PC//9dzP//Ucj//xy2/94ctv8GAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAHLb/Pxy2//9Vyf//Xs3//0nE//9IxP//SMT//0jE//9IxP//ScT//0nF//900///////////
///V8v//SsX//0nF//9JxP//SMT//0jE//9IxP//SMT//0zH//991f//H7f//xy2/10AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/7oiuP//ftb//1LI//9Ox///Tsf//07H//9Ox///Tsf//07H
//931P/////////////W8v//Tsf//07H//9Ox///Tsf//07H//9Ox///Tsf//2bP//9RyP//HLb/1Ry2
/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/zMctv//Vsn//2jP//9Uyf//U8n//1PJ
//9Tyf//U8n//1PJ//971v/////////////X8v//U8n//1PJ//9Tyf//U8n//1PJ//9Tyf//V8r//4HY
//8ft///HLb/UQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv+rIbj//4XZ
//9dzP//Wsv//1rL//9ay///Wsv//1rL//+B1//////////////Y8///Wsv//1rL//9ay///Wsv//1rL
//9ay///cdL//1LJ//8ctv/JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAActv8nHLb//FfK//900///Yc3//2DN//9gzf//YM3//2DN//+F2f/////////////a8///YM3//2DN
//9gzf//YM3//2DN//9kzv//h9n//x+3//8ctv9CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAHLb/nB+3//+L2///atD//2bP//9mz///Zs///2bP//+K2v//////////
///b9P//Zs///2bP//9mz///Zs///2fP//981f//Usn//xy2/70AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Gxy2//lYyv//f9b//23R//9t0f//bdH//23R
//+P3P/////////////d9P//bdH//23R//9t0f//bdH//3DR//+M2v//Hrf//xy2/zYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/40ft///ktz//3bU
//9z0///c9P//3PT//+U3f/////////////e9f//c9P//3PT//9z0///c9P//4bZ//9SyP//HLb/rgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2
/xUctv/zWMr//4ra//961f//etX//3rV//+Z3//////////////g9f//etX//3rV//961f//fdX//5Hc
//8et//8HLb/KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAActv+BH7f//5be//+C2P//gNf//4DX//+Q3P///v/////////Q8P//gNf//4DX
//+A1///kd3//1TJ//8ctv+iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv8MHLb/7VnK//+V3f//htn//4bZ//+G2f//m+D//6/m
//+K2v//htn//4bZ//+J2f//lt3//x63//kctv8hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/ciC3//+a3///j9z//43b
//+N2///jdv//43b//+N2///jdv//43b//+b4P//VMn//xy2/5MAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Bhy2
/+RZyv//n+H//5Pd//+T3f//k93//5Pd//+T3f//k93//5bd//+a3///Hrf/8xy2/xsAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAABy2/2Met///oOH//5vg//+a3///mt///5rf//+a3///mt///6bj//9Uyf//HLb/hwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/wMctv/YWcr//6rk//+f4f//n+H//5/h//+f4f//ouH//57h
//8et//tHLb/EgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv9UHrf//6Ti//+m4///peL//6Xi
//+l4v//r+X//1LI//8ctv97AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/zFrL
//+z6P//quX//6rl//+s5f//oeL//x63/+cctv8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAHLb/RR63//+p5P//tuj//7Pn//+96v//VMn//xy2/2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/71GxP//wuz//8Xt//+S3f//HLb/3hy2/wYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/zYctv//Mr3//1HI//8iuP//HLb/YAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv+HHLb//xy2
//8ctv+lHLb/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAHLb/Jxy2/zYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP////////z9gAAAAAAB/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAA
AAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9gAAAAAAB/P3wAAAAAA/8/fgAAAAAH/z9+AAAAAAf
/P38AAAAAD/8/fwAAAAAP/z9/gAAAAB//P3+AAAAAH/8/f8AAAAA//z9/wAAAAD//P3/gAAAAf/8/f+A
AAAB//z9/8AAAAP//P3/4AAAA//8/f/gAAAH//z9//AAAAf//P3/8AAAD//8/f/4AAAf//z9//gAAB//
/P3//AAAP//8/f/8AAA///z9//4AAH///P3//gAAf//8/f//AAD///z9//8AAP///P3//4AB///8/f//
gAH///z9///AA////P3//8AD///8/f//4Af///z9///wB////P3///AP///8/f//+A////z9///4H///
/P3///wf///8/f///n////z9/////////P3////////8/SgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAHK70ARuu9AIcrvQEG670BByu9AQbrvQEHK70BBuu9AQcrvQEG670BByu
9AQbrvQEHK70BBuu9AQcrvQEG670BByu9AQbrvQEHK70BBuu9AQcrvQEG670BByu9AQbrvQEHK70BBuu
9AQcrvQEG670BByu9AMbrvQBAAAAABuu9AIbrvQIG670Ehuu9BobrvQeG670Hhuu9B4brvQeG670Hhuu
9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu
9B4brvQeG670Hhuu9B4brvQaG670Ehuu9AgbrvQCG670Bxyu9BgVqPE+EqfwThKn8FUSp/BWEqfwVhKn
8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn
8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8E4UqPE/G670GRyu9AgbrvQLG670JAuk8IARq/bDEqz3zBKs
98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs
98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqv3xQyk8YYbrvQkG670Cxuu9AocrvQgGbP92hy2
//8et///Ibj//yW7//8qvv//MsP//znG//9Cy///SM7//1HS//9X1f//Xtf//2PZ//9l2///Ydn//1vW
//9W1P//TtD//0fO//8+yf//N8X//y/B//8pvf//I7r//yC4//8ctv//GrT96Ruu9CEcrvQKG670BRuu
9BMbtf7MG7b//yq6//8juf//KL3//y/B//85x///Qsz//07R//9Y1f//Ytr//2vd//9z4f//eOL//3rk
//934v//cN///2nd//9e2P//VdT//0nP//9Ayv//NcT//y3A//8lu///Krv//xy2//8btv/iG670Exuu
9AYbrvQBHK70BRuz+18ctv/zRMT//yS6//8mvP//Lb///zbF//8/yv//Ss///1PU//9d2P//Zdv//2ze
//9w3///ceD//2/f//9q3f//Y9r//1nW//9R0///Rc3//zzJ//8ywv//K7///yS6//9Awv//H7f/+Byz
/HAbrvQFHK70AQAAAAAbrvQBG7L6GBu2/70+wf//M7///yS7//8qvv//NMP//zvI//9Gzv//T9L//1jW
//9f2f//Z9v//5fn//+17v//eOD//2Pa//9d2P//VNT//03R//9CzP//Osf//zDB//8pvf//Kbv//03H
//8ctv/LG7L6Ihuu9AEAAAAAAAAAAAAAAAAAAAAAHLb/Qym6//xHxP//I7r//ye9//8vwf//NsX//0DK
//9Hzv//T9L//1bV//9w3P//3fb///7+//+f6P//Wdb//1TU//9M0f//Rc3//zzJ//80xP//K7///ya8
//8/wv//Nr///hu2/1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv8EHLb/w0bE//8tvP//JLv//yu+
//8xwv//Osf//0HL//9Iz///TtH//1nV//+h5///yfH//3Tc//9R0///TdH//0XN//8/yv//NsX//zDB
//8ovf//Jbv//07G//8juP/VG7b/CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv9HH7f/61HH
//8pu///K73//zDA//83xP//Pcf//0TL//9Jzf//TM///0/Q//9P0P//TtD//0vO//9IzP//Qcr//zzG
//80w///LsD//ym8//9Dw///Nb7/8hy2/1YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABu2
/w4btv+sQcL//zvB//8svP//ML7//zbC//88xP//Qcn//0XK//9KzP//id7//6fm//9Y0P//SMv//0TK
//8/x///OsT//zTB//8vvv//Mb3//1DH//8dtv+6G7b/FgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAABy2/y4puv/3Tsb//zC8//8yvv//NsD//zrC//9AxP//Qsb//1PM///P8f//7/r//3TW
//9Ex///Qsb//z7D//85wf//NL///zG9//9Jxf//N7//+xu2/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAG7b/ARy2/6xIxP//PsH//zS+//83v///OsH//z3C//9AxP//Ucn//8/w
///w+v//c9T//0LE//9Aw///PML//znA//82v///Nb///1PI//8iuP+/G7b/BAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG7b/OB62/+Fcy///PsH//zzA//8+wf//QML//0HC
//9SyP//z/D///D6//9z0///QsP//0HC//8/wf//PcH//zzA//9UyP//M77/6Ry2/0UAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv8JG7b/mUbE//9Rx///QMH//0HC
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
rEHwD6xB+B+sQfgfrEH8P6xB/j+sQf5/rEE=
</value>
</data>
</root>

60
cVMS.NET_CS/Dialog/fLog.Designer.cs generated Normal file
View File

@@ -0,0 +1,60 @@
namespace vmsnet
{
partial class fLog
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.SuspendLayout();
//
// richTextBox1
//
this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.richTextBox1.Location = new System.Drawing.Point(0, 0);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(776, 524);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "";
//
// fLog
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(776, 524);
this.Controls.Add(this.richTextBox1);
this.Name = "fLog";
this.Text = "fLog";
this.Load += new System.EventHandler(this.fLog_Load);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.RichTextBox richTextBox1;
}
}

View File

@@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace vmsnet
{
public partial class fLog : Form
{
public fLog()
{
InitializeComponent();
PUB.log.RaiseMsg += Log_RaiseMsg;
this.FormClosed += (s1, e1) =>
{
PUB.log.RaiseMsg -= Log_RaiseMsg;
this.Dispose();
};
}
private void Log_RaiseMsg(DateTime LogTime, string TypeStr, string Message)
{
addmsg(Message);
}
void addmsg(string mbox)
{
if (this.richTextBox1.InvokeRequired)
{
this.richTextBox1.BeginInvoke(new Action(() =>
{
this.richTextBox1.AppendText(mbox + "\n");
this.richTextBox1.ScrollToCaret();
}));
}
else
{
this.richTextBox1.AppendText(mbox + "\n");
this.richTextBox1.ScrollToCaret();
}
}
private void fLog_Load(object sender, EventArgs e)
{
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,64 @@
namespace vmsnet
{
partial class fPleaseWait
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
//
this.label1.BackColor = System.Drawing.Color.White;
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
this.label1.Font = new System.Drawing.Font("맑은 고딕", 30F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.label1.Location = new System.Drawing.Point(0, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(800, 450);
this.label1.TabIndex = 0;
this.label1.Text = "잠시만 기다려 주세요";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// fPleaseWait
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.label1);
this.DoubleBuffered = true;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "fPleaseWait";
this.Text = "f";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Label label1;
}
}

View File

@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace vmsnet
{
public partial class fPleaseWait : Form
{
public fPleaseWait()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

6657
cVMS.NET_CS/DocumentElement.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
namespace vmsnet
{
public partial class DocumentElement
{
}
}

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TableUISettings />
</DataSetUISetting>

View File

@@ -0,0 +1,194 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="DocumentElement" targetNamespace="http://tempuri.org/DocumentElement.xsd" xmlns:mstns="http://tempuri.org/DocumentElement.xsd" xmlns="http://tempuri.org/DocumentElement.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
<DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections />
<Tables />
<Sources />
</DataSource>
</xs:appinfo>
</xs:annotation>
<xs:element name="DocumentElement" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="DocumentElement" msprop:EnableTableAdapterManager="true" msprop:Generator_DataSetName="DocumentElement">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="CHANNEL" msprop:Generator_RowEvHandlerName="CHANNELRowChangeEventHandler" msprop:Generator_RowDeletedName="CHANNELRowDeleted" msprop:Generator_RowDeletingName="CHANNELRowDeleting" msprop:Generator_RowEvArgName="CHANNELRowChangeEvent" msprop:Generator_TablePropName="CHANNEL" msprop:Generator_RowChangedName="CHANNELRowChanged" msprop:Generator_UserTableName="CHANNEL" msprop:Generator_RowChangingName="CHANNELRowChanging" msprop:Generator_RowClassName="CHANNELRow" msprop:Generator_TableClassName="CHANNELDataTable" msprop:Generator_TableVarName="tableCHANNEL">
<xs:complexType>
<xs:sequence>
<xs:element name="IDX" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" msprop:Generator_ColumnPropNameInTable="IDXColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="IDX" msprop:Generator_UserColumnName="IDX" msprop:Generator_ColumnVarNameInTable="columnIDX" type="xs:int" />
<xs:element name="ENABLE" msprop:Generator_ColumnPropNameInTable="ENABLEColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="ENABLE" msprop:Generator_UserColumnName="ENABLE" msprop:Generator_ColumnVarNameInTable="columnENABLE" type="xs:int" default="0" minOccurs="0" />
<xs:element name="USE" msprop:Generator_ColumnPropNameInTable="USEColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="USE" msprop:Generator_UserColumnName="USE" msprop:Generator_ColumnVarNameInTable="columnUSE" type="xs:int" default="0" minOccurs="0" />
<xs:element name="TITLE" msprop:Generator_ColumnPropNameInTable="TITLEColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="TITLE" msprop:Generator_UserColumnName="TITLE" msprop:Generator_ColumnVarNameInTable="columnTITLE" type="xs:string" default="" minOccurs="0" />
<xs:element name="GIDX" msprop:Generator_ColumnPropNameInTable="GIDXColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="GIDX" msprop:Generator_UserColumnName="GIDX" msprop:Generator_ColumnVarNameInTable="columnGIDX" type="xs:int" default="0" minOccurs="0" />
<xs:element name="MACHINE" msprop:Generator_ColumnPropNameInTable="MACHINEColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="MACHINE" msprop:Generator_UserColumnName="MACHINE" msprop:Generator_ColumnVarNameInTable="columnMACHINE" type="xs:string" default="" minOccurs="0" />
<xs:element name="ALAMTYPE" msprop:Generator_ColumnPropNameInTable="ALAMTYPEColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="ALAMTYPE" msprop:Generator_UserColumnName="ALAMTYPE" msprop:Generator_ColumnVarNameInTable="columnALAMTYPE" type="xs:int" default="0" minOccurs="0" />
<xs:element name="ALAMH" msprop:Generator_ColumnPropNameInTable="ALAMHColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="ALAMH" msprop:Generator_UserColumnName="ALAMH" msprop:Generator_ColumnVarNameInTable="columnALAMH" type="xs:float" default="0" minOccurs="0" />
<xs:element name="ALAML" msprop:Generator_ColumnPropNameInTable="ALAMLColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="ALAML" msprop:Generator_UserColumnName="ALAML" msprop:Generator_ColumnVarNameInTable="columnALAML" type="xs:float" default="0" minOccurs="0" />
<xs:element name="COLOR" msprop:Generator_ColumnPropNameInTable="COLORColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="COLOR" msprop:Generator_UserColumnName="COLOR" msprop:Generator_ColumnVarNameInTable="columnCOLOR" type="xs:int" default="0" minOccurs="0" />
<xs:element name="AUTOH" msprop:Generator_ColumnPropNameInTable="AUTOHColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="AUTOH" msprop:Generator_UserColumnName="AUTOH" msprop:Generator_ColumnVarNameInTable="columnAUTOH" type="xs:float" default="0" minOccurs="0" />
<xs:element name="AUTOL" msprop:Generator_ColumnPropNameInTable="AUTOLColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="AUTOL" msprop:Generator_UserColumnName="AUTOL" msprop:Generator_ColumnVarNameInTable="columnAUTOL" type="xs:float" default="0" minOccurs="0" />
<xs:element name="UNIT" msprop:Generator_ColumnPropNameInTable="UNITColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="UNIT" msprop:Generator_UserColumnName="UNIT" msprop:Generator_ColumnVarNameInTable="columnUNIT" type="xs:string" default="" minOccurs="0" />
<xs:element name="DECPOS" msprop:Generator_ColumnPropNameInTable="DECPOSColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="DECPOS" msprop:Generator_UserColumnName="DECPOS" msprop:Generator_ColumnVarNameInTable="columnDECPOS" type="xs:int" default="0" minOccurs="0" />
<xs:element name="GRPNAME" msprop:Generator_ColumnPropNameInTable="GRPNAMEColumn" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="GRPNAME" msprop:Generator_UserColumnName="GRPNAME" msprop:Generator_ColumnVarNameInTable="columnGRPNAME" type="xs:string" minOccurs="0" />
<xs:element name="IDX_M" msprop:Generator_ColumnPropNameInTable="IDX_MColumn" msprop:nullValue="-1" msprop:Generator_ColumnPropNameInRow="IDX_M" msprop:Generator_UserColumnName="IDX_M" msprop:Generator_ColumnVarNameInTable="columnIDX_M" type="xs:int" minOccurs="0" />
<xs:element name="IDX_U" msprop:Generator_ColumnPropNameInTable="IDX_UColumn" msprop:nullValue="-1" msprop:Generator_ColumnPropNameInRow="IDX_U" msprop:Generator_UserColumnName="IDX_U" msprop:Generator_ColumnVarNameInTable="columnIDX_U" type="xs:int" minOccurs="0" />
<xs:element name="IDX_C" msprop:Generator_ColumnPropNameInTable="IDX_CColumn" msprop:nullValue="-1" msprop:Generator_ColumnPropNameInRow="IDX_C" msprop:Generator_UserColumnName="IDX_C" msprop:Generator_ColumnVarNameInTable="columnIDX_C" type="xs:int" minOccurs="0" />
<xs:element name="VOFFSET" msprop:Generator_ColumnPropNameInTable="VOFFSETColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="VOFFSET" msprop:Generator_UserColumnName="VOFFSET" msprop:Generator_ColumnVarNameInTable="columnVOFFSET" type="xs:float" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DEVICE" msprop:Generator_RowEvHandlerName="DEVICERowChangeEventHandler" msprop:Generator_RowDeletedName="DEVICERowDeleted" msprop:Generator_RowDeletingName="DEVICERowDeleting" msprop:Generator_RowEvArgName="DEVICERowChangeEvent" msprop:Generator_TablePropName="DEVICE" msprop:Generator_RowChangedName="DEVICERowChanged" msprop:Generator_UserTableName="DEVICE" msprop:Generator_RowChangingName="DEVICERowChanging" msprop:Generator_RowClassName="DEVICERow" msprop:Generator_TableClassName="DEVICEDataTable" msprop:Generator_TableVarName="tableDEVICE">
<xs:complexType>
<xs:sequence>
<xs:element name="IDX" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" msprop:Generator_ColumnPropNameInTable="IDXColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="IDX" msprop:Generator_UserColumnName="IDX" msprop:Generator_ColumnVarNameInTable="columnIDX" type="xs:int" />
<xs:element name="USE" msprop:Generator_ColumnPropNameInTable="USEColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="USE" msprop:Generator_UserColumnName="USE" msprop:Generator_ColumnVarNameInTable="columnUSE" type="xs:int" default="0" minOccurs="0" />
<xs:element name="TITLE" msprop:Generator_ColumnPropNameInTable="TITLEColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="TITLE" msprop:Generator_UserColumnName="TITLE" msprop:Generator_ColumnVarNameInTable="columnTITLE" type="xs:string" default="" minOccurs="0" />
<xs:element name="IP" msprop:Generator_ColumnPropNameInTable="IPColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="IP" msprop:Generator_UserColumnName="IP" msprop:Generator_ColumnVarNameInTable="columnIP" type="xs:string" default="" minOccurs="0" />
<xs:element name="CHCOUNT" msprop:Generator_ColumnPropNameInTable="CHCOUNTColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="CHCOUNT" msprop:Generator_UserColumnName="CHCOUNT" msprop:Generator_ColumnVarNameInTable="columnCHCOUNT" type="xs:string" default="" minOccurs="0" />
<xs:element name="KACOMMAND" msprop:Generator_ColumnPropNameInTable="KACOMMANDColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="KACOMMAND" msprop:Generator_UserColumnName="KACOMMAND" msprop:Generator_ColumnVarNameInTable="columnKACOMMAND" type="xs:string" default="" minOccurs="0" />
<xs:element name="CHCOMMAND" msprop:Generator_ColumnPropNameInTable="CHCOMMANDColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="CHCOMMAND" msprop:Generator_UserColumnName="CHCOMMAND" msprop:Generator_ColumnVarNameInTable="columnCHCOMMAND" type="xs:string" default="" minOccurs="0" />
<xs:element name="SNCOMMAND" msprop:Generator_ColumnPropNameInTable="SNCOMMANDColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="SNCOMMAND" msprop:Generator_UserColumnName="SNCOMMAND" msprop:Generator_ColumnVarNameInTable="columnSNCOMMAND" type="xs:string" default="" minOccurs="0" />
<xs:element name="PORT" msprop:Generator_ColumnPropNameInTable="PORTColumn" msprop:nullValue="34150" msprop:Generator_ColumnPropNameInRow="PORT" msprop:Generator_UserColumnName="PORT" msprop:Generator_ColumnVarNameInTable="columnPORT" type="xs:int" default="34150" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GRP" msprop:Generator_RowEvHandlerName="GRPRowChangeEventHandler" msprop:Generator_RowDeletedName="GRPRowDeleted" msprop:Generator_RowDeletingName="GRPRowDeleting" msprop:Generator_RowEvArgName="GRPRowChangeEvent" msprop:Generator_TablePropName="GRP" msprop:Generator_RowChangedName="GRPRowChanged" msprop:Generator_UserTableName="GRP" msprop:Generator_RowChangingName="GRPRowChanging" msprop:Generator_RowClassName="GRPRow" msprop:Generator_TableClassName="GRPDataTable" msprop:Generator_TableVarName="tableGRP">
<xs:complexType>
<xs:sequence>
<xs:element name="IDX" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" msprop:Generator_ColumnPropNameInTable="IDXColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="IDX" msprop:Generator_UserColumnName="IDX" msprop:Generator_ColumnVarNameInTable="columnIDX" type="xs:int" />
<xs:element name="USE" msdata:Caption="ENABLE" msprop:Generator_ColumnPropNameInTable="USEColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="USE" msprop:Generator_UserColumnName="USE" msprop:Generator_ColumnVarNameInTable="columnUSE" type="xs:int" default="0" minOccurs="0" />
<xs:element name="WINDOW" msprop:Generator_ColumnPropNameInTable="WINDOWColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="WINDOW" msprop:Generator_UserColumnName="WINDOW" msprop:Generator_ColumnVarNameInTable="columnWINDOW" type="xs:int" default="0" minOccurs="0" />
<xs:element name="TITLE" msprop:Generator_ColumnPropNameInTable="TITLEColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="TITLE" msprop:Generator_UserColumnName="TITLE" msprop:Generator_ColumnVarNameInTable="columnTITLE" type="xs:string" default="" minOccurs="0" />
<xs:element name="MATRIX" msprop:Generator_ColumnPropNameInTable="MATRIXColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="MATRIX" msprop:Generator_UserColumnName="MATRIX" msprop:Generator_ColumnVarNameInTable="columnMATRIX" type="xs:string" default="" minOccurs="0" />
<xs:element name="POS" msprop:Generator_ColumnPropNameInTable="POSColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="POS" msprop:Generator_UserColumnName="POS" msprop:Generator_ColumnVarNameInTable="columnPOS" type="xs:string" default="" minOccurs="0" />
<xs:element name="SPAN" msprop:Generator_ColumnPropNameInTable="SPANColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="SPAN" msprop:Generator_UserColumnName="SPAN" msprop:Generator_ColumnVarNameInTable="columnSPAN" type="xs:string" default="" minOccurs="0" />
<xs:element name="FONT" msprop:Generator_ColumnPropNameInTable="FONTColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="FONT" msprop:Generator_UserColumnName="FONT" msprop:Generator_ColumnVarNameInTable="columnFONT" type="xs:string" default="" minOccurs="0" />
<xs:element name="ALAMH" msprop:Generator_ColumnPropNameInTable="ALAMHColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="ALAMH" msprop:Generator_UserColumnName="ALAMH" msprop:Generator_ColumnVarNameInTable="columnALAMH" type="xs:float" default="0" minOccurs="0" />
<xs:element name="ALAML" msprop:Generator_ColumnPropNameInTable="ALAMLColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="ALAML" msprop:Generator_UserColumnName="ALAML" msprop:Generator_ColumnVarNameInTable="columnALAML" type="xs:float" default="0" minOccurs="0" />
<xs:element name="KADEVICE" msprop:Generator_ColumnPropNameInTable="KADEVICEColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="KADEVICE" msprop:Generator_UserColumnName="KADEVICE" msprop:Generator_ColumnVarNameInTable="columnKADEVICE" type="xs:string" default="" minOccurs="0" />
<xs:element name="ALAMTYPE" msprop:Generator_ColumnPropNameInTable="ALAMTYPEColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="ALAMTYPE" msprop:Generator_UserColumnName="ALAMTYPE" msprop:Generator_ColumnVarNameInTable="columnALAMTYPE" type="xs:string" default="" minOccurs="0" />
<xs:element name="AUTOH" msprop:Generator_ColumnPropNameInTable="AUTOHColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="AUTOH" msprop:Generator_UserColumnName="AUTOH" msprop:Generator_ColumnVarNameInTable="columnAUTOH" type="xs:float" default="0" minOccurs="0" />
<xs:element name="AUTOL" msprop:Generator_ColumnPropNameInTable="AUTOLColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="AUTOL" msprop:Generator_UserColumnName="AUTOL" msprop:Generator_ColumnVarNameInTable="columnAUTOL" type="xs:float" default="0" minOccurs="0" />
<xs:element name="NBOFF" msprop:Generator_ColumnPropNameInTable="NBOFFColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="NBOFF" msprop:Generator_UserColumnName="NBOFF" msprop:Generator_ColumnVarNameInTable="columnNBOFF" type="xs:float" default="0" minOccurs="0" />
<xs:element name="NBSEQ" msprop:Generator_ColumnPropNameInTable="NBSEQColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="NBSEQ" msprop:Generator_UserColumnName="NBSEQ" msprop:Generator_ColumnVarNameInTable="columnNBSEQ" type="xs:int" default="0" minOccurs="0" />
<xs:element name="NBHH" msprop:Generator_ColumnPropNameInTable="NBHHColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="NBHH" msprop:Generator_UserColumnName="NBHH" msprop:Generator_ColumnVarNameInTable="columnNBHH" type="xs:float" default="0" minOccurs="0" />
<xs:element name="NBH" msprop:Generator_ColumnPropNameInTable="NBHColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="NBH" msprop:Generator_UserColumnName="NBH" msprop:Generator_ColumnVarNameInTable="columnNBH" type="xs:float" default="0" minOccurs="0" />
<xs:element name="NBLL" msprop:Generator_ColumnPropNameInTable="NBLLColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="NBLL" msprop:Generator_UserColumnName="NBLL" msprop:Generator_ColumnVarNameInTable="columnNBLL" type="xs:float" default="0" minOccurs="0" />
<xs:element name="NBL" msprop:Generator_ColumnPropNameInTable="NBLColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="NBL" msprop:Generator_UserColumnName="NBL" msprop:Generator_ColumnVarNameInTable="columnNBL" type="xs:float" default="0" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="NORMAL" msprop:Generator_RowEvHandlerName="NORMALRowChangeEventHandler" msprop:Generator_RowDeletedName="NORMALRowDeleted" msprop:Generator_RowDeletingName="NORMALRowDeleting" msprop:Generator_RowEvArgName="NORMALRowChangeEvent" msprop:Generator_TablePropName="NORMAL" msprop:Generator_RowChangedName="NORMALRowChanged" msprop:Generator_UserTableName="NORMAL" msprop:Generator_RowChangingName="NORMALRowChanging" msprop:Generator_RowClassName="NORMALRow" msprop:Generator_TableClassName="NORMALDataTable" msprop:Generator_TableVarName="tableNORMAL">
<xs:complexType>
<xs:sequence>
<xs:element name="IDX" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" msprop:Generator_ColumnPropNameInTable="IDXColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="IDX" msprop:Generator_UserColumnName="IDX" msprop:Generator_ColumnVarNameInTable="columnIDX" type="xs:int" />
<xs:element name="ALAMH" msprop:Generator_ColumnPropNameInTable="ALAMHColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="ALAMH" msprop:Generator_UserColumnName="ALAMH" msprop:Generator_ColumnVarNameInTable="columnALAMH" type="xs:float" default="0" minOccurs="0" />
<xs:element name="ALAML" msprop:Generator_ColumnPropNameInTable="ALAMLColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="ALAML" msprop:Generator_UserColumnName="ALAML" msprop:Generator_ColumnVarNameInTable="columnALAML" type="xs:float" default="0" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="VIEWGROUP" msprop:Generator_RowEvHandlerName="VIEWGROUPRowChangeEventHandler" msprop:Generator_RowDeletedName="VIEWGROUPRowDeleted" msprop:Generator_RowDeletingName="VIEWGROUPRowDeleting" msprop:Generator_RowEvArgName="VIEWGROUPRowChangeEvent" msprop:Generator_TablePropName="VIEWGROUP" msprop:Generator_RowChangedName="VIEWGROUPRowChanged" msprop:Generator_UserTableName="VIEWGROUP" msprop:Generator_RowChangingName="VIEWGROUPRowChanging" msprop:Generator_RowClassName="VIEWGROUPRow" msprop:Generator_TableClassName="VIEWGROUPDataTable" msprop:Generator_TableVarName="tableVIEWGROUP">
<xs:complexType>
<xs:sequence>
<xs:element name="IDX" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" msprop:Generator_ColumnPropNameInTable="IDXColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="IDX" msprop:Generator_UserColumnName="IDX" msprop:Generator_ColumnVarNameInTable="columnIDX" type="xs:int" />
<xs:element name="GNAME" msdata:Caption="SANGHO" msprop:Generator_ColumnPropNameInTable="GNAMEColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="GNAME" msprop:Generator_UserColumnName="GNAME" msprop:Generator_ColumnVarNameInTable="columnGNAME" type="xs:string" default="" minOccurs="0" />
<xs:element name="TITLE" msdata:Caption="TEL" msprop:Generator_ColumnPropNameInTable="TITLEColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="TITLE" msprop:Generator_UserColumnName="TITLE" msprop:Generator_ColumnVarNameInTable="columnTITLE" type="xs:string" default="" minOccurs="0" />
<xs:element name="VAL" msprop:Generator_ColumnPropNameInTable="VALColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="VAL" msprop:Generator_UserColumnName="VAL" msprop:Generator_ColumnVarNameInTable="columnVAL" type="xs:string" default="" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="WIN" msprop:Generator_RowEvHandlerName="WINRowChangeEventHandler" msprop:Generator_RowDeletedName="WINRowDeleted" msprop:Generator_RowDeletingName="WINRowDeleting" msprop:Generator_RowEvArgName="WINRowChangeEvent" msprop:Generator_TablePropName="WIN" msprop:Generator_RowChangedName="WINRowChanged" msprop:Generator_UserTableName="WIN" msprop:Generator_RowChangingName="WINRowChanging" msprop:Generator_RowClassName="WINRow" msprop:Generator_TableClassName="WINDataTable" msprop:Generator_TableVarName="tableWIN">
<xs:complexType>
<xs:sequence>
<xs:element name="IDX" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" msprop:Generator_ColumnPropNameInTable="IDXColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="IDX" msprop:Generator_UserColumnName="IDX" msprop:Generator_ColumnVarNameInTable="columnIDX" type="xs:int" />
<xs:element name="USE" msprop:Generator_ColumnPropNameInTable="USEColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="USE" msprop:Generator_UserColumnName="USE" msprop:Generator_ColumnVarNameInTable="columnUSE" type="xs:int" default="0" minOccurs="0" />
<xs:element name="TITLE" msprop:Generator_ColumnPropNameInTable="TITLEColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="TITLE" msprop:Generator_UserColumnName="TITLE" msprop:Generator_ColumnVarNameInTable="columnTITLE" type="xs:string" default="" minOccurs="0" />
<xs:element name="MATRIX" msdata:Caption="MACHINE" msprop:Generator_ColumnPropNameInTable="MATRIXColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="MATRIX" msprop:Generator_UserColumnName="MATRIX" msprop:Generator_ColumnVarNameInTable="columnMATRIX" type="xs:string" default="" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ALARM" msprop:Generator_RowEvHandlerName="ALARMRowChangeEventHandler" msprop:Generator_RowDeletedName="ALARMRowDeleted" msprop:Generator_RowDeletingName="ALARMRowDeleting" msprop:Generator_RowEvArgName="ALARMRowChangeEvent" msprop:Generator_TablePropName="ALARM" msprop:Generator_RowChangedName="ALARMRowChanged" msprop:Generator_UserTableName="ALARM" msprop:Generator_RowChangingName="ALARMRowChanging" msprop:Generator_RowClassName="ALARMRow" msprop:Generator_TableClassName="ALARMDataTable" msprop:Generator_TableVarName="tableALARM">
<xs:complexType>
<xs:sequence>
<xs:element name="ATIME" msprop:Generator_ColumnPropNameInTable="ATIMEColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="ATIME" msprop:Generator_UserColumnName="ATIME" msprop:Generator_ColumnVarNameInTable="columnATIME" type="xs:string" default="" />
<xs:element name="CH" msprop:Generator_ColumnPropNameInTable="CHColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="CH" msprop:Generator_UserColumnName="CH" msprop:Generator_ColumnVarNameInTable="columnCH" type="xs:short" default="0" />
<xs:element name="RTYPE" msprop:Generator_ColumnPropNameInTable="RTYPEColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="RTYPE" msprop:Generator_UserColumnName="RTYPE" msprop:Generator_ColumnVarNameInTable="columnRTYPE" type="xs:short" default="0" />
<xs:element name="VOLT" msprop:Generator_ColumnPropNameInTable="VOLTColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="VOLT" msprop:Generator_UserColumnName="VOLT" msprop:Generator_ColumnVarNameInTable="columnVOLT" type="xs:float" default="0" minOccurs="0" />
<xs:element name="ATYPE" msprop:Generator_ColumnPropNameInTable="ATYPEColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="ATYPE" msprop:Generator_UserColumnName="ATYPE" msprop:Generator_ColumnVarNameInTable="columnATYPE" type="xs:short" default="0" minOccurs="0" />
<xs:element name="MAXVOLT" msprop:Generator_ColumnPropNameInTable="MAXVOLTColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="MAXVOLT" msprop:Generator_UserColumnName="MAXVOLT" msprop:Generator_ColumnVarNameInTable="columnMAXVOLT" type="xs:float" default="0" minOccurs="0" />
<xs:element name="MINVOLT" msprop:Generator_ColumnPropNameInTable="MINVOLTColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="MINVOLT" msprop:Generator_UserColumnName="MINVOLT" msprop:Generator_ColumnVarNameInTable="columnMINVOLT" type="xs:float" default="0" minOccurs="0" />
<xs:element name="AM" msprop:Generator_ColumnPropNameInTable="AMColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="AM" msprop:Generator_UserColumnName="AM" msprop:Generator_ColumnVarNameInTable="columnAM" type="xs:string" default="" minOccurs="0" />
<xs:element name="AM2" msprop:Generator_ColumnPropNameInTable="AM2Column" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="AM2" msprop:Generator_UserColumnName="AM2" msprop:Generator_ColumnVarNameInTable="columnAM2" type="xs:string" default="" minOccurs="0" />
<xs:element name="TIME" msprop:Generator_ColumnPropNameInTable="TIMEColumn" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="TIME" msprop:Generator_UserColumnName="TIME" msprop:Generator_ColumnVarNameInTable="columnTIME" type="xs:string" minOccurs="0" />
<xs:element name="RTYPESTR" msprop:Generator_ColumnPropNameInTable="RTYPESTRColumn" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="RTYPESTR" msprop:Generator_UserColumnName="RTYPESTR" msprop:Generator_ColumnVarNameInTable="columnRTYPESTR" type="xs:string" minOccurs="0" />
<xs:element name="ATYPESTR" msprop:Generator_ColumnPropNameInTable="ATYPESTRColumn" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="ATYPESTR" msprop:Generator_UserColumnName="ATYPESTR" msprop:Generator_ColumnVarNameInTable="columnATYPESTR" type="xs:string" minOccurs="0" />
<xs:element name="CHNAME" msprop:Generator_ColumnPropNameInTable="CHNAMEColumn" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="CHNAME" msprop:Generator_UserColumnName="CHNAME" msprop:Generator_ColumnVarNameInTable="columnCHNAME" type="xs:string" minOccurs="0" />
<xs:element name="REMARK" msprop:Generator_ColumnPropNameInTable="REMARKColumn" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="REMARK" msprop:Generator_UserColumnName="REMARK" msprop:Generator_ColumnVarNameInTable="columnREMARK" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="VIEWGROUPR" msprop:Generator_RowEvHandlerName="VIEWGROUPRRowChangeEventHandler" msprop:Generator_RowDeletedName="VIEWGROUPRRowDeleted" msprop:Generator_RowDeletingName="VIEWGROUPRRowDeleting" msprop:Generator_RowEvArgName="VIEWGROUPRRowChangeEvent" msprop:Generator_TablePropName="VIEWGROUPR" msprop:Generator_RowChangedName="VIEWGROUPRRowChanged" msprop:Generator_UserTableName="VIEWGROUPR" msprop:Generator_RowChangingName="VIEWGROUPRRowChanging" msprop:Generator_RowClassName="VIEWGROUPRRow" msprop:Generator_TableClassName="VIEWGROUPRDataTable" msprop:Generator_TableVarName="tableVIEWGROUPR">
<xs:complexType>
<xs:sequence>
<xs:element name="IDX" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" msprop:Generator_ColumnPropNameInTable="IDXColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="IDX" msprop:Generator_UserColumnName="IDX" msprop:Generator_ColumnVarNameInTable="columnIDX" type="xs:int" />
<xs:element name="GNAME" msdata:Caption="SANGHO" msprop:Generator_ColumnPropNameInTable="GNAMEColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="GNAME" msprop:Generator_UserColumnName="GNAME" msprop:Generator_ColumnVarNameInTable="columnGNAME" type="xs:string" default="" minOccurs="0" />
<xs:element name="TITLE" msdata:Caption="TEL" msprop:Generator_ColumnPropNameInTable="TITLEColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="TITLE" msprop:Generator_UserColumnName="TITLE" msprop:Generator_ColumnVarNameInTable="columnTITLE" type="xs:string" default="" minOccurs="0" />
<xs:element name="VAL" msprop:Generator_ColumnPropNameInTable="VALColumn" msprop:nullValue="" msprop:Generator_ColumnPropNameInRow="VAL" msprop:Generator_UserColumnName="VAL" msprop:Generator_ColumnVarNameInTable="columnVAL" type="xs:string" default="" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TRENDVIEWCHLIST" msprop:Generator_RowEvHandlerName="TRENDVIEWCHLISTRowChangeEventHandler" msprop:Generator_RowDeletedName="TRENDVIEWCHLISTRowDeleted" msprop:Generator_RowDeletingName="TRENDVIEWCHLISTRowDeleting" msprop:Generator_RowEvArgName="TRENDVIEWCHLISTRowChangeEvent" msprop:Generator_TablePropName="TRENDVIEWCHLIST" msprop:Generator_RowChangedName="TRENDVIEWCHLISTRowChanged" msprop:Generator_UserTableName="TRENDVIEWCHLIST" msprop:Generator_RowChangingName="TRENDVIEWCHLISTRowChanging" msprop:Generator_RowClassName="TRENDVIEWCHLISTRow" msprop:Generator_TableClassName="TRENDVIEWCHLISTDataTable" msprop:Generator_TableVarName="tableTRENDVIEWCHLIST">
<xs:complexType>
<xs:sequence>
<xs:element name="IDX" msprop:Generator_ColumnPropNameInTable="IDXColumn" msprop:Generator_ColumnPropNameInRow="IDX" msprop:Generator_UserColumnName="IDX" msprop:Generator_ColumnVarNameInTable="columnIDX" type="xs:int" />
<xs:element name="SHOW" msprop:Generator_ColumnPropNameInTable="SHOWColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="SHOW" msprop:Generator_UserColumnName="SHOW" msprop:Generator_ColumnVarNameInTable="columnSHOW" type="xs:boolean" minOccurs="0" />
<xs:element name="TITLE" msprop:Generator_ColumnPropNameInTable="TITLEColumn" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="TITLE" msprop:Generator_UserColumnName="TITLE" msprop:Generator_ColumnVarNameInTable="columnTITLE" type="xs:string" minOccurs="0" />
<xs:element name="COLOR" msprop:Generator_ColumnPropNameInTable="COLORColumn" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="COLOR" msprop:Generator_UserColumnName="COLOR" msprop:Generator_ColumnVarNameInTable="columnCOLOR" type="xs:int" minOccurs="0" />
<xs:element name="ch" msprop:Generator_ColumnPropNameInTable="chColumn" msprop:nullValue="-1" msprop:Generator_ColumnPropNameInRow="ch" msprop:Generator_UserColumnName="ch" msprop:Generator_ColumnVarNameInTable="columnch" type="xs:int" minOccurs="0" />
<xs:element name="dev" msprop:Generator_ColumnPropNameInTable="devColumn" msprop:nullValue="-1" msprop:Generator_ColumnPropNameInRow="dev" msprop:Generator_UserColumnName="dev" msprop:Generator_ColumnVarNameInTable="columndev" type="xs:int" minOccurs="0" />
<xs:element name="unit" msprop:Generator_ColumnPropNameInTable="unitColumn" msprop:nullValue="-1" msprop:Generator_ColumnPropNameInRow="unit" msprop:Generator_UserColumnName="unit" msprop:Generator_ColumnVarNameInTable="columnunit" type="xs:int" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:CHANNEL" />
<xs:field xpath="mstns:IDX" />
</xs:unique>
<xs:unique name="DEVICE_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:DEVICE" />
<xs:field xpath="mstns:IDX" />
</xs:unique>
<xs:unique name="GRP_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:GRP" />
<xs:field xpath="mstns:IDX" />
</xs:unique>
<xs:unique name="NORMAL_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:NORMAL" />
<xs:field xpath="mstns:IDX" />
</xs:unique>
<xs:unique name="VIEWGROUP_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:VIEWGROUP" />
<xs:field xpath="mstns:IDX" />
</xs:unique>
<xs:unique name="WIN_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:WIN" />
<xs:field xpath="mstns:IDX" />
</xs:unique>
<xs:unique name="ALARM_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:ALARM" />
<xs:field xpath="mstns:ATIME" />
<xs:field xpath="mstns:CH" />
<xs:field xpath="mstns:RTYPE" />
</xs:unique>
<xs:unique name="VIEWGROUPR_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:VIEWGROUPR" />
<xs:field xpath="mstns:IDX" />
</xs:unique>
<xs:unique name="TRENDVIEWCHLIST_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:TRENDVIEWCHLIST" />
<xs:field xpath="mstns:IDX" />
</xs:unique>
</xs:element>
</xs:schema>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool to store the dataset designer's layout information.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ex:showrelationlabel="False" ViewPortX="-10" ViewPortY="-10" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:CHANNEL" ZOrder="9" X="0" Y="0" Height="448" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="444" />
<Shape ID="DesignTable:DEVICE" ZOrder="8" X="168" Y="0" Height="200" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="196" />
<Shape ID="DesignTable:GRP" ZOrder="7" X="336" Y="0" Height="429" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="425" />
<Shape ID="DesignTable:NORMAL" ZOrder="6" X="504" Y="0" Height="86" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="120" />
<Shape ID="DesignTable:VIEWGROUP" ZOrder="5" X="672" Y="0" Height="105" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="101" />
<Shape ID="DesignTable:WIN" ZOrder="4" X="840" Y="0" Height="105" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="139" />
<Shape ID="DesignTable:ALARM" ZOrder="3" X="547" Y="177" Height="372" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="368" />
<Shape ID="DesignTable:VIEWGROUPR" ZOrder="2" X="732" Y="152" Height="105" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="86" />
<Shape ID="DesignTable:TRENDVIEWCHLIST" ZOrder="1" X="753" Y="283" Height="162" Width="180" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="158" />
</Shapes>
<Connectors />
</DiagramLayout>

6743
cVMS.NET_CS/DocumentElement1.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

850
cVMS.NET_CS/FMain.Designer.cs generated Normal file
View File

@@ -0,0 +1,850 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
namespace vmsnet
{
partial class FMain : System.Windows.Forms.Form
{
//Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
[System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
{
try
{
if (disposing && components != null)
{
components.Dispose();
}
}
finally
{
base.Dispose(disposing);
}
}
//참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다.
//수정하려면 Windows Form 디자이너를 사용하십시오.
//코드 편집기를 사용하여 수정하지 마십시오.
[System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FMain));
this.StatusStrip1 = new System.Windows.Forms.StatusStrip();
this.lb_diskfree = new System.Windows.Forms.ToolStripStatusLabel();
this.lb_chcount = new System.Windows.Forms.ToolStripStatusLabel();
this.lb_msec = new System.Windows.Forms.ToolStripStatusLabel();
this.lb_Saved = new System.Windows.Forms.ToolStripStatusLabel();
this.lb_alarm = new System.Windows.Forms.ToolStripStatusLabel();
this.lbMonitor = new System.Windows.Forms.ToolStripStatusLabel();
this.lbPLC = new System.Windows.Forms.ToolStripStatusLabel();
this.lbINDI = new System.Windows.Forms.ToolStripStatusLabel();
this.lb_status = new System.Windows.Forms.ToolStripStatusLabel();
this.ToolStrip1 = new System.Windows.Forms.ToolStrip();
this.bt_logo = new System.Windows.Forms.ToolStripButton();
this.ToolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.btMonitorOn = new System.Windows.Forms.ToolStripButton();
this.bt_fullscreen = new System.Windows.Forms.ToolStripButton();
this.bt_tviewr = new System.Windows.Forms.ToolStripButton();
this.bt_tview = new System.Windows.Forms.ToolStripButton();
this.bt_alamhistory = new System.Windows.Forms.ToolStripButton();
this.bt_alamsetup = new System.Windows.Forms.ToolStripButton();
this.bt_save = new System.Windows.Forms.ToolStripButton();
this.ToolStripButton2 = new System.Windows.Forms.ToolStripButton();
this.bt_print = new System.Windows.Forms.ToolStripButton();
this.ToolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.bt_show2ndwindow = new System.Windows.Forms.ToolStripButton();
this.bt_config = new System.Windows.Forms.ToolStripButton();
this.ToolStripButton1 = new System.Windows.Forms.ToolStripButton();
this.btLog = new System.Windows.Forms.ToolStripButton();
this.toolStripButton3 = new System.Windows.Forms.ToolStripButton();
this.PPreviewDialog = new System.Windows.Forms.PrintPreviewDialog();
this.PrintGroup = new System.Drawing.Printing.PrintDocument();
this.PrintWin = new System.Drawing.Printing.PrintDocument();
this.PrintPreViewWin = new System.Windows.Forms.PrintPreviewDialog();
this.TableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.Panel1 = new System.Windows.Forms.Panel();
this.cmb_tanks = new System.Windows.Forms.ComboBox();
this.Button1 = new System.Windows.Forms.Button();
this.Timer1 = new System.Windows.Forms.Timer(this.components);
this.menus_xgap = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_x_gap_5 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_x_gap_10 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_x_gap_30 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_x_gap_60 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_x_gap_600 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_x_gap_1800 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_x_gap_3600 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_x_gap_21600 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_x_gap_43200 = new System.Windows.Forms.ToolStripMenuItem();
this.menus_xterm = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_x_1800 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_x_3600 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_x_21600 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_x_43200 = new System.Windows.Forms.ToolStripMenuItem();
this.menus_ygap = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_y_0_1 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_y_0_5 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_y_1_0 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_y_1_5 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_y_2_0 = new System.Windows.Forms.ToolStripMenuItem();
this.cmbt_y_5_0 = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
this.menus_winsize = new System.Windows.Forms.ToolStripMenuItem();
this.GraphReSetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator();
this.DataPointToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.DebugMsgToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator();
this.cm1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.documentElement1 = new vmsnet.DocumentElement();
this.ds1 = new vmsnet.DS1();
this.StatusStrip1.SuspendLayout();
this.ToolStrip1.SuspendLayout();
this.TableLayoutPanel1.SuspendLayout();
this.Panel1.SuspendLayout();
this.cm1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.documentElement1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.ds1)).BeginInit();
this.SuspendLayout();
//
// StatusStrip1
//
this.StatusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
this.StatusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.lb_diskfree,
this.lb_chcount,
this.lb_msec,
this.lb_Saved,
this.lb_alarm,
this.lbMonitor,
this.lbPLC,
this.lbINDI,
this.lb_status});
this.StatusStrip1.Location = new System.Drawing.Point(0, 747);
this.StatusStrip1.Name = "StatusStrip1";
this.StatusStrip1.Size = new System.Drawing.Size(1561, 32);
this.StatusStrip1.TabIndex = 1;
this.StatusStrip1.Text = "StatusStrip1";
//
// lb_diskfree
//
this.lb_diskfree.Name = "lb_diskfree";
this.lb_diskfree.Size = new System.Drawing.Size(122, 25);
this.lb_diskfree.Text = "<FreeSpace>";
//
// lb_chcount
//
this.lb_chcount.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.lb_chcount.ForeColor = System.Drawing.Color.Navy;
this.lb_chcount.Name = "lb_chcount";
this.lb_chcount.Size = new System.Drawing.Size(110, 25);
this.lb_chcount.Text = "<장치정보>";
//
// lb_msec
//
this.lb_msec.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.lb_msec.Name = "lb_msec";
this.lb_msec.Size = new System.Drawing.Size(86, 25);
this.lb_msec.Text = "<MSEC>";
//
// lb_Saved
//
this.lb_Saved.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.lb_Saved.Name = "lb_Saved";
this.lb_Saved.Size = new System.Drawing.Size(121, 25);
this.lb_Saved.Text = "<LASTSAVE>";
this.lb_Saved.Click += new System.EventHandler(this.lb_Saved_Click);
//
// lb_alarm
//
this.lb_alarm.ForeColor = System.Drawing.Color.Silver;
this.lb_alarm.Name = "lb_alarm";
this.lb_alarm.Size = new System.Drawing.Size(30, 25);
this.lb_alarm.Text = "●";
//
// lbMonitor
//
this.lbMonitor.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.lbMonitor.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(64)))), ((int)(((byte)(0)))));
this.lbMonitor.Name = "lbMonitor";
this.lbMonitor.Size = new System.Drawing.Size(125, 25);
this.lbMonitor.Text = "<MONITOR>";
//
// lbPLC
//
this.lbPLC.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.lbPLC.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(64)))), ((int)(((byte)(0)))));
this.lbPLC.Name = "lbPLC";
this.lbPLC.Size = new System.Drawing.Size(69, 25);
this.lbPLC.Text = "<PLC>";
//
// lbINDI
//
this.lbINDI.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.lbINDI.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(64)))), ((int)(((byte)(0)))));
this.lbINDI.Name = "lbINDI";
this.lbINDI.Size = new System.Drawing.Size(137, 25);
this.lbINDI.Text = "<INDICATOR>";
//
// lb_status
//
this.lb_status.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.lb_status.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(64)))), ((int)(((byte)(0)))));
this.lb_status.Name = "lb_status";
this.lb_status.Size = new System.Drawing.Size(104, 25);
this.lb_status.Text = "<STATUS>";
//
// ToolStrip1
//
this.ToolStrip1.AutoSize = false;
this.ToolStrip1.BackColor = System.Drawing.Color.White;
this.ToolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
this.ToolStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
this.ToolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.bt_logo,
this.ToolStripSeparator3,
this.btMonitorOn,
this.bt_fullscreen,
this.bt_tviewr,
this.bt_tview,
this.bt_alamhistory,
this.bt_alamsetup,
this.bt_save,
this.ToolStripButton2,
this.bt_print,
this.ToolStripSeparator2,
this.bt_show2ndwindow,
this.bt_config,
this.ToolStripButton1,
this.btLog,
this.toolStripButton3});
this.ToolStrip1.Location = new System.Drawing.Point(0, 0);
this.ToolStrip1.Name = "ToolStrip1";
this.ToolStrip1.Size = new System.Drawing.Size(1561, 44);
this.ToolStrip1.TabIndex = 2;
this.ToolStrip1.Text = "ToolStrip1";
//
// bt_logo
//
this.bt_logo.AutoSize = false;
this.bt_logo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bt_logo.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.bt_logo.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
this.bt_logo.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_logo.Name = "bt_logo";
this.bt_logo.Size = new System.Drawing.Size(150, 51);
this.bt_logo.Text = "ToolStripButton1";
this.bt_logo.Click += new System.EventHandler(this.bt_logo_Click);
//
// ToolStripSeparator3
//
this.ToolStripSeparator3.Name = "ToolStripSeparator3";
this.ToolStripSeparator3.Size = new System.Drawing.Size(6, 44);
//
// btMonitorOn
//
this.btMonitorOn.Image = ((System.Drawing.Image)(resources.GetObject("btMonitorOn.Image")));
this.btMonitorOn.ImageTransparentColor = System.Drawing.Color.Magenta;
this.btMonitorOn.Name = "btMonitorOn";
this.btMonitorOn.Size = new System.Drawing.Size(168, 39);
this.btMonitorOn.Text = "Monitor On/Off";
this.btMonitorOn.Click += new System.EventHandler(this.toolStripButton3_Click_1);
//
// bt_fullscreen
//
this.bt_fullscreen.Image = ((System.Drawing.Image)(resources.GetObject("bt_fullscreen.Image")));
this.bt_fullscreen.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_fullscreen.Name = "bt_fullscreen";
this.bt_fullscreen.Size = new System.Drawing.Size(112, 39);
this.bt_fullscreen.Text = "개별보기";
this.bt_fullscreen.Click += new System.EventHandler(this.bt_fullscreen_Click);
//
// bt_tviewr
//
this.bt_tviewr.Enabled = false;
this.bt_tviewr.Image = ((System.Drawing.Image)(resources.GetObject("bt_tviewr.Image")));
this.bt_tviewr.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_tviewr.Name = "bt_tviewr";
this.bt_tviewr.Size = new System.Drawing.Size(177, 39);
this.bt_tviewr.Text = "실시간트렌드(F1)";
this.bt_tviewr.Click += new System.EventHandler(this.ToolStripButton3_Click);
//
// bt_tview
//
this.bt_tview.Enabled = false;
this.bt_tview.Image = ((System.Drawing.Image)(resources.GetObject("bt_tview.Image")));
this.bt_tview.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_tview.Name = "bt_tview";
this.bt_tview.Size = new System.Drawing.Size(159, 39);
this.bt_tview.Text = "과거트렌드(F1)";
this.bt_tview.Click += new System.EventHandler(this.ToolStripButton1_Click_2);
//
// bt_alamhistory
//
this.bt_alamhistory.Enabled = false;
this.bt_alamhistory.Image = ((System.Drawing.Image)(resources.GetObject("bt_alamhistory.Image")));
this.bt_alamhistory.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_alamhistory.Name = "bt_alamhistory";
this.bt_alamhistory.Size = new System.Drawing.Size(141, 39);
this.bt_alamhistory.Text = "알람목록(F3)";
this.bt_alamhistory.Click += new System.EventHandler(this.ToolStripButton2_Click_1);
//
// bt_alamsetup
//
this.bt_alamsetup.Enabled = false;
this.bt_alamsetup.Image = ((System.Drawing.Image)(resources.GetObject("bt_alamsetup.Image")));
this.bt_alamsetup.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_alamsetup.Name = "bt_alamsetup";
this.bt_alamsetup.Size = new System.Drawing.Size(141, 39);
this.bt_alamsetup.Text = "알람설정(F4)";
this.bt_alamsetup.Click += new System.EventHandler(this.ToolStripButton1_Click_4);
//
// bt_save
//
this.bt_save.Enabled = false;
this.bt_save.Image = ((System.Drawing.Image)(resources.GetObject("bt_save.Image")));
this.bt_save.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_save.Name = "bt_save";
this.bt_save.Size = new System.Drawing.Size(105, 39);
this.bt_save.Text = "저장(F5)";
this.bt_save.Click += new System.EventHandler(this.bt_save_Click);
//
// ToolStripButton2
//
this.ToolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("ToolStripButton2.Image")));
this.ToolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
this.ToolStripButton2.Name = "ToolStripButton2";
this.ToolStripButton2.Size = new System.Drawing.Size(141, 39);
this.ToolStripButton2.Text = "소리끄기(F2)";
this.ToolStripButton2.Click += new System.EventHandler(this.ToolStripButton2_Click);
//
// bt_print
//
this.bt_print.Enabled = false;
this.bt_print.Image = ((System.Drawing.Image)(resources.GetObject("bt_print.Image")));
this.bt_print.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_print.Name = "bt_print";
this.bt_print.Size = new System.Drawing.Size(105, 39);
this.bt_print.Text = "인쇄(F9)";
this.bt_print.Visible = false;
this.bt_print.Click += new System.EventHandler(this.bt_print_Click);
//
// ToolStripSeparator2
//
this.ToolStripSeparator2.Name = "ToolStripSeparator2";
this.ToolStripSeparator2.Size = new System.Drawing.Size(6, 44);
//
// bt_show2ndwindow
//
this.bt_show2ndwindow.Enabled = false;
this.bt_show2ndwindow.Image = ((System.Drawing.Image)(resources.GetObject("bt_show2ndwindow.Image")));
this.bt_show2ndwindow.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_show2ndwindow.Name = "bt_show2ndwindow";
this.bt_show2ndwindow.Size = new System.Drawing.Size(94, 39);
this.bt_show2ndwindow.Text = "보조창";
this.bt_show2ndwindow.Visible = false;
this.bt_show2ndwindow.Click += new System.EventHandler(this.bt_show2ndwindow_Click);
//
// bt_config
//
this.bt_config.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
this.bt_config.Enabled = false;
this.bt_config.Image = ((System.Drawing.Image)(resources.GetObject("bt_config.Image")));
this.bt_config.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_config.Name = "bt_config";
this.bt_config.Size = new System.Drawing.Size(76, 29);
this.bt_config.Text = "설정";
this.bt_config.Click += new System.EventHandler(this.btConfig_Click);
//
// ToolStripButton1
//
this.ToolStripButton1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
this.ToolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("ToolStripButton1.Image")));
this.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
this.ToolStripButton1.Name = "ToolStripButton1";
this.ToolStripButton1.Size = new System.Drawing.Size(76, 29);
this.ToolStripButton1.Text = "정보";
this.ToolStripButton1.Click += new System.EventHandler(this.ToolStripButton1_Click_6);
//
// btLog
//
this.btLog.Image = ((System.Drawing.Image)(resources.GetObject("btLog.Image")));
this.btLog.ImageTransparentColor = System.Drawing.Color.Magenta;
this.btLog.Name = "btLog";
this.btLog.Size = new System.Drawing.Size(112, 29);
this.btLog.Text = "운영로그";
this.btLog.Click += new System.EventHandler(this.toolStripButton3_Click_2);
//
// toolStripButton3
//
this.toolStripButton3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton3.Image")));
this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton3.Name = "toolStripButton3";
this.toolStripButton3.Size = new System.Drawing.Size(112, 29);
this.toolStripButton3.Text = "저장폴더";
this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click_3);
//
// PPreviewDialog
//
this.PPreviewDialog.AutoScrollMargin = new System.Drawing.Size(0, 0);
this.PPreviewDialog.AutoScrollMinSize = new System.Drawing.Size(0, 0);
this.PPreviewDialog.ClientSize = new System.Drawing.Size(400, 300);
this.PPreviewDialog.Document = this.PrintGroup;
this.PPreviewDialog.Enabled = true;
this.PPreviewDialog.Icon = ((System.Drawing.Icon)(resources.GetObject("PPreviewDialog.Icon")));
this.PPreviewDialog.Name = "PrintPreviewDialog1";
this.PPreviewDialog.UseAntiAlias = true;
this.PPreviewDialog.Visible = false;
//
// PrintGroup
//
this.PrintGroup.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.PrintDocument1_PrintPage);
//
// PrintWin
//
this.PrintWin.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.PrintWin_PrintPage);
//
// PrintPreViewWin
//
this.PrintPreViewWin.AutoScrollMargin = new System.Drawing.Size(0, 0);
this.PrintPreViewWin.AutoScrollMinSize = new System.Drawing.Size(0, 0);
this.PrintPreViewWin.ClientSize = new System.Drawing.Size(400, 300);
this.PrintPreViewWin.Document = this.PrintWin;
this.PrintPreViewWin.Enabled = true;
this.PrintPreViewWin.Icon = ((System.Drawing.Icon)(resources.GetObject("PrintPreViewWin.Icon")));
this.PrintPreViewWin.Name = "PrintPreviewDialog1";
this.PrintPreViewWin.UseAntiAlias = true;
this.PrintPreViewWin.Visible = false;
//
// TableLayoutPanel1
//
this.TableLayoutPanel1.ColumnCount = 2;
this.TableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.TableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.TableLayoutPanel1.Controls.Add(this.Panel1, 1, 0);
this.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.TableLayoutPanel1.Location = new System.Drawing.Point(0, 44);
this.TableLayoutPanel1.Name = "TableLayoutPanel1";
this.TableLayoutPanel1.RowCount = 3;
this.TableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
this.TableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.TableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.TableLayoutPanel1.Size = new System.Drawing.Size(1561, 703);
this.TableLayoutPanel1.TabIndex = 5;
//
// Panel1
//
this.Panel1.Controls.Add(this.cmb_tanks);
this.Panel1.Controls.Add(this.Button1);
this.Panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.Panel1.Location = new System.Drawing.Point(783, 3);
this.Panel1.Name = "Panel1";
this.Panel1.Size = new System.Drawing.Size(775, 29);
this.Panel1.TabIndex = 6;
//
// cmb_tanks
//
this.cmb_tanks.Dock = System.Windows.Forms.DockStyle.Fill;
this.cmb_tanks.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmb_tanks.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.cmb_tanks.FormattingEnabled = true;
this.cmb_tanks.Location = new System.Drawing.Point(0, 0);
this.cmb_tanks.Name = "cmb_tanks";
this.cmb_tanks.Size = new System.Drawing.Size(657, 45);
this.cmb_tanks.TabIndex = 5;
this.cmb_tanks.SelectedIndexChanged += new System.EventHandler(this.cmb_group_SelectedIndexChanged);
//
// Button1
//
this.Button1.Dock = System.Windows.Forms.DockStyle.Right;
this.Button1.Location = new System.Drawing.Point(657, 0);
this.Button1.Name = "Button1";
this.Button1.Size = new System.Drawing.Size(118, 29);
this.Button1.TabIndex = 0;
this.Button1.Text = "채널선택";
this.Button1.UseVisualStyleBackColor = true;
this.Button1.Click += new System.EventHandler(this.Button1_Click);
//
// Timer1
//
this.Timer1.Interval = 200;
this.Timer1.Tick += new System.EventHandler(this.Timer1_Tick);
//
// menus_xgap
//
this.menus_xgap.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.cmbt_x_gap_5,
this.cmbt_x_gap_10,
this.cmbt_x_gap_30,
this.cmbt_x_gap_60,
this.cmbt_x_gap_600,
this.cmbt_x_gap_1800,
this.cmbt_x_gap_3600,
this.cmbt_x_gap_21600,
this.cmbt_x_gap_43200});
this.menus_xgap.Name = "menus_xgap";
this.menus_xgap.Size = new System.Drawing.Size(198, 32);
this.menus_xgap.Text = "X축 간격";
//
// cmbt_x_gap_5
//
this.cmbt_x_gap_5.Name = "cmbt_x_gap_5";
this.cmbt_x_gap_5.Size = new System.Drawing.Size(170, 34);
this.cmbt_x_gap_5.Tag = "5";
this.cmbt_x_gap_5.Text = "5초";
//
// cmbt_x_gap_10
//
this.cmbt_x_gap_10.Checked = true;
this.cmbt_x_gap_10.CheckOnClick = true;
this.cmbt_x_gap_10.CheckState = System.Windows.Forms.CheckState.Checked;
this.cmbt_x_gap_10.Name = "cmbt_x_gap_10";
this.cmbt_x_gap_10.Size = new System.Drawing.Size(170, 34);
this.cmbt_x_gap_10.Tag = "10";
this.cmbt_x_gap_10.Text = "10초";
//
// cmbt_x_gap_30
//
this.cmbt_x_gap_30.CheckOnClick = true;
this.cmbt_x_gap_30.Name = "cmbt_x_gap_30";
this.cmbt_x_gap_30.Size = new System.Drawing.Size(170, 34);
this.cmbt_x_gap_30.Tag = "30";
this.cmbt_x_gap_30.Text = "30초";
//
// cmbt_x_gap_60
//
this.cmbt_x_gap_60.CheckOnClick = true;
this.cmbt_x_gap_60.Name = "cmbt_x_gap_60";
this.cmbt_x_gap_60.Size = new System.Drawing.Size(170, 34);
this.cmbt_x_gap_60.Tag = "60";
this.cmbt_x_gap_60.Text = "1분";
//
// cmbt_x_gap_600
//
this.cmbt_x_gap_600.Name = "cmbt_x_gap_600";
this.cmbt_x_gap_600.Size = new System.Drawing.Size(170, 34);
this.cmbt_x_gap_600.Tag = "600";
this.cmbt_x_gap_600.Text = "10분";
//
// cmbt_x_gap_1800
//
this.cmbt_x_gap_1800.CheckOnClick = true;
this.cmbt_x_gap_1800.Name = "cmbt_x_gap_1800";
this.cmbt_x_gap_1800.Size = new System.Drawing.Size(170, 34);
this.cmbt_x_gap_1800.Tag = "1800";
this.cmbt_x_gap_1800.Text = "30분";
//
// cmbt_x_gap_3600
//
this.cmbt_x_gap_3600.CheckOnClick = true;
this.cmbt_x_gap_3600.Name = "cmbt_x_gap_3600";
this.cmbt_x_gap_3600.Size = new System.Drawing.Size(170, 34);
this.cmbt_x_gap_3600.Tag = "3600";
this.cmbt_x_gap_3600.Text = "1시간";
//
// cmbt_x_gap_21600
//
this.cmbt_x_gap_21600.CheckOnClick = true;
this.cmbt_x_gap_21600.Name = "cmbt_x_gap_21600";
this.cmbt_x_gap_21600.Size = new System.Drawing.Size(170, 34);
this.cmbt_x_gap_21600.Tag = "21600";
this.cmbt_x_gap_21600.Text = "6시간";
//
// cmbt_x_gap_43200
//
this.cmbt_x_gap_43200.CheckOnClick = true;
this.cmbt_x_gap_43200.Name = "cmbt_x_gap_43200";
this.cmbt_x_gap_43200.Size = new System.Drawing.Size(170, 34);
this.cmbt_x_gap_43200.Tag = "43200";
this.cmbt_x_gap_43200.Text = "12시간";
//
// menus_xterm
//
this.menus_xterm.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.cmbt_x_1800,
this.cmbt_x_3600,
this.cmbt_x_21600,
this.cmbt_x_43200});
this.menus_xterm.Name = "menus_xterm";
this.menus_xterm.Size = new System.Drawing.Size(198, 32);
this.menus_xterm.Text = "X축 범위";
//
// cmbt_x_1800
//
this.cmbt_x_1800.CheckOnClick = true;
this.cmbt_x_1800.Name = "cmbt_x_1800";
this.cmbt_x_1800.Size = new System.Drawing.Size(170, 34);
this.cmbt_x_1800.Tag = "1800";
this.cmbt_x_1800.Text = "30분";
//
// cmbt_x_3600
//
this.cmbt_x_3600.Checked = true;
this.cmbt_x_3600.CheckOnClick = true;
this.cmbt_x_3600.CheckState = System.Windows.Forms.CheckState.Checked;
this.cmbt_x_3600.Name = "cmbt_x_3600";
this.cmbt_x_3600.Size = new System.Drawing.Size(170, 34);
this.cmbt_x_3600.Tag = "3600";
this.cmbt_x_3600.Text = "1시간";
//
// cmbt_x_21600
//
this.cmbt_x_21600.CheckOnClick = true;
this.cmbt_x_21600.Name = "cmbt_x_21600";
this.cmbt_x_21600.Size = new System.Drawing.Size(170, 34);
this.cmbt_x_21600.Tag = "21600";
this.cmbt_x_21600.Text = "6시간";
//
// cmbt_x_43200
//
this.cmbt_x_43200.CheckOnClick = true;
this.cmbt_x_43200.Name = "cmbt_x_43200";
this.cmbt_x_43200.Size = new System.Drawing.Size(170, 34);
this.cmbt_x_43200.Tag = "43200";
this.cmbt_x_43200.Text = "12시간";
//
// menus_ygap
//
this.menus_ygap.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.cmbt_y_0_1,
this.cmbt_y_0_5,
this.cmbt_y_1_0,
this.cmbt_y_1_5,
this.cmbt_y_2_0,
this.cmbt_y_5_0});
this.menus_ygap.Name = "menus_ygap";
this.menus_ygap.Size = new System.Drawing.Size(198, 32);
this.menus_ygap.Text = "Y축 간격";
//
// cmbt_y_0_1
//
this.cmbt_y_0_1.CheckOnClick = true;
this.cmbt_y_0_1.Name = "cmbt_y_0_1";
this.cmbt_y_0_1.Size = new System.Drawing.Size(138, 34);
this.cmbt_y_0_1.Tag = "0.1";
this.cmbt_y_0_1.Text = "0.1";
//
// cmbt_y_0_5
//
this.cmbt_y_0_5.Checked = true;
this.cmbt_y_0_5.CheckOnClick = true;
this.cmbt_y_0_5.CheckState = System.Windows.Forms.CheckState.Checked;
this.cmbt_y_0_5.Name = "cmbt_y_0_5";
this.cmbt_y_0_5.Size = new System.Drawing.Size(138, 34);
this.cmbt_y_0_5.Tag = "0.5";
this.cmbt_y_0_5.Text = "0.5";
//
// cmbt_y_1_0
//
this.cmbt_y_1_0.CheckOnClick = true;
this.cmbt_y_1_0.Name = "cmbt_y_1_0";
this.cmbt_y_1_0.Size = new System.Drawing.Size(138, 34);
this.cmbt_y_1_0.Tag = "1.0";
this.cmbt_y_1_0.Text = "1.0";
//
// cmbt_y_1_5
//
this.cmbt_y_1_5.CheckOnClick = true;
this.cmbt_y_1_5.Name = "cmbt_y_1_5";
this.cmbt_y_1_5.Size = new System.Drawing.Size(138, 34);
this.cmbt_y_1_5.Tag = "1.5";
this.cmbt_y_1_5.Text = "1.5";
//
// cmbt_y_2_0
//
this.cmbt_y_2_0.CheckOnClick = true;
this.cmbt_y_2_0.Name = "cmbt_y_2_0";
this.cmbt_y_2_0.Size = new System.Drawing.Size(138, 34);
this.cmbt_y_2_0.Tag = "2.0";
this.cmbt_y_2_0.Text = "2.0";
//
// cmbt_y_5_0
//
this.cmbt_y_5_0.CheckOnClick = true;
this.cmbt_y_5_0.Name = "cmbt_y_5_0";
this.cmbt_y_5_0.Size = new System.Drawing.Size(138, 34);
this.cmbt_y_5_0.Tag = "5.0";
this.cmbt_y_5_0.Text = "5.0";
//
// ToolStripMenuItem2
//
this.ToolStripMenuItem2.Name = "ToolStripMenuItem2";
this.ToolStripMenuItem2.Size = new System.Drawing.Size(195, 6);
//
// menus_winsize
//
this.menus_winsize.Name = "menus_winsize";
this.menus_winsize.Size = new System.Drawing.Size(198, 32);
this.menus_winsize.Text = "창 크기";
//
// GraphReSetToolStripMenuItem
//
this.GraphReSetToolStripMenuItem.Name = "GraphReSetToolStripMenuItem";
this.GraphReSetToolStripMenuItem.Size = new System.Drawing.Size(198, 32);
this.GraphReSetToolStripMenuItem.Text = "그래프 초기화";
this.GraphReSetToolStripMenuItem.Click += new System.EventHandler(this.GraphReSetToolStripMenuItem_Click);
//
// ToolStripMenuItem3
//
this.ToolStripMenuItem3.Name = "ToolStripMenuItem3";
this.ToolStripMenuItem3.Size = new System.Drawing.Size(195, 6);
//
// DataPointToolStripMenuItem
//
this.DataPointToolStripMenuItem.CheckOnClick = true;
this.DataPointToolStripMenuItem.Name = "DataPointToolStripMenuItem";
this.DataPointToolStripMenuItem.Size = new System.Drawing.Size(198, 32);
this.DataPointToolStripMenuItem.Text = "Data Point";
this.DataPointToolStripMenuItem.Click += new System.EventHandler(this.DataPointToolStripMenuItem_Click);
//
// DebugMsgToolStripMenuItem
//
this.DebugMsgToolStripMenuItem.CheckOnClick = true;
this.DebugMsgToolStripMenuItem.ForeColor = System.Drawing.Color.Gray;
this.DebugMsgToolStripMenuItem.Name = "DebugMsgToolStripMenuItem";
this.DebugMsgToolStripMenuItem.Size = new System.Drawing.Size(198, 32);
this.DebugMsgToolStripMenuItem.Text = "Debug Msg";
this.DebugMsgToolStripMenuItem.Click += new System.EventHandler(this.DebugMsgToolStripMenuItem_Click);
//
// ToolStripMenuItem4
//
this.ToolStripMenuItem4.Name = "ToolStripMenuItem4";
this.ToolStripMenuItem4.Size = new System.Drawing.Size(195, 6);
//
// cm1
//
this.cm1.ImageScalingSize = new System.Drawing.Size(24, 24);
this.cm1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menus_xgap,
this.menus_xterm,
this.menus_ygap,
this.ToolStripMenuItem2,
this.menus_winsize,
this.GraphReSetToolStripMenuItem,
this.ToolStripMenuItem3,
this.DataPointToolStripMenuItem,
this.DebugMsgToolStripMenuItem,
this.ToolStripMenuItem4});
this.cm1.Name = "ContextMenuStrip1";
this.cm1.Size = new System.Drawing.Size(199, 246);
//
// documentElement1
//
this.documentElement1.DataSetName = "DocumentElement";
this.documentElement1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
//
// ds1
//
this.ds1.DataSetName = "DS1";
this.ds1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
//
// FMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 22F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1561, 779);
this.Controls.Add(this.TableLayoutPanel1);
this.Controls.Add(this.ToolStrip1);
this.Controls.Add(this.StatusStrip1);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.Name = "FMain";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "cell Voltage Mornitoring System";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Frm_Main_FormClosing);
this.Load += new System.EventHandler(this.Frm_Main_Load);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Frm_Main_KeyDown);
this.StatusStrip1.ResumeLayout(false);
this.StatusStrip1.PerformLayout();
this.ToolStrip1.ResumeLayout(false);
this.ToolStrip1.PerformLayout();
this.TableLayoutPanel1.ResumeLayout(false);
this.Panel1.ResumeLayout(false);
this.cm1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.documentElement1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.ds1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
internal System.Windows.Forms.StatusStrip StatusStrip1;
internal System.Windows.Forms.ToolStrip ToolStrip1;
internal System.Windows.Forms.ToolStripStatusLabel lb_status;
internal System.Windows.Forms.ToolStripButton bt_config;
internal System.Windows.Forms.ToolStripStatusLabel lb_msec;
internal System.Windows.Forms.ToolStripStatusLabel lb_chcount;
internal System.Windows.Forms.ToolStripButton bt_show2ndwindow;
internal System.Windows.Forms.ToolStripButton bt_tview;
internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator2;
internal System.Windows.Forms.ToolStripButton bt_alamhistory;
internal System.Windows.Forms.ToolStripButton bt_logo;
internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator3;
internal System.Windows.Forms.ToolStripButton bt_alamsetup;
internal System.Windows.Forms.ToolStripStatusLabel lb_Saved;
internal System.Windows.Forms.ToolStripStatusLabel lb_diskfree;
internal System.Windows.Forms.ToolStripButton ToolStripButton1;
internal System.Windows.Forms.ToolStripStatusLabel lb_alarm;
internal System.Windows.Forms.ToolStripButton bt_save;
internal System.Windows.Forms.PrintPreviewDialog PPreviewDialog;
internal System.Drawing.Printing.PrintDocument PrintGroup;
internal System.Windows.Forms.ToolStripButton bt_print;
internal System.Drawing.Printing.PrintDocument PrintWin;
internal System.Windows.Forms.PrintPreviewDialog PrintPreViewWin;
internal System.Windows.Forms.ToolStripButton ToolStripButton2;
internal System.Windows.Forms.ToolStripButton bt_fullscreen;
internal System.Windows.Forms.TableLayoutPanel TableLayoutPanel1;
internal System.Windows.Forms.ComboBox cmb_tanks;
internal Timer Timer1;
internal Panel Panel1;
internal Button Button1;
internal ToolStripButton bt_tviewr;
internal ToolStripStatusLabel lbPLC;
private System.ComponentModel.IContainer components;
private ToolStripButton btMonitorOn;
internal ToolStripStatusLabel lbMonitor;
private ToolStripButton btLog;
private ToolStripButton toolStripButton3;
internal ToolStripMenuItem menus_xgap;
internal ToolStripMenuItem cmbt_x_gap_5;
internal ToolStripMenuItem cmbt_x_gap_10;
internal ToolStripMenuItem cmbt_x_gap_30;
internal ToolStripMenuItem cmbt_x_gap_60;
internal ToolStripMenuItem cmbt_x_gap_600;
internal ToolStripMenuItem cmbt_x_gap_1800;
internal ToolStripMenuItem cmbt_x_gap_3600;
internal ToolStripMenuItem cmbt_x_gap_21600;
internal ToolStripMenuItem cmbt_x_gap_43200;
internal ToolStripMenuItem menus_xterm;
internal ToolStripMenuItem cmbt_x_1800;
internal ToolStripMenuItem cmbt_x_3600;
internal ToolStripMenuItem cmbt_x_21600;
internal ToolStripMenuItem cmbt_x_43200;
internal ToolStripMenuItem menus_ygap;
internal ToolStripMenuItem cmbt_y_0_1;
internal ToolStripMenuItem cmbt_y_0_5;
internal ToolStripMenuItem cmbt_y_1_0;
internal ToolStripMenuItem cmbt_y_1_5;
internal ToolStripMenuItem cmbt_y_2_0;
internal ToolStripMenuItem cmbt_y_5_0;
internal ToolStripSeparator ToolStripMenuItem2;
internal ToolStripMenuItem menus_winsize;
internal ToolStripMenuItem GraphReSetToolStripMenuItem;
internal ToolStripSeparator ToolStripMenuItem3;
internal ToolStripMenuItem DataPointToolStripMenuItem;
internal ToolStripMenuItem DebugMsgToolStripMenuItem;
internal ToolStripSeparator ToolStripMenuItem4;
internal ContextMenuStrip cm1;
private vmsnet.DocumentElement documentElement1;
private DS1 ds1;
internal ToolStripStatusLabel lbINDI;
}
}

2358
cVMS.NET_CS/FMain.cs Normal file

File diff suppressed because it is too large Load Diff

1179
cVMS.NET_CS/FMain.resx Normal file

File diff suppressed because it is too large Load Diff

337
cVMS.NET_CS/Frm_Sub.Designer.cs generated Normal file
View File

@@ -0,0 +1,337 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
namespace vmsnet
{
partial class Frm_Sub : System.Windows.Forms.Form
{
//Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
[System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing)
{
try
{
if (disposing && components != null)
{
components.Dispose();
}
}
finally
{
base.Dispose(disposing);
}
}
//참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다.
//수정하려면 Windows Form 디자이너를 사용하십시오.
//코드 편집기를 사용하여 수정하지 마십시오.
[System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Frm_Sub));
this.StatusStrip1 = new System.Windows.Forms.StatusStrip();
this.lb_status = new System.Windows.Forms.ToolStripStatusLabel();
this.lb_lasttime = new System.Windows.Forms.ToolStripStatusLabel();
this.lb_alarm = new System.Windows.Forms.ToolStripStatusLabel();
this.Timer1 = new System.Windows.Forms.Timer(this.components);
this.PPreviewDialog = new System.Windows.Forms.PrintPreviewDialog();
this.PrintGroup = new System.Drawing.Printing.PrintDocument();
this.PrintWin = new System.Drawing.Printing.PrintDocument();
this.PrintPreViewWin = new System.Windows.Forms.PrintPreviewDialog();
this.TableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.panel1 = new System.Windows.Forms.Panel();
this.cmb_tanks = new System.Windows.Forms.ComboBox();
this.Button1 = new System.Windows.Forms.Button();
this.ToolStrip1 = new System.Windows.Forms.ToolStrip();
this.bt_logo = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.bt_fullscreen = new System.Windows.Forms.ToolStripButton();
this.bt_tviewr = new System.Windows.Forms.ToolStripButton();
this.bt_save = new System.Windows.Forms.ToolStripButton();
this.ToolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.ToolStripButton2 = new System.Windows.Forms.ToolStripButton();
this.ds1 = new vmsnet.DS1();
this.documentElement1 = new vmsnet.DocumentElement();
this.StatusStrip1.SuspendLayout();
this.TableLayoutPanel1.SuspendLayout();
this.panel1.SuspendLayout();
this.ToolStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.ds1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.documentElement1)).BeginInit();
this.SuspendLayout();
//
// StatusStrip1
//
this.StatusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
this.StatusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.lb_status,
this.lb_lasttime,
this.lb_alarm});
this.StatusStrip1.Location = new System.Drawing.Point(0, 744);
this.StatusStrip1.Name = "StatusStrip1";
this.StatusStrip1.Size = new System.Drawing.Size(929, 32);
this.StatusStrip1.TabIndex = 1;
this.StatusStrip1.Text = "StatusStrip1";
//
// lb_status
//
this.lb_status.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.lb_status.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(64)))), ((int)(((byte)(0)))));
this.lb_status.Name = "lb_status";
this.lb_status.Size = new System.Drawing.Size(155, 25);
this.lb_status.Text = "<SUBWINDOW>";
//
// lb_lasttime
//
this.lb_lasttime.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.lb_lasttime.ForeColor = System.Drawing.Color.Gray;
this.lb_lasttime.Name = "lb_lasttime";
this.lb_lasttime.Size = new System.Drawing.Size(123, 25);
this.lb_lasttime.Text = "<LASTTIME>";
//
// lb_alarm
//
this.lb_alarm.ForeColor = System.Drawing.Color.Silver;
this.lb_alarm.Name = "lb_alarm";
this.lb_alarm.Size = new System.Drawing.Size(30, 25);
this.lb_alarm.Text = "●";
//
// Timer1
//
this.Timer1.Interval = 1000;
this.Timer1.Tick += new System.EventHandler(this.Timer1_Tick);
//
// PPreviewDialog
//
this.PPreviewDialog.AutoScrollMargin = new System.Drawing.Size(0, 0);
this.PPreviewDialog.AutoScrollMinSize = new System.Drawing.Size(0, 0);
this.PPreviewDialog.ClientSize = new System.Drawing.Size(400, 300);
this.PPreviewDialog.Document = this.PrintGroup;
this.PPreviewDialog.Enabled = true;
this.PPreviewDialog.Icon = ((System.Drawing.Icon)(resources.GetObject("PPreviewDialog.Icon")));
this.PPreviewDialog.Name = "PrintPreviewDialog1";
this.PPreviewDialog.UseAntiAlias = true;
this.PPreviewDialog.Visible = false;
//
// PrintGroup
//
this.PrintGroup.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.PrintDocument1_PrintPage);
//
// PrintWin
//
this.PrintWin.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.PrintWin_PrintPage);
//
// PrintPreViewWin
//
this.PrintPreViewWin.AutoScrollMargin = new System.Drawing.Size(0, 0);
this.PrintPreViewWin.AutoScrollMinSize = new System.Drawing.Size(0, 0);
this.PrintPreViewWin.ClientSize = new System.Drawing.Size(400, 300);
this.PrintPreViewWin.Document = this.PrintWin;
this.PrintPreViewWin.Enabled = true;
this.PrintPreViewWin.Icon = ((System.Drawing.Icon)(resources.GetObject("PrintPreViewWin.Icon")));
this.PrintPreViewWin.Name = "PrintPreviewDialog1";
this.PrintPreViewWin.UseAntiAlias = true;
this.PrintPreViewWin.Visible = false;
//
// TableLayoutPanel1
//
this.TableLayoutPanel1.ColumnCount = 2;
this.TableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.TableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.TableLayoutPanel1.Controls.Add(this.panel1, 1, 0);
this.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.TableLayoutPanel1.Location = new System.Drawing.Point(0, 44);
this.TableLayoutPanel1.Name = "TableLayoutPanel1";
this.TableLayoutPanel1.RowCount = 3;
this.TableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
this.TableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.TableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.TableLayoutPanel1.Size = new System.Drawing.Size(929, 700);
this.TableLayoutPanel1.TabIndex = 6;
//
// panel1
//
this.panel1.Controls.Add(this.cmb_tanks);
this.panel1.Controls.Add(this.Button1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(467, 3);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(459, 29);
this.panel1.TabIndex = 6;
//
// cmb_tanks
//
this.cmb_tanks.Dock = System.Windows.Forms.DockStyle.Fill;
this.cmb_tanks.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmb_tanks.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.cmb_tanks.FormattingEnabled = true;
this.cmb_tanks.Location = new System.Drawing.Point(0, 0);
this.cmb_tanks.Name = "cmb_tanks";
this.cmb_tanks.Size = new System.Drawing.Size(341, 45);
this.cmb_tanks.TabIndex = 5;
this.cmb_tanks.SelectedIndexChanged += new System.EventHandler(this.cmb_group_SelectedIndexChanged);
//
// Button1
//
this.Button1.Dock = System.Windows.Forms.DockStyle.Right;
this.Button1.Location = new System.Drawing.Point(341, 0);
this.Button1.Name = "Button1";
this.Button1.Size = new System.Drawing.Size(118, 29);
this.Button1.TabIndex = 6;
this.Button1.Text = "채널선택";
this.Button1.UseVisualStyleBackColor = true;
this.Button1.Click += new System.EventHandler(this.Button1_Click);
//
// ToolStrip1
//
this.ToolStrip1.AutoSize = false;
this.ToolStrip1.BackColor = System.Drawing.Color.White;
this.ToolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
this.ToolStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
this.ToolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.bt_logo,
this.toolStripSeparator1,
this.bt_fullscreen,
this.bt_tviewr,
this.bt_save,
this.ToolStripSeparator2,
this.ToolStripButton2});
this.ToolStrip1.Location = new System.Drawing.Point(0, 0);
this.ToolStrip1.Name = "ToolStrip1";
this.ToolStrip1.Size = new System.Drawing.Size(929, 44);
this.ToolStrip1.TabIndex = 7;
this.ToolStrip1.Text = "ToolStrip1";
//
// bt_logo
//
this.bt_logo.AutoSize = false;
this.bt_logo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bt_logo.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.bt_logo.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
this.bt_logo.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_logo.Name = "bt_logo";
this.bt_logo.Size = new System.Drawing.Size(150, 51);
this.bt_logo.Text = "ToolStripButton1";
this.bt_logo.Click += new System.EventHandler(this.bt_logo_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 44);
//
// bt_fullscreen
//
this.bt_fullscreen.Image = ((System.Drawing.Image)(resources.GetObject("bt_fullscreen.Image")));
this.bt_fullscreen.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_fullscreen.Name = "bt_fullscreen";
this.bt_fullscreen.Size = new System.Drawing.Size(112, 39);
this.bt_fullscreen.Text = "개별보기";
this.bt_fullscreen.Click += new System.EventHandler(this.bt_fullscreen_Click);
//
// bt_tviewr
//
this.bt_tviewr.Enabled = false;
this.bt_tviewr.Image = ((System.Drawing.Image)(resources.GetObject("bt_tviewr.Image")));
this.bt_tviewr.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_tviewr.Name = "bt_tviewr";
this.bt_tviewr.Size = new System.Drawing.Size(177, 39);
this.bt_tviewr.Text = "실시간트렌드(F1)";
this.bt_tviewr.Click += new System.EventHandler(this.bt_tviewr_Click);
//
// bt_save
//
this.bt_save.Enabled = false;
this.bt_save.Image = ((System.Drawing.Image)(resources.GetObject("bt_save.Image")));
this.bt_save.ImageTransparentColor = System.Drawing.Color.Magenta;
this.bt_save.Name = "bt_save";
this.bt_save.Size = new System.Drawing.Size(105, 39);
this.bt_save.Text = "저장(F5)";
this.bt_save.Click += new System.EventHandler(this.bt_save_Click);
//
// ToolStripSeparator2
//
this.ToolStripSeparator2.Name = "ToolStripSeparator2";
this.ToolStripSeparator2.Size = new System.Drawing.Size(6, 44);
//
// ToolStripButton2
//
this.ToolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("ToolStripButton2.Image")));
this.ToolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
this.ToolStripButton2.Name = "ToolStripButton2";
this.ToolStripButton2.Size = new System.Drawing.Size(141, 39);
this.ToolStripButton2.Text = "소리끄기(F2)";
this.ToolStripButton2.Click += new System.EventHandler(this.ToolStripButton2_Click);
//
// ds1
//
this.ds1.DataSetName = "DS1";
this.ds1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
//
// documentElement1
//
this.documentElement1.DataSetName = "DocumentElement";
this.documentElement1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
//
// Frm_Sub
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 22F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(929, 776);
this.Controls.Add(this.TableLayoutPanel1);
this.Controls.Add(this.ToolStrip1);
this.Controls.Add(this.StatusStrip1);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.Name = "Frm_Sub";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "cell Voltage Mornitoring System";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Frm_Main_FormClosing);
this.Load += new System.EventHandler(this.Frm_Main_Load);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Frm_Sub_KeyDown);
this.StatusStrip1.ResumeLayout(false);
this.StatusStrip1.PerformLayout();
this.TableLayoutPanel1.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.ToolStrip1.ResumeLayout(false);
this.ToolStrip1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.ds1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.documentElement1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
internal System.Windows.Forms.StatusStrip StatusStrip1;
internal System.Windows.Forms.ToolStripStatusLabel lb_status;
internal System.Windows.Forms.ToolStripStatusLabel lb_lasttime;
internal System.Windows.Forms.Timer Timer1;
internal System.Windows.Forms.ToolStripStatusLabel lb_alarm;
internal System.Windows.Forms.PrintPreviewDialog PPreviewDialog;
internal System.Drawing.Printing.PrintDocument PrintGroup;
internal System.Drawing.Printing.PrintDocument PrintWin;
internal System.Windows.Forms.PrintPreviewDialog PrintPreViewWin;
internal System.Windows.Forms.TableLayoutPanel TableLayoutPanel1;
internal System.Windows.Forms.ComboBox cmb_tanks;
private System.ComponentModel.IContainer components;
internal ToolStrip ToolStrip1;
internal ToolStripButton bt_fullscreen;
internal ToolStripSeparator ToolStripSeparator2;
internal ToolStripButton ToolStripButton2;
internal ToolStripButton bt_logo;
private ToolStripSeparator toolStripSeparator1;
internal ToolStripButton bt_tviewr;
internal ToolStripButton bt_save;
private DS1 ds1;
private vmsnet.DocumentElement documentElement1;
private Panel panel1;
internal Button Button1;
}
}

1397
cVMS.NET_CS/Frm_Sub.cs Normal file

File diff suppressed because it is too large Load Diff

942
cVMS.NET_CS/Frm_Sub.resx Normal file
View File

@@ -0,0 +1,942 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="StatusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="Timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>135, 17</value>
</metadata>
<metadata name="PPreviewDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>225, 17</value>
</metadata>
<metadata name="PrintGroup.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>363, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="PPreviewDialog.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAYAICAQAAAAAADoAgAAZgAAABAQEAAAAAAAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA
CABoBQAAHg0AACAgAAABACAAqBAAAIYSAAAQEAAAAQAgAGgEAAAuIwAAKAAAACAAAABAAAAAAQAEAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA
/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIoiI
iIiIiIiIiIiIiIiIiIiCIigiIiIozMzMzMzMyCIogiIoIiIiKM7m5ubm5sgiKIIiKCIiIijObm5ubm7I
IiiCIigiIiIozubm5ubmyCIogiIoIiIiKM5ubm5ubsgiKIIiKCIiIijO5ubm5ubIIiiIiIiIiIiIzm5u
bm5uyCIogRERERERGM7u7u7u7sgiKIHZWVlZWRjMzMzMzMzIIiiB1ZWVlZUYiIiIiIiIiIiIgdlZWVlZ
GDMzMzMzMzMzOIHVlZWVlRg/uLi4uLi4uDiB2VlZWVkYP7uLi4uLi4s4gdWVlZWVGD+4uLi4uLi4OIHZ
WVlZWRg/u4uLi4uLiziB1ZWVlZUYP7i4uLi4uLg4gdlZWVlZGD+7i4uLi4uLOIHVlZWVlRg/uLi4uLi4
uDiB3d3d3d0YP7uLi4uLi4s4gRERERERGD+4uLi4uLi4OIiIiIiIiIg/u4uLi4uLiziCIiIiIiIoP7i4
uLi4uLg4giIiIiIiKD+7i4uLi4uLOIIiIiIiIig/uLi4uLi4uDiCIiIiIiIoP7u7u7u7u7s4giIiIiIi
KD//////////OIIiIiIiIigzMzMzMzMzMziIiIiIiIiIiIiIiIiIiIiIIiIiIiIiIiIiIiIiIiIiIv//
////////AAAAAHv4AA57+AAOe/gADnv4AA57+AAOe/gADgAAAA4AAAAOAAAADgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/4AAB/+AAAf/gAAH/4AAB/+AAAf/gAAAAA
AAD/////KAAAABAAAAAgAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACA
gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAiIiIiIiIiIoiI
iIiIiIiIgigijMzMyCiCKCKM5mbIKIiIiIzu7sgogRERjMzMyCiB2ZGIiIiIiIHZkYMzMzM4gdmRg/u7
uziB3dGD+7u7OIEREYP7u7s4iIiIg/u7uziCIiKD+7u7OIIiIoP///84giIigzMzMziIiIiIiIiIiP//
KCIAACjObALm5mwCIigAAoiIAAKIzgAAbm4AACIoAAAREQAAGM4AAO7uAAAiKHwAWVl8ABjMfADMzAAA
IigoAAAAIAAAAEAAAAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA
AACAAIAAgIAAAICAgADA3MAA8MqmAKo/KgD/PyoAAF8qAFVfKgCqXyoA/18qAAB/KgBVfyoAqn8qAP9/
KgAAnyoAVZ8qAKqfKgD/nyoAAL8qAFW/KgCqvyoA/78qAADfKgBV3yoAqt8qAP/fKgAA/yoAVf8qAKr/
KgD//yoAAABVAFUAVQCqAFUA/wBVAAAfVQBVH1UAqh9VAP8fVQAAP1UAVT9VAKo/VQD/P1UAAF9VAFVf
VQCqX1UA/19VAAB/VQBVf1UAqn9VAP9/VQAAn1UAVZ9VAKqfVQD/n1UAAL9VAFW/VQCqv1UA/79VAADf
VQBV31UAqt9VAP/fVQAA/1UAVf9VAKr/VQD//1UAAAB/AFUAfwCqAH8A/wB/AAAffwBVH38Aqh9/AP8f
fwAAP38AVT9/AKo/fwD/P38AAF9/AFVffwCqX38A/19/AAB/fwBVf38Aqn9/AP9/fwAAn38AVZ9/AKqf
fwD/n38AAL9/AFW/fwCqv38A/79/AADffwBV338Aqt9/AP/ffwAA/38AVf9/AKr/fwD//38AAACqAFUA
qgCqAKoA/wCqAAAfqgBVH6oAqh+qAP8fqgAAP6oAVT+qAKo/qgD/P6oAAF+qAFVfqgCqX6oA/1+qAAB/
qgBVf6oAqn+qAP9/qgAAn6oAVZ+qAKqfqgD/n6oAAL+qAFW/qgCqv6oA/7+qAADfqgBV36oAqt+qAP/f
qgAA/6oAVf+qAKr/qgD//6oAAADUAFUA1ACqANQA/wDUAAAf1ABVH9QAqh/UAP8f1AAAP9QAVT/UAKo/
1AD/P9QAAF/UAFVf1ACqX9QA/1/UAAB/1ABVf9QAqn/UAP9/1AAAn9QAVZ/UAKqf1AD/n9QAAL/UAFW/
1ACqv9QA/7/UAADf1ABV39QAqt/UAP/f1AAA/9QAVf/UAKr/1AD//9QAVQD/AKoA/wAAH/8AVR//AKof
/wD/H/8AAD//AFU//wCqP/8A/z//AABf/wBVX/8Aql//AP9f/wAAf/8AVX//AKp//wD/f/8AAJ//AFWf
/wCqn/8A/5//AAC//wBVv/8Aqr//AP+//wAA3/8AVd//AKrf/wD/3/8AVf//AKr//wD/zMwA/8z/AP//
MwD//2YA//+ZAP//zAAAfwAAVX8AAKp/AAD/fwAAAJ8AAFWfAACqnwAA/58AAAC/AABVvwAAqr8AAP+/
AAAA3wAAVd8AAKrfAAD/3wAAVf8AAKr/AAAAACoAVQAqAKoAKgD/ACoAAB8qAFUfKgCqHyoA/x8qAAA/
KgBVPyoA8Pv/AKSgoACAgIAAAAD/AAD/AAAA//8A/wAAAAAAAAD//wAA////AP39/f39/f39/f39/f39
/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39
/f39/f39/f39/f39/f39/f39/f39/f39qoYIqoYIhqoIqgiqCaoIqgiqhqqGhoYIhoYIqv39/f0I/f39
/ar9/f39/YY2Ng4yDg4ODgoOCgoKCgqG/f39/Yb9/f39CP39/f39qjY7Ozs3Nzc3NjMSMjIOCqr9/f39
qv39/f2G/f39/f0IN19fOzs3Nzc3NjcODg4KCP39/f0I/f39/ar9/f39/ao6X19fXzs7Ozc3NzY3NgqG
/f39/Yb9/f39CP39/f39hl9jY19jX187Ozs7Nzc3Dqr9/f39qv39/f2G/f39/f0IOodjh19jX19fXztf
OzcOCP39/f0ICAmqCAiqCKoICapfCYdjh2ODY19fXzs7Ow6q/f39/QhITEwoSCUoKSQoqmMJCYcJCWNj
Y2NfY19fNgj9/f39qkyZmZmYmJRwlCmqX19fXl9fX186WzY3Njc2gv39/f0JcJ2dmZmZlJmUJAmqCaoJ
hggIqggICKoIqggI/f39/YZwnp2dnZmZmJVMqnx8fHx8fFR8VHhUVFRUVKr9/f39CHChoZ2dnZ2ZmUwJ
fKSkxqSkxqSkpKSkpKBUCP39/f2qcKLDoqGdnZ2ZTKp8ysakxqSkxqSkxqSkpFSq/f39/QiUpqbDoqHE
nZ1Mq3ykqMakyqSkxqSkpKSkVAj9/f39hpTIyKbHoqGhoXAIfMrLpMqkxqSkxqTGpKRUqv39/f0IlMym
yKbIpcShcAh8y6jKpMqkxsqkpKSkxlQI/f39/aqUzMzMyKbIpqJwqnzLy8qpxsqkpMakxqSkeAj9/f39
CJSUlJSUlJSUlJQJgMupy8qpysqkyqSkxqRUqv39/f2GCKoIqgiqCKoIhgigrcvPqcuoy8qkxsqkxnyG
/f39/ar9/f39/f39/f39qnzPz6nLy8uoyqnKpKTKVAj9/f39CP39/f39/f39/f0IfNDPz8+py8upyqjG
yqR8hv39/f2G/f39/f39/f39/Qik0K7P0M+ty8vLy6jKpXyq/f39/ar9/f39/f39/f39CHzQ09Ctz8/P
qcupy6jKeAj9/f39CP39/f39/f39/f2qoNPQ0NPQ0M/Qz8vLy6l8CP39/f2G/f39/f39/f39/QmkfKR8
oHx8fHx8fHx8fHyG/f39/aoIqgiqCKoIqgiqCKoIqgiqCKoIqgiqCKoIqgj9/f39/f39/f39/f39/f39
/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3/////////////
///AAAAD3vgAA974AAPe+AAD3vgAA974AAPe+AADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA
AAPAAAADwAAAA8AAAAPAAAADwAAAA9/4AAPf+AAD3/gAA9/4AAPf+AAD3/gAA8AAAAP//////////ygA
AAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAA
gACAgAAAgICAAMDcwADwyqYAqj8qAP8/KgAAXyoAVV8qAKpfKgD/XyoAAH8qAFV/KgCqfyoA/38qAACf
KgBVnyoAqp8qAP+fKgAAvyoAVb8qAKq/KgD/vyoAAN8qAFXfKgCq3yoA/98qAAD/KgBV/yoAqv8qAP//
KgAAAFUAVQBVAKoAVQD/AFUAAB9VAFUfVQCqH1UA/x9VAAA/VQBVP1UAqj9VAP8/VQAAX1UAVV9VAKpf
VQD/X1UAAH9VAFV/VQCqf1UA/39VAACfVQBVn1UAqp9VAP+fVQAAv1UAVb9VAKq/VQD/v1UAAN9VAFXf
VQCq31UA/99VAAD/VQBV/1UAqv9VAP//VQAAAH8AVQB/AKoAfwD/AH8AAB9/AFUffwCqH38A/x9/AAA/
fwBVP38Aqj9/AP8/fwAAX38AVV9/AKpffwD/X38AAH9/AFV/fwCqf38A/39/AACffwBVn38Aqp9/AP+f
fwAAv38AVb9/AKq/fwD/v38AAN9/AFXffwCq338A/99/AAD/fwBV/38Aqv9/AP//fwAAAKoAVQCqAKoA
qgD/AKoAAB+qAFUfqgCqH6oA/x+qAAA/qgBVP6oAqj+qAP8/qgAAX6oAVV+qAKpfqgD/X6oAAH+qAFV/
qgCqf6oA/3+qAACfqgBVn6oAqp+qAP+fqgAAv6oAVb+qAKq/qgD/v6oAAN+qAFXfqgCq36oA/9+qAAD/
qgBV/6oAqv+qAP//qgAAANQAVQDUAKoA1AD/ANQAAB/UAFUf1ACqH9QA/x/UAAA/1ABVP9QAqj/UAP8/
1AAAX9QAVV/UAKpf1AD/X9QAAH/UAFV/1ACqf9QA/3/UAACf1ABVn9QAqp/UAP+f1AAAv9QAVb/UAKq/
1AD/v9QAAN/UAFXf1ACq39QA/9/UAAD/1ABV/9QAqv/UAP//1ABVAP8AqgD/AAAf/wBVH/8Aqh//AP8f
/wAAP/8AVT//AKo//wD/P/8AAF//AFVf/wCqX/8A/1//AAB//wBVf/8Aqn//AP9//wAAn/8AVZ//AKqf
/wD/n/8AAL//AFW//wCqv/8A/7//AADf/wBV3/8Aqt//AP/f/wBV//8Aqv//AP/MzAD/zP8A//8zAP//
ZgD//5kA///MAAB/AABVfwAAqn8AAP9/AAAAnwAAVZ8AAKqfAAD/nwAAAL8AAFW/AACqvwAA/78AAADf
AABV3wAAqt8AAP/fAABV/wAAqv8AAAAAKgBVACoAqgAqAP8AKgAAHyoAVR8qAKofKgD/HyoAAD8qAFU/
KgDw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAAAAAAAP//AAD///8A/f39/f39/f39/f39/f39/f0I
hgiqCKoICKoICKaGCP39qv39hv2GNg4ODjII/ar9/Yb9/ar9qjdjXzsOCP2G/f0IhquGCAleCWNfNob9
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
bv+3d0n/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/FRqE/0dN1v8/RNL/Nz3Q/y40zv8nLcz/ISfK/xwh
yf8WHMf/GxJh/8K/wf/gr3r/4K96/+Cvev/gr3r/3614/9yqdf/apnL/16Nw/9Sea//Rmmj/zZZk/8qR
X//GjFz/w4dW/7+CUv/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8SHZD/WF3a/05U1/9FS9X/PUPS/zU7
0P8uM83/JyzL/yAmyf8aFGn/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/
wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/xAfnP9obt7/YGTc/1Zb
2f9NU9f/RUrU/ztB0v80OdD/LDHO/xgWcv/Cv8H/Dn+n/w18pP8MeqH/DHie/wt1m/8Kc5j/CXGV/wlv
k/8JbJD/CGqN/wdpi/8HZ4j/BmWH/wZkhf8GYoP/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/DiKp/3l+
4/9vdeH/Zmze/11i2/9UWtn/S1HW/0NI1P86P9H/Fhh9/8K/wf8Ogar/Barp/wGo6P8Apef/AKPm/wCi
5P8An+L/AJ7h/wCd3/8AnN7/AJnc/wCY2/8AmNn/AJbX/wZjhP/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/
wf8MJbX/iI7n/4CF5v93fOP/bnPg/2Vr3f9bYdv/UljY/0lP1v8UGoj/wr/B/w+Erf8Lrur/Bqvq/wOo
6f8Apuf/AKTm/wCi5f8AoOT/AJ/i/wCd4f8AnN//AJrd/wCZ2/8AmNr/BmWH/8K/wf8AAAAAAAAAAAAA
AAAAAAAAwr/B/wkowP+WnOz/jpTq/4aL6P9+hOX/dXri/2xx4P9jaN3/WV/b/xEek//Cv8H/EIaw/xay
7P8Or+z/Cavr/wWq6v8Bp+j/AKbn/wCj5f8AoeT/AJ/j/wCe4f8AnOD/AJve/wCa3f8HZ4n/wr/B/wAA
AAAAAAAAAAAAAAAAAADCv8H/CCrK/6Ko7/+coe7/lZrr/42T6f+Fiub/fIHl/3N54v9rcN//ECGg/8K/
wf8QiLP/I7nu/xq07f8Ssez/C63r/war6v8Cqen/AKbo/wCk5v8AouX/AKHk/wCf4f8AneH/AJzf/who
i//Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8GLNP/q7Hy/6as8P+hpu//mp/u/5OY6/+LkOj/g4nm/3qA
5P8NI6z/wr/B/xCKtv8xvvD/J7rv/x627f8Vsuz/Dq/s/wmr6/8Equn/Aafo/wCl5/8Ao+X/AKHk/wCf
4v8AnuH/CGqO/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wUu2/+vtPP/r7Tz/6qv8v+mq/D/oKXv/5me
7f+Sl+v/io/p/wsmt//Cv8H/Eo24/0HF8f82wfD/LLzv/yK47v8atO3/EbHs/wut6/8Gq+r/A6np/wCm
6P8Apeb/AKLl/wCh5P8IbJD/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/BC/h/wQv3/8FL9z/BS3Z/wYt
1v8GLNL/ByvP/wgqy/8IKcb/CSnC/8K/wf8Sjrv/Uszy/0fH8f87w/H/Mb7v/ye67/8et+7/FbPt/w6v
6/8IrOv/BKnp/wGo6P8Apef/AKPl/wluk//Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf/Cv8H/wr/B/8K/
wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/xKRvf9j0/P/WM/z/0zK8f9BxfH/N8Hw/yy8
7/8iuO7/GbTt/xGx7P8Lruv/Bqrq/wOo6f8Apuf/CnGV/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCv8H/E5LA/3Ta8/9q1fP/XtHz/1LM
8v9Hx/H/O8Pw/zG+7/8nu+//Hrbt/xay7f8Or+v/CKzq/wSq6f8Kc5j/wr/B/wAAAAAAAAAAAAAAAAAA
AADCv8H/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMK/wf8UlMH/hOD1/3rc
9f9v2PP/ZNTy/1jO8v9NyvH/Qsbx/zbB8P8svO//I7ju/xm07f8SsOz/C67r/wt2m//Cv8H/AAAAAAAA
AAAAAAAAAAAAAMK/wf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwr/B/xSW
w/+T5vb/iuL1/3/e9P912vT/adbz/13R8/9SzPL/R8jx/zzD8P8xvvD/J7rv/x627v8Vsuz/C3ie/8K/
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
</value>
</data>
<metadata name="PrintWin.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>475, 17</value>
</metadata>
<metadata name="PrintPreViewWin.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>574, 17</value>
</metadata>
<data name="PrintPreViewWin.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAYAICAQAAAAAADoAgAAZgAAABAQEAAAAAAAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA
CABoBQAAHg0AACAgAAABACAAqBAAAIYSAAAQEAAAAQAgAGgEAAAuIwAAKAAAACAAAABAAAAAAQAEAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA
/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIoiI
iIiIiIiIiIiIiIiIiIiCIigiIiIozMzMzMzMyCIogiIoIiIiKM7m5ubm5sgiKIIiKCIiIijObm5ubm7I
IiiCIigiIiIozubm5ubmyCIogiIoIiIiKM5ubm5ubsgiKIIiKCIiIijO5ubm5ubIIiiIiIiIiIiIzm5u
bm5uyCIogRERERERGM7u7u7u7sgiKIHZWVlZWRjMzMzMzMzIIiiB1ZWVlZUYiIiIiIiIiIiIgdlZWVlZ
GDMzMzMzMzMzOIHVlZWVlRg/uLi4uLi4uDiB2VlZWVkYP7uLi4uLi4s4gdWVlZWVGD+4uLi4uLi4OIHZ
WVlZWRg/u4uLi4uLiziB1ZWVlZUYP7i4uLi4uLg4gdlZWVlZGD+7i4uLi4uLOIHVlZWVlRg/uLi4uLi4
uDiB3d3d3d0YP7uLi4uLi4s4gRERERERGD+4uLi4uLi4OIiIiIiIiIg/u4uLi4uLiziCIiIiIiIoP7i4
uLi4uLg4giIiIiIiKD+7i4uLi4uLOIIiIiIiIig/uLi4uLi4uDiCIiIiIiIoP7u7u7u7u7s4giIiIiIi
KD//////////OIIiIiIiIigzMzMzMzMzMziIiIiIiIiIiIiIiIiIiIiIIiIiIiIiIiIiIiIiIiIiIv//
////////AAAAAHv4AA57+AAOe/gADnv4AA57+AAOe/gADgAAAA4AAAAOAAAADgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/4AAB/+AAAf/gAAH/4AAB/+AAAf/gAAAAA
AAD/////KAAAABAAAAAgAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACA
gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAiIiIiIiIiIoiI
iIiIiIiIgigijMzMyCiCKCKM5mbIKIiIiIzu7sgogRERjMzMyCiB2ZGIiIiIiIHZkYMzMzM4gdmRg/u7
uziB3dGD+7u7OIEREYP7u7s4iIiIg/u7uziCIiKD+7u7OIIiIoP///84giIigzMzMziIiIiIiIiIiP//
KCIAACjObALm5mwCIigAAoiIAAKIzgAAbm4AACIoAAAREQAAGM4AAO7uAAAiKHwAWVl8ABjMfADMzAAA
IigoAAAAIAAAAEAAAAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA
AACAAIAAgIAAAICAgADA3MAA8MqmAKo/KgD/PyoAAF8qAFVfKgCqXyoA/18qAAB/KgBVfyoAqn8qAP9/
KgAAnyoAVZ8qAKqfKgD/nyoAAL8qAFW/KgCqvyoA/78qAADfKgBV3yoAqt8qAP/fKgAA/yoAVf8qAKr/
KgD//yoAAABVAFUAVQCqAFUA/wBVAAAfVQBVH1UAqh9VAP8fVQAAP1UAVT9VAKo/VQD/P1UAAF9VAFVf
VQCqX1UA/19VAAB/VQBVf1UAqn9VAP9/VQAAn1UAVZ9VAKqfVQD/n1UAAL9VAFW/VQCqv1UA/79VAADf
VQBV31UAqt9VAP/fVQAA/1UAVf9VAKr/VQD//1UAAAB/AFUAfwCqAH8A/wB/AAAffwBVH38Aqh9/AP8f
fwAAP38AVT9/AKo/fwD/P38AAF9/AFVffwCqX38A/19/AAB/fwBVf38Aqn9/AP9/fwAAn38AVZ9/AKqf
fwD/n38AAL9/AFW/fwCqv38A/79/AADffwBV338Aqt9/AP/ffwAA/38AVf9/AKr/fwD//38AAACqAFUA
qgCqAKoA/wCqAAAfqgBVH6oAqh+qAP8fqgAAP6oAVT+qAKo/qgD/P6oAAF+qAFVfqgCqX6oA/1+qAAB/
qgBVf6oAqn+qAP9/qgAAn6oAVZ+qAKqfqgD/n6oAAL+qAFW/qgCqv6oA/7+qAADfqgBV36oAqt+qAP/f
qgAA/6oAVf+qAKr/qgD//6oAAADUAFUA1ACqANQA/wDUAAAf1ABVH9QAqh/UAP8f1AAAP9QAVT/UAKo/
1AD/P9QAAF/UAFVf1ACqX9QA/1/UAAB/1ABVf9QAqn/UAP9/1AAAn9QAVZ/UAKqf1AD/n9QAAL/UAFW/
1ACqv9QA/7/UAADf1ABV39QAqt/UAP/f1AAA/9QAVf/UAKr/1AD//9QAVQD/AKoA/wAAH/8AVR//AKof
/wD/H/8AAD//AFU//wCqP/8A/z//AABf/wBVX/8Aql//AP9f/wAAf/8AVX//AKp//wD/f/8AAJ//AFWf
/wCqn/8A/5//AAC//wBVv/8Aqr//AP+//wAA3/8AVd//AKrf/wD/3/8AVf//AKr//wD/zMwA/8z/AP//
MwD//2YA//+ZAP//zAAAfwAAVX8AAKp/AAD/fwAAAJ8AAFWfAACqnwAA/58AAAC/AABVvwAAqr8AAP+/
AAAA3wAAVd8AAKrfAAD/3wAAVf8AAKr/AAAAACoAVQAqAKoAKgD/ACoAAB8qAFUfKgCqHyoA/x8qAAA/
KgBVPyoA8Pv/AKSgoACAgIAAAAD/AAD/AAAA//8A/wAAAAAAAAD//wAA////AP39/f39/f39/f39/f39
/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39
/f39/f39/f39/f39/f39/f39/f39/f39qoYIqoYIhqoIqgiqCaoIqgiqhqqGhoYIhoYIqv39/f0I/f39
/ar9/f39/YY2Ng4yDg4ODgoOCgoKCgqG/f39/Yb9/f39CP39/f39qjY7Ozs3Nzc3NjMSMjIOCqr9/f39
qv39/f2G/f39/f0IN19fOzs3Nzc3NjcODg4KCP39/f0I/f39/ar9/f39/ao6X19fXzs7Ozc3NzY3NgqG
/f39/Yb9/f39CP39/f39hl9jY19jX187Ozs7Nzc3Dqr9/f39qv39/f2G/f39/f0IOodjh19jX19fXztf
OzcOCP39/f0ICAmqCAiqCKoICapfCYdjh2ODY19fXzs7Ow6q/f39/QhITEwoSCUoKSQoqmMJCYcJCWNj
Y2NfY19fNgj9/f39qkyZmZmYmJRwlCmqX19fXl9fX186WzY3Njc2gv39/f0JcJ2dmZmZlJmUJAmqCaoJ
hggIqggICKoIqggI/f39/YZwnp2dnZmZmJVMqnx8fHx8fFR8VHhUVFRUVKr9/f39CHChoZ2dnZ2ZmUwJ
fKSkxqSkxqSkpKSkpKBUCP39/f2qcKLDoqGdnZ2ZTKp8ysakxqSkxqSkxqSkpFSq/f39/QiUpqbDoqHE
nZ1Mq3ykqMakyqSkxqSkpKSkVAj9/f39hpTIyKbHoqGhoXAIfMrLpMqkxqSkxqTGpKRUqv39/f0IlMym
yKbIpcShcAh8y6jKpMqkxsqkpKSkxlQI/f39/aqUzMzMyKbIpqJwqnzLy8qpxsqkpMakxqSkeAj9/f39
CJSUlJSUlJSUlJQJgMupy8qpysqkyqSkxqRUqv39/f2GCKoIqgiqCKoIhgigrcvPqcuoy8qkxsqkxnyG
/f39/ar9/f39/f39/f39qnzPz6nLy8uoyqnKpKTKVAj9/f39CP39/f39/f39/f0IfNDPz8+py8upyqjG
yqR8hv39/f2G/f39/f39/f39/Qik0K7P0M+ty8vLy6jKpXyq/f39/ar9/f39/f39/f39CHzQ09Ctz8/P
qcupy6jKeAj9/f39CP39/f39/f39/f2qoNPQ0NPQ0M/Qz8vLy6l8CP39/f2G/f39/f39/f39/QmkfKR8
oHx8fHx8fHx8fHyG/f39/aoIqgiqCKoIqgiqCKoIqgiqCKoIqgiqCKoIqgj9/f39/f39/f39/f39/f39
/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3/////////////
///AAAAD3vgAA974AAPe+AAD3vgAA974AAPe+AADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA
AAPAAAADwAAAA8AAAAPAAAADwAAAA9/4AAPf+AAD3/gAA9/4AAPf+AAD3/gAA8AAAAP//////////ygA
AAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAA
gACAgAAAgICAAMDcwADwyqYAqj8qAP8/KgAAXyoAVV8qAKpfKgD/XyoAAH8qAFV/KgCqfyoA/38qAACf
KgBVnyoAqp8qAP+fKgAAvyoAVb8qAKq/KgD/vyoAAN8qAFXfKgCq3yoA/98qAAD/KgBV/yoAqv8qAP//
KgAAAFUAVQBVAKoAVQD/AFUAAB9VAFUfVQCqH1UA/x9VAAA/VQBVP1UAqj9VAP8/VQAAX1UAVV9VAKpf
VQD/X1UAAH9VAFV/VQCqf1UA/39VAACfVQBVn1UAqp9VAP+fVQAAv1UAVb9VAKq/VQD/v1UAAN9VAFXf
VQCq31UA/99VAAD/VQBV/1UAqv9VAP//VQAAAH8AVQB/AKoAfwD/AH8AAB9/AFUffwCqH38A/x9/AAA/
fwBVP38Aqj9/AP8/fwAAX38AVV9/AKpffwD/X38AAH9/AFV/fwCqf38A/39/AACffwBVn38Aqp9/AP+f
fwAAv38AVb9/AKq/fwD/v38AAN9/AFXffwCq338A/99/AAD/fwBV/38Aqv9/AP//fwAAAKoAVQCqAKoA
qgD/AKoAAB+qAFUfqgCqH6oA/x+qAAA/qgBVP6oAqj+qAP8/qgAAX6oAVV+qAKpfqgD/X6oAAH+qAFV/
qgCqf6oA/3+qAACfqgBVn6oAqp+qAP+fqgAAv6oAVb+qAKq/qgD/v6oAAN+qAFXfqgCq36oA/9+qAAD/
qgBV/6oAqv+qAP//qgAAANQAVQDUAKoA1AD/ANQAAB/UAFUf1ACqH9QA/x/UAAA/1ABVP9QAqj/UAP8/
1AAAX9QAVV/UAKpf1AD/X9QAAH/UAFV/1ACqf9QA/3/UAACf1ABVn9QAqp/UAP+f1AAAv9QAVb/UAKq/
1AD/v9QAAN/UAFXf1ACq39QA/9/UAAD/1ABV/9QAqv/UAP//1ABVAP8AqgD/AAAf/wBVH/8Aqh//AP8f
/wAAP/8AVT//AKo//wD/P/8AAF//AFVf/wCqX/8A/1//AAB//wBVf/8Aqn//AP9//wAAn/8AVZ//AKqf
/wD/n/8AAL//AFW//wCqv/8A/7//AADf/wBV3/8Aqt//AP/f/wBV//8Aqv//AP/MzAD/zP8A//8zAP//
ZgD//5kA///MAAB/AABVfwAAqn8AAP9/AAAAnwAAVZ8AAKqfAAD/nwAAAL8AAFW/AACqvwAA/78AAADf
AABV3wAAqt8AAP/fAABV/wAAqv8AAAAAKgBVACoAqgAqAP8AKgAAHyoAVR8qAKofKgD/HyoAAD8qAFU/
KgDw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAAAAAAAP//AAD///8A/f39/f39/f39/f39/f39/f0I
hgiqCKoICKoICKaGCP39qv39hv2GNg4ODjII/ar9/Yb9/ar9qjdjXzsOCP2G/f0IhquGCAleCWNfNob9
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
bv+3d0n/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/FRqE/0dN1v8/RNL/Nz3Q/y40zv8nLcz/ISfK/xwh
yf8WHMf/GxJh/8K/wf/gr3r/4K96/+Cvev/gr3r/3614/9yqdf/apnL/16Nw/9Sea//Rmmj/zZZk/8qR
X//GjFz/w4dW/7+CUv/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8SHZD/WF3a/05U1/9FS9X/PUPS/zU7
0P8uM83/JyzL/yAmyf8aFGn/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/
wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/xAfnP9obt7/YGTc/1Zb
2f9NU9f/RUrU/ztB0v80OdD/LDHO/xgWcv/Cv8H/Dn+n/w18pP8MeqH/DHie/wt1m/8Kc5j/CXGV/wlv
k/8JbJD/CGqN/wdpi/8HZ4j/BmWH/wZkhf8GYoP/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/DiKp/3l+
4/9vdeH/Zmze/11i2/9UWtn/S1HW/0NI1P86P9H/Fhh9/8K/wf8Ogar/Barp/wGo6P8Apef/AKPm/wCi
5P8An+L/AJ7h/wCd3/8AnN7/AJnc/wCY2/8AmNn/AJbX/wZjhP/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/
wf8MJbX/iI7n/4CF5v93fOP/bnPg/2Vr3f9bYdv/UljY/0lP1v8UGoj/wr/B/w+Erf8Lrur/Bqvq/wOo
6f8Apuf/AKTm/wCi5f8AoOT/AJ/i/wCd4f8AnN//AJrd/wCZ2/8AmNr/BmWH/8K/wf8AAAAAAAAAAAAA
AAAAAAAAwr/B/wkowP+WnOz/jpTq/4aL6P9+hOX/dXri/2xx4P9jaN3/WV/b/xEek//Cv8H/EIaw/xay
7P8Or+z/Cavr/wWq6v8Bp+j/AKbn/wCj5f8AoeT/AJ/j/wCe4f8AnOD/AJve/wCa3f8HZ4n/wr/B/wAA
AAAAAAAAAAAAAAAAAADCv8H/CCrK/6Ko7/+coe7/lZrr/42T6f+Fiub/fIHl/3N54v9rcN//ECGg/8K/
wf8QiLP/I7nu/xq07f8Ssez/C63r/war6v8Cqen/AKbo/wCk5v8AouX/AKHk/wCf4f8AneH/AJzf/who
i//Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8GLNP/q7Hy/6as8P+hpu//mp/u/5OY6/+LkOj/g4nm/3qA
5P8NI6z/wr/B/xCKtv8xvvD/J7rv/x627f8Vsuz/Dq/s/wmr6/8Equn/Aafo/wCl5/8Ao+X/AKHk/wCf
4v8AnuH/CGqO/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wUu2/+vtPP/r7Tz/6qv8v+mq/D/oKXv/5me
7f+Sl+v/io/p/wsmt//Cv8H/Eo24/0HF8f82wfD/LLzv/yK47v8atO3/EbHs/wut6/8Gq+r/A6np/wCm
6P8Apeb/AKLl/wCh5P8IbJD/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/BC/h/wQv3/8FL9z/BS3Z/wYt
1v8GLNL/ByvP/wgqy/8IKcb/CSnC/8K/wf8Sjrv/Uszy/0fH8f87w/H/Mb7v/ye67/8et+7/FbPt/w6v
6/8IrOv/BKnp/wGo6P8Apef/AKPl/wluk//Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf/Cv8H/wr/B/8K/
wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/xKRvf9j0/P/WM/z/0zK8f9BxfH/N8Hw/yy8
7/8iuO7/GbTt/xGx7P8Lruv/Bqrq/wOo6f8Apuf/CnGV/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCv8H/E5LA/3Ta8/9q1fP/XtHz/1LM
8v9Hx/H/O8Pw/zG+7/8nu+//Hrbt/xay7f8Or+v/CKzq/wSq6f8Kc5j/wr/B/wAAAAAAAAAAAAAAAAAA
AADCv8H/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMK/wf8UlMH/hOD1/3rc
9f9v2PP/ZNTy/1jO8v9NyvH/Qsbx/zbB8P8svO//I7ju/xm07f8SsOz/C67r/wt2m//Cv8H/AAAAAAAA
AAAAAAAAAAAAAMK/wf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwr/B/xSW
w/+T5vb/iuL1/3/e9P912vT/adbz/13R8/9SzPL/R8jx/zzD8P8xvvD/J7rv/x627v8Vsuz/C3ie/8K/
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
</value>
</data>
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>717, 17</value>
</metadata>
<data name="bt_fullscreen.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAANqSURBVFhHxVdLT5NREG1iXBP/gXFpIgtWLvxJLjVxZbGl
gLUFBEFITNhYikVQgVYLFFT6AAqlILTQYlwopS+Ul+tx5r4hVVK15SYnM3PmzJ3zfV8XYPGH5+EiYXnm
HYKLOrSbGVj7vAO33Yt1Be3UBnay4J4oQe/sCfSFELM/eZQ58ap3wnUMQmdqGEe1OcdzmutFvmOyDEnc
qQwkdzLgGi/BkxkUzByrKHNem5H3GEIEznM98ahhnJznnIR7Ag1kDQOr2Qw8elOEnqlj6JkmHGEuQDXj
qRZ9iohuo9ctOD5v5JI37nPh217NZLSBxPY2OF8XoevdITyWCMr8iCNI0eCoz3CEc7J/ViN6WPPIcyc+
bCKzpQ0sb6ehfawAnYFDgQMVO4zc5E/HQ9TxqGuaPR2lnh52eSutDcTTKWgbzYN78geDa/IAvxPmEoKn
3MX6mnfJvtSyGufP6oy6DR82njYMLKU2wTGSB+f4d/wtEPbhEeZOzCVULTSMO9vDOdaXIE702J1C0/qy
AIu4UxmIbW5Aiy8P7a/KAvsGRD12uvdQxTN6ppM1n+EaHR0jBVjAncpAdGMdbC9y6KyMn6KMsQStowiK
KkeeIuvLXPJGLftsTuSSFzq7bw93ftIGIutrYPPm0FkRHL4itGBs8ZUYHASqJYhXtewJjs3wnuLFHZor
gm04D2HcqQzMJ5NgHdrFt1DAZgHsFFWOA5hLzm72GehCM4q8gpbusg8Xodm7x3YqAx9XE2B9vgsPvAVE
njmUuQbVEgZPWlykctlnHC4W0P08NHv24APuVAbmEitwHw00D2GzDrB6cvA+sawNzK7E0UCuorgWsOIb
mFsxDITii/gJ6msgFF/SBqaX0AC+lkriWoAMzOBOZWBqcQHu9Kfgbn+6Tkjhzpg2EIxFIfv1G8OX3G5d
EIwZBgKRMMNbgUBUxEgEowbxTBelnNdshkWsmU5quI5p1R1aT5wy4BdDAfwrNRAhhAXH80BYwOj5JYfQ
81rDdKLnl3OyL+aUgYuEpZpzz26D8yCktTnkuH/I81tU/UTVHlpQ6b8biZoaoAXlg4NzQTox8n/PeU8v
UZO3QJdWc0jf5/Fc8fl8l8QV/3bsXZ1QLZ4ODl4dGBi4LK74u9PQ0HDtRlPTTUyrxvXGxls0j/kfjsXy
C5OMes1Y4DvuAAAAAElFTkSuQmCC
</value>
</data>
<data name="bt_tviewr.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
RU5ErkJggg==
</value>
</data>
<data name="bt_save.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAARcSURBVFhH7ZVJU2NVFMepcu9HcNGSOSEDgRBCRgIxgNA0
YUiA7nbt8BncuVE/gOzc6Lq7yi9gpx1K7TA0YFpdWW0SZodVqDqe/333vPfSL9V2UY1uvFW/OsO993/+
vCSPgf+XrNrmW1uFyWnKM4jVjbs0XZpV+RcPHlyJX//4k+LxhKmJWKms1kqlNwN6rLVw4MOPPqa333lP
IQaQ/9XtXplKZcXUhL6Y0GOtlS9MUXX9rhpc0xEGaht36OeLC/rl4lxHO+c9eSgcMZE706UZ1rujNGus
CSOYpcdaK5cv0tr6barWbtMaIwZQN8/P6Mfzc0XzDPFM9Zpn0ufIOQYXim8oUDd5b2q6rHQF6GGWHmut
bH6SVqobtLrGcBQDK9VNenx6+kLYDUhvcqrMeptalyNrZ3OTTgOZbIGWV9c1NdMA6sbxMXNC2ycn1GC2
uVY5+rpunBz3GECNfqFYsukyKzXCLD3WWulsnpaW10zEAPLvjo7oewaxh2Mjyp7dgJzB5720XO3RTmdz
TgOpdI4Wl1YUNxkxgPrrTkfxTZvptM3a3ke0GzD6bfW4RVe0U5k+BsZTGZq/WaH5xQotMGIAPGy3qN5q
U50FhYcqcl/gfbsB7IN0psCaSz3aqYmM00ByPE1z84s0t8DM3zLfBeDTe/foy1brSqTSWUPXRjKVdhpI
JCdoZm6BZmYXqIyoQZ7kp4MnNM4XAWqISA+5cca+b90pz84bWqw9wzlm6bHWGh1LUak894LM/kP+/P3R
sXGngZFEkoqlsuKTz+/T4dHlS2Xrs/tU5JcSGEmMOQ0MjyT4y8P/MPh3e3DUpYNO17x8oHm2tvft+4ed
Z3JdQx9glh5rrVh8lLL8isQb8clunX4CexqdP9G5inbkvNyRyJhaDLQxIxYfcRqIxuI0kckrDtjxvgZP
wsoNpO7FOmfVgnFP6fMLLzocdxoIR2KU5N8nvrX77Ut6DPgS4n7bEJIaUZ1BRM+GGo47OK8i+si7NA59
JhwddhoIhaP880gpmjv1Xvjx9cR+PG9PI/qYpcdaK8hvsZHRMcUeO99rdWmXXSPfbUmNyLXqGXt7OIM9
fV766qza02c54pcW519AaCjiNBAIDfGXY1SBgTv6InLEHVsu+0bPvif7Vl9ALfqYpcdayx8IUZi/iJHY
MB1u1+kANDQ6P9S1ityTc/aIPYmqJ+eZSJT1GX8w5DTg9QfVZzPEbP/WpYbi0gQ9o2/lcs6eW7VxTs6j
D/1QJEreQLCfAT8FhsKKxlMtxvGRxKcwYvSlB/FHiGpf9np71v2uevTA6ws4Dbi9PvLxx+Bjd+qiwhDr
V//Q0++PcebSPAttXzBImKXHWsvl8ZLH5ycPP4nT91+5Frz+gJqBWXqstQbdHnKxM5fX2/fyy8CtBw+6
+xh43eVmZx6Ckd8/ePVacOGPZDBLj7XWjcHBLWyAb98duBZE/4bL/ZUeq9ZrTIzJMbf+JTDLw2D2f7kG
Bv4GtT2Ldl7X4kgAAAAASUVORK5CYII=
</value>
</data>
<data name="ToolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<metadata name="ds1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>249, 54</value>
</metadata>
<metadata name="documentElement1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>322, 54</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>82</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA
AABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcrvQCHK70BByu
9AYcrvQKHK70DByu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu
9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu
9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9AwcrvQKHK70Bxyu9AQcrvQCAAAAAByu
9AIcrvQGHK70DByu9BUcrvQdHK70Ixyu9CYcrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu
9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu
9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jhyu9CMcrvQdHK70FRyu
9AwcrvQGHK70Ahyu9AMcrvQMHK70GRyu9CocrvQ7HK70Rhyu9EwcrvROHK70Thyu9E4crvROHK70Thyu
9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu
9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70TRyu
9EYcrvQ7HK70Kxyu9BkcrvQMHK70BByu9AUcrvQSHK70Jwuh7VYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ
6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ
6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ
6WYAmelmAJnpZgCZ6WYAmelmCqDtWByu9CgcrvQTHK70Bhyu9AYcrvQWHK70Lgmi7nEYsvzXHLb//xy2
//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2
//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2
//8ctv//HLb//xy2//8ctv//HLb//xy2//8Zs/3fC6PweRyu9C4crvQWHK70Bxyu9AYcrvQUHK70Kxex
+8Actv//HLb//x23//8et///ILj//yK6//8lu///Kb3//yzA//8wwv//NcT//znH//89yv//Qcv//0bN
//9Kz///TdH//1HS//9T1P//V9X//1nW//9X1f//U9T//1HS//9N0f//Ss///0bN//9By///Pcr//znH
//81xP//MML//yzA//8pvf//Jbv//yK6//8guP//Hrf//xy2//8ctv//GbP81Ryu9CwcrvQVHK70Bhyu
9AQcrvQPHK70IBu1/tUctv//HLb//x63//8nuv//JLv//ym9//8uwP//M8P//zrH//9By///R87//0/R
//9X1f//Xdj//2Tb//9r3f//cd///3bi//974///f+X//4Dm//9/5f//e+P//3bi//9x3///a93//2Tb
//9d2P//V9X//0/R//9Hzv//Qcv//zrH//8zw///LsD//ym9//8mu///JLr//x63//8ctv//HLb/8hyu
9CAcrvQQHK70BRyu9AIcrvQIHK70Ehy1/qIctv//HLb//za+//8juf//Irn//yW8//8rv///MML//zbF
//89yf//RM3//0rQ//9S0///Wdb//1/Z//9m3P//a97//3Hg//904v//d+L//3jk//934v//dOL//3Hg
//9r3v//Ztz//1/Z//9Z1v//UtP//0rQ//9Ezf//Pcn//zbF//8wwv//K7///yW8//8iuf//Mr7//x23
//8ctv//HLb/xRyu9BIcrvQIHK70Ahyu9AEcrvQEHK70CBy0/C8ctv/8HLb//1PJ//8kuv//Ibn//yW7
//8qv///MMH//zXE//87yP//Qsv//0nP//9Q0///Vtb//13Y//9j2v//ad3//23e//9x4P//c+H//3Ti
//9z4f//ceD//23e//9p3f//Y9r//13Y//9W1v//UNP//0nP//9Cy///O8j//zXE//8wwf//Kr///yW7
//8iuf//Q8P//yO5//8ctv//HLX+TByu9AgcrvQEHK70AQAAAAAcrvQBHK70Ahyu9AMctv+bHLb//0/H
//83wP//Irn//yS7//8ovf//LsD//zTE//86yP//QMv//0bO//9N0f//VNT//1nW//9f2f//ZNv//2nd
//9r3v//bd7//27g//9t3v//a97//2nd//9k2///X9n//1nW//9U1P//TdH//0bO//9Ay///Osj//zTE
//8uwP//KL3//yS7//8lu///ac///x+4//8ctv++HK70Axyu9AIcrvQBAAAAAAAAAAAAAAAAAAAAAAAA
AAActv8bHLb/9iS4//9mz///I7r//yK6//8nvf//LL///zLC//83xf//Pcn//0PN//9K0P//UNP//1XV
//9a1///X9n//2Pa//9r3f//zvT//+37//+w7f//Ztz//2Pa//9f2f//Wtf//1XV//9Q0///StD//0PN
//89yf//N8X//zLC//8sv///J73//yS6//89wf//Usn//xy2//8ctv82AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAHLb/jRy2//9Vyv//OMD//yO5//8lvP//Kr///y7B//80xP//Osj//0DL
//9Gzf//StD//1DT//9V1f//Wdb//13Y//+f6P//////////////////dN7//13Y//9Z1v//VdX//1DT
//9K0P//Rs3//0DL//86yP//NMT//y7B//8qv///Jbz//ya7//9q0P//JLn//xy2/64AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Ehy2//Mluf//aM///yS6//8juv//J73//yy/
//8xwv//NsX//zvI//9By///Rs7//0rQ//9Q0///VNT//1bW//+T5P/////////////7/v//adr//1bW
//9U1P//UNP//0rQ//9Gzv//Qcv//zvI//82xf//McL//yy///8nvf//JLr//z7C//9SyP//HLb//By2
/yoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/34ctv//VMr//zrA
//8juf//Jbz//ym9//8uwP//MsL//zfF//88yf//Qcv//0bN//9K0P//TdH//1DT//9U1P//nuf//8fx
//+C4P//UtP//1DT//9N0f//StD//0bN//9By///PMn//zfF//8ywv//LsD//ym9//8lvP//Jrv//2rQ
//8kuf//HLb/ogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2
/wwctv/tJLn//2nP//8nu///Jrv//yq9//8twP//MsL//zbE//87x///P8n//0TM//9Izf//S8///03Q
//9P0f//UdH//1HS//9R0f//T9H//03Q//9Lz///SM3//0TM//8/yf//O8f//zbE//8ywv//LcD//yq9
//8nu///QsL//1HI//8ctv/5HLb/IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAActv9yHLb//1TJ//8/wv//J7v//yq8//8uvv//MsH//zXD//86xP//Psf//0LK
//9Fy///SMz//0rN//9Mzv//Tc///07P//9Nz///TM7//0rN//9IzP//Rcv//0LK//8+x///OsT//zXD
//8ywf//Lr7//yq8//8svP//bdH//yS5//8ctv+TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv8GHLb/5CS4//9s0f//Lbz//yy8//8vvf//Mr///zXC
//85w///PcX//0DI//9Dyf//Rsr//0nL//9Ozf//1fP///n9//+K3v//Ssz//0nL//9Gyv//Q8n//0DI
//89xf//OcP//zXC//8yv///L73//yy8//9GxP//UMj//xy2//Mctv8YAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Zhy2//9Vyf//RcP//y68
//8wvf//Mr7//zbA//85wf//PMP//0DE//9Cx///RMf//0bJ//9w1f/////////////Q8f//R8n//0bJ
//9Ex///Qsf//0DE//88w///OcH//zbA//8yvv//ML3//zK+//9w0v//I7n//xy2/4cAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Axy2
/9siuP//b9H//zW+//8yvv//NL///zbA//84wv//O8L//z7D//9Axf//QsX//0TH//9x1f//////////
///U8v//Rcj//0TH//9Cxf//QMX//z7D//87wv//OML//zbA//80v///Mr7//03F//9PyP//HLb/7Ry2
/xIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAABy2/1cctv//VMn//0zF//81vv//Nr///ze///85wP//O8H//zzC//8/w///QcT//0LE
//9v0//////////////T8v//Q8X//0LE//9BxP//P8P//zzC//87wf//OcD//ze///82v///OMD//3LS
//8guP//HLb/eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/wMctv/PIrj//3TT//88wP//OsD//zvA//88wf//PsL//z/C
//9Aw///QsP//0PD//9w0//////////////T8v//RMX//0PD//9Cw///QMP//z/C//8+wv//PMH//zvA
//87wP//VMn//1DI//8ctv/nHLb/DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv9OHLb//1PJ//9Vyf//PsD//z7B
//8/wf//QMH//0HC//9Cwv//Q8P//0PD//9w0v/////////////T8f//RMP//0PD//9Dw///QsL//0HC
//9Awf//P8H//z7B//9Bwv//d9X//x+3//8ctv9sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/xiK4
//961f//RsT//0LC//9Cwv//Q8P//0TD//9Fw///RcP//0bE//9x0//////////////U8f//RsT//0bE
//9Fw///RcP//0TD//9Dw///QsL//0PC//9dzP//Ucj//xy2/94ctv8GAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAHLb/Pxy2//9Vyf//Xs3//0nE//9IxP//SMT//0jE//9IxP//ScT//0nF//900///////////
///V8v//SsX//0nF//9JxP//SMT//0jE//9IxP//SMT//0zH//991f//H7f//xy2/10AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/7oiuP//ftb//1LI//9Ox///Tsf//07H//9Ox///Tsf//07H
//931P/////////////W8v//Tsf//07H//9Ox///Tsf//07H//9Ox///Tsf//2bP//9RyP//HLb/1Ry2
/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/zMctv//Vsn//2jP//9Uyf//U8n//1PJ
//9Tyf//U8n//1PJ//971v/////////////X8v//U8n//1PJ//9Tyf//U8n//1PJ//9Tyf//V8r//4HY
//8ft///HLb/UQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv+rIbj//4XZ
//9dzP//Wsv//1rL//9ay///Wsv//1rL//+B1//////////////Y8///Wsv//1rL//9ay///Wsv//1rL
//9ay///cdL//1LJ//8ctv/JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAActv8nHLb//FfK//900///Yc3//2DN//9gzf//YM3//2DN//+F2f/////////////a8///YM3//2DN
//9gzf//YM3//2DN//9kzv//h9n//x+3//8ctv9CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAHLb/nB+3//+L2///atD//2bP//9mz///Zs///2bP//+K2v//////////
///b9P//Zs///2bP//9mz///Zs///2fP//981f//Usn//xy2/70AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Gxy2//lYyv//f9b//23R//9t0f//bdH//23R
//+P3P/////////////d9P//bdH//23R//9t0f//bdH//3DR//+M2v//Hrf//xy2/zYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/40ft///ktz//3bU
//9z0///c9P//3PT//+U3f/////////////e9f//c9P//3PT//9z0///c9P//4bZ//9SyP//HLb/rgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2
/xUctv/zWMr//4ra//961f//etX//3rV//+Z3//////////////g9f//etX//3rV//961f//fdX//5Hc
//8et//8HLb/KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAActv+BH7f//5be//+C2P//gNf//4DX//+Q3P///v/////////Q8P//gNf//4DX
//+A1///kd3//1TJ//8ctv+iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv8MHLb/7VnK//+V3f//htn//4bZ//+G2f//m+D//6/m
//+K2v//htn//4bZ//+J2f//lt3//x63//kctv8hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/ciC3//+a3///j9z//43b
//+N2///jdv//43b//+N2///jdv//43b//+b4P//VMn//xy2/5MAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Bhy2
/+RZyv//n+H//5Pd//+T3f//k93//5Pd//+T3f//k93//5bd//+a3///Hrf/8xy2/xsAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAABy2/2Met///oOH//5vg//+a3///mt///5rf//+a3///mt///6bj//9Uyf//HLb/hwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/wMctv/YWcr//6rk//+f4f//n+H//5/h//+f4f//ouH//57h
//8et//tHLb/EgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv9UHrf//6Ti//+m4///peL//6Xi
//+l4v//r+X//1LI//8ctv97AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/zFrL
//+z6P//quX//6rl//+s5f//oeL//x63/+cctv8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAHLb/RR63//+p5P//tuj//7Pn//+96v//VMn//xy2/2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/71GxP//wuz//8Xt//+S3f//HLb/3hy2/wYAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/zYctv//Mr3//1HI//8iuP//HLb/YAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv+HHLb//xy2
//8ctv+lHLb/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAHLb/Jxy2/zYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP////////z9gAAAAAAB/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAA
AAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9gAAAAAAB/P3wAAAAAA/8/fgAAAAAH/z9+AAAAAAf
/P38AAAAAD/8/fwAAAAAP/z9/gAAAAB//P3+AAAAAH/8/f8AAAAA//z9/wAAAAD//P3/gAAAAf/8/f+A
AAAB//z9/8AAAAP//P3/4AAAA//8/f/gAAAH//z9//AAAAf//P3/8AAAD//8/f/4AAAf//z9//gAAB//
/P3//AAAP//8/f/8AAA///z9//4AAH///P3//gAAf//8/f//AAD///z9//8AAP///P3//4AB///8/f//
gAH///z9///AA////P3//8AD///8/f//4Af///z9///wB////P3///AP///8/f//+A////z9///4H///
/P3///wf///8/f///n////z9/////////P3////////8/SgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAHK70ARuu9AIcrvQEG670BByu9AQbrvQEHK70BBuu9AQcrvQEG670BByu
9AQbrvQEHK70BBuu9AQcrvQEG670BByu9AQbrvQEHK70BBuu9AQcrvQEG670BByu9AQbrvQEHK70BBuu
9AQcrvQEG670BByu9AMbrvQBAAAAABuu9AIbrvQIG670Ehuu9BobrvQeG670Hhuu9B4brvQeG670Hhuu
9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu
9B4brvQeG670Hhuu9B4brvQaG670Ehuu9AgbrvQCG670Bxyu9BgVqPE+EqfwThKn8FUSp/BWEqfwVhKn
8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn
8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8E4UqPE/G670GRyu9AgbrvQLG670JAuk8IARq/bDEqz3zBKs
98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs
98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqv3xQyk8YYbrvQkG670Cxuu9AocrvQgGbP92hy2
//8et///Ibj//yW7//8qvv//MsP//znG//9Cy///SM7//1HS//9X1f//Xtf//2PZ//9l2///Ydn//1vW
//9W1P//TtD//0fO//8+yf//N8X//y/B//8pvf//I7r//yC4//8ctv//GrT96Ruu9CEcrvQKG670BRuu
9BMbtf7MG7b//yq6//8juf//KL3//y/B//85x///Qsz//07R//9Y1f//Ytr//2vd//9z4f//eOL//3rk
//934v//cN///2nd//9e2P//VdT//0nP//9Ayv//NcT//y3A//8lu///Krv//xy2//8btv/iG670Exuu
9AYbrvQBHK70BRuz+18ctv/zRMT//yS6//8mvP//Lb///zbF//8/yv//Ss///1PU//9d2P//Zdv//2ze
//9w3///ceD//2/f//9q3f//Y9r//1nW//9R0///Rc3//zzJ//8ywv//K7///yS6//9Awv//H7f/+Byz
/HAbrvQFHK70AQAAAAAbrvQBG7L6GBu2/70+wf//M7///yS7//8qvv//NMP//zvI//9Gzv//T9L//1jW
//9f2f//Z9v//5fn//+17v//eOD//2Pa//9d2P//VNT//03R//9CzP//Osf//zDB//8pvf//Kbv//03H
//8ctv/LG7L6Ihuu9AEAAAAAAAAAAAAAAAAAAAAAHLb/Qym6//xHxP//I7r//ye9//8vwf//NsX//0DK
//9Hzv//T9L//1bV//9w3P//3fb///7+//+f6P//Wdb//1TU//9M0f//Rc3//zzJ//80xP//K7///ya8
//8/wv//Nr///hu2/1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv8EHLb/w0bE//8tvP//JLv//yu+
//8xwv//Osf//0HL//9Iz///TtH//1nV//+h5///yfH//3Tc//9R0///TdH//0XN//8/yv//NsX//zDB
//8ovf//Jbv//07G//8juP/VG7b/CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv9HH7f/61HH
//8pu///K73//zDA//83xP//Pcf//0TL//9Jzf//TM///0/Q//9P0P//TtD//0vO//9IzP//Qcr//zzG
//80w///LsD//ym8//9Dw///Nb7/8hy2/1YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABu2
/w4btv+sQcL//zvB//8svP//ML7//zbC//88xP//Qcn//0XK//9KzP//id7//6fm//9Y0P//SMv//0TK
//8/x///OsT//zTB//8vvv//Mb3//1DH//8dtv+6G7b/FgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAABy2/y4puv/3Tsb//zC8//8yvv//NsD//zrC//9AxP//Qsb//1PM///P8f//7/r//3TW
//9Ex///Qsb//z7D//85wf//NL///zG9//9Jxf//N7//+xu2/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAG7b/ARy2/6xIxP//PsH//zS+//83v///OsH//z3C//9AxP//Ucn//8/w
///w+v//c9T//0LE//9Aw///PML//znA//82v///Nb///1PI//8iuP+/G7b/BAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG7b/OB62/+Fcy///PsH//zzA//8+wf//QML//0HC
//9SyP//z/D///D6//9z0///QsP//0HC//8/wf//PcH//zzA//9UyP//M77/6Ry2/0UAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv8JG7b/mUbE//9Rx///QMH//0HC
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
rEHwD6xB+B+sQfgfrEH8P6xB/j+sQf5/rEE=
</value>
</data>
</root>

View File

@@ -0,0 +1,205 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace vmsnet.HMI
{
public partial class BarCtrl : UserControl
{
CGROUP NowGrp = null;
RectangleF BarRect = new RectangleF(0, 0, 0, 0);
public Boolean Show_DebugMsg { get; set; }
public BarCtrl()
{
InitializeComponent();
// Initialize Variables
// Set Optimized Double Buffer to reduce flickering
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
// Redraw when resized
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.Font = SystemInformation.MenuFont;
Show_DebugMsg = false;
}
public CGROUP Group
{
set
{
NowGrp = value;
}
}
/// Override OnPaint method
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
this.SuspendLayout();
// AntiAliasing
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
if (bMakeBarRect) MakeBarRect();
DrawBarGraph(e.Graphics);
Draw_Debug(e.Graphics);
this.Update();
this.ResumeLayout();
}
public void Draw_Debug(Graphics g)
{
if (!Show_DebugMsg) return;
//Single newy = 50;
//String newstr = "";
SizeF fontsize;
StringBuilder DebugMsg = new StringBuilder();
DebugMsg.AppendLine("GRP=" + this.NowGrp.ToString());
// newstr = "CHinfo=" + chinfo.GetUpperBound(0);
foreach ( CITEM item in NowGrp.Items)
{
DebugMsg.AppendLine("item=" + item.ToString());
}
fontsize = g.MeasureString(DebugMsg.ToString(), this.Font);
g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Black)), new Rectangle(0, 0, (int)(fontsize.Width * 1.3), (int)(fontsize.Height * 1.3)));
g.DrawString(DebugMsg.ToString(), this.Font, Brushes.Tomato, 10, 10);
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
BarRect = new RectangleF(DisplayRectangle.Left + Padding.Left, DisplayRectangle.Top + Padding.Top, DisplayRectangle.Width - Padding.Left - Padding.Right, DisplayRectangle.Height - Padding.Top - Padding.Bottom);
}
public Boolean bMakeBarRect = true;
private void MakeBarRect()
{
if (BarRect.Width == 0) return;
if (!bMakeBarRect) return;
if (NowGrp == null) return;
if (NowGrp.Items == null) return;
//각아이템의 2pixel 만큼 떨어져있다.
int ItemWidth = (int)(Math.Floor((this.BarRect.Width - ((NowGrp.NullBalanceSeq - 1) * 1)) / NowGrp.NullBalanceSeq));
if (ItemWidth < 2) ItemWidth = 2; //너무작은건 어절수없음
int ItemHeight = (int)(Math.Floor((BarRect.Height - 20 - 10) / 2));
int totalWidth = ItemWidth * NowGrp.NullBalanceSeq + ItemWidth; //1개를 더 추가한다.
Single CenterMarginX = (BarRect.Width - totalWidth) / 2;
//차트내의 아이템의 표시영역을 결정
//UInt16 itemindex = 0;
foreach (CITEM item in NowGrp.Items)
{
//Single Term = 0;//= item.idx == 0 ? 0 : item.idx * 2;
Single X = 0;//(item.idx * ItemWidth) + Term;
Single y = 0;//ChartRect.Top;
if (item.seq <= NowGrp.NullBalanceSeq)
{
//상위그룹
// Term = item.seq == 1 ? 0 : (item.seq) * 2;
X = (item.seq * ItemWidth) ;//+ Term;
y = 20;
}
else
{
//하위그룹
// Term = item.seq == NowGrp.NullBalanceSeq ? 0 : (item.seq - (NowGrp.NullBalanceSeq + 1)) * 2;
X = (item.seq - NowGrp.NullBalanceSeq -1) * ItemWidth;//+ Term;
y = ItemHeight + 20;
}
item.BarRect = new RectangleF(BarRect.Left + X + CenterMarginX, BarRect.Top + y, ItemWidth, ItemHeight - 10);
// itemindex += 1;
}
bMakeBarRect = false;
}
private void DrawBarGraph(Graphics g)
{
if (BarRect.Width < 1) return;
if (bMakeBarRect) MakeBarRect();//영역을 새로 생성해야한다면 만듬
if (NowGrp == null) return;
if (NowGrp.Items == null) return;
int YMax = 4;
int YMin = 0;
///현재등록된 아이템을 화면에 표시한다.
foreach (CITEM item in NowGrp.Items)
{
//값에따른 색상입히기
Color BarColor = Color.Green;
if (item.ismin) BarColor = Color.DeepSkyBlue;
else if (item.ismax) BarColor = Color.Tomato;
else if (item.onalamh ) BarColor = Color.Red;
else if (item.onalaml) BarColor = Color.Blue;
Single Percent = (100 * item.CurValue) / (YMax - YMin);
//값에따른 높이값
Single ValueHeight = item.BarRect.Height * (Percent / 100);
if (ValueHeight > 1)
{
Single ValueY = item.BarRect.Top + (item.BarRect.Height - ValueHeight);
//색상으로 칠한다.
g.FillRectangle(new SolidBrush(BarColor), item.BarRect.Left, ValueY, item.BarRect.Width, ValueHeight);
}
//테두리표시
if (item. )
{
g.DrawRectangle(Pens.Black, item.BarRect.Left, item.BarRect.Top, item.BarRect.Width, item.BarRect.Height);
}
//g.DrawString(item.idx.ToString("000"), new Font("Arial", 7), Brushes.Black, item.BarRect.Left, item.BarRect.Bottom);
}
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
bMakeBarRect = true;
Invalidate();
}
private void InitializeComponent()
{
this.SuspendLayout();
//
// DispCtrl
//
this.Name = "BarCtrl";
this.Size = new System.Drawing.Size(287, 321);
this.ResumeLayout(false);
}
} //end class
} //end namespace

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
namespace vmsnet.HMI
{
public partial class CButton
{
public RectangleF Rect { get; set; }
public Object Tag { get; set; }
public EBUTTONTYPE ButtonType { get; set; }
public CButton()
{
Rect = new RectangleF(0, 0, 0, 0);
Tag = null;
ButtonType = EBUTTONTYPE.CELL;
}
public CButton(RectangleF _rect, Object _obj, EBUTTONTYPE _btype)
{
Rect = _rect;
Tag = _obj;
ButtonType = _btype;
}
~CButton()
{
}
}
}

View File

@@ -0,0 +1,419 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Drawing.Drawing2D;
using System.Drawing;
namespace vmsnet.HMI
{
[TypeConverterAttribute(typeof(ExpandableObjectConverter)),Serializable()]
public partial class CGROUP
{
private int idx;
private int widx;
private String title;
private int row;
private int column;
private int rspan;
private int cspan;
private int rowcount;
private int columncount;
private String matrix;
private RectangleF rect;
private Font cellfont;
private Color cellfontcolor;
public String maxcellname = "#999";
public String maxcellvalue = "00.000";
public String maxcellalam = "↑0↓0";
private String _alamtype;
public CITEM[] itemarray;
private RectangleF[] cellgroup;
private Single cellgroup_width;
private Single cellgroup_height;
public Single _cell_title_width;
public Single _cell_value_width;
public Single _cell_alam_width;
public short _null_itemseq;
public Single _null_valueL;
public Single _null_valueR;
private Single _null_offset; //옵셋
public RectangleF Rect_Title;
public RectangleF Rect_Header;
public RectangleF Rect_body;
private Single alamh; //상위알람
private Single alaml; //하위알람
private Single aalamh; //상위알람
//private Single aalaml; //하위알람
//public Single nbhh;
public Single nbh;
//public Single nbll;
public Single nbl;
public Boolean _pre_nbalam_h=false;
public Boolean _pre_nbalam_l=false;
public Boolean _nbalam_h = false;
public Boolean _nbalam_l = false;
public Single _amp; //KAVALUE
public String _ampidx; //KAINDEX
public String _ampunit; //KAINDEX
public short _ampdecpos; //KAINDEX
public Single _maxvolt;
public Single _avgvolt;
public Single _minvolt;
public Single _sumvolt; //전체합계
public Single _sumvolt1; //분주된SUm
public Single _sumvoltA; //전체합계(A)
public Single _sumvoltB; //전체합계(B)
public short _alamcount=0;
public short _alamcountlb = 0;
public CITEM _maxitem = null;
public CITEM _minitem = null;
public CITEM _maxitemp = null;
public CITEM _minitemp = null;
public Boolean Showinfo=false;
public delegate void OnChangeDataHandler();
public event OnChangeDataHandler OnChangeData;
public int _unusedcount = 0; //미사용채널수
public int _errorcount = 0; //에러난채널수
public int _disccount = 0; //에러난채널수
public CGROUP()
{
_sumvolt = 0;
_sumvolt1 = 0;
_sumvoltA = 0;
_sumvoltB = 0;
_maxvolt = 0;
_minvolt = 0;
_avgvolt = 0;
_errorcount = 0;
_disccount = 0;
idx = 0;
widx = 0;
row = 0;
column = 0;
columncount = 2;
rowcount = 15;
rspan = 1;
cspan = 1;
matrix = "15x2";
title = "TINDEVIL";
rect = new RectangleF(0, 0, 0, 0);
cellfont = new Font("나눔고딕", 10, FontStyle.Bold);
cellfontcolor = Color.Black;
cellgroup = new RectangleF[1];
Items = new CITEM[0];
}
[System.ComponentModel.Browsable(false)]
public Single Sumvolt
{
get { return _sumvolt; }
}
[System.ComponentModel.Browsable(false)]
public Single Sumvolt1
{
get { return _sumvolt1; }
}
[System.ComponentModel.Browsable(false)]
public Single SumvoltA
{
get { return _sumvoltA; }
}
[System.ComponentModel.Browsable(false)]
public Single SumvoltB
{
get { return _sumvoltB; }
}
[System.ComponentModel.Browsable(false)]
public Single Maxvolt
{
get { return _maxvolt; }
}
[System.ComponentModel.Browsable(false)]
public Single Minvolt
{
get { return _minvolt; }
}
[System.ComponentModel.Browsable(false)]
public Single Avgvolt
{
get { return _avgvolt; }
}
//[System.ComponentModel.Browsable(false)]
//public Single AmpKA
//{
// get { return _ampka; }
//}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content),Browsable(false), Category("알람"), Description("그룹에 지정된 알람형태입니다. Manual 과 Auto 가 있으며 변경을 하시려면 알람설정(alam Setup)을 이용하세요.")]
public String AlarmType
{
get { return _alamtype; }
set { _alamtype = value; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("알람수동"), Description("그룹에 지정되는 상위알람값입니다. 셀의 알람설정이 그룹으로 지정되었다면 이 값이 사용됩니다.")]
public Single HIGH
{
get { return alamh; }
set { alamh = value;
if (OnChangeData != null) OnChangeData();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("알람수동"), Description("그룹에 지정되는 하위알람값입니다. 셀의 알람설정이 그룹으로 지정되었다면 이 값이 사용됩니다.")]
public Single LOW
{
get { return alaml; }
set { alaml = value;
if (OnChangeData != null) OnChangeData();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("알람자동"), Description("그룹에 지정되는 상위알람값입니다. 셀의 알람설정이 그룹으로 지정되었다면 이 값이 사용됩니다.")]
public Single UP
{
get { return aalamh; }
set
{
aalamh = value;
if (OnChangeData != null) OnChangeData();
}
}
//[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("알람자동"), Description("그룹에 지정되는 하위알람값입니다. 셀의 알람설정이 그룹으로 지정되었다면 이 값이 사용됩니다.")]
//public Single DOWN
//{
// get { return aalaml; }
// set
// {
// aalaml = value;
// try { OnChangeData(); }
// catch { }
// }
//}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content),Browsable(false), Category("일반"), Description("Null Balance 보정값입니다.")]
public Single NullBalanceOffset
{
get { return this._null_offset; }
set { this._null_offset = value;
if (OnChangeData != null) OnChangeData();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("일반"), Description("Null Balance 기준 아이템번호입니다.")]
public short NullBalanceSeq
{
get { return this._null_itemseq; }
set
{
this._null_itemseq = value;
if (OnChangeData != null) OnChangeData();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("일반"), Description("셀표시 글꼴의 색상입니다."),Browsable(false)]
public Color
{
get { return this.cellfontcolor; }
set { this.cellfontcolor = value;
if (OnChangeData != null) OnChangeData();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("일반"), Description("셀표시 글꼴입니다.")]
public Font
{
get { return this.cellfont; }
set { this.cellfont = value;
if (OnChangeData != null) OnChangeData();
}
}
[System.ComponentModel.Browsable(false)]
public RectangleF[] CellGroup
{
get { return this.cellgroup; }
set { this.cellgroup = value; }
}
[System.ComponentModel.Browsable(false)]
public Single CellGroup_Height
{
get { return cellgroup_height; }
set { cellgroup_height = value; }
}
[System.ComponentModel.Browsable(false)]
public Single CellGroup_Width
{
get { return cellgroup_width; }
set { cellgroup_width = value; }
}
[System.ComponentModel.Browsable(false)]
public Single Cell_Title_Width
{
get { return _cell_title_width; }
}
[System.ComponentModel.Browsable(false)]
public Single Cell_Value_Width
{
get { return _cell_value_width; }
}
[System.ComponentModel.Browsable(false)]
public Single Cell_Alam_Width
{
get { return _cell_alam_width; }
}
[System.ComponentModel.Browsable(false)]
public int ColumnCount
{
get { return columncount; }
}
[System.ComponentModel.Browsable(false)]
public int RowCount
{
get { return rowcount; }
}
/// <summary>
/// 내부아이템
/// </summary>
[System.ComponentModel.Browsable(false)]
public CITEM[] Items
{
get { return itemarray; }
set { itemarray = value; }
}
/// <summary>
/// 이그룹의 전체 영역
/// </summary>
[System.ComponentModel.Browsable(false)]
public RectangleF R
{
get { return rect; }
set { rect = value; }
}
/// <summary>
/// 그룹의일련번호
/// </summary>
[System.ComponentModel.Browsable(false)]
public int IDX
{
get { return idx; }
set { idx = value; }
}
/// <summary>
/// ROWSPAN
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("일반"), Description("이 그룹이 표시되는데 사용되는 줄병합 갯수입니다.(기본값:1)"), System.ComponentModel.Browsable(false)]
public int
{
get { return rspan; }
set { rspan = value; }
}
/// <summary>
/// COLUMNSPAN
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("일반"), Description("이 그룹이 표시되는데 사용되는 열병합 갯수입니다.(기본값:1)"), System.ComponentModel.Browsable(false)]
public int
{
get { return cspan; }
set { cspan = value; }
}
/// <summary>
/// WINDOW IDX
/// </summary>
[System.ComponentModel.Browsable(false)]
public int WIDX
{
get { return widx; }
set { widx = value; }
}
/// <summary>
/// LOCATION COLUmN
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("일반"), Description("이 그룹이 표시되는데 사용되는 열의 위치값입니다."), System.ComponentModel.Browsable(false)]
public int
{
get { return this.column; }
set { column = value; }
}
/// <summary>
/// LOCATION ROW
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("일반"), Description("이 그룹이 표시되는데 사용되는 줄의 위치값입니다."), System.ComponentModel.Browsable(false)]
public int
{
get { return this.row; }
set { row = value; }
}
/// <summary>
/// MATRIX ARRAY
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("일반"), Description("이 그룹이 표시되는 아이템의 배열을 표시합니다. 20x2 일경우 총 40개의 셀이 배치됩니다."), System.ComponentModel.Browsable(false)]
public String
{
get { return this.matrix; }
set
{
matrix = value;
matrix = matrix.Replace("*", "x").Replace("X", "x").Replace("/", "x").Replace("-", "x");
rowcount = int.Parse(matrix.Split(new char[] { 'x' })[0]);
columncount = int.Parse(matrix.Split(new char[] { 'x' })[1]);
cellgroup = new RectangleF[columncount];
itemarray = new CITEM[(rowcount * columncount) - 1];
}
}
/// <summary>
/// THIS NAME
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("일반"), Description("이 그룹의 이름입니다.")]
public String
{
get { return this.title; }
set { title = value;
if (OnChangeData != null) OnChangeData();
}
}
}
}

View File

@@ -0,0 +1,374 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace vmsnet.HMI
{
[TypeConverterAttribute(typeof(ExpandableObjectConverter)), Serializable()]
public partial class CITEM
{
public int column;
public int row;
public RectangleF rect;
public RectangleF BarRect;
private String name;
public int seq;
/// <summary>
/// 0부터시작
/// </summary>
public int idx_dev; //장치의 인덱스값
/// <summary>
/// 0부터시작
/// </summary>
public int idx_unit; //서브유닛의 인덱스값
/// <summary>
/// 0부터시작
/// </summary>
public int idx_ch; //채널의 인덱스값
public int idx; //셀의고유인덱스값(DB는 이값이 저장되고 후에 불러오게된다)
public Boolean ismax = false;
public Boolean ismin = false;
public Color c_color = Color.Black;
//MY EVENT
public delegate void OnAlamStatusChangeHandler();
public event OnAlamStatusChangeHandler OnAlamStausChanged; //UPDATE USER CURSOR
public delegate void OnChangeDataHandler();
public event OnChangeDataHandler OnChangeData;
public delegate void OnChangeValueHandler(); //값이변경되었을경우 발생한다.
public event OnChangeValueHandler OnChangeValueData;
public Boolean enable = false;
private Boolean active = false;
public Single alamh = 0;
public Single alaml = 0;
public Single aalamh = 0;
public Single aalaml = 0;
public Single alamv = -999; //auto시 기준값
private COMM.EALAMTYPE alamatype; //0:no 1:all 2:grp 3:cell
private Single offset;
public String = "";
public Boolean _onalamh = false;
public Boolean _onalaml = false;
public Boolean _p_onalamh = false;
public Boolean _p_onalaml = false;
public Boolean _onalamover = false;
public Boolean _p_onalamover = false;
private String _value = "";
public int value2 = 0; //소수자리가 들어가기전의 값
public Single CurValue =0f;
public Single CurValue1 = 0f;
public String mtime = "";
private String _time_pre = ""; //이전값
public String unit; //표시단위(v,c)
public int decpos; //10진수단위값
// public Form detailform = null;
public Boolean Onset = false;
// public Boolean firstsave = true;
public CITEM()
{
offset = 0;
column = 0;
row = 0;
name = "Citem";
rect = new RectangleF(0, 0, 0, 0);
BarRect = new RectangleF(0, 0, 0, 0);
_value = "";
value2 = 0;
mtime = "";
idx = 0;
// detailform = null;
Onset = false;
active = false;
seq = 0;
CurValue = 0;
CurValue1 = 0;
}
public CITEM(short pcolumn, short prow, String pname, ESTATUS pstatus, RectangleF prect)
{
this.column = pcolumn;
this.row = prow;
this.name = pname;
BarRect = new RectangleF(0, 0, 0, 0);
this.rect = prect;
CurValue = 0;
CurValue1 = 0;
//detailform = null;
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("seq=" + seq.ToString() + ",offset=" + offset.ToString() + ",curval=" + CurValue.ToString() + ",rect=" + BarRect.ToString());
sb.AppendLine("name=" + + ",use =" + .ToString() + ",활성화=" + .ToString());
return sb.ToString();
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("측정값"), Category("측정값"),Browsable(false)]
public String Value
{
get { return this._value; }
set { this._value = value;
//값이 이전과 바뀌었을경우에 사용한다.
if (mtime != _time_pre)
{
if (OnChangeValueData != null) OnChangeValueData();
_time_pre = mtime;
}
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("표시기호"), Category("정보"), Browsable(false)]
public String
{
get { return unit; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("소수점위치"), Category("정보"), Browsable(false)]
public int
{
get
{
return decpos;
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("측정값"), Category("정보"),Browsable(false)]
public String
{
get {
if (_value == null) return "";
else return _value;
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("측정된시간"), Category("정보"), Browsable(false)]
public String
{
get {
if (mtime == null) return "";
else return mtime;
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("값배열을 참조하는 Channel INDEX"), Category("테스트"), System.ComponentModel.Browsable(false)]
public int _번호
{
get { return idx; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("값배열을 참조하는 Channel INDEX"), Category("테스트"), System.ComponentModel.Browsable(false)]
public int _채널
{
get { return idx_ch; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("값배열을 참조하는 Device INDEX"), Category("테스트"), System.ComponentModel.Browsable(false)]
public int _장치
{
get { return idx_dev; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("값배열을 참조하는 SubUnit INDEX"), Category("테스트"), System.ComponentModel.Browsable(false)]
public int _유닛
{
get { return idx_unit; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("HIGH 알람의 발생여부(변경불가)"), Category("알람발생상태"), System.ComponentModel.Browsable(false)]
public Boolean
{
get { return _onalamh; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("HIGH 알람의 발생여부(변경불가)"), Category("알람발생상태"), System.ComponentModel.Browsable(false)]
public Boolean onalamh
{
get { return _onalamh; }
set
{
_onalamh = value;
if (OnAlamStausChanged != null) OnAlamStausChanged();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("HIGH 알람의 발생여부(변경불가)"), Category("알람발생상태"), System.ComponentModel.Browsable(false)]
public Boolean onalaml
{
get { return _onalaml; }
set { _onalaml = value;
if (OnAlamStausChanged != null) OnAlamStausChanged();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("LOW 알람의 발생여부(변경불가)"), Category("알람발생상태"), System.ComponentModel.Browsable(false)]
public Boolean
{
get { return _onalaml; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content),Browsable(true), Category("모양"), Description("(보정값) 이곳에 값을 입력하면 해당 셀값에 + 됩니다.")]
public Single Offset
{
get { return offset; }
set { offset = value;
if (OnChangeData != null) OnChangeData();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람설정"), Description("셀 알람")]
public COMM.EALAMTYPE
{
get { return alamatype; }
set {
alamatype = value;
alamv = -999;
if (OnChangeData != null) OnChangeData();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람(수동)"), Description("상위 알람값입니다. 직접입력일경우에만 입력하세요.")]
public Single HIGH
{
get { return alamh; }
set
{
if ( == COMM.EALAMTYPE.)
{
alamh = value;
if (OnChangeData != null) OnChangeData();
}
else
{
MessageBox.Show("알람값을 입력하려면 [개별알람]으로 변경 후 입력하세요");
}
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람(수동)"), Description("하위 알람값입니다. 직접입력일경우에만 입력하세요.")]
public Single LOW
{
get { return alaml; }
set {
if ( == COMM.EALAMTYPE.)
{
alaml = value;
if (OnChangeData != null) OnChangeData();
}
else
{
MessageBox.Show("알람값을 입력하려면 [개별알람]으로 변경 후 입력하세요");
}
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람(자동)"), Description("상위 알람값입니다. 직접입력일경우에만 입력하세요.")]
public Single H
{
get { return aalamh; }
set
{
if ( == COMM.EALAMTYPE.)
{
aalamh = value;
if (OnChangeData != null) OnChangeData();
}
else
{
MessageBox.Show("알람값을 입력하려면 [개별알람자동]으로 변경 후 입력하세요");
}
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람(자동)"), Description("하위 알람값입니다. 직접입력일경우에만 입력하세요.")]
public Single L
{
get { return Math.Abs(aalaml); }
set
{
if ( == COMM.EALAMTYPE.)
{
aalaml = Math.Abs(value);
if (OnChangeData != null) OnChangeData();
}
else
{
MessageBox.Show("알람값을 입력하려면 [개별알람자동]으로 변경 후 입력하세요");
}
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람(자동)"), Description("기준값")]
public Single
{
get { return alamv; }
set { this.alamv = value; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),System.ComponentModel.Browsable(false)]
public int Column
{
get { return this.column; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), System.ComponentModel.Browsable(false)]
public int Row
{
get { return this.row; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("모양"), Description("이 셀의 이름입니다.")]
public string
{
get { return this.name; }
set { name = value;
if (OnChangeData != null) OnChangeData();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("모양"), Description("이 셀의 사용여부를 설정합니다. 사용이 해제된 셀은 자료가 저장되지 않습니다.")]
public Boolean
{
get { return this.enable; }
set { this.enable = value;
if (OnChangeData != null) OnChangeData();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("정보"), Description("이 셀의 활성화여부를 설정합니다. 해제된 셀은 알람"), Browsable(true)]
public Boolean
{
get { return this.active; }
set
{
this.active = value;
}
}
}
}

View File

@@ -0,0 +1,58 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Drawing.Drawing2D;
using System.Drawing;
namespace vmsnet.HMI
{
[TypeConverterAttribute(typeof(ExpandableObjectConverter))]
public partial class CMouseinfo
{
private Boolean hand;
private Boolean cross;
private Boolean move;
private Boolean drag;
private EDRAGTYPE dragtype;
private PointF position;
public CMouseinfo(PointF PointF)
{
position = PointF;
}
public EDRAGTYPE DragType
{
get { return this.dragtype; }
set { this.dragtype = value; }
}
public PointF Position
{
get { return this.position; }
set { this.position = value; }
}
public Boolean Hand
{
get { return this.hand; }
set { this.hand = value; }
}
public Boolean Cross
{
get { return this.cross; }
set { this.cross = value; }
}
public Boolean Move
{
get { return this.move; }
set { this.move = value; }
}
public Boolean Drag
{
get { return this.drag; }
set { this.drag = value; }
}
}
}

View File

@@ -0,0 +1,149 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Drawing.Drawing2D;
using System.Drawing;
using System.Windows.Forms;
namespace vmsnet.HMI
{
[TypeConverterAttribute(typeof(ExpandableObjectConverter)), Serializable()]
public partial class CWINDOW
{
private int idx;
private String title;
private String matrix;
// public RectangleF R = new RectangleF(0, 0, 0, 0);
public Single _itemwidth;
public Single _itemheight;
private int rowcount;
private int columncount;
//private Single alamh;
//private Single alaml;
private Boolean _debug=false;
////연결종료된시간이있다.
//public UInt16 disconnecttime = 0;
//public UInt16 restarttime = 0;
public delegate void OnChangeDataHandler();
public event OnChangeDataHandler OnChangeData;
public CWINDOW()
{
idx = 0;
title = "WINDOW";
matrix = "1x1";
_itemwidth = 0;
_itemheight = 0;
}
public CWINDOW(String ptitle, String pMatrix, Single iw, Single ih)
{
this.title = ptitle;
this.matrix = pMatrix;
this._itemheight = ih;
this._itemwidth = iw;
//this.R = r;
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("개발자"), Description("debug Mode")]
public Boolean Debug
{
get { return _debug; }
set { _debug = value; }
}
//[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람설정"), Description("상위 알람값입니다.")]
//public Single HIGH
//{
// get { return alamh; }
// set { alamh = value;
// try { OnChangeData(); }
// catch { }
// }
//}
//[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("알람설정"), Description("하위 알람값입니다.")]
//public Single LOW
//{
// get { return alaml; }
// set { alaml = value;
// try { OnChangeData(); }
// catch { }
// }
//}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("x"), Description("x"),Browsable(false)]
public Single ITEMWIDTH
{
get { return _itemwidth; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("x"), Description("x"), Browsable(false)]
public Single ITEMHEIGHT
{
get { return _itemheight; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("Appearance"), Description("Appearance and Style"),Browsable(true)]
public int IDX
{
get { return idx; }
set { idx = value; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("일반"), Description("해당 윈도우의 이름입니다.")]
public String
{
get { return title; }
set { title = value;
if (OnChangeData != null) OnChangeData();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("Appearance"), Description("Appearance and Style"),Browsable(false)]
public String MATRIX
{
get { return matrix; }
set
{
matrix = value.Replace("*","x").Replace("X","x");
this.rowcount = Int32.Parse(matrix.Split(new Char[] { 'x' })[0]);
this.columncount = Int32.Parse(matrix.Split(new Char[] { 'x' })[1]);
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("Appearance"), Description("Appearance and Style"), Browsable(false)]
public int RowCount
{
get
{
if (this.rowcount == 0)
{
this.rowcount = Int32.Parse(matrix.Split(new Char[] { 'x' })[0]);
}
return this.rowcount;
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("Appearance"), Description("Appearance and Style"), Browsable(false)]
public int CoulumnCount
{
get
{
if (this.columncount == 0)
{
this.columncount = Int32.Parse(matrix.Split(new Char[] { 'x' })[1]);
}
return this.columncount;
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Drawing.Drawing2D;
using System.Drawing;
namespace TrendCtrlII
{
[TypeConverterAttribute(typeof(ExpandableObjectConverter))]
public partial class CChinfo
{
public Dictionary<UInt32,float> Value;
public String C1value { get; set; } = "";
public String C2value { get; set; } = "";
public UInt16 Idx { get; set; } //트렌드뷰에서표시되고있는 인덱스값
public Boolean Show { get; set; }
public Color Color { get; set; }
public int CH { get; set; }
public String TITLE { get; set; }
public String GROUP { get; set; }
public CChinfo()
{
CH = 0;
TITLE = "";
GROUP = "";
Value = new Dictionary<uint, float>();// List<Single>(0);
}
public override string ToString()
{
return $"{(Show ? "[O]" : "[X]")} GRP:{GROUP},CH:{CH},{TITLE},{Value.Count}건";
}
}
}

View File

@@ -0,0 +1,105 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Drawing.Drawing2D;
using System.Drawing;
namespace TrendCtrlII
{
[TypeConverterAttribute(typeof(ExpandableObjectConverter))]
public partial class CMouseinfo
{
private Boolean hand;
private Boolean cross;
private Boolean move;
private Boolean changepos;
private Boolean drag;
private EDRAGTYPE dragtype;
//private PointF dragstart;
private PointF position;
private PointF position0;
//private Single _time;
private Single _volt;
private Boolean _showinfo;
private int _dragindex;
public CMouseinfo(PointF _pf)
{
position = _pf;
position0 = _pf;
_showinfo = false;
_volt = 0;
_dragindex = -1;
}
public int DragIndex
{
get { return this._dragindex; }
set { this._dragindex = value; }
}
public Boolean Showinfo
{
get { return this._showinfo; }
set { this._showinfo = value; }
}
public Int64 Time { get; set; }
public Single Volt
{
get { return this._volt; }
set { this._volt = value; }
}
public EDRAGTYPE DragType
{
get { return this.dragtype; }
set { this.dragtype = value; }
}
public PointF DragStart { get; set; }
public PointF Position
{
get { return this.position; }
set {
this.position0 = new PointF(this.position.X, this.position.Y);
this.position = value;
}
}
public PointF Position0
{
get { return this.position0; }
set { this.position0 = value; }
}
public Boolean Hand
{
get { return this.hand; }
set { this.hand = value; }
}
public Boolean Cross
{
get { return this.cross; }
set { this.cross = value; }
}
public Boolean ChangePos
{
get { return this.changepos; }
set { this.changepos = value; }
}
public Boolean Move
{
get { return this.move; }
set { this.move = value; }
}
public Boolean Drag
{
get { return this.drag; }
set { this.drag = value; }
}
}
}

View File

@@ -0,0 +1,339 @@
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Drawing;
namespace TrendCtrlII
{
[TypeConverterAttribute(typeof(ExpandableObjectConverter))]
public class ChartStyle
{
//X<><58><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
private Int64 _X1;
private Int64 _X2;
//<2F><><EFBFBD><EFBFBD>ȭ<EFBFBD>鿡 ǥ<>õǴ<C3B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
private Int64 _XV1;
private Int64 _XV2;
//<2F><><EFBFBD><EFBFBD>ȭ<EFBFBD>鿡 ǥ<>õǴ<C3B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public Int64 XV1o;
public Int64 XV2o;
//Y<><59><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
private Single _Y1;
private Single _Y2;
//<2F><><EFBFBD><EFBFBD>ȭ<EFBFBD>鿡 ǥ<>õǴ<C3B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
private Single _YV1 = 1;
private Single _YV2 = 3;
//<2F><><EFBFBD><EFBFBD>ȭ<EFBFBD>鿡 ǥ<>õǴ<C3B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public Single YV1o = 1;
public Single YV2o = 3;
//
private Boolean _datapoint = false;
private Font _yfont = new Font("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 12, FontStyle.Bold);
public int _ZoneMarginX = 50;
public int _ZoneMarginY = 50;
//public Color design_backcolor = Color.White;
public Color design_mouseinfocolor = Color.Black;
// public int _xterm = 1800;
private Font _xfont = new Font("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 8, FontStyle.Bold);
public Font _mouseinfofont = new Font("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 12, FontStyle.Bold);
private Boolean showdebug = false;
// private short defaultviewhour = 3;
public event OnUpdateinfoHandler OnUpdateinfo; //UPDATE USER CURSOR
public delegate void OnUpdateinfoHandler();
public Boolean UseZoomX { get; set; }
public Boolean UseZoomY { get; set; }
public UInt16 MaxZoomX { get; set; }
public Single MaxZoomY { get; set; }
public String UnitY { get; set; }
public String UnitX { get; set; }
public ChartStyle()
{
MaxZoomX = 10;
MaxZoomY = 0.01f;
UseZoomX = true;
UseZoomY = true;
UnitY = "Volt";
UnitX = "Sec";
<EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD> = 0; //<2F><EFBFBD><E2BABB>üǥ<C3BC>ø<EFBFBD><C3B8><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ
XGap = 0; //<2F>⺻ X<><58> ǥ<>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
YGap = 0; //<2F>⺻ Y<><59> ǥ<>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("X<><58>(<28>ð<EFBFBD>)"), Description("X<>࿡ ǥ<>õǴ<C3B5> <20>ð<EFBFBD><C3B0><EFBFBD> ǥ<>ð<EFBFBD><C3B0><EFBFBD> (0<><30> <20>ڵ<EFBFBD>)")]
public int XGap { get; set; }
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("Y<><59>"), Description("Y<>࿡ ǥ<>õǴ<C3B5> ǥ<>ð<EFBFBD><C3B0><EFBFBD> (0<><30> <20>ڵ<EFBFBD>)")]
public Single YGap { get; set; }
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("Y<><59>(VOLT)"), Description("Y<>࿡ ǥ<>õǴ<C3B5> VOLT<4C><54> ǥ<>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20>Է<EFBFBD><D4B7>ϼ<EFBFBD><CFBC><EFBFBD>.")]
public Font FontY
{
get { return _yfont; }
set
{
_yfont = value;
if (OnUpdateinfo != null) OnUpdateinfo();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("X<><58>(<28>ð<EFBFBD>)"), Description("<22><><EFBFBD><EFBFBD><EFBFBD>࿡ ǥ<>õǴ<C3B5> <20>۲<EFBFBD><DBB2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>.")]
public Font FontX
{
get { return _xfont; }
set
{
_xfont = value;
if (OnUpdateinfo != null) OnUpdateinfo();
}
}
private Int32 _xterm = 0;
/// <summary>
/// X<><58><EFBFBD><EFBFBD> ǥ<>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD>(<28><>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD>(<28><>)<29><> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> ȭ<>鿡 ǥ<>õ˴ϴ<CBB4>. <20><> <20><><EFBFBD><EFBFBD> 0<><30> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE>ִٸ<D6B4> <20>ǽð<C7BD><C3B0><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3> <20>۵<EFBFBD><DBB5>ϰ<EFBFBD> <20>˴ϴ<CBB4>.
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("<22><>ȸ"), Description("X<><58><EFBFBD><EFBFBD> ǥ<>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD>(<28><>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD>(<28><>)<29><> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> ȭ<>鿡 ǥ<>õ˴ϴ<CBB4>. <20><> <20><><EFBFBD><EFBFBD> 0<><30> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE>ִٸ<D6B4> <20>ǽð<C7BD><C3B0><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3> <20>۵<EFBFBD><DBB5>ϰ<EFBFBD> <20>˴ϴ<CBB4>.")]
public Int32 <EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD> {
get { return _xterm; }
set {
_xterm = value;
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD>ϰ<EFBFBD> <20>Ѵ´ٸ<C2B4> <20>պκ<D5BA><CEBA><EFBFBD> <20>ڸ<EFBFBD><DAB8><EFBFBD>.
if(value != 0 )
{
TimeSpan ts = DateTime.FromFileTime(X2) - DateTime.FromFileTime(X1);
if (ts.TotalSeconds > value) {
DateTime NewEd = DateTime.FromFileTime(X2);
DateTime NewSd = NewEd.AddSeconds(-1 * value);
if (NewSd > DateTime.Now)
{
NewSd = DateTime.Now;
NewEd = NewSd.AddSeconds(value);
}
X1 = NewSd.ToFileTime();
X2 = NewEd.ToFileTime();
}
}
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("<22><>Ÿ"), Description("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> ǥ<><C7A5><EFBFBD>մϴ<D5B4>.")]
public Boolean Show_DataPoint {
get { return _datapoint; }
set { _datapoint = value;
if (OnUpdateinfo != null) OnUpdateinfo();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), Description("Debug Message")]
public Boolean Show_DebugMsg
{
get { return this.showdebug; }
set { this.showdebug = value;
if (OnUpdateinfo != null) OnUpdateinfo();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("<22><><EFBFBD><EFBFBD><ECBDBA><EFBFBD><EFBFBD>"), Description("<22><><EFBFBD><EFBFBD><ECBDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ǥ<><C7A5><EFBFBD>ϴ<EFBFBD> â<><C3A2> <20><><EFBFBD>ڻ<EFBFBD>")]
public Color <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD>
{
get { return design_mouseinfocolor; }
set { design_mouseinfocolor = value;
if (OnUpdateinfo != null) OnUpdateinfo();
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("<22><><EFBFBD><EFBFBD><ECBDBA><EFBFBD><EFBFBD>"), Description("<22><><EFBFBD><EFBFBD><ECBDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ǥ<><C7A5><EFBFBD>ϴ<EFBFBD> â<><C3A2> <20>۲<EFBFBD>")]
public Font <EFBFBD><EFBFBD><EFBFBD><EFBFBD>۲<EFBFBD>
{
get { return _mouseinfofont; }
set { _mouseinfofont = value;
if (OnUpdateinfo != null) OnUpdateinfo();
}
}
/// <summary>
/// Y<><EFBFBD><E0B0AA> ǥ<>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
/// </summary>
public void ResetYxis()
{
YV1 = Y1;
YV2 = Y2;
}
/// <summary>
/// X<><EFBFBD><E0B0AA> ǥ<>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
/// </summary>
public void ResetXxis()
{
XV1 = X1;
XV2 = X2;
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ᰪ(<28><><EFBFBD><EFBFBD> ǥ<>õǴ<C3B5> <20><><EFBFBD><EFBFBD> XV2<56><32> <20><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>)
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("Y<><59>(VOLT)"), Description("Y<>࿡ ǥ<>õǴ<C3B5> VOLT<4C><54> <20>ִ밪<D6B4><EBB0AA> <20>Է<EFBFBD><D4B7>ϼ<EFBFBD><CFBC><EFBFBD>.")]
public Int64 X2
{
get { return _X2; }
set
{
_X2 = value;
_XV2 = value;
XV2o = value;
if (OnUpdateinfo != null) OnUpdateinfo();
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD>۰<EFBFBD>(<28><><EFBFBD><EFBFBD> ǥ<>õǴ<C3B5> <20><><EFBFBD><EFBFBD> XV1<56><31> <20><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>)
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("Y<><59>(VOLT)"), Description("Y<>࿡ ǥ<>õǴ<C3B5> VOLT<4C><54> <20>ּҰ<D6BC><D2B0><EFBFBD> <20>Է<EFBFBD><D4B7>ϼ<EFBFBD><CFBC><EFBFBD>.")]
public Int64 X1
{
get { return _X1; }
set
{
_X1 = value;
_XV1 = value;
XV1o = value;
if (OnUpdateinfo != null) OnUpdateinfo();
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD> ǥ<>õǴ<C3B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>۰<EFBFBD><DBB0>Դϴ<D4B4>.
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("Y<><59>(VOLT)"), Description("Y<>࿡ ǥ<>õǴ<C3B5> VOLT<4C><54> <20>ּҰ<D6BC><D2B0><EFBFBD> <20>Է<EFBFBD><D4B7>ϼ<EFBFBD><CFBC><EFBFBD>.")]
public Int64 XV1
{
get { return _XV1; }
set
{
//<2F><EFBFBD><E4B0AA> <20>Ѱ<EFBFBD>ġ üũ
if (value < X1) _XV1 = X1;
else if (value >= XV2 && XV2 > 0) _XV1 = DateTime.FromFileTime(XV2).AddSeconds(-1).ToFileTime();
else _XV1 = value;
XV1o = _XV1;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD> ǥ<>õǴ<C3B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Դϴ<D4B4>.
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("Y<><59>(VOLT)"), Description("Y<>࿡ ǥ<>õǴ<C3B5> VOLT<4C><54> <20>ּҰ<D6BC><D2B0><EFBFBD> <20>Է<EFBFBD><D4B7>ϼ<EFBFBD><CFBC><EFBFBD>.")]
public Int64 XV2
{
get { return _XV2; }
set
{
//<2F><EFBFBD><E4B0AA> <20>Ѱ<EFBFBD>ġ üũ
if (value > X2) _XV2 = X2;
else if (value <= XV1 && XV1 > 0) _XV2 = DateTime.FromFileTime(XV1).AddSeconds(1).ToFileTime();
else _XV2 = value;
XV2o = _XV2;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ᰪ(<28><><EFBFBD><EFBFBD> ǥ<>õǴ<C3B5> <20><><EFBFBD><EFBFBD> YV2<56><32> <20><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>)
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("Y<><59>(VOLT)"), Description("Y<>࿡ ǥ<>õǴ<C3B5> VOLT<4C><54> <20>ִ밪<D6B4><EBB0AA> <20>Է<EFBFBD><D4B7>ϼ<EFBFBD><CFBC><EFBFBD>.")]
public Single Y2
{
get { return _Y2; }
set {
_Y2 = value;
_YV2 = value;
YV2o = value;
if (OnUpdateinfo != null) OnUpdateinfo();
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ǥ<EFBFBD>õǴ<C3B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Դϴ<D4B4>.
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("Y<><59>(VOLT)"), Description("Y<>࿡ ǥ<>õǴ<C3B5> VOLT<4C><54> <20>ִ밪<D6B4><EBB0AA> <20>Է<EFBFBD><D4B7>ϼ<EFBFBD><CFBC><EFBFBD>.")]
public Single YV2
{
get { return _YV2; }
set
{
_YV2 = value;
YV2o = value;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>۰<EFBFBD>(<28><><EFBFBD><EFBFBD> ǥ<>õǴ<C3B5> <20><><EFBFBD><EFBFBD> YV1<56><31> <20><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>)
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("Y<><59>(VOLT)"), Description("Y<>࿡ ǥ<>õǴ<C3B5> VOLT<4C><54> <20>ּҰ<D6BC><D2B0><EFBFBD> <20>Է<EFBFBD><D4B7>ϼ<EFBFBD><CFBC><EFBFBD>.")]
public Single Y1
{
get { return _Y1; }
set {
_Y1 = value;
_YV1 = value;
YV1o = value;
if (OnUpdateinfo != null) OnUpdateinfo();
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>۰<EFBFBD>
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("Y<><59>(VOLT)"), Description("Y<>࿡ ǥ<>õǴ<C3B5> VOLT<4C><54> <20>ּҰ<D6BC><D2B0><EFBFBD> <20>Է<EFBFBD><D4B7>ϼ<EFBFBD><CFBC><EFBFBD>.")]
public Single YV1
{
get { return _YV1; }
set
{
_YV1 = value;
YV1o = value;
}
}
//[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("<22><><EFBFBD><EFBFBD>"), Description("<22><>Ʈ<EFBFBD><C6AE>ǥ<EFBFBD>õǴ<C3B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>")]
//public int <20><><EFBFBD>ʿ<EFBFBD><CABF><EFBFBD>
//{
// get { return _ZoneMarginX; }
// set { _ZoneMarginX = value;
// if (OnUpdateinfo != null) OnUpdateinfo();
// }
//}
//[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("<22><><EFBFBD><EFBFBD>"), Description("<22><>Ʈ<EFBFBD><C6AE>ǥ<EFBFBD>õǴ<C3B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>")]
//public int <20><><EFBFBD>ʿ<EFBFBD><CABF><EFBFBD>
//{
// get { return _ZoneMarginY; }
// set { _ZoneMarginY = value;
// if (OnUpdateinfo != null) OnUpdateinfo();
// }
//}
}
}

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TrendCtrlII
{
public partial class CTimeinfo
{
public Int64 Value { get; set; }
public UInt32 idx { get; set; }
public CTimeinfo(UInt32 _idx, Int64 _val)
{
Value = _val;
idx = _idx;
}
public DateTime DateTimeData
{
get
{
return DateTime.FromFileTime(Value);
}
}
}
}

View File

@@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace TrendCtrlII
{
public partial class CUserCursor
{
private short _idx = 0;
private Int64 _time = 0;
private Single _value = 0;
private Single _newx = 0;
public CUserCursor(short pidx, Int64 ptime, Single px)
{
_idx = pidx;
_time = ptime;
_newx = px;
}
public Int64 Time
{
get { return this._time; }
set { this._time = value; }
}
public short Idx
{
get { return this._idx; }
set { this._idx = value; }
}
public Single Value
{
get { return this._value; }
set { this._value = value; }
}
public Single Newx
{
get { return this._newx; }
set { this._newx = value; }
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

67
cVMS.NET_CS/MethodExts.cs Normal file
View File

@@ -0,0 +1,67 @@
using System;
using System.Xml;
using System.Linq;
using System.Xml.Linq;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using AR;
using System.IO;
using System.Text;
namespace vmsnet
{
public static class MethodExts
{
/// <summary>
/// 지정된 파일 끝에 내용을 추가합니다.
/// </summary>
/// <param name="filename"></param>
/// <param name="data"></param>
public static void AppendText(this System.IO.FileInfo filename, string data)
{
if (filename.Directory.Exists == false) filename.Directory.Create();
using (var writer = new StreamWriter(filename.FullName, true, System.Text.Encoding.Default))
writer.Write(data);//
}
public static void AppendText(this System.IO.FileInfo filename, StringBuilder data)
{
AppendText(filename, data.ToString());
}
/// <summary>
/// 파일에 내용을 기록합니다.
/// 파일지 존재하면 덮어쓰기 됩니다.
/// </summary>
/// <param name="filename"></param>
/// <param name="data"></param>
public static void WriteText(this System.IO.FileInfo filename, StringBuilder data, bool append = false)
{
WriteText(filename, data.ToString(), append);
}
public static void WriteText(this System.IO.FileInfo filename, string data, bool append = false)
{
if (filename.Directory.Exists == false) filename.Directory.Create();
if (append == false)
System.IO.File.WriteAllText(filename.FullName, data);
else
AppendText(filename, data);
}
public static string GetData(this XElement el, string key, string elName, string defvalue = "")
{
if (el == null) return defvalue;
if (el.HasElements == false) return defvalue;
var KeyItem = el.Element(key);
if (KeyItem == null || KeyItem.HasElements == false) return defvalue;
var item = KeyItem.Element(elName);
if (item == null) return defvalue;
if (item.IsEmpty) return defvalue;
return item.Value;
}
}
}

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace vmsnet.Attributes
{
public class CoilAttribute : ModbusAddressAttribute
{
public CoilAttribute(ushort address) : base(address)
{
}
}
}

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace vmsnet.Attributes
{
public class HoldingAttribute : ModbusAddressAttribute
{
public HoldingAttribute(ushort address) : base(address)
{
}
}
}

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace vmsnet.Attributes
{
public class InputAttribute : ModbusAddressAttribute
{
public InputAttribute(ushort address) : base(address)
{
}
}
}

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace vmsnet.Attributes
{
[AttributeUsage(AttributeTargets.Field)]
public class ModbusAddressAttribute : Attribute
{
public ushort Address { get; }
public ModbusAddressAttribute(ushort address)
{
Address = address;
}
}
}

View File

@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace vmsnet.Configures
{
public class RtuConfigure
{
public int BaudRate { get; set; } = 9600;
public Parity Parity { get; set; } = Parity.None;
public StopBits StopBits { get; set; } = StopBits.One;
public int DataBits { get; set; } = 8;
public RtuConfigure() { }
public RtuConfigure(int baudRate, Parity parity, StopBits stopBits, int dataBits)
{
BaudRate = baudRate;
Parity = parity;
StopBits = stopBits;
DataBits = dataBits;
}
}
}

View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace vmsnet.Configures
{
public class TcpConfigure
{
public string Ip { get; set; }
public int Port { get; set; }
public TcpConfigure() { }
public TcpConfigure(string ip, int port)
{
Ip = ip;
Port = port;
}
}
}

View File

@@ -0,0 +1,90 @@
using Modbus;
using Modbus.Device;
using System.IO.Ports;
using System.Net.Sockets;
using System;
using System.Threading.Tasks;
using vmsnet.Configures;
using AR;
using System.Windows.Media.Animation;
using System.Security.Cryptography;
namespace vmsnet
{
public class JdModbusRTU : IDisposable
{
protected ModbusSerialMaster master;
public string PortName { get; private set; }
public string ErrorMessage { get; protected set; }
public RtuConfigure Configure;
protected SerialPort port;
public bool IsOpen
{
get
{
return port?.IsOpen ?? false;
}
}
public JdModbusRTU(string comPort, RtuConfigure configure)
{
this.PortName = comPort;
this.Configure = configure;
ErrorMessage = "";
}
public void Dispose()
{
Task.Run(() =>
{
if (port != null)
port.Dispose();
});
}
public void Close()
{
if (port != null) port.Close();
}
public bool Open(string pname = "")
{
if (pname.isEmpty() == false) this.PortName = pname;
if (string.IsNullOrEmpty(this.PortName))
{
ErrorMessage = "포트명이 입력되지 않았습니다";
return false;
}
if (port != null && port.IsOpen) port.Close();
if (port == null) port = new SerialPort(this.PortName);
port.BaudRate = Configure.BaudRate;
port.Parity = Configure.Parity;
port.DataBits = Configure.DataBits;
port.StopBits = Configure.StopBits;
port.ReadTimeout = 3000;
port.WriteTimeout = 3000;
try
{
port.Open();
if (port.IsOpen == false) ErrorMessage = "포트가 열리지 않았습니다";
else ErrorMessage = string.Empty;
if (port.IsOpen)
master = ModbusSerialMaster.CreateRtu(port);
return port.IsOpen;
}
catch (Exception ex)
{
ErrorMessage = ex.Message;
return false;
}
}
}
}

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>true</MySubMain>
<MainForm>Frm_Main</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="ChartData" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>vmsnet.ChartData, cVMS.NET, Version=16.3.15.1530, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Blue Ball" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Blue Ball.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Green Ball" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Green Ball.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Purple Ball" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Purple Ball.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Red Ball" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Red Ball.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -0,0 +1,9 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="My" GeneratedClassName="MySettings" UseMySettingsClassName="true">
<Profiles />
<Settings>
<Setting Name="test2" Type="System.String" Scope="User">
<Value Profile="(Default)">2</Value>
</Setting>
</Settings>
</SettingsFile>

View File

View File

@@ -0,0 +1,25 @@
<configuration>
<dllmap os="linux" dll="opengl32.dll" target="libGL.so.1"/>
<dllmap os="linux" dll="glu32.dll" target="libGLU.so.1"/>
<dllmap os="linux" dll="openal32.dll" target="libopenal.so.1"/>
<dllmap os="linux" dll="alut.dll" target="libalut.so.0"/>
<dllmap os="linux" dll="opencl.dll" target="libOpenCL.so"/>
<dllmap os="linux" dll="libX11" target="libX11.so.6"/>
<dllmap os="linux" dll="libXi" target="libXi.so.6"/>
<dllmap os="linux" dll="SDL2.dll" target="libSDL2-2.0.so.0"/>
<dllmap os="osx" dll="opengl32.dll" target="/System/Library/Frameworks/OpenGL.framework/OpenGL"/>
<dllmap os="osx" dll="openal32.dll" target="/System/Library/Frameworks/OpenAL.framework/OpenAL" />
<dllmap os="osx" dll="alut.dll" target="/System/Library/Frameworks/OpenAL.framework/OpenAL" />
<dllmap os="osx" dll="libGLES.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
<dllmap os="osx" dll="libGLESv1_CM.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
<dllmap os="osx" dll="libGLESv2.dll" target="/System/Library/Frameworks/OpenGLES.framework/OpenGLES" />
<dllmap os="osx" dll="opencl.dll" target="/System/Library/Frameworks/OpenCL.framework/OpenCL"/>
<dllmap os="osx" dll="SDL2.dll" target="libSDL2.dylib"/>
<!-- XQuartz compatibility (X11 on Mac) -->
<dllmap os="osx" dll="libGL.so.1" target="/usr/X11/lib/libGL.dylib"/>
<dllmap os="osx" dll="libX11" target="/usr/X11/lib/libX11.dylib"/>
<dllmap os="osx" dll="libXcursor.so.1" target="/usr/X11/lib/libXcursor.dylib"/>
<dllmap os="osx" dll="libXi" target="/usr/X11/lib/libXi.dylib"/>
<dllmap os="osx" dll="libXinerama" target="/usr/X11/lib/libXinerama.dylib"/>
<dllmap os="osx" dll="libXrandr.so.2" target="/usr/X11/lib/libXrandr.dylib"/>
</configuration>

234
cVMS.NET_CS/PUBC.cs Normal file
View File

@@ -0,0 +1,234 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using System.Linq;
using vmsnet;
namespace vmsnet
{
sealed class PUBC
{
/// <summary>
/// 설정된 DEVICE 의 채널 갯수를반환
/// </summary>
/// <returns></returns>
/// <remarks></remarks>
public static int GetChannelCount()
{
int chcount = 0;
foreach (DocumentElement.DEVICERow DR in PUB.DS.DEVICE.Select("use=1")) // Dt.Rows
{
string buf = DR.CHCOUNT;
if (buf.Trim() == "")
{
continue;
}
foreach (string C in buf.Split(",".ToCharArray()))
{
int cc = 0;
if (C.IndexOf("*") == -1)
{
cc = int.Parse(C);
}
else
{
cc = System.Convert.ToInt32(C.Split("*".ToCharArray())[1]);
}
chcount += cc;
}
}
return chcount;
}
public static int GetUseDeviceCount()
{
return PUB.DS.DEVICE.Select("use=1").Length;
}
public static int GetWindowCount()
{
var dr = PUB.DS.WIN.Select("use=1") as DocumentElement.WINRow[];
return dr.Length;
}
public static string GetWindowName(int idx)
{
var dr = PUB.DS.WIN.Select("IDX=" + System.Convert.ToString(idx)) as DocumentElement.WINRow[];
if (dr.Length != 1)
{
return "";
}
return dr[0].TITLE;
}
public static string GetGrpName(int idx)
{
var dr = PUB.DS.GRP.Select("IDX=" + System.Convert.ToString(idx)) as DocumentElement.GRPRow[];
if (dr.Length != 1)
{
return "";
}
return dr[0].TITLE;
}
public static string GetChannelName(int idx)
{
var dr = PUB.DS.CHANNEL.Select("IDX=" + System.Convert.ToString(idx)) as DocumentElement.CHANNELRow[];
if (dr.Length != 1)
{
return "";
}
return dr[0].TITLE;
}
/// <summary>
/// 널밸런스 옵셋값을 설정합니다.
/// </summary>
/// <param name="idx"></param>
/// <param name="nb"></param>
/// <returns></returns>
/// <remarks></remarks>
public static bool UpdateNullBalanceOffset(int idx, float nb)
{
//Dim sql As String = "UPDATE GRP set NBOFF=" & value & " WHERE IDX=" & idx
var DR = PUB.DS.GRP.Select("idx=" + idx.ToString()) as DocumentElement.GRPRow[];
if (DR.Length != 1)
{
return false;
}
DR[0].NBOFF = nb;
DR[0].AcceptChanges();
PUB.DS.GRP.AcceptChanges();
return true;
}
/// <summary>
/// viewgoupr에 데이터를 넣습니다.
/// </summary>
/// <param name="title"></param>
/// <param name="val"></param>
/// <param name="gname"></param>
/// <returns></returns>
/// <remarks></remarks>
public static short AddviewGroup(string title, string val, string gname)
{
var maxidrow = PUB.DS.VIEWGROUP.Select("", "idx desc") as DocumentElement.VIEWGROUPRow[];
short maxid = (short) 0;
if (maxidrow.GetUpperBound(0) == -1)
{
maxid = (short) 1;
}
else
{
////160315 error
maxid = (short) (maxidrow[0].IDX + 1);
}
try
{
DocumentElement.VIEWGROUPRow newdr = PUB.DS.VIEWGROUP.NewVIEWGROUPRow();
newdr.IDX = maxid;
newdr.TITLE = title;
newdr.VAL = val;
newdr.GNAME = gname;
PUB.DS.VIEWGROUP.AddVIEWGROUPRow(newdr);
PUB.DS.VIEWGROUP.AcceptChanges();
return maxid;
}
catch (Exception)
{
return (short) -1;
}
}
public static bool DeleteViewGroup(int gidx, string gname)
{
var dr = PUB.DS.VIEWGROUP.Select("idx=" + gidx.ToString() + " and gname='" + gname + "'") as DocumentElement.VIEWGROUPRow[];
if (dr.Length == 1)
{
PUB.DS.VIEWGROUP.Rows.Remove(dr[0]);
PUB.DS.VIEWGROUP.AcceptChanges();
}
else
{
return false;
}
return true;
}
public static bool UpdateGroup(int idx, string alamtype, float alamh, float alaml, float autoh, float autol, float nbh, float nbl)
{
//string sql = "update GRP set ALAMTYPE=@ALAMTYPE,ALAMH=@ALAMH,ALAML=@ALAML,AUTOH=@AUTOH,AUTOL=@AUTOL,NBH=@NBH,NBL=@NBL WHERE IDX=" + System.Convert.ToString(idx);
var dr = PUB.DS.GRP.Select("idx=" + idx.ToString()) as DocumentElement.GRPRow[];
if (dr.Length == 1)
{
DocumentElement.GRPRow Drow = dr[0];
Drow.ALAMTYPE = alamtype;
Drow.ALAMH = alamh;
Drow.ALAML = alaml;
Drow.AUTOH = autoh;
Drow.AUTOL = autol;
Drow.NBH = nbh;
Drow.NBL = nbl;
Drow.AcceptChanges();
PUB.DS.AcceptChanges();
}
else
{
return false;
}
return true;
}
public static dynamic UpdateWin(int idx, string title)
{
//string sql = "UPDATE WIN set TITLE=@TITLE WHERE IDX=@IDX";
var Drow = PUB.DS.WIN.Where(t => t.IDX == idx).FirstOrDefault();// Select("idx=" + idx.ToString()) as DocumentElement.WINRow[];
if (Drow != null)
{
//DocumentElement.WINRow Drow = dr[0];
Drow.TITLE = title;
Drow.EndEdit();
Drow.AcceptChanges();
PUB.DS.AcceptChanges();
}
else
{
return false;
}
return true;
}
public static bool UpdateChannel(int idx, string title, int alamtype, int enable, float alamh, float alaml, float autoh, float autol)
{
//string sql = "UPDATE CHANNEL set TITLE=@TITLE,ALAMTYPE=@ALAMTYPE,ENABLE=@ENABLE,ALAMH=@ALAMH,ALAML=@ALAML,AUTOH=@AUTOH,AUTOL=@AUTOL WHERE IDX=@IDX";
var Drow = PUB.DS.CHANNEL.Where(t => t.IDX == idx).FirstOrDefault();// .Select("idx=" + idx.ToString()) as DocumentElement.CHANNELRow[];
if (Drow != null)
{
//DocumentElement.CHANNELRow Drow = dr[0];
Drow.TITLE = title;
Drow.ALAMTYPE = alamtype;
Drow.ENABLE = enable;
Drow.ALAMH = alamh;
Drow.ALAML = alaml;
Drow.AUTOH = autoh;
Drow.AUTOL = autol;
Drow.EndEdit();
Drow.AcceptChanges();
PUB.DS.AcceptChanges();
}
else
{
return false;
}
return true;
}
}
}

41
cVMS.NET_CS/Program.cs Normal file
View File

@@ -0,0 +1,41 @@
using System;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace vmsnet
{
internal static class Program
{
[DllImport("user32.dll")]
private static extern bool SetProcessDPIAware();
/// <summary>
/// 해당 애플리케이션의 주 진입점입니다.
/// </summary>
[STAThread]
static void Main(string[] args)
{
if (Environment.OSVersion.Version.Major >= 6) SetProcessDPIAware();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (System.Diagnostics.Debugger.IsAttached == false)
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
if (args != null && args.Any()) PUB.ExtCommand = args[0];
Application.Run(new FMain());
}
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
PUB.NotExitMonitor = true;
string fn = System.IO.Path.Combine("Bugreport", DateTime.Now.ToString("yyMMddHHmmss") + "_error.xml");
var fi = new System.IO.FileInfo(fn);
if (fi.Directory.Exists == false) fi.Directory.Create();
System.IO.File.WriteAllText(fi.FullName, e.ExceptionObject.ToString(), System.Text.Encoding.Default);
}
}
}

View File

@@ -0,0 +1,43 @@
using System.Collections.Generic;
using System;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Collections;
using System.Windows.Forms;
using System.Reflection;
using System.Runtime.InteropServices;
// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
// 어셈블리와 관련된 정보를 수정하려면
// 이 특성 값을 변경하십시오.
// 어셈블리 특성 값을 검토합니다.
[assembly:AssemblyTitle("cell Voltage Monitoring System - (For GM10) - 2016")]
[assembly:AssemblyDescription("VMS")]
[assembly:AssemblyCompany("JDTEK")]
[assembly: AssemblyProduct("cVMS.NET")]
[assembly:AssemblyCopyright("Copyright ©JDTEK 2012")]
[assembly:AssemblyTrademark("Arinware")]
[assembly:ComVisible(false)]
//이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly:Guid("b998cd4f-ec54-4613-b634-71682953653e")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
// 지정되도록 할 수 있습니다.
// <Assembly: AssemblyVersion("1.0.*")>
[assembly: AssemblyVersion("24.11.26.2200")]
[assembly: AssemblyFileVersion("24.11.26.2200")]

View File

@@ -0,0 +1,183 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 도구를 사용하여 생성되었습니다.
// 런타임 버전:4.0.30319.42000
//
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
// 이러한 변경 내용이 손실됩니다.
// </auto-generated>
//------------------------------------------------------------------------------
namespace vmsnet.Properties {
using System;
/// <summary>
/// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
/// </summary>
// 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
// 클래스에서 자동으로 생성되었습니다.
// 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
// 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("vmsnet.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
/// 재정의합니다.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Backup_Green_Button {
get {
object obj = ResourceManager.GetObject("Backup_Green_Button", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Blue_Ball {
get {
object obj = ResourceManager.GetObject("Blue_Ball", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Clear_Green_Button {
get {
object obj = ResourceManager.GetObject("Clear_Green_Button", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap down_16 {
get {
object obj = ResourceManager.GetObject("down_16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap down_orange {
get {
object obj = ResourceManager.GetObject("down_orange", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Get_Info_Blue_Button {
get {
object obj = ResourceManager.GetObject("Get_Info_Blue_Button", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap graphsetting {
get {
object obj = ResourceManager.GetObject("graphsetting", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Green_Ball {
get {
object obj = ResourceManager.GetObject("Green_Ball", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Orange_Ball {
get {
object obj = ResourceManager.GetObject("Orange_Ball", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Purple_Ball {
get {
object obj = ResourceManager.GetObject("Purple_Ball", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Red_Ball {
get {
object obj = ResourceManager.GetObject("Red_Ball", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap up_16 {
get {
object obj = ResourceManager.GetObject("up_16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@@ -0,0 +1,157 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Backup_Green_Button" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Backup Green Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Blue_Ball" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Blue Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Clear_Green_Button" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Clear Green Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="down_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\down_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="down_orange" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\down_orange.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Get_Info_Blue_Button" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Get Info Blue Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="graphsetting" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-positive-dynamic-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Green_Ball" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Green Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Orange_Ball" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Orange Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Purple_Ball" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Purple Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Red_Ball" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Red Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="up_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\up_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 도구를 사용하여 생성되었습니다.
// 런타임 버전:4.0.30319.42000
//
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
// 이러한 변경 내용이 손실됩니다.
// </auto-generated>
//------------------------------------------------------------------------------
namespace vmsnet.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

View File

@@ -0,0 +1,6 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
</SettingsFile>

View File

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC 매니페스트 옵션
Windows 사용자 계정 컨트롤 수준을 변경하려면
requestedExecutionLevel 노드를 다음 중 하나로 바꿉니다.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
requestedExecutionLevel 요소를 지정하면 파일 및 레지스트리 가상화를 사용하지 않습니다.
이전 버전과의 호환성을 위해 애플리케이션에 가상화가 필요한 경우
이 요소를 제거합니다.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
<applicationRequestMinimum>
<defaultAssemblyRequest permissionSetReference="Custom" />
<PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
</applicationRequestMinimum>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- 이 애플리케이션이 테스트되고 함께 작동하도록 설계된 Windows 버전
목록입니다. 해당 요소의 주석 처리를 제거하면 Windows에서
호환 가능성이 가장 큰 환경을 자동으로 선택합니다. -->
<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
<!-- Windows 7 -->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
<!-- Windows 10 -->
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
</application>
</compatibility>
<!-- 애플리케이션이 DPI를 인식하며 높은 DPI에서 Windows가 자동으로 스케일링하지
않음을 나타냅니다. WPF(Windows Presentation Foundation) 애플리케이션은 자동으로 DPI를 인식하며
옵트인할 필요가 없습니다. 이 설정에 옵트인한 .NET Framework 4.6을 대상으로 하는
Windows Forms 애플리케이션은 app.config에서 'EnableWindowsFormsHighDpiAutoResizing' 설정도 'true'로 설정해야 합니다.
애플리케이션이 긴 경로를 인식하도록 설정합니다. https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation을 참조하세요. -->
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
<!-- Windows 공용 컨트롤 및 대화 상자의 테마 사용(Windows XP 이상) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
</assembly>

View File

View File

@@ -0,0 +1 @@
DevExpress.XtraGauges.Win.GaugeControl, DevExpress.XtraGauges.v10.1.Win, Version=10.1.5.0, Culture=neutral, PublicKeyToken=940cfcde86f32efd

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Some files were not shown because too many files have changed in this diff Show More