Compare commits

..

No commits in common. "main" and "V8.6.0" have entirely different histories.
main ... V8.6.0

30 changed files with 738 additions and 4307 deletions

Binary file not shown.

Binary file not shown.

View File

@ -23,13 +23,6 @@ namespace INT89DB_26
Step2_6208,
}
public enum E_Step3
{
Step1,
Step2,
Step3,
};
public enum FeedbackStatus
{
None,
@ -37,24 +30,6 @@ namespace INT89DB_26
Negative,
};
public enum E_DataType
{
None,
History,
Inspection,
Others,
}
public enum E_UpdateCheck
{
Fail,
Success,
NotUsbMomery,
NotUpdateFolder,
NotFile,
TooManyFiles,
};
public enum E_FormStore
{
FormNone = 0,
@ -99,13 +74,11 @@ namespace INT89DB_26
public enum UserGroup
{
None = 0,
Level1 = 1,
Level2 = 2,
Level3 = 3,
Admin = 4,
Developer = 5,
NotLogin = 6,
LogOut = 7,
Level1Operator,
Level2Engineer,
Level3Manager,
Level4Developer,
LogOff,
};
public enum JudgmentStatus
@ -144,7 +117,7 @@ namespace INT89DB_26
f2_Level3 = 2,
}
public enum E_CommMode
public enum CommunicationMode
{
f0_None = 0,
f1_STD1 = 1,
@ -152,200 +125,6 @@ namespace INT89DB_26
f98_FB_Board = 98,
f99_Modbus = 99,
}
public enum E_TrackingOperation
{
None,
PowerOn,
BootingComplete,
EquipmentStart,
EquipmentStop,
Login,
Logout,
Calibration,
Zero,
Clear,
UserEditor,
Update,
FunctionUpdate,
DataBackup,
GroupEditor,
Initialization,
BP_PassOnce,
BP_NgOnce,
BP_PassON,
BP_PassOFF,
BP_NgON,
BP_NgOFF,
SP_Once,
SP_ON,
SP_OFF,
MainCut,
ProductCopy,
ProductPaste,
ProductAllPaste,
Motor_EEPROM,
Motor_AlarmReset,
Motor_Origin,
Motor_OneStep,
Motor_JOGCW,
Motor_JOGCCW,
TryEthernetStart,
TryEthernetStop,
EthernetConnect,
EthernetDisconnect,
// Modbus Clear
MB_Clear,
MB_EquipmentStart,
MB_EquipmentStop,
}
public enum TrackingParameter
{
ProductNumber,
WeightOverRange,
WeightPassRange,
WeightUnderRange,
WeightTareRange,
WeightOverRangeLimit,
WeightUnderRangeLimit,
WeightLimitEnable,
BP_Individual,
BP_All,
BP_Direction,
BP_Mode,
SP_Mode,
SP_Time,
SP_Count,
LK_Mode,
LK_Time,
ChangeTime,
ChangeName,
ChangeLOT,
JudgmentFilter,
JudgmentDelayTime,
JudgmentTurnDelayTime,
JudgmentCount,
JudgmentSpeed,
Sorter1DelayTime,
Sorter1RunTime,
Sorter2DelayTime,
Sorter2RunTime,
Sorter3DelayTime,
Sorter3RunTime,
Sorter4DelayTime,
Sorter4RunTime,
EntryGateDelayTime,
EntryGateRunTime,
DischargeStopperDelayTime,
DischargeStopperRunTime,
Stopper2DelayTime,
Stopper2RunTime,
ForcedZeroDelayTime,
DynamicCorrection1,
DynamicCorrection2,
DynamicCorrection3,
DynamicCorrection4,
DynamicCorrection5,
DynamicCorrection6,
DynamicCorrection7,
DynamicCorrection8,
DynamicCorrection9,
DynamicCorrection10,
DynamicCorrection11,
DynamicCorrection12,
DynamicCorrection13,
DynamicCorrection14,
DynamicCorrection15,
DynamicCorrection16,
AutoZeroTime,
AutoZeroRange,
AutoZeroVariance,
AutoZeroMode,
Com3Baudrate,
Com3Mode,
TCPOpMode,
TCPComMode,
TCPLocalPort,
TCPLocalIPConfig,
TCPLocalIPAddress,
TCPLocalSubnetMask,
TCPLocalGateway,
TCPServerIPAddress,
TCPServerPort,
Mod_StartAddr,
CalMaxWeight,
CalBalWeight,
CalDigit,
EtcEmptyWeight,
EtcTurnDelay,
EtcTurnOperation,
EtcChattering,
EtcBuzzerRunTime,
EtcRelayRunTime,
EtcDecimalpoint,
MotorOriginOffset,
MotorOriginSpeed,
MotorSpeed,
MotorAcceleration,
MotorDeceleration,
MotorPosition1,
Level1Name,
Level2Name,
Level3Name,
AutoLogout,
DataStoragePeriod,
// Modbus
MB_WeightOverRange,
MB_WeightPassRange,
MB_WeightUnderRange,
MB_WeightTareRange,
MB_ProductNumber,
MB_WeightOverRangeLimit,
MB_WeightUnderRangeLimit,
}
public enum TrackingAlarm
{
None,
a1_EntrySensorError,
a2_LoadcellError,
a3_PressureError,
a4_,
a5_,
a6_,
a7_Sorter2Error,
a8_EmergencyStop,
a9_,
a10_ServoAlarm,
a11_,
a12_ServoTorqueAlarm,
a13_,
a14_Sorter1Error,
a15_ProductDischargeError,
a16_ProductJamError,
}
#endregion
}
@ -584,8 +363,6 @@ namespace INT89DB_26
public class SystemConfigurationItem
{
#region Field
private bool m_IsPart11;
private bool m_IsModbus;
private bool m_IsDataBackup;
private bool m_IsBypassMode;
private bool m_IsWeightViewForward;
@ -602,8 +379,7 @@ namespace INT89DB_26
private int m_Serial3BaudRate;
private int m_Serial3Mode;
private int m_InverterQTY;
private int m_StoragePeriod;
private string m_Unit;
private string m_SerialNumber;
@ -634,16 +410,6 @@ namespace INT89DB_26
#endregion
#region Property
public bool IsModbus
{
get { return this.m_IsModbus; }
set { this.m_IsModbus = value; }
}
public bool IsPart11
{
get { return this.m_IsPart11; }
set { this.m_IsPart11 = value; }
}
public bool IsDataBackup
{
get { return this.m_IsDataBackup; }
@ -720,11 +486,6 @@ namespace INT89DB_26
get { return this.m_InverterQTY; }
set { this.m_InverterQTY = value; }
}
public int StoragePeriod
{
get { return this.m_StoragePeriod; }
set { this.m_StoragePeriod = value; }
}
public string Unit
{
@ -829,8 +590,6 @@ namespace INT89DB_26
#region Method
public void Initialization()
{
this.IsPart11 = false;
this.IsModbus = false;
this.IsDataBackup = false;
this.IsBypassMode = false;
this.IsWeightViewForward = true;
@ -847,15 +606,14 @@ namespace INT89DB_26
this.Serial3BaudRate = 9600;
this.Serial3Mode = 0;
this.InverterQTY = 2;
this.StoragePeriod = 12;
this.Unit = "g";
this.SerialNumber = "26B0000";
this.SerialNumber = "26A0000";
this.Language = DataStore.E_LanguageID.Korean;
this.CurrentForm = DataStore.E_FormStore.FormMainDisplay;
this.CurrentUser = new User();
this.CurrentUser.Group = DataStore.UserGroup.LogOut;
this.CurrentUser.Group = DataStore.UserGroup.LogOff;
this.EthernetLocalPort = 5001;
this.EthernetServerPort = 5002;
@ -880,8 +638,8 @@ namespace INT89DB_26
{
public bool IsDataBackup;
public bool DummyBool5;
public bool IsPart11;
public bool IsModbus;
public bool DummyBool6;
public bool DummyBool7;
public bool IsFeedbackBoard;
public bool IsFeedback;
public bool IsLogin;
@ -958,7 +716,7 @@ namespace INT89DB_26
public int FeedbackCorrectionRate;
public int FeedbackPulseWidth;
public int StoragePeriod;
public int DummyInt3;
public int DummyInt4;
public int DummyInt5;
public int DummyInt6;
@ -1664,7 +1422,7 @@ namespace INT89DB_26
this.DeveloperUser = new User();
this.DeveloperUser.ID = "Intech";
this.DeveloperUser.Password = "20090810";
this.DeveloperUser.Group = DataStore.UserGroup.Developer;
this.DeveloperUser.Group = DataStore.UserGroup.Level4Developer;
}
public User FindUser(string id)
@ -2455,201 +2213,4 @@ namespace INT89DB_26
public string DummyString3;
}
#endregion
#region HistoryData
public class HistoryData
{
#region Field
private string m_Type;
private DateTime m_Time;
private string m_LoginID;
private Object m_Event;
private string m_Detail;
private string m_BeforeData;
private string m_AfterData;
#endregion
#region Constructor
public HistoryData()
{
}
#endregion
#region Property
public string Type
{
get { return this.m_Type; }
set { this.m_Type = value; }
}
public DateTime Time
{
get { return this.m_Time; }
set { this.m_Time = value; }
}
public string LoginID
{
get { return this.m_LoginID; }
set { this.m_LoginID = value; }
}
public Object Event
{
get { return this.m_Event; }
set { this.m_Event = value; }
}
public string Detail
{
get { return this.m_Detail; }
set { this.m_Detail = value; }
}
public string BeforeData
{
get { return this.m_BeforeData; }
set { this.m_BeforeData = value; }
}
public string AfterData
{
get { return this.m_AfterData; }
set { this.m_AfterData = value; }
}
#endregion
#region Method
private void Initialize()
{
this.Type = "";
this.Time = new DateTime();
this.LoginID = "-";
this.Event = new object();
this.Detail = "";
this.AfterData = "";
this.BeforeData = "";
}
#endregion
}
#endregion
#region DataBackupYear
public class DataBackupYear
{
#region Field
private string m_Year;
public List<DataBackupMonth> Months;
#endregion
#region Constructor
public DataBackupYear(string year)
{
this.Initialize();
this.Year = year;
}
#endregion
#region Property
public string Year
{
get { return this.m_Year; }
private set { this.m_Year = value; }
}
#endregion
#region Method
private void Initialize()
{
this.Year = "";
this.Months = new List<DataBackupMonth>();
}
#endregion
}
#endregion
#region DataBackupMonth
public class DataBackupMonth
{
#region Field
private string m_Month;
public List<string> Days;
#endregion
#region Constructor
public DataBackupMonth(string month)
{
this.Initialize();
this.Month = month;
}
#endregion
#region Property
public string Month
{
get { return this.m_Month; }
private set { this.m_Month = value; }
}
#endregion
#region Method
private void Initialize()
{
this.Month = "";
this.Days = new List<string>();
}
#endregion
}
#endregion
#region FileHeaderItem
public class FileHeaderItem
{
#region Field
private int m_EquipmentColumns;
private int m_EquipmentType;
private string m_LoginId;
private string m_SerialNumber;
private DateTime m_TimeStamp;
#endregion
#region Constructor
public FileHeaderItem()
{
}
#endregion
#region Property
public int EquipmentColumns
{
get { return this.m_EquipmentColumns; }
set { this.m_EquipmentColumns = value; }
}
public int EquipmentType
{
get { return this.m_EquipmentType; }
set { this.m_EquipmentType = value; }
}
public string LoginId
{
get { return this.m_LoginId; }
set { this.m_LoginId = value; }
}
public string SerialNumber
{
get { return this.m_SerialNumber; }
set { this.m_SerialNumber = value; }
}
public DateTime TimeStamp
{
get { return this.m_TimeStamp; }
set { this.m_TimeStamp = value; }
}
#endregion
#region Method
#endregion
}
#endregion
}

View File

@ -1888,281 +1888,6 @@ namespace INT89DB_26.DialogForms
break;
}
}
public DialogFormMessage(int errCode, DataStore.E_LanguageID language, DataStore.E_FormStore screen)
{
InitializeComponent();
this.labelErrorCode.Text = "";
this.labelMessage1.Text = "";
this.labelMessage2.Text = "";
int screenNum = (int)screen;
switch (screen)
{
case DataStore.E_FormStore.FormProgramUpdate:
if (language == DataStore.E_LanguageID.Korean)
{
this.buttonOK.Text = "OK";
#region 한글
switch (errCode)
{
case 1:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_01";
this.labelMessage1.Text = "파일명이 올바르지 않습니다";
this.labelMessage2.Text = "";
break;
case 2:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_02";
this.labelMessage1.Text = "시리얼 번호가 올바르지 않습니다";
this.labelMessage2.Text = "";
break;
case 3:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_03";
this.labelMessage1.Text = "파일을 찾을 수 없습니다";
this.labelMessage2.Text = "";
break;
case 4:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_04";
this.labelMessage1.Text = "파일 상태에 문제가 있습니다";
this.labelMessage2.Text = "";
break;
case 5:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_05";
this.labelMessage1.Text = "파일의 시리얼 번호가 현재 장비와 일치하지 않습니다";
this.labelMessage2.Text = "";
break;
case 6:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_06";
this.labelMessage1.Text = "UID가 일치하지 않습니다";
this.labelMessage2.Text = "";
break;
case 7:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_07";
this.labelMessage1.Text = "키 타입이 올바르지 않습니다";
this.labelMessage2.Text = "";
break;
default:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_99";
this.labelMessage1.Text = "제조사에 문의하세요";
this.labelMessage2.Text = "";
break;
}
#endregion
}
else if (language == DataStore.E_LanguageID.English)
{
this.buttonOK.Text = "OK";
#region 영문
switch (errCode)
{
case 1:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_01";
this.labelMessage1.Text = "The file name is incorrect";
this.labelMessage2.Text = "";
break;
case 2:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_02";
this.labelMessage1.Text = "Serial number is incorrect";
this.labelMessage2.Text = "";
break;
case 3:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_03";
this.labelMessage1.Text = "file not found";
this.labelMessage2.Text = "";
break;
case 4:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_04";
this.labelMessage1.Text = "There is a problem with the file status";
this.labelMessage2.Text = "";
break;
case 5:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_05";
this.labelMessage1.Text = "The serial number in the file";
this.labelMessage2.Text = "does not match your current device";
break;
case 6:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_06";
this.labelMessage1.Text = "UID does not match";
this.labelMessage2.Text = "";
break;
case 7:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_07";
this.labelMessage1.Text = "Key type is incorrect";
this.labelMessage2.Text = "";
break;
default:
this.labelErrorCode.Text = "Error" + screenNum.ToString() + "_99";
this.labelMessage1.Text = "Please contact a manufacturer";
break;
}
#endregion
}
else if (language == DataStore.E_LanguageID.Chinese)
{
this.buttonOK.Text = "确认";
#region 중문
switch (errCode)
{
case 1:
this.labelErrorCode.Text = "错误" + screenNum.ToString() + "_01";
this.labelMessage1.Text = "文件名不正确";
this.labelMessage2.Text = "";
break;
case 2:
this.labelErrorCode.Text = "错误" + screenNum.ToString() + "_02";
this.labelMessage1.Text = "序列号不正确";
this.labelMessage2.Text = "";
break;
case 3:
this.labelErrorCode.Text = "错误" + screenNum.ToString() + "_03";
this.labelMessage1.Text = "文件未找到";
this.labelMessage2.Text = "";
break;
case 4:
this.labelErrorCode.Text = "错误" + screenNum.ToString() + "_04";
this.labelMessage1.Text = "文件状态有问题";
this.labelMessage2.Text = "";
break;
case 5:
this.labelErrorCode.Text = "错误" + screenNum.ToString() + "_05";
this.labelMessage1.Text = "文件中的序列号与您当前的设备不匹配";
this.labelMessage2.Text = "";
break;
case 6:
this.labelErrorCode.Text = "错误" + screenNum.ToString() + "_06";
this.labelMessage1.Text = "UID 不匹配";
this.labelMessage2.Text = "";
break;
case 7:
this.labelErrorCode.Text = "错误" + screenNum.ToString() + "_07";
this.labelMessage1.Text = "密钥类型不正确";
this.labelMessage2.Text = "";
break;
default:
this.labelErrorCode.Text = "错误" + screenNum.ToString() + "_99";
this.labelMessage1.Text = "请联系厂商";
this.labelMessage2.Text = "";
break;
}
#endregion
}
else if (language == DataStore.E_LanguageID.Czech)
{
}
else if (language == DataStore.E_LanguageID.Russian)
{
this.buttonOK.Text = "OK";
#region 러시아어
switch (errCode)
{
case 1:
this.labelErrorCode.Text = "Ошибка" + screenNum.ToString() + "_01";
this.labelMessage1.Text = "Имя файла неверно";
this.labelMessage2.Text = "";
break;
case 2:
this.labelErrorCode.Text = "Ошибка" + screenNum.ToString() + "_02";
this.labelMessage1.Text = "Серийный номер неверен";
this.labelMessage2.Text = "";
break;
case 3:
this.labelErrorCode.Text = "Ошибка" + screenNum.ToString() + "_03";
this.labelMessage1.Text = "файл не найден";
this.labelMessage2.Text = "";
break;
case 4:
this.labelErrorCode.Text = "Ошибка" + screenNum.ToString() + "_04";
this.labelMessage1.Text = "Возникла проблема со статусом файла";
this.labelMessage2.Text = "";
break;
case 5:
this.labelErrorCode.Text = "Ошибка" + screenNum.ToString() + "_05";
this.labelMessage1.Text = "Серийный номер в файле не";
this.labelMessage2.Text = "соответствует вашему текущему устройству";
break;
case 6:
this.labelErrorCode.Text = "Ошибка" + screenNum.ToString() + "_06";
this.labelMessage1.Text = "UID не соответствует";
this.labelMessage2.Text = "";
break;
case 7:
this.labelErrorCode.Text = "Ошибка" + screenNum.ToString() + "_07";
this.labelMessage1.Text = "Тип ключа неверен";
this.labelMessage2.Text = "";
break;
default:
this.labelErrorCode.Text = "Ошибка" + screenNum.ToString() + "_99";
this.labelMessage1.Text = "Свяжитесь с производителем";
this.labelMessage2.Text = "";
break;
}
#endregion
}
else if (language == DataStore.E_LanguageID.German)
{
this.buttonOK.Text = "Bestätigen";
#region 독일어
switch (errCode)
{
case 1:
this.labelErrorCode.Text = "Fehler" + screenNum.ToString() + "_01";
this.labelMessage1.Text = "Der Dateiname ist falsch";
this.labelMessage2.Text = "";
break;
case 2:
this.labelErrorCode.Text = "Fehler" + screenNum.ToString() + "_02";
this.labelMessage1.Text = "Die Seriennummer ist falsch";
this.labelMessage2.Text = "";
break;
case 3:
this.labelErrorCode.Text = "Fehler" + screenNum.ToString() + "_03";
this.labelMessage1.Text = "Datei nicht gefunden";
this.labelMessage2.Text = "";
break;
case 4:
this.labelErrorCode.Text = "Fehler" + screenNum.ToString() + "_04";
this.labelMessage1.Text = "Es liegt ein Problem mit dem Dateistatus vor";
this.labelMessage2.Text = "";
break;
case 5:
this.labelErrorCode.Text = "Fehler" + screenNum.ToString() + "_05";
this.labelMessage1.Text = "Die Seriennummer in der Datei stimmt";
this.labelMessage2.Text = "nicht mit Ihrem aktuellen Gerät überein";
break;
case 6:
this.labelErrorCode.Text = "Fehler" + screenNum.ToString() + "_06";
this.labelMessage1.Text = "UID stimmt nicht überein";
this.labelMessage2.Text = "";
break;
case 7:
this.labelErrorCode.Text = "Fehler" + screenNum.ToString() + "_07";
this.labelMessage1.Text = "Der Schlüsseltyp ist falsch";
this.labelMessage2.Text = "";
break;
default:
this.labelErrorCode.Text = "Fehler" + screenNum.ToString() + "_99";
this.labelMessage1.Text = "Hersteller kontaktieren";
this.labelMessage2.Text = "";
break;
}
#endregion
}
else
{
}
break;
default:
break;
}
}
public DialogFormMessage(DataStore.MessageBoxIcon icon, string code, string message1, string message2, int autoClose_sec)
{
InitializeComponent();
@ -2213,7 +1938,7 @@ namespace INT89DB_26.DialogForms
#endregion
#region Method
private void InitializeControl()
private void InitializeContnrol()
{
int x = 0, y = 0;
@ -2231,7 +1956,7 @@ namespace INT89DB_26.DialogForms
{
base.OnLoad(e);
this.InitializeControl();
this.InitializeContnrol();
}
#endregion

View File

@ -104,7 +104,7 @@ namespace INT89DB_26.Forms
{
this.comboBoxTCPOperationMode.Items.Clear();
this.comboBoxTCPOperationMode.SelectedIndexChanged -= new EventHandler(this.comboBoxOperationMode_SelectedIndexChanged);
this.comboBoxTCPOperationMode.Items.Add("None");
this.comboBoxTCPOperationMode.Items.Add("-");
this.comboBoxTCPOperationMode.Items.Add("Server");
this.comboBoxTCPOperationMode.Items.Add("Client");
this.comboBoxTCPOperationMode.SelectedIndex = 0;
@ -112,11 +112,10 @@ namespace INT89DB_26.Forms
this.comboBoxTCPMode.Items.Clear();
this.comboBoxTCPMode.SelectedIndexChanged -= new EventHandler(this.comboBoxMode_SelectedIndexChanged);
this.comboBoxTCPMode.Items.Add("None");
this.comboBoxTCPMode.Items.Add("-");
this.comboBoxTCPMode.Items.Add("STD1"); // index : 1
this.comboBoxTCPMode.Items.Add("STD2"); // index : 2
if (this.ParentForm.SystemConfig.IsModbus == true)
this.comboBoxTCPMode.Items.Add("Modbus");
this.comboBoxTCPMode.Items.Add("Modbus"); // index : 99
this.comboBoxTCPMode.SelectedIndex = 0;
this.comboBoxTCPMode.SelectedIndexChanged += new EventHandler(this.comboBoxMode_SelectedIndexChanged);
@ -131,7 +130,7 @@ namespace INT89DB_26.Forms
this.comboBoxSerial3Mode.Items.Clear();
this.comboBoxSerial3Mode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerial3Mode_SelectedIndexChanged);
this.comboBoxSerial3Mode.Items.Add("None");
this.comboBoxSerial3Mode.Items.Add("-");
this.comboBoxSerial3Mode.Items.Add("STD1"); // index : 1
this.comboBoxSerial3Mode.Items.Add("STD2"); // index : 2
if (this.ParentForm.SystemConfig.IsFeedbackBoard == true)
@ -184,33 +183,7 @@ namespace INT89DB_26.Forms
//this.UpdateDisplayCom3();
//#endregion
}
public void RefreshComboBoxSerial3FeedbackBoard(bool bValue)
{
this.comboBoxSerial3Mode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerial3Mode_SelectedIndexChanged);
if (bValue == true)
{
this.comboBoxSerial3Mode.Items.Add("FB_Board"); // index : 98
this.comboBoxSerial3Mode.SelectedItem = "FB_Board";
if (this.ParentForm.SystemConfig.IsFeedback == true)
{
this.comboBoxSerial3BaudRate.Enabled = false;
this.comboBoxSerial3Mode.Enabled = false;
}
}
else
{
this.comboBoxSerial3Mode.Items.Remove("FB_Board"); // index : 98
this.comboBoxSerial3Mode.SelectedIndex = 0;
this.comboBoxSerial3BaudRate.Enabled = true;
this.comboBoxSerial3Mode.Enabled = true;
}
this.comboBoxSerial3Mode.SelectedIndexChanged += new EventHandler(this.comboBoxSerial3Mode_SelectedIndexChanged);
}
private void EthernetStart()
{
this.buttonEthernetStart.Enabled = true;
@ -265,19 +238,16 @@ namespace INT89DB_26.Forms
this.comboBoxSerial3Mode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerial3Mode_SelectedIndexChanged);
switch (this.ParentForm.SystemConfig.Serial3Mode)
{
case (int)DataStore.E_CommMode.f1_STD1:
case (int)DataStore.CommunicationMode.f1_STD1:
this.comboBoxSerial3Mode.SelectedItem = "STD1";
break;
case (int)DataStore.E_CommMode.f2_STD2:
case (int)DataStore.CommunicationMode.f2_STD2:
this.comboBoxSerial3Mode.SelectedItem = "STD2";
break;
case (int)DataStore.E_CommMode.f98_FB_Board:
case (int)DataStore.CommunicationMode.f98_FB_Board:
this.comboBoxSerial3Mode.SelectedItem = "FB_Board";
if (this.ParentForm.SystemConfig.IsFeedback == true)
{
this.comboBoxSerial3BaudRate.Enabled = false;
this.comboBoxSerial3Mode.Enabled = false;
}
this.comboBoxSerial3BaudRate.Enabled = false;
this.comboBoxSerial3Mode.Enabled = false;
break;
default:
break;
@ -302,7 +272,7 @@ namespace INT89DB_26.Forms
this.comboBoxTCPOperationMode.SelectedIndexChanged -= new EventHandler(this.comboBoxOperationMode_SelectedIndexChanged);
// 통신모드
if (this.ParentForm.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f99_Modbus)
if (this.ParentForm.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f99_Modbus)
this.comboBoxTCPMode.SelectedItem = "Modbus";
else
this.comboBoxTCPMode.SelectedIndex = this.ParentForm.SystemConfig.EthernetMode;
@ -384,12 +354,12 @@ namespace INT89DB_26.Forms
}
private void UpdateProtocolDescriptionEthernet()
{
if (this.comboBoxTCPMode.SelectedIndex == (int)DataStore.E_CommMode.f1_STD1)
if (this.comboBoxTCPMode.SelectedIndex == (int)DataStore.CommunicationMode.f1_STD1)
{
this.labelProtocolDescriptionEthernet_1.Text = "STX[1],ID[5],NO[4],LANE[2],GRD[1],";
this.labelProtocolDescriptionEthernet_2.Text = "WEIGHT[6],ETX[1]";
}
else if (this.comboBoxTCPMode.SelectedIndex == (int)DataStore.E_CommMode.f2_STD2)
else if (this.comboBoxTCPMode.SelectedIndex == (int)DataStore.CommunicationMode.f2_STD2)
{
this.labelProtocolDescriptionEthernet_1.Text = "STX[1],ID[5],NO[4],LANE[2],SIGN[1],";
@ -551,9 +521,9 @@ namespace INT89DB_26.Forms
{
string data = "";
if (this.ParentForm.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f1_STD1)
if (this.ParentForm.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_STD1)
data = this.ParentForm.Protocol_STD1(this.ParentForm.SystemConfig, this.ParentForm.CollectionWeightData[0], 1);
else if (this.ParentForm.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f2_STD2)
else if (this.ParentForm.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_STD2)
data = this.ParentForm.Protocol_STD2(this.ParentForm.SystemConfig, this.ParentForm.CollectionWeightData[0], 1);
switch (this.ParentForm.SystemConfig.EthernetOperationMode)
@ -647,13 +617,13 @@ namespace INT89DB_26.Forms
this.ParentForm.SystemConfig.EthernetMode = 0;
break;
case "STD1":
this.ParentForm.SystemConfig.EthernetMode = (int)DataStore.E_CommMode.f1_STD1;
this.ParentForm.SystemConfig.EthernetMode = (int)DataStore.CommunicationMode.f1_STD1;
break;
case "STD2":
this.ParentForm.SystemConfig.EthernetMode = (int)DataStore.E_CommMode.f2_STD2;
this.ParentForm.SystemConfig.EthernetMode = (int)DataStore.CommunicationMode.f2_STD2;
break;
case "Modbus":
this.ParentForm.SystemConfig.EthernetMode = (int)DataStore.E_CommMode.f99_Modbus;
this.ParentForm.SystemConfig.EthernetMode = (int)DataStore.CommunicationMode.f99_Modbus;
break;
default:
break;
@ -1104,13 +1074,13 @@ namespace INT89DB_26.Forms
this.ParentForm.SystemConfig.Serial3Mode = 0;
break;
case "STD1":
this.ParentForm.SystemConfig.Serial3Mode = (int)DataStore.E_CommMode.f1_STD1;
this.ParentForm.SystemConfig.Serial3Mode = (int)DataStore.CommunicationMode.f1_STD1;
break;
case "STD2":
this.ParentForm.SystemConfig.Serial3Mode = (int)DataStore.E_CommMode.f2_STD2;
this.ParentForm.SystemConfig.Serial3Mode = (int)DataStore.CommunicationMode.f2_STD2;
break;
case "FB_Board":
this.ParentForm.SystemConfig.Serial3Mode = (int)DataStore.E_CommMode.f98_FB_Board;
this.ParentForm.SystemConfig.Serial3Mode = (int)DataStore.CommunicationMode.f98_FB_Board;
break;
default:
break;
@ -1134,11 +1104,11 @@ namespace INT89DB_26.Forms
}
private void buttonSerialSend_Click(object sender, EventArgs e)
{
if (this.ParentForm.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f1_STD1)
if (this.ParentForm.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_STD1)
this.ParentForm.SerialPort3_Write(this.ParentForm.Protocol_STD1_NotStxEtx(this.ParentForm.SystemConfig, this.ParentForm.CollectionWeightData[0], 1));
else if (this.ParentForm.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f2_STD2)
else if (this.ParentForm.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_STD2)
this.ParentForm.SerialPort3_Write(this.ParentForm.Protocol_STD2_NotStxEtx(this.ParentForm.SystemConfig, this.ParentForm.CollectionWeightData[0], 1));
else if (this.ParentForm.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f98_FB_Board)
else if (this.ParentForm.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f98_FB_Board)
this.ParentForm.SerialPort3_FbBoardTestSend(1);
}

View File

@ -114,8 +114,8 @@ namespace INT89DB_26.Forms
structItem.IsDataBackup = this.ParentForm.SystemConfig.IsDataBackup;
structItem.DummyBool5 = false;
structItem.IsPart11 = false;
structItem.IsModbus = false;
structItem.DummyBool6 = false;
structItem.DummyBool7 = false;
structItem.IsFeedbackBoard = false;
structItem.IsFeedback = false;
structItem.IsLogin = this.ParentForm.SystemConfig.IsLogin;

View File

@ -107,7 +107,7 @@ namespace INT89DB_26.Forms
}
private void DefaultSetting()
{
this.labelDisplayVer.Text = "8.7.0";
this.labelDisplayVer.Text = "8.6.0";
this.labelSerialNo.Text = this.ParentForm.SystemConfig.SerialNumber;
this.CollectionControlVerLabel = new Collection<SmartLabel>();
@ -296,7 +296,7 @@ namespace INT89DB_26.Forms
#region Event Handler
private void labelSerialNo_Click(object sender, EventArgs e)
{
if (this.ParentForm.SystemConfig.CurrentUser.Group == DataStore.UserGroup.Developer)
if (this.ParentForm.SystemConfig.CurrentUser.Group == DataStore.UserGroup.Level4Developer)
{
this.textBoxSerialNo.Visible = true;
this.textBoxSerialNo.BringToFront();

View File

@ -43,16 +43,7 @@ namespace INT89DB_26.Forms
private string m_PathSystemFileFolder1;
private string m_PathSystemFileFolder2;
private string m_PathDataBackupFolder;
private string m_PathDataStatisticsFolder;
private string m_PathProgramSaveFolder;
private string m_PathDataFolder;
private string m_PathDataHistoryFolder;
private string m_PathDataInspectionFolder;
private string m_PathDataOthersFolder;
private string m_PathEncryptionFolder;
private string m_PathHeaderFolder;
private string m_PathDataLogFolder;
private static string m_PathBinFolder;
// 로그온 색상
public Color ColorLogOff;
@ -180,51 +171,6 @@ namespace INT89DB_26.Forms
get { return this.m_PathProgramSaveFolder; }
set { this.m_PathProgramSaveFolder = value; }
}
public string PathDataStatisticsFolder
{
get { return this.m_PathDataStatisticsFolder; }
private set { this.m_PathDataStatisticsFolder = value; }
}
public string PathDataFolder
{
get { return this.m_PathDataFolder; }
private set { this.m_PathDataFolder = value; }
}
public string PathDataHistoryFolder
{
get { return this.m_PathDataHistoryFolder; }
private set { this.m_PathDataHistoryFolder = value; }
}
public string PathDataInspectionFolder
{
get { return this.m_PathDataInspectionFolder; }
private set { this.m_PathDataInspectionFolder = value; }
}
public string PathDataOthersFolder
{
get { return this.m_PathDataOthersFolder; }
private set { this.m_PathDataOthersFolder = value; }
}
public string PathEncryptionFolder
{
get { return this.m_PathEncryptionFolder; }
set { this.m_PathEncryptionFolder = value; }
}
public string PathHeaderFolder
{
get { return this.m_PathHeaderFolder; }
private set { this.m_PathHeaderFolder = value; }
}
public string PathDataLogFolder
{
get { return this.m_PathDataLogFolder; }
set { this.m_PathDataLogFolder = value; }
}
public static string PathBinFolder
{
get { return m_PathBinFolder; }
private set { m_PathBinFolder = value; }
}
public DataStore.EquipmentStatus EquipmentStatus
{
@ -347,16 +293,6 @@ namespace INT89DB_26.Forms
this.PathSystemFileFolder2 = this.PathLaunchFolder + "SystemFile2\\";
this.PathDataBackupFolder = this.PathLaunchFolder + "DataBackup\\";
this.PathProgramSaveFolder = this.PathLaunchFolder + "Program\\";
this.PathDataStatisticsFolder = this.PathLaunchFolder + "DataStatistics\\";
this.PathDataFolder = this.PathLaunchFolder + "Data\\";
this.PathDataHistoryFolder = this.PathDataFolder + "History\\";
this.PathDataInspectionFolder = this.PathDataFolder + "Inspection\\";
this.PathDataOthersFolder = this.PathDataFolder + "Others\\";
this.PathEncryptionFolder = this.PathLaunchFolder + "Encryption\\";
this.PathHeaderFolder = this.PathLaunchFolder + "Header\\";
this.PathDataLogFolder = this.PathLaunchFolder + "Log\\";
PathBinFolder = this.PathLaunchFolder + "Bin\\";
this.EquipmentStatus = DataStore.EquipmentStatus.Stop;
this.BufferSmartUart = 1000000; // 1MB
this.ColorLogOff = Color.Red;
@ -1189,19 +1125,19 @@ namespace INT89DB_26.Forms
#endregion
// CH3
if (this.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f1_STD1) // OPT1
if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_STD1) // OPT1
this.SerialPort3_Write(this.Protocol_STD1_NotStxEtx(this.SystemConfig, this.CollectionWeightData[0], 1));
else if (this.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f2_STD2) // OPT2
else if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_STD2) // OPT2
this.SerialPort3_Write(this.Protocol_STD2_NotStxEtx(this.SystemConfig, this.CollectionWeightData[0], 1));
// Ethernet
if (this.SystemConfig.IsEthernetEnable == true)
{
if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f1_STD1) // OPT1
if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_STD1) // OPT1
this.EthernetWrite(this.Protocol_STD1(this.SystemConfig, this.CollectionWeightData[0], 1));
else if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f2_STD2) // OPT2
else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_STD2) // OPT2
this.EthernetWrite(this.Protocol_STD2(this.SystemConfig, this.CollectionWeightData[0], 1));
else if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f99_Modbus) // Modbus
else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f99_Modbus) // Modbus
{
this.Update30000ModbusData(0);
if (this.SystemConfig.EthernetOperationMode == 2) // Client
@ -1249,19 +1185,19 @@ namespace INT89DB_26.Forms
#endregion
// CH3
if (this.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f1_STD1) // OPT1
if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_STD1) // OPT1
this.SerialPort3_Write(this.Protocol_STD1_NotStxEtx(this.SystemConfig, this.CollectionWeightData[1], 2));
else if (this.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f2_STD2) // OPT2
else if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_STD2) // OPT2
this.SerialPort3_Write(this.Protocol_STD2_NotStxEtx(this.SystemConfig, this.CollectionWeightData[1], 2));
// Ethernet
if (this.SystemConfig.IsEthernetEnable == true)
{
if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f1_STD1) // OPT1
if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_STD1) // OPT1
this.EthernetWrite(this.Protocol_STD1(this.SystemConfig, this.CollectionWeightData[1], 2));
else if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f2_STD2) // OPT2
else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_STD2) // OPT2
this.EthernetWrite(this.Protocol_STD2(this.SystemConfig, this.CollectionWeightData[1], 2));
else if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f99_Modbus) // Modbus
else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f99_Modbus) // Modbus
{
this.Update30000ModbusData(1);
if (this.SystemConfig.EthernetOperationMode == 2) // Client
@ -1309,19 +1245,19 @@ namespace INT89DB_26.Forms
#endregion
// CH3
if (this.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f1_STD1) // OPT1
if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_STD1) // OPT1
this.SerialPort3_Write(this.Protocol_STD1_NotStxEtx(this.SystemConfig, this.CollectionWeightData[2], 3));
else if (this.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f2_STD2) // OPT2
else if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_STD2) // OPT2
this.SerialPort3_Write(this.Protocol_STD2_NotStxEtx(this.SystemConfig, this.CollectionWeightData[2], 3));
// Ethernet
if (this.SystemConfig.IsEthernetEnable == true)
{
if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f1_STD1) // OPT1
if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_STD1) // OPT1
this.EthernetWrite(this.Protocol_STD1(this.SystemConfig, this.CollectionWeightData[2], 3));
else if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f2_STD2) // OPT2
else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_STD2) // OPT2
this.EthernetWrite(this.Protocol_STD2(this.SystemConfig, this.CollectionWeightData[2], 3));
else if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f99_Modbus) // Modbus
else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f99_Modbus) // Modbus
{
this.Update30000ModbusData(2);
if (this.SystemConfig.EthernetOperationMode == 2) // Client
@ -1369,19 +1305,19 @@ namespace INT89DB_26.Forms
#endregion
// CH3
if (this.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f1_STD1) // OPT1
if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_STD1) // OPT1
this.SerialPort3_Write(this.Protocol_STD1_NotStxEtx(this.SystemConfig, this.CollectionWeightData[3], 4));
else if (this.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f2_STD2) // OPT2
else if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_STD2) // OPT2
this.SerialPort3_Write(this.Protocol_STD2_NotStxEtx(this.SystemConfig, this.CollectionWeightData[3], 4));
// Ethernet
if (this.SystemConfig.IsEthernetEnable == true)
{
if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f1_STD1) // OPT1
if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_STD1) // OPT1
this.EthernetWrite(this.Protocol_STD1(this.SystemConfig, this.CollectionWeightData[3], 4));
else if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f2_STD2) // OPT2
else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_STD2) // OPT2
this.EthernetWrite(this.Protocol_STD2(this.SystemConfig, this.CollectionWeightData[3], 4));
else if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f99_Modbus) // Modbus
else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f99_Modbus) // Modbus
{
this.Update30000ModbusData(3);
if (this.SystemConfig.EthernetOperationMode == 2) // Client
@ -1429,19 +1365,19 @@ namespace INT89DB_26.Forms
#endregion
// CH3
if (this.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f1_STD1) // OPT1
if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_STD1) // OPT1
this.SerialPort3_Write(this.Protocol_STD1_NotStxEtx(this.SystemConfig, this.CollectionWeightData[4], 5));
else if (this.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f2_STD2) // OPT2
else if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_STD2) // OPT2
this.SerialPort3_Write(this.Protocol_STD2_NotStxEtx(this.SystemConfig, this.CollectionWeightData[4], 5));
// Ethernet
if (this.SystemConfig.IsEthernetEnable == true)
{
if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f1_STD1) // OPT1
if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_STD1) // OPT1
this.EthernetWrite(this.Protocol_STD1(this.SystemConfig, this.CollectionWeightData[4], 5));
else if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f2_STD2) // OPT2
else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_STD2) // OPT2
this.EthernetWrite(this.Protocol_STD2(this.SystemConfig, this.CollectionWeightData[4], 5));
else if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f99_Modbus) // Modbus
else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f99_Modbus) // Modbus
{
this.Update30000ModbusData(4);
if (this.SystemConfig.EthernetOperationMode == 2) // Client
@ -1489,19 +1425,19 @@ namespace INT89DB_26.Forms
#endregion
// CH3
if (this.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f1_STD1) // OPT1
if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_STD1) // OPT1
this.SerialPort3_Write(this.Protocol_STD1_NotStxEtx(this.SystemConfig, this.CollectionWeightData[4], 5));
else if (this.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f2_STD2) // OPT2
else if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_STD2) // OPT2
this.SerialPort3_Write(this.Protocol_STD2_NotStxEtx(this.SystemConfig, this.CollectionWeightData[4], 5));
// Ethernet
if (this.SystemConfig.IsEthernetEnable == true)
{
if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f1_STD1) // OPT1
if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_STD1) // OPT1
this.EthernetWrite(this.Protocol_STD1(this.SystemConfig, this.CollectionWeightData[4], 5));
else if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f2_STD2) // OPT2
else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_STD2) // OPT2
this.EthernetWrite(this.Protocol_STD2(this.SystemConfig, this.CollectionWeightData[4], 5));
else if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f99_Modbus) // Modbus
else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f99_Modbus) // Modbus
{
this.Update30000ModbusData(5);
if (this.SystemConfig.EthernetOperationMode == 2) // Client
@ -1556,7 +1492,7 @@ namespace INT89DB_26.Forms
}
#endregion
if (this.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f99_Modbus) // Modbus
if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f99_Modbus) // Modbus
{
for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++)
this.Update30000ModbusData(i);
@ -4445,7 +4381,7 @@ namespace INT89DB_26.Forms
return ret;
}
public void SerialPort3_FbBoardBooting()
private void SerialPort3_FbBoardBooting()
{
string value = "";
@ -4852,9 +4788,6 @@ namespace INT89DB_26.Forms
}
private void Update30000UpdateData(int index)
{
if (this.SystemConfig.IsModbus == false)
return;
if (this.CollectionWeightData[index].UpdateCount > 65535)
this.CollectionWeightData[index].UpdateCount = 0;
else
@ -4864,9 +4797,6 @@ namespace INT89DB_26.Forms
}
public void Update30000ModbusData()
{
if (this.SystemConfig.IsModbus == false)
return;
for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++)
this.Update30000UpdateData(i);
@ -4885,15 +4815,10 @@ namespace INT89DB_26.Forms
}
public void Update30000ModbusData(int index)
{
if (this.SystemConfig.IsModbus == false)
return;
double weightData = Helper.StringToWeight(this.CollectionWeightData[index].WeightString, this.SystemConfig.DecimalPlaces);
this.Update30000UpdateData(index);
this.Current30000ModbusData.ModbusLaneData[index].Grade = this.Grade(this.CollectionWeightData[index].JudgmentStatus);
this.Current30000ModbusData.ModbusLaneData[index].WeightDouble = weightData;
this.Current30000ModbusData.ModbusLaneData[index].WeightDouble = this.CollectionWeightData[index].Weight;
this.Current30000ModbusData.ModbusLaneData[index].UnderCount = (UInt32)this.CollectionWeightData[index].UnderCount;
this.Current30000ModbusData.ModbusLaneData[index].PassCount = (UInt32)this.CollectionWeightData[index].PassCount;
this.Current30000ModbusData.ModbusLaneData[index].OverCount = (UInt32)this.CollectionWeightData[index].OverCount;
@ -5342,8 +5267,8 @@ namespace INT89DB_26.Forms
#region StructItem1
structItem1.IsDataBackup = this.SystemConfig.IsDataBackup;
structItem1.DummyBool5 = false;
structItem1.IsPart11 = this.SystemConfig.IsPart11;
structItem1.IsModbus = this.SystemConfig.IsModbus;
structItem1.DummyBool6 = false;
structItem1.DummyBool7 = false;
structItem1.IsFeedbackBoard = this.SystemConfig.IsFeedbackBoard;
structItem1.IsFeedback = this.SystemConfig.IsFeedback;
structItem1.IsLogin = this.SystemConfig.IsLogin;
@ -5407,7 +5332,7 @@ namespace INT89DB_26.Forms
structItem2.FeedbackCorrectionRate = this.SystemConfig.FeedbackCorrectionRate;
structItem2.FeedbackPulseWidth = this.SystemConfig.FeedbackPulseWidth;
structItem2.StoragePeriod = this.SystemConfig.StoragePeriod;
structItem2.DummyInt3 = 0;
structItem2.DummyInt4 = 0;
structItem2.DummyInt5 = 0;
structItem2.DummyInt6 = 0;
@ -5465,8 +5390,8 @@ namespace INT89DB_26.Forms
#region StructItem1
structItem1.IsDataBackup = item.IsDataBackup;
structItem1.DummyBool5 = false;
structItem1.IsPart11 = item.IsPart11;
structItem1.IsModbus = item.IsModbus;
structItem1.DummyBool6 = false;
structItem1.DummyBool7 = false;
structItem1.IsFeedbackBoard = item.IsFeedbackBoard;
structItem1.IsFeedback = item.IsFeedback;
structItem1.IsLogin = item.IsLogin;
@ -5530,7 +5455,7 @@ namespace INT89DB_26.Forms
structItem2.FeedbackCorrectionRate = item.FeedbackCorrectionRate;
structItem2.FeedbackPulseWidth = item.FeedbackPulseWidth;
structItem2.StoragePeriod = item.StoragePeriod;
structItem2.DummyInt3 = 0;
structItem2.DummyInt4 = 0;
structItem2.DummyInt5 = 0;
structItem2.DummyInt6 = 0;
@ -5592,8 +5517,6 @@ namespace INT89DB_26.Forms
structItem1 = (StructSystemConfigurationItem1)this.smartFileIO.ReadStructure(0, typeof(StructSystemConfigurationItem1));
#region StructItem1
this.SystemConfig.IsPart11 = structItem1.IsPart11;
this.SystemConfig.IsModbus = structItem1.IsModbus;
this.SystemConfig.IsFeedback = structItem1.IsFeedback;
this.SystemConfig.IsDataBackup = structItem1.IsDataBackup;
this.SystemConfig.IsWeightViewForward = structItem1.IsWeightViewForward;
@ -5654,7 +5577,6 @@ namespace INT89DB_26.Forms
#region StructItem2
this.SystemConfig.FeedbackCorrectionRate = structItem2.FeedbackCorrectionRate;
this.SystemConfig.FeedbackPulseWidth = structItem2.FeedbackPulseWidth;
this.SystemConfig.StoragePeriod = structItem2.StoragePeriod;
#endregion
}
catch
@ -6340,13 +6262,13 @@ namespace INT89DB_26.Forms
feedbackWeight = averageWeight - passRange;
this.CollectionFeedbackStatus[lane - 1].FeedbackWeight = feedbackWeight;
this.CollectionFeedbackStatus[lane - 1].ClearData();
this.CollectionFeedbackStatus[lane - 1].IsFbCalComplete = true;
if (this.CollectionFeedbackStatus[lane - 1].UpdateFeedbackData > 65535)
this.CollectionFeedbackStatus[lane - 1].UpdateFeedbackData = 0;
else
this.CollectionFeedbackStatus[lane - 1].UpdateFeedbackData++;
this.CollectionFeedbackStatus[lane - 1].ClearData();
this.CollectionFeedbackStatus[lane - 1].IsFbCalComplete = true;
if (this.SystemConfig.IsFeedbackBoard == true)
this.SerialPort3_Write(this.Protocol_STD3_NotStxEtx(this.SystemConfig, this.CollectionFeedbackStatus[lane - 1], lane));
@ -6389,7 +6311,7 @@ namespace INT89DB_26.Forms
structItem.ID = "L1";
structItem.Password = "1111";
structItem.Group = DataStore.UserGroup.Level1;
structItem.Group = DataStore.UserGroup.Level1Operator;
structItem.Dummy1 = "";
structItem.Dummy2 = "";
@ -6506,7 +6428,7 @@ namespace INT89DB_26.Forms
structItem.ID = "L2";
structItem.Password = "2222";
structItem.Group = DataStore.UserGroup.Level2;
structItem.Group = DataStore.UserGroup.Level2Engineer;
structItem.Dummy1 = "";
structItem.Dummy2 = "";
@ -6623,7 +6545,7 @@ namespace INT89DB_26.Forms
structItem.ID = "L3";
structItem.Password = "3333";
structItem.Group = DataStore.UserGroup.Level3;
structItem.Group = DataStore.UserGroup.Level3Manager;
structItem.Dummy1 = "";
structItem.Dummy2 = "";
@ -6920,376 +6842,6 @@ namespace INT89DB_26.Forms
}
#endregion
#region Backup
public List<string> GetSeletedNodeList(TreeView tree)
{
int yearCNT, monthCNT, dayCNT;
List<string> listSelectedFile = new List<string>();
yearCNT = tree.Nodes.Count;
if (yearCNT != 0)
{
for (int i = 0; i < yearCNT; i++)
{
monthCNT = tree.Nodes[i].Nodes.Count;
if (monthCNT != 0)
{
for (int j = 0; j < monthCNT; j++)
{
dayCNT = tree.Nodes[i].Nodes[j].Nodes.Count;
if (dayCNT != 0)
{
for (int k = 0; k < dayCNT; k++)
{
//if (tree.Nodes[i].Nodes[j].Nodes[k].Checked == true)
//{
//listSelectedFile.Add(tree.Nodes[i].Nodes[j].Nodes[k].Text);
listSelectedFile.Add(string.Format("{0}\\{1}\\{2}", tree.Nodes[i].Text, tree.Nodes[i].Nodes[j].Text, tree.Nodes[i].Nodes[j].Nodes[k].Text));
//}
}
}
}
}
}
}
return listSelectedFile;
}
private void DeleteLogFile(string path, DataStore.E_DataType type)
{
string dataFolderPath = "";
switch (type)
{
case DataStore.E_DataType.None:
break;
case DataStore.E_DataType.History:
dataFolderPath = this.PathDataHistoryFolder;
break;
case DataStore.E_DataType.Inspection:
dataFolderPath = this.PathDataInspectionFolder;
break;
case DataStore.E_DataType.Others:
dataFolderPath = this.PathDataOthersFolder;
break;
default:
break;
}
foreach (string Folder in Directory.GetDirectories(path))
{
this.DeleteLogFile(Folder, type); //재귀함수 호출
if (Directory.GetDirectories(Folder).Count() == 0 && Directory.GetFiles(Folder).Count() == 0 && Folder != dataFolderPath)
Directory.Delete(Folder, true);
}
foreach (string file in Directory.GetFiles(path))
{
FileInfo fi = new FileInfo(file);
if (DateTime.ParseExact(fi.Name.Substring(1, 8), "yyyyMMdd", null) < DateTime.Now.AddMonths(-1 * this.SystemConfig.StoragePeriod))
fi.Delete();
}
}
#endregion
#region Tracking Inspection data
private void GetTrackingInspectionFolderPath(ref string folder, ref string fileName)
{
DateTime time = DateTime.Now;
if (this.SystemConfig.IsPart11 == false)
{
folder = this.PathDataBackupFolder;
fileName = string.Format("{0:yyyyMMdd}-{1}.csv", time, this.SystemConfig.ProductNumber);
}
else
{
folder = string.Format("{0}{1}\\{2}\\", this.PathDataInspectionFolder, time.Year, time.Month);
fileName = string.Format("I{0:yyyyMMdd}-{1}.csv", time, this.SystemConfig.ProductNumber);
}
}
private void TrackingInspectionData(Collection<WeightData> items)
{
bool fileCheck = false, directoryCheck = false;
string fullFilePath = "", folderPath = "", fileName = "";
StreamWriter sw;
if (this.SystemConfig.IsDataBackup == true)
{
this.GetTrackingInspectionFolderPath(ref folderPath, ref fileName);
fullFilePath = string.Format("{0}{1}", folderPath, fileName);
DirectoryInfo di = new DirectoryInfo(folderPath);
directoryCheck = di.Exists;
// 폴더 체크
if (directoryCheck == false)
di.Create();
FileInfo fileInfo = new FileInfo(fullFilePath);
fileCheck = fileInfo.Exists;
sw = new StreamWriter(fullFilePath, true, Encoding.UTF8);
if (fileCheck == false)
{
this.RemoveInspectionDataFile();
sw.Write("Date");
sw.Write(",");
sw.Write("Time");
sw.Write(",");
sw.Write("P_No");
sw.Write(",");
sw.Write("Name");
sw.Write(",");
sw.Write("Lot");
sw.Write(",");
sw.Write("UnderRange");
sw.Write(",");
sw.Write("PassRange");
sw.Write(",");
sw.Write("OverRange");
sw.Write(",");
sw.Write("TareRange");
for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++)
{
sw.Write(",");
sw.Write(string.Format("#{0}_Weight", i + 1));
sw.Write(",");
sw.Write(string.Format("#{0}_Grade", i + 1));
}
sw.WriteLine();
}
sw.Write(string.Format("{0:yyyy-MM-dd}", DateTime.Now));
sw.Write(",");
sw.Write(string.Format("{0:HH:mm:ss}", DateTime.Now));
sw.Write(",");
sw.Write(this.CurrentProductItem.Number);
sw.Write(",");
sw.Write(this.CurrentProductItem.Name);
sw.Write(",");
sw.Write(this.CurrentProductItem.LotNo);
sw.Write(",");
sw.Write(Helper.StringToDecimalPlaces(this.CurrentProductItem.UnderRange, this.SystemConfig.DecimalPlaces));
sw.Write(",");
sw.Write(Helper.StringToDecimalPlaces(this.CurrentProductItem.PassRange, this.SystemConfig.DecimalPlaces));
sw.Write(",");
sw.Write(Helper.StringToDecimalPlaces(this.CurrentProductItem.OverRange, this.SystemConfig.DecimalPlaces));
sw.Write(",");
sw.Write(Helper.StringToDecimalPlaces(this.CurrentProductItem.TareRange, this.SystemConfig.DecimalPlaces));
for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++)
{
sw.Write(",");
sw.Write(Helper.DoubleToString(items[i].Weight, this.SystemConfig.DecimalPlaces));
sw.Write(",");
sw.Write(items[i].JudgmentStatus);
}
sw.WriteLine();
sw.Close();
}
}
private void RemoveInspectionDataFile()
{
bool directoryCheck = false;
try
{
if (this.SystemConfig.IsPart11 == true)
this.DeleteLogFile(this.PathDataInspectionFolder, DataStore.E_DataType.Inspection);
else
{
string dday = string.Format("{0:yyyyMMdd}", DateTime.Now.AddDays(-180)) + ".csv";
DirectoryInfo dir = new DirectoryInfo(this.PathDataInspectionFolder);
directoryCheck = dir.Exists;
// 폴더 체크
if (directoryCheck == false)
dir.Create();
FileInfo[] files = dir.GetFiles();
foreach (FileInfo subfile in files)
{
if (subfile.Name.StartsWith("20")) // 날짜 비교하여 180일 지난화일은 삭제함
{
if (subfile.Name.CompareTo(dday) < 0)
{
subfile.Delete();
}
}
}
}
}
catch
{
}
}
#endregion
#region Tracking History data
public void SetTrackingHistoryData(DataStore.E_TrackingOperation type, string detail)
{
if (this.SystemConfig.IsPart11 == false)
return;
HistoryData data = new HistoryData();
data.Type = "Operation";
data.Time = DateTime.Now;
data.LoginID = this.SystemConfig.CurrentUser.ID;
data.Event = type.ToString();
data.Detail = detail;
data.BeforeData = "";
data.AfterData = "";
this.TrackingHistoryData(data);
}
public void SetTrackingHistoryData(DataStore.E_TrackingOperation eventType, string detail, string loginID)
{
if (this.SystemConfig.IsPart11 == false)
return;
HistoryData data = new HistoryData();
data.Type = "Operation";
data.Time = DateTime.Now;
data.LoginID = loginID;
data.Event = eventType.ToString();
data.Detail = detail;
data.BeforeData = "";
data.AfterData = "";
this.TrackingHistoryData(data);
}
public void SetTrackingHistoryData(DataStore.TrackingAlarm type, string detail)
{
HistoryData data = new HistoryData();
data.Type = "Alarm";
data.Time = DateTime.Now;
data.LoginID = this.SystemConfig.CurrentUser.ID;
data.Event = type.ToString();
data.Detail = detail;
data.BeforeData = "";
data.AfterData = "";
this.TrackingHistoryData(data);
}
public void SetTrackingHistoryData(DataStore.TrackingParameter type, string detail, string before, string after)
{
if (before == after)
return;
HistoryData data = new HistoryData();
data.Type = "Parameter";
data.Time = DateTime.Now;
data.LoginID = this.SystemConfig.CurrentUser.ID;
data.Event = type.ToString();
data.Detail = detail;
data.BeforeData = before;
data.AfterData = after;
this.TrackingHistoryData(data);
}
private void TrackingHistoryData(HistoryData data)
{
bool fileCheck = false, directoryCheck = false;
string fullFilePath = "", folderPath = "", fileName = "";
StreamWriter sw;
DateTime time = DateTime.Now;
if (this.SystemConfig.IsPart11 == true)
{
folderPath = string.Format("{0}{1}\\{2}\\", this.PathDataHistoryFolder, time.Year, time.Month);
fileName = string.Format("H{0:yyyyMMdd}.csv", time);
fullFilePath = string.Format("{0}{1}", folderPath, fileName);
DirectoryInfo di = new DirectoryInfo(folderPath);
directoryCheck = di.Exists;
// 폴더 체크
if (directoryCheck == false)
di.Create();
FileInfo fileInfo = new FileInfo(fullFilePath);
fileCheck = fileInfo.Exists;
sw = new StreamWriter(fullFilePath, true, Encoding.UTF8);
if (fileCheck == false)
{
this.RemoveHistoryDataFile();
sw.Write("Date");
sw.Write(",");
sw.Write("Time");
sw.Write(",");
sw.Write("LoginID");
sw.Write(",");
sw.Write("Event");
sw.Write(",");
sw.Write("Detail");
sw.Write(",");
sw.Write("Before");
sw.Write(",");
sw.Write("After");
sw.Write(",");
sw.Write("Type");
sw.WriteLine();
}
sw.Write(string.Format("{0:yyyy-MM-dd}", DateTime.Now));
sw.Write(",");
sw.Write(string.Format("{0:HH:mm:ss}", DateTime.Now));
sw.Write(",");
sw.Write(data.LoginID);
sw.Write(",");
sw.Write(data.Event.ToString());
sw.Write(",");
sw.Write(data.Detail);
sw.Write(",");
sw.Write(data.BeforeData);
sw.Write(",");
sw.Write(data.AfterData);
sw.Write(",");
sw.Write(data.Type);
sw.WriteLine();
sw.Close();
}
}
private void RemoveHistoryDataFile()
{
try
{
this.DeleteLogFile(this.PathDataHistoryFolder, DataStore.E_DataType.History);
}
catch
{
}
}
#endregion
#region Tracking Others data
private void RemoveOthersDataFile()
{
try
{
this.DeleteLogFile(this.PathDataOthersFolder, DataStore.E_DataType.Others);
}
catch
{
}
}
#endregion
#endregion
#region Override Member
@ -7403,7 +6955,7 @@ namespace INT89DB_26.Forms
switch (this.SystemConfig.EthernetMode)
{
case (int)DataStore.E_CommMode.f99_Modbus:
case (int)DataStore.CommunicationMode.f99_Modbus:
#region Modbus TCP
if (this.smartTCPMultiServer.ClientInfoList != null)
{

View File

@ -320,7 +320,7 @@ namespace INT89DB_26.Forms
this.labelUserID.Visible = false;
this.labelUserLevel.Visible = false;
this.ParentForm.SystemConfig.CurrentUser.Group = DataStore.UserGroup.Level3;
this.ParentForm.SystemConfig.CurrentUser.Group = DataStore.UserGroup.Level3Manager;
}
// Ethernet
@ -366,7 +366,7 @@ namespace INT89DB_26.Forms
switch (user.Group)
{
case DataStore.UserGroup.Level1:
case DataStore.UserGroup.Level1Operator:
id = user.ID;
if (this.ParentForm.SystemConfig.Language == DataStore.E_LanguageID.Chinese)
group = "级别1";
@ -391,7 +391,7 @@ namespace INT89DB_26.Forms
colorButtonText = this.ColorButtonAccessFalse;
break;
case DataStore.UserGroup.Level2:
case DataStore.UserGroup.Level2Engineer:
id = user.ID;
if (this.ParentForm.SystemConfig.Language == DataStore.E_LanguageID.Chinese)
group = "级别2";
@ -416,7 +416,7 @@ namespace INT89DB_26.Forms
colorButtonText = this.ColorButtonAccessTrue;
break;
case DataStore.UserGroup.Level3:
case DataStore.UserGroup.Level3Manager:
id = user.ID;
if (this.ParentForm.SystemConfig.Language == DataStore.E_LanguageID.Chinese)
group = "级别3";
@ -441,7 +441,7 @@ namespace INT89DB_26.Forms
colorButtonText = this.ColorButtonAccessTrue;
break;
case DataStore.UserGroup.Developer:
case DataStore.UserGroup.Level4Developer:
id = user.ID;
if (this.ParentForm.SystemConfig.Language == DataStore.E_LanguageID.Chinese)
group = "级别4";
@ -466,7 +466,7 @@ namespace INT89DB_26.Forms
colorButtonText = this.ColorButtonAccessTrue;
break;
case DataStore.UserGroup.LogOut:
case DataStore.UserGroup.LogOff:
id = "";
if (this.ParentForm.SystemConfig.Language == DataStore.E_LanguageID.Chinese)
group = "关闭";
@ -1273,18 +1273,6 @@ namespace INT89DB_26.Forms
}
else
{
if (this.ParentForm.SystemConfig.IsFeedback == true)
{
if (myKeyPad.doubleValue < Helper.StringToWeight(this.ParentForm.CurrentFeedbackItem.LowLimit, this.ParentForm.SystemConfig.DecimalPlaces)
|| (myKeyPad.doubleValue > Helper.StringToWeight(this.ParentForm.CurrentFeedbackItem.HighLimit, this.ParentForm.SystemConfig.DecimalPlaces)))
{
// 입력범위를 확인하세요
DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.SystemConfig.Language, "");
myMsg.ShowDialog();
return;
}
}
this.UpdatePassRangeChange(myKeyPad.StringValue);
this.ParentForm.Update30000ModbusData();
@ -1361,7 +1349,7 @@ namespace INT89DB_26.Forms
}
private void buttonUser_Click(object sender, EventArgs e)
{
if (this.ParentForm.SystemConfig.CurrentUser.Group == DataStore.UserGroup.LogOut)
if (this.ParentForm.SystemConfig.CurrentUser.Group == DataStore.UserGroup.LogOff)
{
DialogFormLogOn logOn = new DialogFormLogOn(this.ParentForm);
if (logOn.ShowDialog() == DialogResult.OK)
@ -1379,7 +1367,7 @@ namespace INT89DB_26.Forms
DialogFormYesNo msg = new DialogFormYesNo(this.ParentForm.SystemConfig.Language, 12);
if (msg.ShowDialog() == DialogResult.Yes)
{
this.ParentForm.SystemConfig.CurrentUser.Group = DataStore.UserGroup.LogOut;
this.ParentForm.SystemConfig.CurrentUser.Group = DataStore.UserGroup.LogOff;
this.buttonUser.ButtonUp();
this.DisplayRefresh();

View File

@ -28,7 +28,6 @@
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMenu));
this.smartForm1 = new SmartX.SmartForm();
this.buttonBack = new SmartX.SmartButton();
@ -51,7 +50,6 @@
this.buttonFunction = new SmartX.SmartButton();
this.buttonCommunication = new SmartX.SmartButton();
this.buttonOptionSetting = new SmartX.SmartButton();
this.smartTimerScanUSB = new SmartX.SmartTimer(this.components);
((System.ComponentModel.ISupportInitialize)(this.smartForm1)).BeginInit();
this.SuspendLayout();
//
@ -636,15 +634,6 @@
this.buttonOptionSetting.Visible = false;
this.buttonOptionSetting.Click += new System.EventHandler(this.buttonMenu_Click);
//
// smartTimerScanUSB
//
this.smartTimerScanUSB.EndTime = ((long)(100000000000));
this.smartTimerScanUSB.Interval = 100;
this.smartTimerScanUSB.IntervalSeries = null;
this.smartTimerScanUSB.NowMillisecond = ((long)(0));
this.smartTimerScanUSB.StartTime = ((long)(0));
this.smartTimerScanUSB.Tick += new System.EventHandler(this.smartTimerScanUSB_Tick);
//
// FormMenu
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@ -702,6 +691,5 @@
private SmartX.SmartButton buttonFunction;
private SmartX.SmartButton buttonCommunication;
private SmartX.SmartButton buttonOptionSetting;
private SmartX.SmartTimer smartTimerScanUSB;
}
}

View File

@ -6,7 +6,6 @@ using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using INT89DB_26.DialogForms;
using INT89DB_26_ImageDll;
@ -17,8 +16,6 @@ namespace INT89DB_26.Forms
{
#region Field
private FormMain m_ParentForm;
public bool IsConnectedUSB;
#endregion
#region Costructor
@ -158,8 +155,6 @@ namespace INT89DB_26.Forms
}
private void DefaultSetting()
{
this.IsConnectedUSB = false;
if (this.ParentForm.SystemConfig.IsLogin == false)
{
this.labelUserID.Visible = false;
@ -176,7 +171,7 @@ namespace INT89DB_26.Forms
switch (user.Group)
{
case DataStore.UserGroup.Level1:
case DataStore.UserGroup.Level1Operator:
id = user.ID;
if (this.ParentForm.SystemConfig.Language == DataStore.E_LanguageID.Chinese)
group = "级别1";
@ -202,7 +197,7 @@ namespace INT89DB_26.Forms
this.buttonOptionSetting.Visible = false;
break;
case DataStore.UserGroup.Level2:
case DataStore.UserGroup.Level2Engineer:
id = user.ID;
if (this.ParentForm.SystemConfig.Language == DataStore.E_LanguageID.Chinese)
group = "级别2";
@ -227,7 +222,7 @@ namespace INT89DB_26.Forms
this.buttonEquipmentTest.Visible = false;
this.buttonOptionSetting.Visible = false;
break;
case DataStore.UserGroup.Level3:
case DataStore.UserGroup.Level3Manager:
id = user.ID;
if (this.ParentForm.SystemConfig.Language == DataStore.E_LanguageID.Chinese)
group = "级别3";
@ -252,7 +247,7 @@ namespace INT89DB_26.Forms
this.buttonEquipmentTest.Visible = false;
this.buttonOptionSetting.Visible = false;
break;
case DataStore.UserGroup.Developer:
case DataStore.UserGroup.Level4Developer:
id = user.ID;
if (this.ParentForm.SystemConfig.Language == DataStore.E_LanguageID.Chinese)
group = "级别4";
@ -277,7 +272,7 @@ namespace INT89DB_26.Forms
this.buttonEquipmentTest.Visible = true;
this.buttonOptionSetting.Visible = true;
break;
case DataStore.UserGroup.LogOut:
case DataStore.UserGroup.LogOff:
break;
default:
break;
@ -296,15 +291,13 @@ namespace INT89DB_26.Forms
this.UpdateDisplayUser(this.ParentForm.SystemConfig.CurrentUser);
else
{
this.ParentForm.SystemConfig.CurrentUser.Group = DataStore.UserGroup.Level3;
this.ParentForm.SystemConfig.CurrentUser.Group = DataStore.UserGroup.Level3Manager;
this.buttonEquipmentTest.Visible = false;
this.buttonOptionSetting.Visible = false;
}
this.ParentForm.TransferData(CommunicationCommand.ModeMenu, CommunicationID.MainBoard);
this.ParentForm.SystemConfig.CurrentForm = DataStore.E_FormStore.FormMenu;
this.smartTimerScanUSB.Start();
}
#endregion
@ -384,8 +377,10 @@ namespace INT89DB_26.Forms
else if (button == this.buttonUpdate)
{
#region 업데이트
((FormMain)(Owner)).smartForm.Show((int)DataStore.E_FormStore.FormProgramUpdate);
this.ParentForm.ChildFormProgramUpdate.DisplayRefresh();
DialogFormYesNo myDlg = new DialogFormYesNo(this.ParentForm.SystemConfig.Language, 3);
DialogResult dr = myDlg.ShowDialog();
if (dr == DialogResult.Yes)
this.ParentForm.ChildFormProgramUpdate.DisplayRefresh();
#endregion
}
else if (button == this.buttonEquipmentSetting)
@ -444,7 +439,7 @@ namespace INT89DB_26.Forms
if (pass.ShowDialog() == DialogResult.OK)
{
this.ParentForm.SystemConfig.CurrentUser.Group = DataStore.UserGroup.Developer;
this.ParentForm.SystemConfig.CurrentUser.Group = DataStore.UserGroup.Level4Developer;
if (this.buttonEquipmentTest.Visible != true)
this.buttonEquipmentTest.Visible = true;
@ -453,29 +448,6 @@ namespace INT89DB_26.Forms
}
}
}
private void smartTimerScanUSB_Tick(object sender, EventArgs e)
{
bool isBeforeConnectedUSB = this.IsConnectedUSB;
DirectoryInfo info = new DirectoryInfo("하드 디스크\\");
if (info.Exists == true)
this.IsConnectedUSB = true;
else
this.IsConnectedUSB = false;
if (isBeforeConnectedUSB != this.IsConnectedUSB)
{
if (this.ParentForm.ChildFormProgramUpdate != null)
this.ParentForm.ChildFormProgramUpdate.EnableBackupButton(this.IsConnectedUSB);
//if (this.ParentForm.ChildFormDataBackup != null)
// this.ParentForm.ChildFormDataBackup.EnableBackupButton(this.IsConnectedUSB);
//if (this.ParentForm.ChildFormDataBackup_Part11 != null)
// this.ParentForm.ChildFormDataBackup_Part11.EnableBackupButton(this.IsConnectedUSB);
}
}
#endregion
}
}

View File

@ -7867,9 +7867,6 @@
EAAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="smartTimerScanUSB.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="$this.FormFactorShadowProperty" xml:space="preserve">
<value>WEBPAD</value>
</metadata>

View File

@ -128,7 +128,7 @@
this.labelTitle.BackPictureBox2 = null;
this.labelTitle.BorderColor = System.Drawing.Color.Black;
this.labelTitle.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.labelTitle.Font = new System.Drawing.Font("새굴림", 23F, System.Drawing.FontStyle.Bold);
this.labelTitle.Font = new System.Drawing.Font("New Gulim", 23F, System.Drawing.FontStyle.Bold);
this.labelTitle.ForeColor = System.Drawing.Color.White;
this.labelTitle.InitVisible = true;
this.labelTitle.LineSpacing = 0F;
@ -155,17 +155,16 @@
this.labelTitleFeedback.BackPictureBox2 = null;
this.labelTitleFeedback.BorderColor = System.Drawing.Color.Black;
this.labelTitleFeedback.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.labelTitleFeedback.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.labelTitleFeedback.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold);
this.labelTitleFeedback.InitVisible = true;
this.labelTitleFeedback.LineSpacing = 0F;
this.labelTitleFeedback.Location = new System.Drawing.Point(260, 195);
this.labelTitleFeedback.Location = new System.Drawing.Point(248, 219);
this.labelTitleFeedback.Name = "labelTitleFeedback";
this.labelTitleFeedback.Size = new System.Drawing.Size(160, 30);
this.labelTitleFeedback.TabIndex = 169;
this.labelTitleFeedback.Text = "Feedback";
this.labelTitleFeedback.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
this.labelTitleFeedback.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
this.labelTitleFeedback.Visible = false;
this.labelTitleFeedback.Wordwrap = false;
//
// buttonFeedback
@ -180,7 +179,7 @@
this.buttonFeedback.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonFeedback.DownImage")));
this.buttonFeedback.GroupID = 0;
this.buttonFeedback.InitVisible = true;
this.buttonFeedback.Location = new System.Drawing.Point(426, 195);
this.buttonFeedback.Location = new System.Drawing.Point(414, 219);
this.buttonFeedback.Mode = SmartX.SmartButton.BUTTONMODE.PUSH;
this.buttonFeedback.Name = "buttonFeedback";
this.buttonFeedback.NestedClickEventPrevent = false;
@ -197,7 +196,6 @@
this.buttonFeedback.TextLocation = new System.Drawing.Point(0, 0);
this.buttonFeedback.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
this.buttonFeedback.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonFeedback.UpImage")));
this.buttonFeedback.Visible = false;
this.buttonFeedback.Click += new System.EventHandler(this.buttonFeedback_Click);
//
// buttonFeedbackBoard
@ -212,7 +210,7 @@
this.buttonFeedbackBoard.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonFeedbackBoard.DownImage")));
this.buttonFeedbackBoard.GroupID = 0;
this.buttonFeedbackBoard.InitVisible = true;
this.buttonFeedbackBoard.Location = new System.Drawing.Point(426, 231);
this.buttonFeedbackBoard.Location = new System.Drawing.Point(414, 255);
this.buttonFeedbackBoard.Mode = SmartX.SmartButton.BUTTONMODE.PUSH;
this.buttonFeedbackBoard.Name = "buttonFeedbackBoard";
this.buttonFeedbackBoard.NestedClickEventPrevent = false;
@ -238,10 +236,10 @@
this.labelTitleFeedbackBoard.BackPictureBox2 = null;
this.labelTitleFeedbackBoard.BorderColor = System.Drawing.Color.Black;
this.labelTitleFeedbackBoard.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.labelTitleFeedbackBoard.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.labelTitleFeedbackBoard.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold);
this.labelTitleFeedbackBoard.InitVisible = true;
this.labelTitleFeedbackBoard.LineSpacing = 0F;
this.labelTitleFeedbackBoard.Location = new System.Drawing.Point(260, 231);
this.labelTitleFeedbackBoard.Location = new System.Drawing.Point(248, 255);
this.labelTitleFeedbackBoard.Name = "labelTitleFeedbackBoard";
this.labelTitleFeedbackBoard.Size = new System.Drawing.Size(160, 30);
this.labelTitleFeedbackBoard.TabIndex = 173;
@ -258,7 +256,7 @@
this.labelBuadrateWarning2.BackPictureBox2 = null;
this.labelBuadrateWarning2.BorderColor = System.Drawing.Color.Black;
this.labelBuadrateWarning2.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.labelBuadrateWarning2.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold);
this.labelBuadrateWarning2.Font = new System.Drawing.Font("New Gulim", 11F, System.Drawing.FontStyle.Bold);
this.labelBuadrateWarning2.ForeColor = System.Drawing.Color.Red;
this.labelBuadrateWarning2.InitVisible = true;
this.labelBuadrateWarning2.LineSpacing = 0F;
@ -279,7 +277,7 @@
this.labelBuadrateWarning.BackPictureBox2 = null;
this.labelBuadrateWarning.BorderColor = System.Drawing.Color.Black;
this.labelBuadrateWarning.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.labelBuadrateWarning.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold);
this.labelBuadrateWarning.Font = new System.Drawing.Font("New Gulim", 11F, System.Drawing.FontStyle.Bold);
this.labelBuadrateWarning.ForeColor = System.Drawing.Color.Red;
this.labelBuadrateWarning.InitVisible = true;
this.labelBuadrateWarning.LineSpacing = 0F;
@ -290,7 +288,6 @@
this.labelBuadrateWarning.Text = "※ 설정 변경 후, 전원을 껐다 켜야 합니다";
this.labelBuadrateWarning.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
this.labelBuadrateWarning.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
this.labelBuadrateWarning.Visible = false;
this.labelBuadrateWarning.Wordwrap = false;
//
// FormOptionSetting

View File

@ -133,10 +133,10 @@ namespace INT89DB_26.Forms
private void buttonSave_Click(object sender, EventArgs e)
{
// 피드백시스템 사용 유무
//if (this.buttonFeedback.ButtonStatus == SmartButton.BUTSTATUS.DOWN)
// this.ParentForm.SystemConfig.IsFeedback = true;
//else
// this.ParentForm.SystemConfig.IsFeedback = false;
if (this.buttonFeedback.ButtonStatus == SmartButton.BUTSTATUS.DOWN)
this.ParentForm.SystemConfig.IsFeedback = true;
else
this.ParentForm.SystemConfig.IsFeedback = false;
// 피드백 보드 사용 유무
if (this.buttonFeedbackBoard.ButtonStatus == SmartButton.BUTSTATUS.DOWN)
@ -145,9 +145,6 @@ namespace INT89DB_26.Forms
this.ParentForm.SystemConfig.Serial3BaudRate = 38400;
this.ParentForm.SystemConfig.Serial3Mode = 98;
this.ParentForm.SerialPort3_Open();
this.ParentForm.SerialPort3_FbBoardBooting();
}
else
{
@ -159,12 +156,10 @@ namespace INT89DB_26.Forms
this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig);
this.ParentForm.ChildFormMainDisplay.UpdateDisplayFeedbackVisible();
this.ParentForm.ChildFormCommunication.RefreshComboBoxSerial3FeedbackBoard(this.ParentForm.SystemConfig.IsFeedbackBoard);
this.buttonSave.Visible = false;
this.buttonBack.Visible = false;
//this.Enabled = false;
this.Enabled = false;
}
private void buttonBack_Click(object sender, EventArgs e)
{

View File

@ -165,52 +165,53 @@
XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS
fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+
tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/
6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwwAADsMBx2+oZAAACmpJREFUeF7t1jERgEAQ
ALGz8yUSXjM4AgtQY2LLzERE5tgLAICQYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhg
AQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABi
ggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIA
iAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQL
ACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABAT
LACAmGABAMQECwAgJlgAADHBAgCIzXufAACE5nsuAABCggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJ
FgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAg
JlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywA
gJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEyw
AABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAx
wQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEA
xAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIF
ABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJ
FgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAg
JlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywA
gJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEyw
AABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAx
wQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEA
xAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIF
ABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJ
FgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAg
JlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywA
gJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEyw
AABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAx
wQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEA
xAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIF
ABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJ
FgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAg
JlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywA
gJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEyw
AABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAx
wQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEA
xAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIF
ABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJ
FgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAg
JlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywA
gJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEyw
AABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAx
wQIAiAkWAEBs3vsEACA0x14AAIQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAm
WAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACA
mGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAA
AGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHB
AgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDE
BAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUA
EBMsAICYYAEApPb6AaoZKCzs3dg8AAAAAElFTkSuQmCC
6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwwAADsMBx2+oZAAACrZJREFUeF7t1jERgAAQ
wLC3w4gENIMjsAAzAhjpmLtMVdBZtwUAgNB8EwAAfxgsAICYwQIAiBksAICYwQIAiBksAICYwQIAiBks
AICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIA
iBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICY
wQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBks
AICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAICYwQIA
iBksAICYwQIAiBksAICYwQIAiBksAICYwQIAiBksAIDY3OcOAEBonusAACBksAAAYgYLACBmsAAAYgYL
ACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAA
YgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBm
sAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYL
ACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAA
YgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBm
sAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYL
ACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAA
YgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBm
sAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYL
ACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAA
YgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBm
sAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYL
ACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAA
YgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBm
sAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYL
ACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAA
YgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBm
sAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYL
ACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAA
YgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBm
sAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYL
ACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAA
YgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBm
sAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYL
ACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAA
YgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBm
sAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYL
ACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAA
YgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBm
sAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYL
ACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAA
YgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBm
sAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYLACBmsAAAYgYL
ACBmsAAAYgYLACBmsAAAYnOfOwAAoVm3BQCAkMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZ
LACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMEC
AIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACA
mMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZ
LACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMEC
AIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACA
mMECAIgZLACAmMECAIgZLACAmMECAIgZLACA2AuqGSgslGsrFQAAAABJRU5ErkJggg==
</value>
</data>
<data name="buttonSave.DownImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -260,118 +261,127 @@
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
RK5CYII=
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
</value>
</data>
<data name="buttonSave.UpImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -421,50 +431,56 @@
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
AAAASUVORK5CYII=
</value>
</data>
<data name="buttonBack.DownImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -514,113 +530,122 @@
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
Kml+s4BQAAAAAElFTkSuQmCC
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
</value>
</data>
<data name="buttonBack.UpImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -670,43 +695,47 @@
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
rkJggg==
6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwQAADsEBuJFr7QAACSRJREFUaEPlm2lTU1ka
gPkhUzXzYXqmbcduW3TQiAuitICxIwghCSAossgMorYaEHVkVBqXgAERnRa1NSwRs++5ucnNcrMnN8FA
gWAVggpoAfMPZvTQEA4hBm5QMvPU+yXnvO9b57kny0lSN+77pDVQbNq9Li0jJSc3+2jx0eJVSVHRkWzW
wRRaUvyutQvXHxf8YGPyOmpWamVlZWdnp8fjmZqa+veqZGJiwm63t7W1lZeXp2emLKqUtC+xtLS0s7Nz
fHx8cnJydHR0cHCwt7c3sJro/Y3+/v7h4eEXL17cuXOHRqdSfoiHlXamU8rLyx0Ox/T09OjoaG9vb09P
j3+10vORQCDQ19c3NDQklUppdGrCnu/mlOKT/5LNysRxfGpqanBw0O/3+3w+giC8qxiCIHw+n9/vDwQC
/f39nZ2dNDp1Tomaldre3j49PT00NOT3+1e5TDAEQQCrgYGBa9eupdCSPiht2r2usrJyfHx8ZGQktnwA
BEH09PT09fXhOF5aWroh6Zu4tIyUjo6OycnJQCBAEIQnBiEI4vnz5/39/XV1dTvSKXHMvByCIEZGRnw+
n9frhdNjAa/X6/f7+/r6uru7aXRq3JGiw2NjYwMDAwRBuGMTsFGBQMBoNLLyGXEVFRXT09OBQMDr9cK5
sQN47rlcroLDh+LOnDkzOTnp9/s9Ho8rZvF4PD09PU6nc0bp/fv3Pp/v8yghCKLVauFR0ng8Hr/fDyu5
3W7nCiMSCmtra7u6uuAJ0rjd7s+t5HA4eDzeqRMn/n7s2FM+H54mDaz07t07giBcLpdjZUAQpLGhobys
rKyk5G/HjvG7uuAM0rhcLp/P53A45pS8Xq/T6bSvAPyurlMnThQXFYEoKynp7OiAk0jjcrkIgrDb7Sur
hGFYc1NzWUnJkcLC2SguKupob4dTSRNCyePxOBwOW/RQKZUXzp8vyM+H4khhYTuPB2eTxul0er1em822
Iko4jt+923qspDiXyVgYBfl5PN4TuIY0sNLExITb7bbb7VbSoCj6z0uXGNl0RnZ2yGDl5FSx2TevX7/2
88/BUV9Xx7lxA24XMQ6Hw+PxzFNyuVzgApOB39V14vjx7MzMrIxPRHZmiGDm5MAdI8Zut7vdbqvVOqM0
Pj7udDqtVqtluRgMhgYOJ5fFzKD9uOzIz2XBfSPGZrO5XC4cx6OjxOfzK49X7N+XTjKYOXS4dcSEUHI4
HDiOm5fFhfM16Xv3kg96VhbcOmKsVqvT6bRYLHNKdrvdYrGYloVara67ciWTRtu7Zw+ZyMrIgFtHDI7j
0VQCPP7114L8vN1JO5cdtP1UuGnEwEpjY2M2m81sNhvJoZDL2WdOJ+/YlrQtMUzs2p6YvH3brm2JUKTt
2Q13jBiLxeJwOMxm8zwlk8mERYP6urrU3cnbtyTs2LJ5YexK3Hr2p1PNXG4jhzM/bt5uaoJ7RYzZbLbb
7SulhGHYk8ePjxYWUDbGL4wdWzbfu9sKF5AGVnr79q3VajUajYboodFo2Kd/2ropPmH9t8GxdVM8t7EB
ziaNyWQCuzKnhOM4hmH6qIKiaDP3VlpyUvzaNbORsP7bRs5NOJU0RqPRarWuuBKA39VZwGTEr12z/s9f
rf/6q43rvmm4eQNOIk0IJXCoQVcGtVp9+R8Xt8Z/v+6Pf9iw5k+c6/VwBmkwDMNx3Gg0zimZzWa9Xq9b
Se7/617KjsSvf/+7+qtX4DnSGAwGi8WCYdiM0ps3b0wmE4qiyArT1dFRyGJeq7sKT5BGr9ebzWaDwTCn
ZDQadTqdNmZBUfT/QAnDMARBNDGLTqczmUx6vX5G6fXr1waDQavVqmMWBEGMRiOKov/rShqNRhWzaLVa
DMN0Ot2M0ujoqF6vV6vVyphFo9EYDIbPoSQUCltaWtra2uCJaBNCCUVRlUqlWDo1NTWsUFy+fFmhUNy+
fZtCobBYrIVV4eHxeFBJeNRqtV6vRxBkTkmn0ymVSvnSYbFYlFDU1NTI5fLm5magBFXB2Qtobm6GSsKj
UqnA6SdqSjU1Nc3z4fF4YZSg5GAyMzOjoDQyMoIgiEKhkC0doNTU1ARPfKSpqQkowROLE77hYqhUKnD6
mVPSarVyuVy6dJhMJlgBPPERoMRkMqHxc4uTlpYWpuFiKJVKnU6n0Wg+KJ0+ffrVq1cajUYmk0mWDlBa
SHV1tUQi4XK5QAmqgrMXwOVyoZLwKBQKcKCLgtLJkyeZoaitrf2kEndx+Hw+VBKeEEpqtVoqlYqjza1b
t4ASNA6UoEEyyOVycKAjpfTo0aOqxTl8+DCTyayqqgqjBNcEcenSJagkPCGUVCqVRCIRLQWwA+EBSgwG
A6qF8xawsCQ8MpkMnFFnlIaHh5VKpUQiES6FBw8esIMAS2Gz2Y0faW1tFQqFjY2NYH1QLcgBlJWVUSiU
AwcOBA+C8siRSqXgQEdKCQIoNTY2Bg8uphQMuBzhcz5JaCWxWCwgAVBqaGgIHmxoaADLDR6EmFWCJ5aC
RCJRqVRfRmnmtRIZbDY7uFsYQigpFAqRSPSMBGARHA4neJDD4QCl2RHGUrh48WJwt8UQCARisRh8k/ig
VFFRMbtLcO5SiFBpJYB3qajoyMuXL5VKJdil7uXC+ciTJ0+CB+/fv3/27NkLFy4ED0adZ8+eSSQStVot
EAiY+Tlx2ayDGIZptVqJRCIQCOD0WEAgEEilUq1W29raSs1KjUuhJd27d89ms8lkMqD0NKbo7u4WCoVy
uRxF0XPnzm1LTYiL37W2vLzc6XSqVCrwcoohK7BF4FnX3d3NyKPP3KCQnpnC5XI//H/82/teTFgBH7FY
rFQqURRls9nJ+7fP3RlDo1M7OjoQBJHL5SKRKPgZyF9lQD4KhQJF0fr6+h+z0+fd7LM5ZQONTn348CH4
qUgmk4nFYqFQCD7I4HfNL4dAIBAKhSKRSCwWy2QytVqt0+nq6+tnb4uZd0tWwp71NDr16tWrEokEQRDw
ySWTyeDvxF8amUwGfuXS6XRPnz6tqqqa3R9YCcQPB5LzCnJra2t/+eUXcD1QFIX/c/uigL1qaWmprq5m
5NHB6yecEoid6RRa9j7WIWZeQS58b+EX5WjxUdYhJiufse9gamLqXxeu/L9K/wGLaHt9OROFfQAAAABJ
RU5ErkJggg==
</value>
</data>
<data name="pictureBoxFormIcon.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -756,23 +785,25 @@
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
</value>
</data>
<data name="buttonFeedback.DownImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -822,20 +853,21 @@
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
LuQH1nf5VNJV3VWF0AAAAABJRU5ErkJggg==
</value>
</data>
<data name="buttonFeedback.UpImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -885,23 +917,23 @@
XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS
fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+
tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/
6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOvQAADr0BR/uQrQAAA4JJREFUaEPtmVtLYlEU
x89HmqGLFXY1S4ywtAt0kyAQesmCytJu0oWkp25mRUFFaRc1xHqJDkUNRTpRUNRYlI3ZfIz5496ncWiE
OQ+jZw7n96B77b2Vtf9nr7XXViYajf6I8fb2FolEvqeI5+fnUCh0c3MTCASOj49ZQcK8vLxAL/D6+oo2
nE4+T09PDw8PRKmjo6P19XXqncBgHh8fw+EwkQntbyni9vY2GAxiT62trdlsNuqdwGDu7u7gK0Lg/v4e
z/Y6FVxdXZHoczqdo6OjHR0d1DuBwVB/r68vLy/Pz8+/pILT01MSfVCqtbVVr9dT7wQG8zUGHuzZ2Vmq
Muvh4aHH45mcnOzq6qqvr6+pqaEDAkMSiweSWDyQxOIBP7H6+/srKioqKyvLy8tNJtPe3h7p39rawjq7
u7vRScDM7e3toaGh+P7e3t4/lgViE8vv9xcXFxcWFo6Pj6MU6uvry8vL02q1RK/Z2dnMzMz29vZhDkzD
6VZdXY05kIx0jo2N2e128oXxiE0sLEOpVG5ublKbZaemphQKRWdnJ9qQQK1W7+7ukqF3sPKJiQlqJEZs
YmVnZ5vNZmpwNDQ01NbWYp0QC8K5XC46wIFRi8VCjcSISixEWU5OzuLiIrU5UEMihWHU4XCkp6cvLCzQ
AQ6dTtfY2EiNxIhKLGyc/Pz8ubk5anOgB1lsenp6fn5eJpMVFRVlZGR8jlFQUIAJEAsNuVxOOrOyskZG
Rshn4xGVWBAlNzf3Y24mIs7MzEAspP/V1VUci8hrAA1MQBharVYci6QTDa/XSz4bj6jEWllZwcb5mKpx
zJWUlCwvLyMAS0tL3W43HeCAWDgBqZEYsSV47Kzm5mZqcKAsaGlpQfWAnSUl+F8MDg4i0PBKbZYdGBhA
PiJZH3EqifUbRqMRRSaOP1BWVoa4Q6l1cHCAIeyspqamnZ0dMvMdvV7/N7/kiVAsgNod6QkZHRsKy6O9
LIs2evb396nNgapiY2ODGokRp1j/CEksHkhi8UASiwf/jVgXFxfkfwoo5fP5cPwnH6fTifMUtYjBYMBR
q9FoqHcCgzk5OcEbHizcxcUYZVHyMZvNbW1tdXV1KpUKN3bcMYlzQoPx+/1LS0uQibhLyqgkg62EaxNu
VJ9i4HJOvRMYjMPh6OnpQUmpVCrT0tKIu6lFuGKZTKaqqqr3pyoEBCoWy/4EBzyRG765DXAAAAAASUVO
RK5CYII=
6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOvQAADr0BR/uQrQAAA5NJREFUaEPtmd1LMlkc
x+dP2qUXS7LG9yjCybKBLCUIgm56gSbLUie2EaOrTGccpaAGs2ZqitBuoiGppcg2WjAqk8rtZf+MBQ+P
z9PxufFi19nBz+WXM4cvn+H85sAgHx8ffxf5/Px8e3v7q0q8vLzkcrlsNpvJZNLptCRLkEKh8FHk/f29
UCi8VIPn5+enpydg6vT0NB6PwzXlAZLP519fX4GmfD7/WCXu7u6ur6/T6TTHcUtLS3BNeYDc398/Pj7m
crmHh4dsNvtnNbi9vQWnL5FIUBQ1OTkJ15QHSKnxzc3N5eXl79Xg/PwcnD6KokZHR51OJ1xTHiB/FMlk
MhcXF9WarCcnJ6IorqysEARht9v7+vrgFfKgJqsCarIqoCarAiqT5fF4MAzr7u7u6upyuVypVArkPM8T
BDE9Pe36hsfjEQSBJMkf89nZ2Z9eC5QmK5lMGgwGrVYbCAQ4jpufn29tbbVarcBXOBxubGycmJj47RuB
QCAej9tsNqvVSpIkCP1+P03T8NbKk0UQhNFo3NnZKSXBYFCv109NTUmSRNN0R0fHwcHBl2ckyW63Ly8v
Q2E5SpPV3NzsdruhcGBgAMdxURRpmtbr9dvb29ACHMfn5uagsBxFyQqHw2q1OhaLQTlFURiGhcPhSCRS
X18fjUahBT09PYODg1BYjqJk0TTd1tbGMAyUMwyj1WpXV1dZllWpVDqdrqGh4dciKIoCWSiKtrS0gLCp
qWlxcRHaRGmyGIbRaDTlsxlIDIVCLMsaDIbNzU2e53eK8DwPjuHCwoIgCCAUBGF/fx/aRGmyNjY2VCpV
+agmSdJkMq2vr0ejUbPZvLe3By3Acdzv90NhOYqSJUmSRqMZGhqCQqvVOjw8nEqlWJatDfjv+Hw+g8Hg
8/lKidfrRVEUTH2GYWqyvjA+Pm6z2bAinZ2dZrM5GAweHx9LksSyrMPh2N3dhR5xOp0/vbJDKFCWJEkc
x0Wj0VAoFIvFRFEs5aIoxmKxo6OjL6uLd46trS0oLEeZsv4larIqoCarAmqyKuB/I+vq6gr8p0in04eH
h9vVIJFIsCzr9XpHRkYwDLNYLHBNeYCcnZ2BzxnLshRFzVUDt9s9NjbW39/f3t6uVqt1Oh1cUx4gyWRy
bW2NoihQF1yj/mMsFovJZFKpVL8U0Wq1cE15gEQikZmZGYfDYTQa6+rqQN3qIl9ZLpert7e39FblgGxl
/QMHPJEbQSo3sQAAAABJRU5ErkJggg==
</value>
</data>
<data name="buttonFeedbackBoard.DownImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -951,20 +983,21 @@
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
LuQH1nf5VNJV3VWF0AAAAABJRU5ErkJggg==
</value>
</data>
<data name="buttonFeedbackBoard.UpImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -1014,23 +1047,23 @@
XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS
fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+
tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/
6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOvQAADr0BR/uQrQAAA4JJREFUaEPtmVtLYlEU
x89HmqGLFXY1S4ywtAt0kyAQesmCytJu0oWkp25mRUFFaRc1xHqJDkUNRTpRUNRYlI3ZfIz5496ncWiE
OQ+jZw7n96B77b2Vtf9nr7XXViYajf6I8fb2FolEvqeI5+fnUCh0c3MTCASOj49ZQcK8vLxAL/D6+oo2
nE4+T09PDw8PRKmjo6P19XXqncBgHh8fw+EwkQntbyni9vY2GAxiT62trdlsNuqdwGDu7u7gK0Lg/v4e
z/Y6FVxdXZHoczqdo6OjHR0d1DuBwVB/r68vLy/Pz8+/pILT01MSfVCqtbVVr9dT7wQG8zUGHuzZ2Vmq
Muvh4aHH45mcnOzq6qqvr6+pqaEDAkMSiweSWDyQxOIBP7H6+/srKioqKyvLy8tNJtPe3h7p39rawjq7
u7vRScDM7e3toaGh+P7e3t4/lgViE8vv9xcXFxcWFo6Pj6MU6uvry8vL02q1RK/Z2dnMzMz29vZhDkzD
6VZdXY05kIx0jo2N2e128oXxiE0sLEOpVG5ublKbZaemphQKRWdnJ9qQQK1W7+7ukqF3sPKJiQlqJEZs
YmVnZ5vNZmpwNDQ01NbWYp0QC8K5XC46wIFRi8VCjcSISixEWU5OzuLiIrU5UEMihWHU4XCkp6cvLCzQ
AQ6dTtfY2EiNxIhKLGyc/Pz8ubk5anOgB1lsenp6fn5eJpMVFRVlZGR8jlFQUIAJEAsNuVxOOrOyskZG
Rshn4xGVWBAlNzf3Y24mIs7MzEAspP/V1VUci8hrAA1MQBharVYci6QTDa/XSz4bj6jEWllZwcb5mKpx
zJWUlCwvLyMAS0tL3W43HeCAWDgBqZEYsSV47Kzm5mZqcKAsaGlpQfWAnSUl+F8MDg4i0PBKbZYdGBhA
PiJZH3EqifUbRqMRRSaOP1BWVoa4Q6l1cHCAIeyspqamnZ0dMvMdvV7/N7/kiVAsgNod6QkZHRsKy6O9
LIs2evb396nNgapiY2ODGokRp1j/CEksHkhi8UASiwf/jVgXFxfkfwoo5fP5cPwnH6fTifMUtYjBYMBR
q9FoqHcCgzk5OcEbHizcxcUYZVHyMZvNbW1tdXV1KpUKN3bcMYlzQoPx+/1LS0uQibhLyqgkg62EaxNu
VJ9i4HJOvRMYjMPh6OnpQUmpVCrT0tKIu6lFuGKZTKaqqqr3pyoEBCoWy/4EBzyRG765DXAAAAAASUVO
RK5CYII=
6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOvQAADr0BR/uQrQAAA5NJREFUaEPtmd1LMlkc
x+dP2qUXS7LG9yjCybKBLCUIgm56gSbLUie2EaOrTGccpaAGs2ZqitBuoiGppcg2WjAqk8rtZf+MBQ+P
z9PxufFi19nBz+WXM4cvn+H85sAgHx8ffxf5/Px8e3v7q0q8vLzkcrlsNpvJZNLptCRLkEKh8FHk/f29
UCi8VIPn5+enpydg6vT0NB6PwzXlAZLP519fX4GmfD7/WCXu7u6ur6/T6TTHcUtLS3BNeYDc398/Pj7m
crmHh4dsNvtnNbi9vQWnL5FIUBQ1OTkJ15QHSKnxzc3N5eXl79Xg/PwcnD6KokZHR51OJ1xTHiB/FMlk
MhcXF9WarCcnJ6IorqysEARht9v7+vrgFfKgJqsCarIqoCarAiqT5fF4MAzr7u7u6upyuVypVArkPM8T
BDE9Pe36hsfjEQSBJMkf89nZ2Z9eC5QmK5lMGgwGrVYbCAQ4jpufn29tbbVarcBXOBxubGycmJj47RuB
QCAej9tsNqvVSpIkCP1+P03T8NbKk0UQhNFo3NnZKSXBYFCv109NTUmSRNN0R0fHwcHBl2ckyW63Ly8v
Q2E5SpPV3NzsdruhcGBgAMdxURRpmtbr9dvb29ACHMfn5uagsBxFyQqHw2q1OhaLQTlFURiGhcPhSCRS
X18fjUahBT09PYODg1BYjqJk0TTd1tbGMAyUMwyj1WpXV1dZllWpVDqdrqGh4dciKIoCWSiKtrS0gLCp
qWlxcRHaRGmyGIbRaDTlsxlIDIVCLMsaDIbNzU2e53eK8DwPjuHCwoIgCCAUBGF/fx/aRGmyNjY2VCpV
+agmSdJkMq2vr0ejUbPZvLe3By3Acdzv90NhOYqSJUmSRqMZGhqCQqvVOjw8nEqlWJatDfjv+Hw+g8Hg
8/lKidfrRVEUTH2GYWqyvjA+Pm6z2bAinZ2dZrM5GAweHx9LksSyrMPh2N3dhR5xOp0/vbJDKFCWJEkc
x0Wj0VAoFIvFRFEs5aIoxmKxo6OjL6uLd46trS0oLEeZsv4larIqoCarAmqyKuB/I+vq6gr8p0in04eH
h9vVIJFIsCzr9XpHRkYwDLNYLHBNeYCcnZ2BzxnLshRFzVUDt9s9NjbW39/f3t6uVqt1Oh1cUx4gyWRy
bW2NoihQF1yj/mMsFovJZFKpVL8U0Wq1cE15gEQikZmZGYfDYTQa6+rqQN3qIl9ZLpert7e39FblgGxl
/QMHPJEbQSo3sQAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="$this.FormFactorShadowProperty" xml:space="preserve">

View File

@ -30,17 +30,13 @@
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormProgramUpdate));
this.smartForm1 = new SmartX.SmartForm();
this.labelMessage2 = new SmartX.SmartLabel();
this.labelMessage1 = new SmartX.SmartLabel();
this.progressBarUpdate = new SmartX.SmartProgressBar();
this.labelUpdateWait2 = new SmartX.SmartLabel();
this.labelUpdateRestart = new SmartX.SmartLabel();
this.labelUpdateWait = new SmartX.SmartLabel();
this.progressBarUpdateBar = new SmartX.SmartProgressBar();
this.timerUpdate = new System.Windows.Forms.Timer();
this.labelTitle = new SmartX.SmartLabel();
this.pictureBoxFormIcon = new System.Windows.Forms.PictureBox();
this.buttonBack = new SmartX.SmartButton();
this.buttonLCD = new SmartX.SmartButton();
this.buttonServiceUpdate = new SmartX.SmartButton();
this.labelUpdateContents = new SmartX.SmartLabel();
this.labelTitleUpdate = new SmartX.SmartLabel();
((System.ComponentModel.ISupportInitialize)(this.smartForm1)).BeginInit();
this.SuspendLayout();
//
@ -59,71 +55,93 @@
this.smartForm1.SpecialFunctionClickPointSize = 100;
this.smartForm1.SuspendLayoutInterval = 0;
//
// labelMessage2
// labelUpdateWait2
//
this.labelMessage2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(246)))), ((int)(((byte)(228)))), ((int)(((byte)(180)))));
this.labelMessage2.BackPictureBox = this.smartForm1;
this.labelMessage2.BackPictureBox1 = null;
this.labelMessage2.BackPictureBox2 = null;
this.labelMessage2.BorderColor = System.Drawing.Color.Black;
this.labelMessage2.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.labelMessage2.Font = new System.Drawing.Font("새굴림", 18F, System.Drawing.FontStyle.Bold);
this.labelMessage2.ForeColor = System.Drawing.Color.Black;
this.labelMessage2.InitVisible = true;
this.labelMessage2.LineSpacing = 0F;
this.labelMessage2.Location = new System.Drawing.Point(107, 221);
this.labelMessage2.Name = "labelMessage2";
this.labelMessage2.Size = new System.Drawing.Size(600, 31);
this.labelMessage2.TabIndex = 158;
this.labelMessage2.Text = "USB를 본체에서 분리하지 마십시오";
this.labelMessage2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
this.labelMessage2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
this.labelMessage2.Visible = false;
this.labelMessage2.Wordwrap = false;
this.labelUpdateWait2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(246)))), ((int)(((byte)(228)))), ((int)(((byte)(180)))));
this.labelUpdateWait2.BackPictureBox = this.smartForm1;
this.labelUpdateWait2.BackPictureBox1 = null;
this.labelUpdateWait2.BackPictureBox2 = null;
this.labelUpdateWait2.BorderColor = System.Drawing.Color.Black;
this.labelUpdateWait2.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.labelUpdateWait2.Font = new System.Drawing.Font("New Gulim", 18F, System.Drawing.FontStyle.Bold);
this.labelUpdateWait2.ForeColor = System.Drawing.Color.Black;
this.labelUpdateWait2.InitVisible = true;
this.labelUpdateWait2.LineSpacing = 0F;
this.labelUpdateWait2.Location = new System.Drawing.Point(108, 242);
this.labelUpdateWait2.Name = "labelUpdateWait2";
this.labelUpdateWait2.Size = new System.Drawing.Size(600, 31);
this.labelUpdateWait2.TabIndex = 158;
this.labelUpdateWait2.Text = "USB를 본체에서 분리하지 마십시오";
this.labelUpdateWait2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
this.labelUpdateWait2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
this.labelUpdateWait2.Visible = false;
this.labelUpdateWait2.Wordwrap = false;
//
// labelMessage1
// labelUpdateRestart
//
this.labelMessage1.BackColor = System.Drawing.Color.DarkGray;
this.labelMessage1.BackPictureBox = this.smartForm1;
this.labelMessage1.BackPictureBox1 = null;
this.labelMessage1.BackPictureBox2 = null;
this.labelMessage1.BorderColor = System.Drawing.Color.Black;
this.labelMessage1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.labelMessage1.Font = new System.Drawing.Font("새굴림", 18F, System.Drawing.FontStyle.Bold);
this.labelMessage1.InitVisible = true;
this.labelMessage1.LineSpacing = 0F;
this.labelMessage1.Location = new System.Drawing.Point(107, 184);
this.labelMessage1.Name = "labelMessage1";
this.labelMessage1.Size = new System.Drawing.Size(600, 31);
this.labelMessage1.TabIndex = 157;
this.labelMessage1.Text = "업데이트 중...";
this.labelMessage1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
this.labelMessage1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
this.labelMessage1.Wordwrap = false;
this.labelUpdateRestart.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(192)))), ((int)(((byte)(255)))));
this.labelUpdateRestart.BackPictureBox = null;
this.labelUpdateRestart.BackPictureBox1 = null;
this.labelUpdateRestart.BackPictureBox2 = null;
this.labelUpdateRestart.BorderColor = System.Drawing.Color.Black;
this.labelUpdateRestart.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.labelUpdateRestart.Font = new System.Drawing.Font("New Gulim", 18F, System.Drawing.FontStyle.Bold);
this.labelUpdateRestart.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
this.labelUpdateRestart.InitVisible = true;
this.labelUpdateRestart.LineSpacing = 0F;
this.labelUpdateRestart.Location = new System.Drawing.Point(56, 279);
this.labelUpdateRestart.Name = "labelUpdateRestart";
this.labelUpdateRestart.Size = new System.Drawing.Size(700, 32);
this.labelUpdateRestart.TabIndex = 159;
this.labelUpdateRestart.Text = "전원을 끄고 다시 켜주세요";
this.labelUpdateRestart.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
this.labelUpdateRestart.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
this.labelUpdateRestart.Visible = false;
this.labelUpdateRestart.Wordwrap = false;
//
// progressBarUpdate
// labelUpdateWait
//
this.progressBarUpdate.AutoColorSet = true;
this.progressBarUpdate.BackColor = System.Drawing.Color.Silver;
this.progressBarUpdate.BarBackColor1 = System.Drawing.Color.White;
this.progressBarUpdate.BarBackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.progressBarUpdate.BarColor1 = System.Drawing.Color.Cyan;
this.progressBarUpdate.BarColor2 = System.Drawing.Color.Teal;
this.progressBarUpdate.BarStyle = SmartX.SmartProgressBar.BARTYPE.Normal;
this.progressBarUpdate.Direction = SmartX.SmartProgressBar.DIR.Horizontal;
this.progressBarUpdate.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular);
this.progressBarUpdate.InitVisible = true;
this.progressBarUpdate.Location = new System.Drawing.Point(112, 296);
this.progressBarUpdate.Maximum = 100;
this.progressBarUpdate.Minimum = 0;
this.progressBarUpdate.Name = "progressBarUpdate";
this.progressBarUpdate.OutlineColor = System.Drawing.Color.Black;
this.progressBarUpdate.PercentageText = true;
this.progressBarUpdate.RoundedCorners = true;
this.progressBarUpdate.Size = new System.Drawing.Size(585, 53);
this.progressBarUpdate.TabIndex = 156;
this.progressBarUpdate.TextAutoRotation = true;
this.progressBarUpdate.Value = 10;
this.labelUpdateWait.BackColor = System.Drawing.Color.DarkGray;
this.labelUpdateWait.BackPictureBox = this.smartForm1;
this.labelUpdateWait.BackPictureBox1 = null;
this.labelUpdateWait.BackPictureBox2 = null;
this.labelUpdateWait.BorderColor = System.Drawing.Color.Black;
this.labelUpdateWait.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.labelUpdateWait.Font = new System.Drawing.Font("New Gulim", 18F, System.Drawing.FontStyle.Bold);
this.labelUpdateWait.InitVisible = true;
this.labelUpdateWait.LineSpacing = 0F;
this.labelUpdateWait.Location = new System.Drawing.Point(108, 205);
this.labelUpdateWait.Name = "labelUpdateWait";
this.labelUpdateWait.Size = new System.Drawing.Size(600, 31);
this.labelUpdateWait.TabIndex = 157;
this.labelUpdateWait.Text = "업데이트 중...";
this.labelUpdateWait.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
this.labelUpdateWait.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
this.labelUpdateWait.Wordwrap = false;
//
// progressBarUpdateBar
//
this.progressBarUpdateBar.AutoColorSet = true;
this.progressBarUpdateBar.BackColor = System.Drawing.Color.Silver;
this.progressBarUpdateBar.BarBackColor1 = System.Drawing.Color.White;
this.progressBarUpdateBar.BarBackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.progressBarUpdateBar.BarColor1 = System.Drawing.Color.Cyan;
this.progressBarUpdateBar.BarColor2 = System.Drawing.Color.Teal;
this.progressBarUpdateBar.BarStyle = SmartX.SmartProgressBar.BARTYPE.Normal;
this.progressBarUpdateBar.Direction = SmartX.SmartProgressBar.DIR.Horizontal;
this.progressBarUpdateBar.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular);
this.progressBarUpdateBar.InitVisible = true;
this.progressBarUpdateBar.Location = new System.Drawing.Point(114, 351);
this.progressBarUpdateBar.Maximum = 100;
this.progressBarUpdateBar.Minimum = 0;
this.progressBarUpdateBar.Name = "progressBarUpdateBar";
this.progressBarUpdateBar.OutlineColor = System.Drawing.Color.Black;
this.progressBarUpdateBar.PercentageText = true;
this.progressBarUpdateBar.RoundedCorners = true;
this.progressBarUpdateBar.Size = new System.Drawing.Size(585, 53);
this.progressBarUpdateBar.TabIndex = 156;
this.progressBarUpdateBar.TextAutoRotation = true;
this.progressBarUpdateBar.Value = 10;
//
// timerUpdate
//
@ -136,7 +154,7 @@
this.labelTitle.BackPictureBox2 = null;
this.labelTitle.BorderColor = System.Drawing.Color.Black;
this.labelTitle.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.labelTitle.Font = new System.Drawing.Font("새굴림", 23F, System.Drawing.FontStyle.Bold);
this.labelTitle.Font = new System.Drawing.Font("New Gulim", 23F, System.Drawing.FontStyle.Bold);
this.labelTitle.ForeColor = System.Drawing.Color.White;
this.labelTitle.InitVisible = true;
this.labelTitle.LineSpacing = 0F;
@ -156,162 +174,18 @@
this.pictureBoxFormIcon.Name = "pictureBoxFormIcon";
this.pictureBoxFormIcon.Size = new System.Drawing.Size(47, 45);
//
// buttonBack
//
this.buttonBack.BackPictureBox = null;
this.buttonBack.BackPictureBox1 = null;
this.buttonBack.BackPictureBox2 = null;
this.buttonBack.ButtonColor = System.Drawing.Color.Gray;
this.buttonBack.ButtonImageAutoSize = true;
this.buttonBack.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
this.buttonBack.DisableImage = null;
this.buttonBack.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonBack.DownImage")));
this.buttonBack.GroupID = 0;
this.buttonBack.InitVisible = true;
this.buttonBack.Location = new System.Drawing.Point(720, 525);
this.buttonBack.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
this.buttonBack.Name = "buttonBack";
this.buttonBack.NestedClickEventPrevent = false;
this.buttonBack.OutlinePixel = 1;
this.buttonBack.RepeatInterval = 200;
this.buttonBack.RepeatIntervalAccelerate = null;
this.buttonBack.SafeInterval = 200;
this.buttonBack.Size = new System.Drawing.Size(70, 70);
this.buttonBack.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
this.buttonBack.TabIndex = 238;
this.buttonBack.TextColor = System.Drawing.Color.Black;
this.buttonBack.TextDownColor = System.Drawing.Color.White;
this.buttonBack.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
this.buttonBack.TextLocation = new System.Drawing.Point(0, 0);
this.buttonBack.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
this.buttonBack.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonBack.UpImage")));
this.buttonBack.Click += new System.EventHandler(this.buttonBack_Click);
//
// buttonLCD
//
this.buttonLCD.BackPictureBox = null;
this.buttonLCD.BackPictureBox1 = null;
this.buttonLCD.BackPictureBox2 = null;
this.buttonLCD.ButtonColor = System.Drawing.Color.Silver;
this.buttonLCD.ButtonImageAutoSize = true;
this.buttonLCD.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
this.buttonLCD.DisableImage = null;
this.buttonLCD.DownImage = null;
this.buttonLCD.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.buttonLCD.GroupID = 0;
this.buttonLCD.InitVisible = true;
this.buttonLCD.Location = new System.Drawing.Point(205, 371);
this.buttonLCD.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
this.buttonLCD.Name = "buttonLCD";
this.buttonLCD.NestedClickEventPrevent = false;
this.buttonLCD.OutlinePixel = 1;
this.buttonLCD.RepeatInterval = 200;
this.buttonLCD.RepeatIntervalAccelerate = null;
this.buttonLCD.SafeInterval = 200;
this.buttonLCD.Size = new System.Drawing.Size(180, 50);
this.buttonLCD.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
this.buttonLCD.TabIndex = 239;
this.buttonLCD.Text = "LCD Update";
this.buttonLCD.TextColor = System.Drawing.Color.Black;
this.buttonLCD.TextDownColor = System.Drawing.Color.White;
this.buttonLCD.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
this.buttonLCD.TextLocation = new System.Drawing.Point(0, 0);
this.buttonLCD.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
this.buttonLCD.UpImage = null;
this.buttonLCD.Click += new System.EventHandler(this.buttonLCD_Click);
//
// buttonServiceUpdate
//
this.buttonServiceUpdate.BackPictureBox = null;
this.buttonServiceUpdate.BackPictureBox1 = null;
this.buttonServiceUpdate.BackPictureBox2 = null;
this.buttonServiceUpdate.ButtonColor = System.Drawing.Color.Silver;
this.buttonServiceUpdate.ButtonImageAutoSize = true;
this.buttonServiceUpdate.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
this.buttonServiceUpdate.DisableImage = null;
this.buttonServiceUpdate.DownImage = null;
this.buttonServiceUpdate.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.buttonServiceUpdate.GroupID = 0;
this.buttonServiceUpdate.InitVisible = true;
this.buttonServiceUpdate.Location = new System.Drawing.Point(409, 371);
this.buttonServiceUpdate.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
this.buttonServiceUpdate.Name = "buttonServiceUpdate";
this.buttonServiceUpdate.NestedClickEventPrevent = false;
this.buttonServiceUpdate.OutlinePixel = 1;
this.buttonServiceUpdate.RepeatInterval = 200;
this.buttonServiceUpdate.RepeatIntervalAccelerate = null;
this.buttonServiceUpdate.SafeInterval = 200;
this.buttonServiceUpdate.Size = new System.Drawing.Size(180, 50);
this.buttonServiceUpdate.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
this.buttonServiceUpdate.TabIndex = 240;
this.buttonServiceUpdate.Text = "Service Update";
this.buttonServiceUpdate.TextColor = System.Drawing.Color.Black;
this.buttonServiceUpdate.TextDownColor = System.Drawing.Color.White;
this.buttonServiceUpdate.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
this.buttonServiceUpdate.TextLocation = new System.Drawing.Point(0, 0);
this.buttonServiceUpdate.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
this.buttonServiceUpdate.UpImage = null;
this.buttonServiceUpdate.Click += new System.EventHandler(this.buttonServiceUpdate_Click);
//
// labelUpdateContents
//
this.labelUpdateContents.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30)))));
this.labelUpdateContents.BackPictureBox = this.smartForm1;
this.labelUpdateContents.BackPictureBox1 = null;
this.labelUpdateContents.BackPictureBox2 = null;
this.labelUpdateContents.BorderColor = System.Drawing.Color.Black;
this.labelUpdateContents.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.labelUpdateContents.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold);
this.labelUpdateContents.ForeColor = System.Drawing.Color.Black;
this.labelUpdateContents.InitVisible = true;
this.labelUpdateContents.LineSpacing = 0F;
this.labelUpdateContents.Location = new System.Drawing.Point(337, 258);
this.labelUpdateContents.Name = "labelUpdateContents";
this.labelUpdateContents.Size = new System.Drawing.Size(360, 30);
this.labelUpdateContents.TabIndex = 251;
this.labelUpdateContents.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
this.labelUpdateContents.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
this.labelUpdateContents.Visible = false;
this.labelUpdateContents.Wordwrap = false;
//
// labelTitleUpdate
//
this.labelTitleUpdate.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30)))));
this.labelTitleUpdate.BackPictureBox = this.smartForm1;
this.labelTitleUpdate.BackPictureBox1 = null;
this.labelTitleUpdate.BackPictureBox2 = null;
this.labelTitleUpdate.BorderColor = System.Drawing.Color.Black;
this.labelTitleUpdate.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.labelTitleUpdate.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold);
this.labelTitleUpdate.ForeColor = System.Drawing.Color.Black;
this.labelTitleUpdate.InitVisible = true;
this.labelTitleUpdate.LineSpacing = 0F;
this.labelTitleUpdate.Location = new System.Drawing.Point(161, 258);
this.labelTitleUpdate.Name = "labelTitleUpdate";
this.labelTitleUpdate.Size = new System.Drawing.Size(153, 30);
this.labelTitleUpdate.TabIndex = 250;
this.labelTitleUpdate.Text = "Update : ";
this.labelTitleUpdate.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
this.labelTitleUpdate.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
this.labelTitleUpdate.Visible = false;
this.labelTitleUpdate.Wordwrap = false;
//
// FormProgramUpdate
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.AutoScroll = true;
this.ClientSize = new System.Drawing.Size(800, 600);
this.Controls.Add(this.labelUpdateContents);
this.Controls.Add(this.labelTitleUpdate);
this.Controls.Add(this.buttonServiceUpdate);
this.Controls.Add(this.buttonLCD);
this.Controls.Add(this.buttonBack);
this.Controls.Add(this.labelTitle);
this.Controls.Add(this.pictureBoxFormIcon);
this.Controls.Add(this.labelMessage2);
this.Controls.Add(this.labelMessage1);
this.Controls.Add(this.progressBarUpdate);
this.Controls.Add(this.labelUpdateWait2);
this.Controls.Add(this.labelUpdateRestart);
this.Controls.Add(this.labelUpdateWait);
this.Controls.Add(this.progressBarUpdateBar);
this.Controls.Add(this.smartForm1);
this.Name = "FormProgramUpdate";
this.Text = "FormProgramUpdate";
@ -323,16 +197,12 @@
#endregion
private SmartX.SmartForm smartForm1;
public SmartX.SmartLabel labelMessage2;
public SmartX.SmartLabel labelMessage1;
public SmartX.SmartProgressBar progressBarUpdate;
public SmartX.SmartLabel labelUpdateWait2;
public SmartX.SmartLabel labelUpdateRestart;
public SmartX.SmartLabel labelUpdateWait;
public SmartX.SmartProgressBar progressBarUpdateBar;
private System.Windows.Forms.Timer timerUpdate;
private SmartX.SmartLabel labelTitle;
private System.Windows.Forms.PictureBox pictureBoxFormIcon;
private SmartX.SmartButton buttonBack;
private SmartX.SmartButton buttonLCD;
private SmartX.SmartButton buttonServiceUpdate;
public SmartX.SmartLabel labelUpdateContents;
public SmartX.SmartLabel labelTitleUpdate;
}
}

View File

@ -10,8 +10,6 @@ using System.IO;
using INT89DB_26.DialogForms;
using INT89DB_26_ImageDll;
using INT89DB_26.Part11_UserManager;
using libPayService;
namespace INT89DB_26.Forms
{
@ -19,9 +17,6 @@ namespace INT89DB_26.Forms
{
#region Field
private FormMain m_ParentForm;
private DataStore.E_Step3 UpdateStep;
private bool IsUpdate = false;
private int Check;
@ -29,7 +24,6 @@ namespace INT89DB_26.Forms
private string UpdateFilePath = "";
private string OldFilePath = "";
private string RemoveFolderPath = "";
private string KeyFolderPath = "";
private List<string> DllName = new List<string>();
private List<long> LongOldDllFileLastWriteTime = new List<long>();
@ -42,9 +36,6 @@ namespace INT89DB_26.Forms
InitializeComponent();
this.ParentForm = parent;
this.InitializeDesign();
this.DefaultSetting();
}
#endregion
@ -69,15 +60,17 @@ namespace INT89DB_26.Forms
{
this.labelTitle.Text = "Update";
this.labelMessage1.Text = "Wait a minute...";
this.labelMessage2.Text = "Do not disconnect the USB from the body";
this.labelUpdateWait.Text = "Wait a minute...";
this.labelUpdateWait2.Text = "Do not disconnect the USB from the body";
this.labelUpdateRestart.Text = "Turn OFF the power and then turn ON the power";
}
else if (this.ParentForm.SystemConfig.Language == DataStore.E_LanguageID.Chinese)
{
this.labelTitle.Text = "更新";
this.labelMessage1.Text = "请稍等...";
this.labelMessage2.Text = "请勿断开USB";
this.labelUpdateWait.Text = "请稍等...";
this.labelUpdateWait2.Text = "请勿断开USB";
this.labelUpdateRestart.Text = "关掉电源,然后在打开电源";
}
else if (this.ParentForm.SystemConfig.Language == DataStore.E_LanguageID.Czech)
{
@ -88,13 +81,16 @@ namespace INT89DB_26.Forms
}
}
private void DefaultSetting()
public void DisplayRefresh()
{
PayService.ServiceDataEvent += PayService_ServiceDataEvent;
this.DecideUpdatePath();
this.CheckError();
}
private void DecideUpdatePath()
public void CheckError()
{
FileInfo[] newFiles;
if (Directory.Exists("Hard Disk\\") == true)
this.USBPath = "Hard Disk\\";
else if (Directory.Exists("하드 디스크\\") == true)
@ -103,191 +99,61 @@ namespace INT89DB_26.Forms
this.USBPath = "하드 디스크\\";
this.UpdateFilePath = this.USBPath + "UpdateFiles\\";
this.KeyFolderPath = this.USBPath + "KEY\\";
this.OldFilePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\";
if (this.OldFilePath.StartsWith("\\F") == true)
this.RemoveFolderPath = "Flash Disk\\RemoveFile\\";
else
this.RemoveFolderPath = "SD Card\\RemoveFile\\";
}
private void InitialStatus()
{
this.UpdateStep = DataStore.E_Step3.Step1;
this.UpdateLabelStatus(this.UpdateStep, this.ParentForm.SystemConfig.Language);
this.buttonLCD.Enabled = true;
this.buttonServiceUpdate.Enabled = true;
this.labelMessage2.ForeColor = Color.Black;
this.labelMessage2.Visible = true;
this.buttonBack.Enabled = true;
}
private void FinishStatusNeededReBoot()
{
this.ParentForm.Enabled = false;
this.UpdateStep = DataStore.E_Step3.Step3;
this.UpdateLabelStatus(this.UpdateStep, this.ParentForm.SystemConfig.Language);
}
public void EnableBackupButton(bool enable)
{
this.buttonLCD.Enabled = enable;
this.buttonServiceUpdate.Enabled = enable;
if (enable == true)
{
this.buttonLCD.TextColor = Color.Black;
this.buttonServiceUpdate.TextColor = Color.Black;
}
else
{
this.buttonLCD.TextColor = Color.DimGray;
this.buttonServiceUpdate.TextColor = Color.DimGray;
}
this.Refresh();
}
private void ProgramUpdateCheck(DialogResult result)
{
PayService service = new PayService();
DataStore.E_UpdateCheck check = DataStore.E_UpdateCheck.Fail;
if (result == DialogResult.Yes)
{
check = this.CheckError();
if (check == DataStore.E_UpdateCheck.Success)
{
this.buttonLCD.TextColor = Color.DimGray;
this.buttonLCD.Enabled = false;
this.buttonServiceUpdate.TextColor = Color.DimGray;
this.buttonServiceUpdate.Enabled = false;
this.UpdateStep = DataStore.E_Step3.Step2;
this.UpdateLabelStatus(this.UpdateStep, this.ParentForm.SystemConfig.Language);
if (this.IsUpdate == true)
this.ProgramUpdate();
else
{
FileInfo[] newFiles;
DirectoryInfo directoryFolder = new DirectoryInfo(this.KeyFolderPath);
if (directoryFolder.Exists == false)
directoryFolder.Create();
newFiles = directoryFolder.GetFiles();
//Console.Write("{0}, {1} \n", this.KeyFolderPath + newFiles[0].ToString(), newFiles.Length);
ErrorLog_e ret = service.PayServiceOpen(this.KeyFolderPath + newFiles[0].ToString(), this.ParentForm.SystemConfig.SerialNumber);
if (ret != ErrorLog_e.NONE)
{
DialogFormMessage message = new DialogFormMessage((int)ret, this.ParentForm.SystemConfig.Language,
this.ParentForm.SystemConfig.CurrentForm);
message.ShowDialog();
this.InitialStatus();
}
}
}
else if (check == DataStore.E_UpdateCheck.NotUsbMomery)
{
DialogFormMessage message = new DialogFormMessage(5, this.ParentForm.SystemConfig.Language);
message.ShowDialog();
this.IsUpdate = false;
}
else if (check == DataStore.E_UpdateCheck.NotUpdateFolder)
{
DialogFormMessage message = new DialogFormMessage(9, this.ParentForm.SystemConfig.Language);
message.ShowDialog();
this.IsUpdate = false;
}
else if (check == DataStore.E_UpdateCheck.NotFile)
{
DialogFormMessage message = new DialogFormMessage(7, this.ParentForm.SystemConfig.Language);
message.ShowDialog();
this.IsUpdate = false;
}
else if (check == DataStore.E_UpdateCheck.TooManyFiles)
{
DialogFormMessage message = new DialogFormMessage(8, this.ParentForm.SystemConfig.Language);
message.ShowDialog();
this.IsUpdate = false;
}
}
}
public DataStore.E_UpdateCheck CheckError()
{
DataStore.E_UpdateCheck ret = DataStore.E_UpdateCheck.Fail;
FileInfo[] newFiles;
DirectoryInfo info = new DirectoryInfo(this.USBPath);
DirectoryInfo dirFolderSource;
if (this.IsUpdate == true)
dirFolderSource = new DirectoryInfo(this.UpdateFilePath);
else
dirFolderSource = new DirectoryInfo(this.KeyFolderPath);
DirectoryInfo directoryFolderUpdateFiles = new DirectoryInfo(this.UpdateFilePath);
// USB 장착 유무 확인
if (info.Exists == true)
{
// USB에 UpdateFiles 유무 확인
if (dirFolderSource.Exists == true)
if (directoryFolderUpdateFiles.Exists == true)
{
newFiles = dirFolderSource.GetFiles();
newFiles = directoryFolderUpdateFiles.GetFiles();
if (newFiles.Length == 0)
{
ret = DataStore.E_UpdateCheck.NotFile;
// USB에 업데이트 파일이 없습니다
DialogFormMessage message = new DialogFormMessage(7, this.ParentForm.SystemConfig.Language, "");
message.ShowDialog();
return;
}
else
{
if (this.IsUpdate == false)
{
if (newFiles.Length == 1)
ret = DataStore.E_UpdateCheck.Success;
else
ret = DataStore.E_UpdateCheck.TooManyFiles;
}
else
ret = DataStore.E_UpdateCheck.Success;
((FormMain)(Owner)).smartForm.Show((int)DataStore.E_FormStore.FormProgramUpdate);
}
}
else
{
ret = DataStore.E_UpdateCheck.NotUpdateFolder;
// USB에 업데이트 폴더가 없습니다
DialogFormMessage message = new DialogFormMessage(9, this.ParentForm.SystemConfig.Language, "");
message.ShowDialog();
return;
}
}
else
{
ret = DataStore.E_UpdateCheck.NotUsbMomery;
// USB메모리가 장착되지 않았습니다
DialogFormMessage message = new DialogFormMessage(5, this.ParentForm.SystemConfig.Language, "");
message.ShowDialog();
return;
}
return ret;
}
private void ProgramUpdate()
{
this.buttonBack.Enabled = false;
FileInfo[] newFiles;
DirectoryInfo directoryFolderUpdateFiles = new DirectoryInfo(this.UpdateFilePath);
if (directoryFolderUpdateFiles.Exists == false)
directoryFolderUpdateFiles.Create();
newFiles = directoryFolderUpdateFiles.GetFiles();
this.progressBarUpdate.Value += 20;
this.progressBarUpdateBar.Value += 20;
this.TreatmentRemoveOldFile();
this.progressBarUpdate.Value += 20;
this.TreatmentCopyNewFile(newFiles);
this.progressBarUpdate.Value += 100;
this.ParentForm.SetTrackingHistoryData(DataStore.E_TrackingOperation.Update, "LCD");
this.FinishStatusNeededReBoot();
this.progressBarUpdateBar.Value += 100;
}
private void TreatmentRemoveOldFile()
{
bool removeFolderCheck = false;
@ -302,287 +168,45 @@ namespace INT89DB_26.Forms
directoryFolderRemove.Create();
foreach (FileInfo subFile in oldFiles)
subFile.MoveTo(this.RemoveFolderPath + DateTime.Now.ToString("yyyyMMddHHmmss") + subFile.Name.ToString());
subFile.MoveTo(RemoveFolderPath + DateTime.Now.ToString("yyyyMMddHHmmss") + subFile.Name.ToString());
this.progressBarUpdate.Value += 20;
this.progressBarUpdateBar.Value += 20;
}
private void TreatmentCopyNewFile(FileInfo[] newFile)
{
// 새 파일 복사
foreach (FileInfo subFile in newFile)
subFile.CopyTo(this.OldFilePath + subFile.Name.ToString());
this.progressBarUpdate.Value += 20;
this.progressBarUpdateBar.Value += 20;
}
#endregion
private void UpdateLabelStatus(DataStore.E_Step3 step, DataStore.E_LanguageID language)
#region Override Member
protected override void OnLoad(EventArgs e)
{
switch (step)
{
case DataStore.E_Step3.Step1:
#region Step1
switch (language)
{
case DataStore.E_LanguageID.Korean:
this.labelMessage1.Text = "USB를 본체에 삽입 하십시오";
this.labelMessage2.Text = "업데이트 할 항목을 선택해 주십시오";
break;
case DataStore.E_LanguageID.English:
this.labelMessage1.Text = "Please insert usb into the device";
this.labelMessage2.Text = "Please select an item to update";
break;
case DataStore.E_LanguageID.Chinese:
this.labelMessage1.Text = "请将usb插入设备中。";
this.labelMessage2.Text = "请选择一个项目来更新";
break;
case DataStore.E_LanguageID.German:
this.labelMessage1.Font = new Font("새굴림", 18, FontStyle.Bold);
this.labelMessage1.Text = "USB nicht vom Gerät trennen";
this.labelMessage2.Font = new Font("새굴림", 18, FontStyle.Bold);
this.labelMessage2.Text = "Drücken Sie nach dem USB-Anschluss die untere Taste";
break;
default:
break;
}
#endregion
break;
case DataStore.E_Step3.Step2:
#region Step2
switch (language)
{
case DataStore.E_LanguageID.Korean:
this.labelMessage1.Text = "업데이트 중...";
this.labelMessage2.Text = "USB를 본체에서 분리하지 마십시오";
break;
case DataStore.E_LanguageID.English:
this.labelMessage1.Text = "Updating...";
this.labelMessage2.Text = "Do not remove the USB from the device";
break;
case DataStore.E_LanguageID.Chinese:
this.labelMessage1.Text = "更新中...";
this.labelMessage2.Text = "请勿断开USB";
break;
case DataStore.E_LanguageID.German:
this.labelMessage1.Font = new Font("새굴림", 18, FontStyle.Bold);
this.labelMessage1.Text = "Aktualisierung….";
this.labelMessage2.Font = new Font("새굴림", 18, FontStyle.Bold);
this.labelMessage2.Text = "USB nicht vom Gerät trennen";
break;
default:
break;
}
#endregion
break;
case DataStore.E_Step3.Step3:
#region Step3
this.labelMessage2.ForeColor = Color.Red;
switch (language)
{
case DataStore.E_LanguageID.Korean:
this.labelMessage1.Text = "프로그램 업데이트 완료";
this.labelMessage2.Text = "전원을 끄고 다시 켜주세요";
break;
case DataStore.E_LanguageID.English:
this.labelMessage1.Text = "Program update complete";
this.labelMessage2.Text = "Reset the system";
break;
case DataStore.E_LanguageID.Chinese:
this.labelMessage1.Text = "系统更新完成";
this.labelMessage2.Text = "关掉电源,然后在打开电源";
break;
case DataStore.E_LanguageID.German:
this.labelMessage1.Font = new Font("새굴림", 18, FontStyle.Bold);
this.labelMessage1.Text = "Programmaktualisierung abgeschlossen";
this.labelMessage2.Font = new Font("새굴림", 18, FontStyle.Bold);
this.labelMessage2.Text = "Mit dem Hauptschalter aus- und einschalten";
break;
default:
break;
}
#endregion
break;
default:
break;
}
base.OnLoad(e);
this.Refresh();
}
private void PayService_ServiceDataEvent(SERVICE_ITEMS_e item, SERVICE_MODE_e value)
{
//Console.Write("{0} = {1} \n", item.ToString(), value.ToString());
this.progressBarUpdate.Value = 50;
this.InitializeDesign();
switch (item)
{
case SERVICE_ITEMS_e.MODBUS:
#region Modbus
switch (value)
{
case SERVICE_MODE_e.DISABLE:
if (this.ParentForm.SystemConfig.IsModbus == true)
{
this.ParentForm.SystemConfig.IsModbus = false;
DirectoryInfo directoryFolderUpdateFiles = new DirectoryInfo(this.UpdateFilePath);
if (directoryFolderUpdateFiles.Exists == false)
directoryFolderUpdateFiles.Create();
if (this.ParentForm.SystemConfig.Serial3Mode == (int)DataStore.E_CommMode.f99_Modbus)
this.ParentForm.SystemConfig.Serial3Mode = 0;
if (this.ParentForm.SystemConfig.EthernetMode == (int)DataStore.E_CommMode.f99_Modbus)
this.ParentForm.SystemConfig.EthernetMode = 0;
this.Check = 0;
this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig);
//this.ParentForm.CenterConfiSerial.ChangeCommunicationMode();
//this.ParentForm.CenterConfiEthernet.ChangeCommunicationMode();
this.labelUpdateContents.Text += "Modbus OFF";
this.ParentForm.SetTrackingHistoryData(DataStore.E_TrackingOperation.FunctionUpdate, "Modbus_OFF");
}
break;
case SERVICE_MODE_e.ENABLE:
if (this.ParentForm.SystemConfig.IsModbus == false)
{
this.ParentForm.SystemConfig.IsModbus = true;
this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig);
//this.ParentForm.CenterConfiSerial.ChangeCommunicationMode();
//this.ParentForm.CenterConfiEthernet.ChangeCommunicationMode();
this.labelUpdateContents.Text += "Modbus ON";
this.ParentForm.SetTrackingHistoryData(DataStore.E_TrackingOperation.FunctionUpdate, "Modbus_ON");
}
break;
default:
break;
}
#endregion
break;
case SERVICE_ITEMS_e.PART11:
// Part11 추가 시 활성화
#region Part11
//switch (value)
//{
// case SERVICE_MODE_e.DISABLE:
// if (this.ParentForm.SystemConfig.IsPart11 == true)
// {
// this.ParentForm.SystemConfig.IsPart11 = false;
// this.ParentForm.SystemConfig.IsLogin = false;
// //this.ParentForm.SystemConfig.IsDataStatistics = false;
// this.ParentForm.SystemConfig.IsDataBackup = false;
// if (this.ParentForm.SystemConfig.StoragePeriod > 12)
// this.ParentForm.SystemConfig.StoragePeriod = 12;
// // Delete user list
// try
// {
// UserManager.UserManager_UserAllDel();
// }
// catch
// {
// }
// this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig);
// if (this.labelUpdateContents.Text.Length != 0)
// this.labelUpdateContents.Text += ", ";
// this.labelUpdateContents.Text += "Part11 OFF";
// this.ParentForm.SetTrackingHistoryData(DataStore.E_TrackingOperation.FunctionUpdate, "Part11_OFF");
// }
// break;
// case SERVICE_MODE_e.ENABLE:
// if (this.ParentForm.SystemConfig.IsPart11 == false)
// {
// this.ParentForm.SystemConfig.IsLogin = true;
// this.ParentForm.SystemConfig.IsPart11 = true;
// //this.ParentForm.SystemConfig.IsDataStatistics = true;
// this.ParentForm.SystemConfig.IsDataBackup = true;
// if (this.ParentForm.SystemConfig.StoragePeriod <= 12)
// this.ParentForm.SystemConfig.StoragePeriod = 24;
// this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig);
// if (this.labelUpdateContents.Text.Length != 0)
// this.labelUpdateContents.Text += ", ";
// this.labelUpdateContents.Text += "Part11 ON";
// this.ParentForm.SetTrackingHistoryData(DataStore.E_TrackingOperation.FunctionUpdate, "Part11_ON");
// }
// break;
// default:
// break;
//}
this.buttonBack.Enabled = false;
#endregion
break;
case SERVICE_ITEMS_e.FEEDBACK:
#region Feedback
switch (value)
{
case SERVICE_MODE_e.DISABLE:
if (this.ParentForm.SystemConfig.IsFeedback == true)
{
this.ParentForm.SystemConfig.IsFeedback = false;
this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig);
if (this.labelUpdateContents.Text.Length != 0)
this.labelUpdateContents.Text += ", ";
this.labelUpdateContents.Text += "Feedback OFF";
this.ParentForm.SetTrackingHistoryData(DataStore.E_TrackingOperation.FunctionUpdate, "Feedback_OFF");
}
break;
case SERVICE_MODE_e.ENABLE:
if (this.ParentForm.SystemConfig.IsFeedback == false)
{
this.ParentForm.SystemConfig.IsFeedback = true;
this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig);
if (this.labelUpdateContents.Text.Length != 0)
this.labelUpdateContents.Text += ", ";
this.labelUpdateContents.Text += "Feedback ON";
this.ParentForm.SetTrackingHistoryData(DataStore.E_TrackingOperation.FunctionUpdate, "Feedback_ON");
}
break;
default:
break;
}
this.FinishStatusNeededReBoot();
this.progressBarUpdate.Value += 100;
this.buttonBack.Enabled = false;
#endregion
break;
default:
break;
}
this.labelTitleUpdate.Visible = true;
this.labelUpdateContents.Visible = true;
}
public void DisplayRefresh()
{
this.ParentForm.SystemConfig.CurrentForm = DataStore.E_FormStore.FormProgramUpdate;
this.InitialStatus();
this.progressBarUpdate.Value = 0;
// USB 체크
DirectoryInfo info = new DirectoryInfo("하드 디스크\\");
if (info.Exists == true)
{
this.buttonLCD.TextColor = Color.Black;
this.buttonLCD.Enabled = true;
this.buttonServiceUpdate.TextColor = Color.Black;
this.buttonServiceUpdate.Enabled = true;
}
this.UpdateFilePath = this.USBPath + "UpdateFiles\\";
this.OldFilePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\";
if (this.OldFilePath.StartsWith("\\F") == true)
this.RemoveFolderPath = "Flash Disk\\RemoveFile\\";
else
{
this.buttonLCD.TextColor = Color.DimGray;
this.buttonLCD.Enabled = false;
this.buttonServiceUpdate.TextColor = Color.DimGray;
this.buttonServiceUpdate.Enabled = false;
}
this.RemoveFolderPath = "SD Card\\RemoveFile\\";
this.timerUpdate.Interval = 1000;
this.timerUpdate.Tick += new EventHandler(timerUpdate_Tick);
this.timerUpdate.Enabled = true;
}
#endregion
@ -592,47 +216,16 @@ namespace INT89DB_26.Forms
this.Check += 1;
if (this.Check == 3)
{
this.ProgramUpdate();
this.ParentForm.ChildFormProgramUpdate.ProgramUpdate();
}
if (this.progressBarUpdate.Value == 100)
if (this.progressBarUpdateBar.Value == 100)
{
this.labelMessage1.Visible = false;
this.labelMessage2.Visible = false;
this.labelUpdateWait.Visible = false;
this.labelUpdateWait2.Visible = false;
this.labelUpdateRestart.Visible = true;
}
}
private void buttonLCD_Click(object sender, EventArgs e)
{
DialogFormYesNo myDlg = new DialogFormYesNo(this.ParentForm.SystemConfig.Language, 3);
DialogResult dr = myDlg.ShowDialog();
if (dr == DialogResult.Yes)
this.IsUpdate = true;
myDlg.Close();
this.Refresh();
this.labelMessage2.Visible = true;
this.ProgramUpdateCheck(dr);
}
private void buttonServiceUpdate_Click(object sender, EventArgs e)
{
DialogFormYesNo myDlg = new DialogFormYesNo(this.ParentForm.SystemConfig.Language, 3);
DialogResult dr = myDlg.ShowDialog();
myDlg.Close();
PayService service = new PayService();
this.labelMessage2.Visible = true;
this.ProgramUpdateCheck(dr);
}
private void buttonBack_Click(object sender, EventArgs e)
{
this.ParentForm.ChildFormMenu.DisplayRefresh();
((FormMain)(Owner)).smartForm.Show((int)DataStore.E_FormStore.FormMenu);
}
#endregion
}
}

View File

@ -276,248 +276,6 @@
IuLOxLfp6rmLy7jLf6z7kyHYGcBcqMv4XCYbfJHs6u7U/VqFvL4y3DMmikyHedxkAyamxklo6euX1zMv
dfB29g1NgQcjinlpk+fJoi8S3Q3PpvFKg5hd2hAoxe90dfSFujWB7x6jrOZY2/wvXBs7clP+AE97kRBm
/EAaAAAAAElFTkSuQmCC
</value>
</data>
<data name="buttonBack.DownImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
Kml+s4BQAAAAAElFTkSuQmCC
</value>
</data>
<data name="buttonBack.UpImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAEYAAABGCAIAAAD+THXTAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH
DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp
bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE
sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs
AIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4
JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR
3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQd
li7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtF
ehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGX
wzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNF
hImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH55
4SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJ
VgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB
5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyC
qbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiE
j6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I
1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9
rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhG
fDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFp
B+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJ
yeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJC
YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln
yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v
vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp
vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L
Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA
bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z
llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW
ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s
xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6
eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw
YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR
XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm
WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl
xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2
dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8
V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za
Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v
Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb
PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/
0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h
/HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr
XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS
fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+
tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/
6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwQAADsEBuJFr7QAACDFJREFUaEPlm/9Xk1Uc
x/eHdE790Be/ZKlo2MQvAyEB0clksA0JEVSg8EuiSIpBCoE6FBCRFDUZg6VRmd/NlMpUzDRNj1/PQfC7
R+0/6CX3uo1tzI09s61e5x7Pc5/nPo+f19733j37AdUIzWCXNnrSsITkuLR0fc6cnDkhSXb2bL1pRpxW
ExE91KV4Wh+lUTHDklLiFyxY0Nraevbs2SdPnvwdkjx48ODUqVNNTU35+fmJujhnBZpDSTMlat68ecjc
v3//8ePHPT09169fv3Tp0l+hBPUIrly50tXVde3atU2bNmlTk9QfRNhFpNLERDXGp0+ffvr0KTLcc+HC
hT9DFWoDDC9fvnzjxo09e/ZgFRn7rkMpIuZtvUl34sQJZhrJcM/58+fPnTv3RwhDeRRJqYiRGJMLK4cS
66elpYV8MGZQiMs4Q6nC6urVq1VVVWwYz5TY39gPWD/d3d3h5SOgYCYhM5BZxl4wUjNExX5ttVrZD3Dl
Mhtd2EHZFy9eZPpVVFRMSFSrjDPTOEVETE2k5aiwgrKZXwS1a9cuVpRqdnbWvXv3mIuI/R6eYEXxzLKO
jg5ThkFVUFDAxkAfVzkkDBFz78yZM5lZH6qWLFnCQiI4XDkVplA8m0RnZ6dUevToEQvp5SgdOXLk8OHD
sqMcFE8qrkrEx6mg8m17e1lZWVtbm+wrB8W/bCVetSwWyycLF36cl/e1zSbPKoer0sOHD1lexMd/HAyY
bOurq/Nzc3Pnzv0oL8/W1iYvKAfFkwoHDiW2OxR5Y1ccBAiHnziiYdVqtcpryoESqXAQXKXjx4/X1dbh
MHvWLHvDytrSIkcohwcldgxSO6kcB/bvL1mxIjMjw6Vh1WKxyEHKQR6kwkFQlHh93Ly5IW/unHSjwb1l
Zsy0WJrlUOVwVeJ3LzsGqf0WMEePHv28tNSgTzXo9R6bKS1tWVHRujVrqr74wrlVVlSY166VT/Ef8iCV
PkrMRfp8wIHATrBw/ny9TpeS/ILGGPdmTEuTD/If8iAV3KQSP5YIjv6vA+XYsWPVZnO6yZisnTbglpFu
ko/zH/IgFdyUUbLZbAvmF0ydkhhgM6alyif6jwcl5iL9XwZEyYrliZMnB95SU1LkE/2HPEgFN4cSc5H+
zwPi4MGDFatX67TaybGxgbSU5GT5RP8hDyWVBDu/+ooNepJm4oCbdmqSfJb/uCrxq5a5SHz8KgyEfXv3
Fi0pjJkwTjMuykuLHh8VM35cNAd9W0LsJPkg/0GGtYNCHyVceYUJHL5h4ifFjH8/csL7Y9xbdNTYpYs/
qaupWW82923rNtbWykf4DzJMtGApQfPOnTmzMtWjItwbVo2bG+Q45XBVunv3LjsG8fH1ohSHDh0qKlw8
dnRE5PB3nBtnatZXy0HKQR4iFYcSywvXnxSFl6O6mg0JMZqIoYPtDSvmmByhHORBKkFXEtjaWjONBmSG
v/XG8EFvjBo2pHrdWnlNOTwosWMQH59rMOCLa9VnK8dGjBj2+msjB79pXlMpLygHeZAKYg4lFhauPwaT
rV82xk2IGvTqK5Xlq+Up5SAPUkFMKt25c4fIcD0SZNqs1lkmY1VFuewrB3mQCmIOJSLD9XDYQh7/AyVm
IfHxZRKmkAdrh+knlW7fvo0frmxNYQp5MNHI6r+uRHwHwhbyYO0w/aRST08PsxDX/WELeZDKy1Bqb2+v
r69vamqS/aDhQYlZSHz7/Gf58uUmT6xatYqrGzduVKvVdMVgO9zlHYvFIof6BnmQCivKoYQfrnv9h3Ip
2h3K4mpdXR3HjBGD7YgxXuBGOdQ3yINUlFRCgCKc4WPmKgdcdVcSYzyi0+kUUOru7qZDfD/4j1Cqra2V
/b5wXijJvg94f2B/oEQq7HsOJTq47vEfo9EoKpD9vgglxsj+cz7tn4SEBC8P7A+mGEpsEs+UCgsLb926
RQfX7/1HKLlTXFzM1ZqaGo4ZIwbbEWO8wI1yqG8wxZhoyigtWrSIit0pKyvjqnclrvaHzWaTQ33DgxKb
IPF9pzQbNmwQSrL/HKEkO0rAqhEvdAEp7dixY1n/ZGVlYcKBFyUx0iOlpaVyqG94UGLHIL5v/UEk4B2K
41+DwSDveY646gX3W7zDqmHWYSGVurq62DFQ4v3Fd7Zt21bkhCiFg/W9NDQ0MIYDUZ+4xY4YI8jNzWXM
9OnTZb8XcbvvMMWICIuAlFzoNVJTjez3QpeT7krOiI/D+5gX4lmJGflNAPQaqaurq2W/F7qiXNn3hF1J
9gcEeTDr/h0lMcxHsJW3vQgPSuzrLLLdASCKMJvNst8LXU6iJPu7d3PsOytXrpS3eQUl8kAJi2dKBQUF
9pTkkAHho1IwcE0pO3v2zZs36YiUdg0Uqofm5mbZ72Xr1q1Lly4tKSmR/eBA2SixPeBmzEhT6U0z+NXO
9xRnOSVHhRWUzY6HAlt/Ukq8Kk6raWxsPHnyJN9WQunrsIKC2cR5e+D3Ei/y4+IjVRHRQ/Pz8zs7O5mL
YjmFkZWISMw6jg0zU+UfKCTq4nj57ejosO97YWElfIiBjYCI2PFjpo6XSjRtapLVauX9nASxcp6BvOeH
FKIquw8x4FNZWTlNnyhcpNKYuJFYbd++ncvMQNYVo5mj3AbkFiJQDFXxoVMeRTLf+DGLj/3PYhxKtMjY
4VwoLy9nahKX+ObiNjaTkIKSKEzIEBcv+/Z8RHMoifbB9JiZmen8Jt2yZYv4PMiNm0MHkVV9fX1xcTH7
gVg/zs1VSbSJiWqtforpQyN68k8KQ4OcOTlUZcowTJkRHxX/nkvZz5pm8D+LaHt9kqb07wAAAABJRU5E
rkJggg==
</value>
</data>
<metadata name="$this.FormFactorShadowProperty" xml:space="preserve">

View File

@ -869,18 +869,6 @@ namespace INT89DB_26.Forms
}
else
{
if (this.ParentForm.SystemConfig.IsFeedback == true)
{
if (myKeyPad.doubleValue < Helper.StringToWeight(this.ParentForm.CurrentFeedbackItem.LowLimit, this.ParentForm.SystemConfig.DecimalPlaces)
|| (myKeyPad.doubleValue > Helper.StringToWeight(this.ParentForm.CurrentFeedbackItem.HighLimit, this.ParentForm.SystemConfig.DecimalPlaces)))
{
// 입력범위를 확인하세요
DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.SystemConfig.Language, "");
myMsg.ShowDialog();
return;
}
}
this.buttonPass.Text = myKeyPad.StringValue;
this.SelectedProductItem.PassRange = myKeyPad.StringValue.Replace(".", "");

View File

@ -277,7 +277,7 @@ namespace INT89DB_26.Forms
{
this.ParentForm.CurrentCollectionUser.Level1Users[this.listBoxLevel1.SelectItemIndex].ID = this.textBoxID.Text;
this.ParentForm.CurrentCollectionUser.Level1Users[this.listBoxLevel1.SelectItemIndex].Password = this.textBoxPassword.Text;
this.ParentForm.CurrentCollectionUser.Level1Users[this.listBoxLevel1.SelectItemIndex].Group = DataStore.UserGroup.Level1;
this.ParentForm.CurrentCollectionUser.Level1Users[this.listBoxLevel1.SelectItemIndex].Group = DataStore.UserGroup.Level1Operator;
this.ParentForm.SaveUserLevel1File(this.ParentForm.CurrentCollectionUser.Level1Users);
this.listBoxLevel1.Items[this.listBoxLevel1.SelectItemIndex] = this.textBoxID.Text;
@ -286,7 +286,7 @@ namespace INT89DB_26.Forms
{
this.ParentForm.CurrentCollectionUser.Level2Users[this.listBoxLevel2.SelectItemIndex].ID = this.textBoxID.Text;
this.ParentForm.CurrentCollectionUser.Level2Users[this.listBoxLevel2.SelectItemIndex].Password = this.textBoxPassword.Text;
this.ParentForm.CurrentCollectionUser.Level2Users[this.listBoxLevel2.SelectItemIndex].Group = DataStore.UserGroup.Level2;
this.ParentForm.CurrentCollectionUser.Level2Users[this.listBoxLevel2.SelectItemIndex].Group = DataStore.UserGroup.Level2Engineer;
this.ParentForm.SaveUserLevel2File(this.ParentForm.CurrentCollectionUser.Level2Users);
this.listBoxLevel2.Items[this.listBoxLevel2.SelectItemIndex] = this.textBoxID.Text;
@ -295,7 +295,7 @@ namespace INT89DB_26.Forms
{
this.ParentForm.CurrentCollectionUser.Level3Users[this.listBoxLevel3.SelectItemIndex].ID = this.textBoxID.Text;
this.ParentForm.CurrentCollectionUser.Level3Users[this.listBoxLevel3.SelectItemIndex].Password = this.textBoxPassword.Text;
this.ParentForm.CurrentCollectionUser.Level3Users[this.listBoxLevel3.SelectItemIndex].Group = DataStore.UserGroup.Level3;
this.ParentForm.CurrentCollectionUser.Level3Users[this.listBoxLevel3.SelectItemIndex].Group = DataStore.UserGroup.Level3Manager;
this.ParentForm.SaveUserLevel3File(this.ParentForm.CurrentCollectionUser.Level3Users);
this.listBoxLevel3.Items[this.listBoxLevel3.SelectItemIndex] = this.textBoxID.Text;

View File

@ -53,10 +53,6 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\INT89DB_26_ImageDll\bin\Release\INT89DB_26_ImageDll.dll</HintPath>
</Reference>
<Reference Include="libPayService, Version=1.0.8748.18817, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Document\DLL\libPayService.dll</HintPath>
</Reference>
<Reference Include="Microsoft.WindowsCE.Forms" />
<Reference Include="mscorlib" />
<Reference Include="SmartXCommon, Version=3.2.4.0, Culture=neutral, processorArchitecture=MSIL">
@ -288,13 +284,6 @@
<Compile Include="InModbus\Modbus_30000_LaneData.cs" />
<Compile Include="InModbus\Modbus_40000_Address.cs" />
<Compile Include="InModbus\Modbus_40000_Data.cs" />
<Compile Include="Part11_Encryption\Encryption.cs" />
<Compile Include="Part11_Encryption\Encryption.Define.cs" />
<Compile Include="Part11_Encryption\Encryption.Structure.cs" />
<Compile Include="Part11_UserManager\UserItem.cs" />
<Compile Include="Part11_UserManager\UserManager.cs" />
<Compile Include="Part11_UserManager\UserManager.Define.cs" />
<Compile Include="Part11_UserManager\UserManager.Structure.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Controls\ControlCalibration2.resx">

View File

@ -1,34 +0,0 @@
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace INT89DB_26.Part11_Encryption
{
public partial class Encryption
{
private const string PathDll = "SD Card\\Run\\DllAes128.dll";
private delegate void fnAesVersionCB(StringBuilder version);
private static fnAesVersionCB fnAesVersionCallBack;
public delegate void fnAesEncryptionCB(ref auth_encryption_status_t encryption_status);
public static fnAesEncryptionCB fnAesEncryptionCallBack;
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_AES_Register_VersionCB(fnAesVersionCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
public static extern void DLL_AES_Register_EncryptionCB(fnAesEncryptionCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_SAES_Getversion();
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
public static extern void DLL_AES_Activation();
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
public static extern int DLL_AES_Encryption(IntPtr inFileName, IntPtr outFileName, bool encrypt, bool compress);
}
}

View File

@ -1,25 +0,0 @@
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace INT89DB_26.Part11_Encryption
{
public partial class Encryption
{
public const int MAX_FILE_NAME_LENGTH = 256;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct auth_encryption_status_t
{
public int status;
public int error_type;
public int error_index;
public int percentage;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_FILE_NAME_LENGTH)]
public string inFileName;
}
}
}

View File

@ -1,62 +0,0 @@
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace INT89DB_26.Part11_Encryption
{
public partial class Encryption
{
public delegate void ObjectEventHandler(object data);
public static event ObjectEventHandler DllAesEncryption_Event;
public static event ObjectEventHandler DllAesEncryption_GetVersionDataEvent;
public static void InitializeEncryption()
{
// register callback
fnAesVersionCallBack = AesEncryption_VersionCallback;
DLL_AES_Register_VersionCB(fnAesVersionCallBack);
fnAesEncryptionCallBack = cbAesEncryption;
DLL_AES_Register_EncryptionCB(fnAesEncryptionCallBack);
// call the function
DLL_AES_Activation();
}
#region Aes_Fuction
public static void AesEncryption(string inFileName, string outFileName, bool encrypt, bool compress)
{
IntPtr pInFileName = Marshal.StringToBSTR(inFileName);
IntPtr pOutFileName = Marshal.StringToBSTR(outFileName);
DLL_AES_Encryption(pInFileName, pOutFileName, encrypt, compress);
}
public static void AesEncryption_GetVersion()
{
DLL_SAES_Getversion();
}
#endregion
#region Aes_Callback
public static void cbAesEncryption(ref auth_encryption_status_t encryption_status)
{
if (DllAesEncryption_Event != null)
DllAesEncryption_Event(encryption_status);
}
private static void AesEncryption_VersionCallback(StringBuilder version)
{
try
{
if (DllAesEncryption_GetVersionDataEvent != null)
DllAesEncryption_GetVersionDataEvent(version);
}
catch
{
}
}
#endregion
}
}

View File

@ -1,439 +0,0 @@
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace INT89DB_26.Part11_UserManager
{
#region UserItem
public class UserItem
{
#region Field
private string m_ID;
private string m_Password;
private string m_ResetPW;
private int m_ExpireId;
private int m_ExpirePassword;
private bool m_IsLockAccount;
private bool m_IsLockPassword;
private DateTime m_DatePasswordRegister;
private DateTime m_DateIdLogin;
private DateTime m_DateIdExpire;
private DateTime m_DatePasswordExpire;
private DataStore.UserGroup m_Group;
private bool m_IsAdmin;
private int m_ActiveLevel;
private int m_IsFirstPassword;
#endregion
#region Constructor
public UserItem()
{
this.Initialize();
}
#endregion
#region Property
public string ID
{
get { return this.m_ID; }
set { this.m_ID = value; }
}
public string Password
{
get { return this.m_Password; }
set { this.m_Password = value; }
}
public string ResetPW
{
get { return this.m_ResetPW; }
private set { this.m_ResetPW = value; }
}
public int ExpireId
{
get { return this.m_ExpireId; }
set { this.m_ExpireId = value; }
}
public int ExpirePassword
{
get { return this.m_ExpirePassword; }
set { this.m_ExpirePassword = value; }
}
public bool IsLockAccount
{
get { return this.m_IsLockAccount; }
set { this.m_IsLockAccount = value; }
}
public bool IsLockPassword
{
get { return this.m_IsLockPassword; }
set { this.m_IsLockPassword = value; }
}
public DateTime DatePasswordRegister
{
get { return this.m_DatePasswordRegister; }
set { this.m_DatePasswordRegister = value; }
}
public DateTime DateIdLogin
{
get { return this.m_DateIdLogin; }
set { this.m_DateIdLogin = value; }
}
public DateTime DateIdExpire
{
get { return this.m_DateIdExpire; }
set { this.m_DateIdExpire = value; }
}
public DateTime DatePasswordExpire
{
get { return this.m_DatePasswordExpire; }
set { this.m_DatePasswordExpire = value; }
}
public DataStore.UserGroup Group
{
get { return this.m_Group; }
set { this.m_Group = value; }
}
public bool IsAdmin
{
get { return this.m_IsAdmin; }
set { this.m_IsAdmin = value; }
}
public int ActiveLevel
{
get { return this.m_ActiveLevel; }
set { this.m_ActiveLevel = value; }
}
public int IsFirstPassword
{
get { return this.m_IsFirstPassword; }
set { this.m_IsFirstPassword = value; }
}
#endregion
#region Method
private void Initialize()
{
this.ID = "-";
this.Password = "-";
this.ResetPW = "Password12!";
this.ExpireId = 0;
this.ExpirePassword = 0;
this.DatePasswordRegister = DateTime.Now;
this.DateIdLogin = DateTime.Now;
this.DateIdExpire = DateTime.Now;
this.DatePasswordExpire = DateTime.Now;
this.Group = DataStore.UserGroup.None;
this.IsAdmin = false;
this.ActiveLevel = 1;
this.IsFirstPassword = 1; //[1] 최초 비밀번호(비밀번호 변경창 띄우기), [0] 비밀번호 변경완료됨
}
public int GetPasswordExpiryDday()
{
int ret = 0;
DateTime timeNow = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
TimeSpan dayDiff;
if (this.Group == DataStore.UserGroup.Admin || this.Group == DataStore.UserGroup.Developer)
ret = 9999;
else
{
dayDiff = timeNow.Date - this.DatePasswordExpire.Date;
ret = dayDiff.Days;
}
return ret;
}
#endregion
}
#endregion
#region UserGroup
public class UserGroup
{
#region Field
private UserGroupItem m_Level1;
private UserGroupItem m_Level2;
private UserGroupItem m_Level3;
private UserGroupItem m_NotLogin;
#endregion
#region Constructor
public UserGroup()
{
this.Initialize();
}
#endregion
#region Property
public UserGroupItem Level1
{
get { return this.m_Level1; }
set { this.m_Level1 = value; }
}
public UserGroupItem Level2
{
get { return this.m_Level2; }
set { this.m_Level2 = value; }
}
public UserGroupItem Level3
{
get { return this.m_Level3; }
set { this.m_Level3 = value; }
}
public UserGroupItem NotLogin
{
get { return this.m_NotLogin; }
set { this.m_NotLogin = value; }
}
#endregion
#region Method
private void Initialize()
{
this.Level1 = new UserGroupItem();
this.Level2 = new UserGroupItem();
this.Level3 = new UserGroupItem();
this.NotLogin = new UserGroupItem();
}
#endregion
}
#endregion
#region UserGroupItem
public class UserGroupItem
{
#region Field
private bool m_IsMainDisplayProductNo;
private bool m_IsMainDisplayWeightSetting;
private bool m_IsMainDisplayClear;
private bool m_IsMainDisplaySubMenu;
private bool m_IsMenuInformation;
private bool m_IsMenuConfiguration;
private bool m_IsMenuCommunication;
private bool m_IsMenuCalibration;
private bool m_IsMenuSystem;
private bool m_IsMenuMotor;
private bool m_IsMenuIOTest;
private bool m_IsMenuEquipment;
private bool m_IsMenuUpdate;
private bool m_IsMenuInitialization;
private bool m_IsMenuTime;
private bool m_IsMenuDataBackup;
private bool m_IsMenuStatistics;
private bool m_IsMenuViewer;
private bool m_IsMenuUser;
private bool m_IsMenuUserGroupEditor;
#endregion
#region Constructor
public UserGroupItem()
{
this.Initialize();
}
#endregion
#region Property
public bool IsMainDisplayProductNo
{
get { return this.m_IsMainDisplayProductNo; }
set { this.m_IsMainDisplayProductNo = value; }
}
public bool IsMainDisplayWeightSetting
{
get { return this.m_IsMainDisplayWeightSetting; }
set { this.m_IsMainDisplayWeightSetting = value; }
}
public bool IsMainDisplayClear
{
get { return this.m_IsMainDisplayClear; }
set { this.m_IsMainDisplayClear = value; }
}
public bool IsMainDisplaySubMenu
{
get { return this.m_IsMainDisplaySubMenu; }
set { this.m_IsMainDisplaySubMenu = value; }
}
public bool IsMenuTime
{
get { return this.m_IsMenuTime; }
set { this.m_IsMenuTime = value; }
}
public bool IsMenuInformation
{
get { return this.m_IsMenuInformation; }
set { this.m_IsMenuInformation = value; }
}
public bool IsMenuDataBackup
{
get { return this.m_IsMenuDataBackup; }
set { this.m_IsMenuDataBackup = value; }
}
public bool IsMenuCalibration
{
get { return this.m_IsMenuCalibration; }
set { this.m_IsMenuCalibration = value; }
}
public bool IsMenuCommunication
{
get { return this.m_IsMenuCommunication; }
set { this.m_IsMenuCommunication = value; }
}
public bool IsMenuConfiguration
{
get { return this.m_IsMenuConfiguration; }
set { this.m_IsMenuConfiguration = value; }
}
public bool IsMenuSystem
{
get { return this.m_IsMenuSystem; }
set { this.m_IsMenuSystem = value; }
}
public bool IsMenuMotor
{
get { return this.m_IsMenuMotor; }
set { this.m_IsMenuMotor = value; }
}
public bool IsMenuUpdate
{
get { return this.m_IsMenuUpdate; }
set { this.m_IsMenuUpdate = value; }
}
public bool IsMenuInitialization
{
get { return this.m_IsMenuInitialization; }
set { this.m_IsMenuInitialization = value; }
}
public bool IsMenuEquipment
{
get { return this.m_IsMenuEquipment; }
set { this.m_IsMenuEquipment = value; }
}
public bool IsMenuIOTest
{
get { return this.m_IsMenuIOTest; }
set { this.m_IsMenuIOTest = value; }
}
public bool IsMenuStatistics
{
get { return this.m_IsMenuStatistics; }
set { this.m_IsMenuStatistics = value; }
}
public bool IsMenuUser
{
get { return this.m_IsMenuUser; }
set { this.m_IsMenuUser = value; }
}
public bool IsMenuViewer
{
get { return this.m_IsMenuViewer; }
set { this.m_IsMenuViewer = value; }
}
public bool IsMenuUserGroupEditor
{
get { return this.m_IsMenuUserGroupEditor; }
set { this.m_IsMenuUserGroupEditor = value; }
}
#endregion
#region Method
private void Initialize()
{
this.IsMainDisplayProductNo = false;
this.IsMainDisplayWeightSetting = false;
this.IsMainDisplayClear = false;
this.IsMainDisplaySubMenu = false;
this.IsMenuTime = false;
this.IsMenuInformation = true;
this.IsMenuDataBackup = false;
this.IsMenuCalibration = false;
this.IsMenuCommunication = false;
this.IsMenuConfiguration = false;
this.IsMenuSystem = false;
this.IsMenuMotor = false;
this.IsMenuUpdate = false;
this.IsMenuInitialization = false;
this.IsMenuEquipment = false;
this.IsMenuIOTest = false;
this.IsMenuStatistics = false;
this.IsMenuUser = true;
this.IsMenuUserGroupEditor = false;
this.IsMenuViewer = false;
}
#endregion
}
#endregion
#region StructUserGroupItem
[StructLayout(LayoutKind.Sequential)]
public struct StructUserGroupItem
{
public bool IsMainDisplayProductNo;
public bool IsMainDisplayWeightSetting;
public bool IsMainDisplayClear;
public bool IsMainDispalySubMenu;
public bool IsMenuTimeSetting;
public bool IsMenuInformation;
public bool IsMenuDataBackup;
public bool IsMenuCalibration;
public bool IsMenuCommunication;
public bool IsMenuConfiguration;
public bool IsMenuSystemSetting;
public bool IsMenuMotorSetting;
public bool IsMenuUpdate;
public bool IsMenuFactoryReset;
public bool IsMenuEquipmentSetting;
public bool IsMenuIOTest;
public bool IsMenuDataStatistics;
public bool IsMenuUserSetting;
public bool IsMenuUserGroupSetting;
public bool IsMenuDataViewer;
public bool Dummy1;
public bool Dummy2;
public bool Dummy3;
public bool Dummy4;
public bool Dummy5;
public bool Dummy6;
public bool Dummy7;
public bool Dummy8;
public bool Dummy9;
public bool Dummy10;
public bool Dummy11;
public bool Dummy12;
public bool Dummy13;
public bool Dummy14;
public bool Dummy15;
public bool Dummy16;
public bool Dummy17;
public bool Dummy18;
public bool Dummy19;
public bool Dummy20;
}
#endregion
}

View File

@ -1,185 +0,0 @@
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace INT89DB_26.Part11_UserManager
{
public partial class UserManager
{
private const string PathDll = "SD Card\\Run\\DllUserMgr.dll";
private delegate void fnUserMgrVersionCB(StringBuilder version);
private static fnUserMgrVersionCB fnUserMgrVersionCallBack;
private delegate void fnUserMgrDebugCB(int level, StringBuilder pMessage);
private static fnUserMgrDebugCB fnUserMgrDebugCallBack;
private delegate void fnUserMgrNewUserCB(IntPtr pBuffer);
private static fnUserMgrNewUserCB fnUserMgrNewUserCallBack;
private delegate void fnUserMgrAddUserCB(ref UserMgr_user_add_t user_add);
private static fnUserMgrAddUserCB fnUserMgrAddUserCallBack;
private delegate void fnUserMgrModifyUserCB(ref UserMgr_user_modify_t user_mod);
private static fnUserMgrModifyUserCB fnUserMgrModifyUserCallBack;
private delegate void fnUserMgrModifyInfoCB(ref UserMgr_user_info_t user_info);
private static fnUserMgrModifyInfoCB fnUserMgrModifyInfoCallBack;
private delegate void fnUserMgrDelUserCB(ref UserMgr_user_del_t user_del);
private static fnUserMgrDelUserCB fnUserMgrDelUserCallBack;
private delegate void fnUserMgrUserLockCB(ref UserMgr_user_lock_t user_lock);
private static fnUserMgrUserLockCB fnUserMgrUserLockCallBack;
private delegate void fnUserMgrDefaultSettingCB(int status);
private static fnUserMgrDefaultSettingCB fnUserMgrDefaultSettingCallBack;
private delegate void fnUserMgrLoginCB(int status, IntPtr pBuffer);
private static fnUserMgrLoginCB fnUserMgrLoginCallBack;
private delegate void fnUserMgrLogoutCB(int status);
private static fnUserMgrLogoutCB fnUserMgrLogoutCallBack;
private delegate void fnUserMgrLoginTimeoutCB(ref UserMgr_login_timeout_t timeout);
private static fnUserMgrLoginTimeoutCB fnUserMgrLoginTimeoutCallBack;
private delegate void fnUserMgrGetListCB(ref UserMgr_user_list_t user_list);
private static fnUserMgrGetListCB fnUserMgrGetListCallBack;
private delegate void fnUserMgrGetListNameCB(ref UserMgr_user_list_name_t user_name);
private static fnUserMgrGetListNameCB fnUsermgrGetListNameCallBack;
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_VersionCB(fnUserMgrVersionCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_DebugCB(fnUserMgrDebugCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_NewStatusCB(fnUserMgrNewUserCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_AddStatusCB(fnUserMgrAddUserCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_ModifyUserCB(fnUserMgrModifyUserCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_ModifyStatusCB(fnUserMgrModifyInfoCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_DelStatusCB(fnUserMgrDelUserCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_UserLockCB(fnUserMgrUserLockCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_DefaultSettingCB(fnUserMgrDefaultSettingCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_LoginStausCB(fnUserMgrLoginCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_LogoutStausCB(fnUserMgrLogoutCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_LoginTimeoutCB(fnUserMgrLoginTimeoutCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_GetListCB(fnUserMgrGetListCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_GetListNameCB(fnUserMgrGetListNameCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_HelloWorld();
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Getversion();
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Activation();
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Deactivation();
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserNew(IntPtr user_id, IntPtr user_pw, int fadmin, int expire_pw, int expire_account, int active_level, IntPtr menuId);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserAdd(IntPtr user_id, IntPtr user_pw, int fadmin, int expire_pw, int expire_account, int active_level, DateTime_t dateRegister, DateTime_t dateLogin);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserAddHistoryPW(IntPtr user_id, IntPtr user_pw);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserResetHistoryPW(IntPtr user_id);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserModify(IntPtr user_id, IntPtr user_pw, int fadmin, int expire_pw, int expire_account, int active_level, IntPtr menuId);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserModifyPW(IntPtr user_id, IntPtr user_pw);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserModifyPWDirect(IntPtr user_id, IntPtr user_pw);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserModifyID(IntPtr user_org_id, IntPtr user_new_id);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserResetPWDirect(IntPtr user_id, IntPtr user_pw);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserModifyOthers(IntPtr user_id, int fadmin, int expire_pw, int expire_account, int active_level);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserDel(IntPtr user_id);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserAllDel_Default();
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserLoginFailLockSet(IntPtr user_id);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserLockRelease(IntPtr user_id, bool lock_account, bool lock_password);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserLockGet(IntPtr user_id);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserLoginCB(IntPtr user_id, IntPtr user_pw);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserLoginDirect(IntPtr user_id, IntPtr user_pw, ref UserMgr_user_info_t user_info);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserLogout();
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_AutoLogoutTimeoutReset();
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_AutoLogoutTimeoutPause();
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_AutoLogoutSetTimeout(int timeout_min, int warning_timeout_sec);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_GetUserList(int index);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_GetUserListID(IntPtr user_id);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_GetUserListName();
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_SetFolder(IntPtr folder);
}
}

View File

@ -1,379 +0,0 @@
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace INT89DB_26.Part11_UserManager
{
public partial class UserManager
{
#region Field
// fnUserMgrDebugCB
public const int USERMGR_DBG_NORMAL = 0x0001;
public const int USERMGR_DBG_THREAD = 0x0002;
public const int USERMGR_DBG_LIST = 0x0004;
// fnUserMgrLoginCB
public const int USERMGR_LOGIN_STATUS_OK = 0x00;
public const int USERMGR_LOGIN_STATUS_ID_FAIL = 0x01;
public const int USERMGR_LOGIN_STATUS_PW_FAIL = 0x02;
// fnUserMgrLogoutCB
public const int USERMGR_LOGOUT_STATUS_OK = 0x00;
public const int USERMGR_LOGOUT_STATUS_FAIL = 0x01;
// fnUserMgrDelUserCB
//public const int USERMGR_DEL_STATUS_OK = 0x00;
//public const int USERMGR_DEL_STATUS_NOK = 0x01;
// lock_status
public const int USERMGR_LOCK_STATUS_NONE = 0x00;
public const int USERMGR_LOCK_STATUS_EXPIRE = 0x01;
public const int USERMGR_ID_MIN_LENGTH = 6;
public const int UERRMGR_ID_MAX_LENGTH = 20;
public const int USERMGR_PW_MIN_LENGTH = 6;
public const int USERMGR_PW_MAX_LENGTH = 20;
public const int MAX_USER_ID_LENGTH = 32;
public const int MAX_USER_PW_LEGNTH = 32;
public const int MAX_USER_HISTORY_PW_COUNT = 3;
public const int INVALID_VALUE = -1;
public const int USERMGR_USER_ADMINISTRATOR = 1;
public const int USERMGR_USER_NORMAL = 0;
public const int EXPIRE_PERIOD_PASSWORD_NOT_SUPPORT = 0;
public const int MAX_EXPIRE_PERIOD_PASSWORD = 90;
public const int DEFAULT_PASSWORD_EXPIRE_PERIOD = 90; // Days password change
public const int EXPIRE_PERIOD_ACCOUNT_NOT_SUPPORT = 0;
public const int MAX_EXPIRE_PERIOD_ACCOUNT = 180;
public const int DEFAULT_ACCOUNT_LOCK_PERIOD = 180; // Days login
public const int MAX_LOGIN_AUTO_TIMEOUT = 90;
public const int DEFAULT_LOGIN_WARNING_TIMEOUT_SEC = 60; // 60 sec during login, auto logout warning time
public const int DEFAULT_LOGIN_AUTO_TIMEOUT_MIN = 30; // 30 min during login, auto logout timeout
public const int USER_MENU_ID_MAX = 30; // MenuID_t buffer Size
public const int MAX_ACTIVE_LEVEL = 10; // menu active level
public const int INVALID_ACTIVE_LEVEL = 0;
#endregion
#region Enum E_user_mgr_status
public enum E_user_mgr_status
{
USER_MGR_STATUS_OK = 0x00,
// error status
USER_MGR_STATUS_ID_NOT_FOUND, // 1 - not found the user id
USER_MGR_STATUS_ID_DUPLICATE, // 2 - duplicate on id
USER_MGR_STATUS_ID_LENGTH_UNDER, // 3 - under the minimum length of id
USER_MGR_STATUS_ID_LENGTH_OVER, // 4 - over the maximum length of id
USER_MGR_STATUS_ID_CONT_LETTER, // 5 - continue characters or duplicate characters of id
USER_MGR_STATUS_ID_INVALID_CHAR, // 6 - include the invalid character on id
USER_MGR_STATUS_ID_ACCOUNT_LOCK, // 7 - Account Lock
USER_MGR_STATUS_PW_DUPLICATE_HISTORY, // 8 - duplicate on password history
USER_MGR_STATUS_PW_LENGTH_UNDER, // 9 - under the minimum length of password
USER_MGR_STATUS_PW_LENGTH_OVER, // 10 - over the maximum length of password
USER_MGR_STATUS_PW_CONT_LETTER, // 11 - continue characters or duplicate characters of password
USER_MGR_STATUS_PW_INVALID_CHAR, // 12 - include the invalid character on password
USER_MGR_STATUS_PW_EACH_MIN_CHAR, // 13 - not include minimum characters on password
USER_MGR_STATUS_PW_NOT_SAME, // 14 - password error
USER_MGR_STATUS_PW_PASSWORD_LOCK, // 15 - Password Lock
USER_MGR_STATUS_OTHER_OVER_PASSWORD_PERIOD, // 16 - over maximum password expire period (days)
USER_MGR_STATUS_OTHER_OVER_ACCOUNT_PERIOD, // 17 - over maximum account expire period (days)
USER_MGR_STATUS_OTHER_OVER_LOGIN_TIMEOUT, // 18 - over maximum auto logout time (minute)
USER_MGR_STATUS_MAX,
};
#endregion
#region Enum E_user_mgr_menu_id
public enum E_user_mgr_menu_id
{
USER_MENU_ID_RESERVE_0 = 0x00,
USER_MENU_ID_RESERVE_1,
USER_MENU_ID_RESERVE_2,
USER_MENU_ID_RESERVE_3,
USER_MENU_ID_RESERVE_4,
USER_MENU_ID_RESERVE_5,
USER_MENU_ID_RESERVE_6,
USER_MENU_ID_RESERVE_7,
USER_MENU_ID_RESERVE_8,
USER_MENU_ID_RESERVE_9,
USER_MENU_ID_RESERVE_10,
USER_MENU_ID_RESERVE_11,
USER_MENU_ID_RESERVE_12,
USER_MENU_ID_RESERVE_13,
USER_MENU_ID_RESERVE_14,
USER_MENU_ID_RESERVE_15,
USER_MENU_ID_RESERVE_16,
USER_MENU_ID_RESERVE_17,
USER_MENU_ID_RESERVE_18,
USER_MENU_ID_RESERVE_19,
USER_MENU_ID_RESERVE_20,
USER_MENU_ID_RESERVE_21,
USER_MENU_ID_RESERVE_22,
USER_MENU_ID_RESERVE_23,
USER_MENU_ID_RESERVE_24,
USER_MENU_ID_RESERVE_25,
USER_MENU_ID_RESERVE_26,
USER_MENU_ID_RESERVE_27,
USER_MENU_ID_RESERVE_28,
USER_MENU_ID_RESERVE_29,
USER_MENU_ID_MAX,
};
#endregion
#region Struct MenuID_t
[StructLayout(LayoutKind.Sequential)]
public struct MenuID_t
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)E_user_mgr_menu_id.USER_MENU_ID_MAX)]
public bool[] fMenu;
}
#endregion
#region Struct DateTime_t
[StructLayout(LayoutKind.Sequential)]
public struct DateTime_t
{
[MarshalAs(UnmanagedType.U2)]
public UInt16 year;
[MarshalAs(UnmanagedType.U1)]
public byte month;
[MarshalAs(UnmanagedType.U1)]
public byte day;
[MarshalAs(UnmanagedType.U1)]
public byte hour;
[MarshalAs(UnmanagedType.U1)]
public byte minute;
[MarshalAs(UnmanagedType.U1)]
public byte second;
[MarshalAs(UnmanagedType.U1)]
public byte reserved;
public static int Size
{
get { return (int)(sizeof(UInt16) + 6); }
}
public void SetDate(UInt16 year, byte month, byte day)
{
this.year = year;
this.month = month;
this.day = day;
}
public void SetTime(byte hour, byte minute, byte second)
{
this.hour = hour;
this.minute = minute;
this.second = second;
}
public string GetDateTime()
{
string dateTime;
dateTime = string.Format("{0:D4}{1:D2}{2:D2}{3:D2}{4:D2}{5:D2}", year, month, day, hour, minute, second);
return dateTime;
}
}
#endregion
#region Struct UserMgr_user_info_t
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct UserMgr_user_info_t
{
[MarshalAs(UnmanagedType.I4)]
public Int32 status; // user_new_add_status_e
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_ID_LENGTH)]
public string user_id;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_PW_LEGNTH)]
public string user_pw;
[MarshalAs(UnmanagedType.I4)]
public Int32 fadmin;
[MarshalAs(UnmanagedType.I4)]
public Int32 password_expire_period; // password lock date
[MarshalAs(UnmanagedType.I4)]
public Int32 id_expire_period; // id lock date
[MarshalAs(UnmanagedType.I4)]
public Int32 id_flock_status; // user ID (account) lock status
[MarshalAs(UnmanagedType.I4)]
public Int32 password_flock_status; // password lock status (need to change password)
[MarshalAs(UnmanagedType.Struct)]
public DateTime_t password_register_date; // date/time when the user password was registered or changed
[MarshalAs(UnmanagedType.Struct)]
public DateTime_t id_login_date; // date/time when the user was login
[MarshalAs(UnmanagedType.Struct)]
public DateTime_t password_expire_date; // Password Expiration Date
[MarshalAs(UnmanagedType.Struct)]
public DateTime_t id_expire_date; // Account Expiration Date
[MarshalAs(UnmanagedType.Struct)]
public MenuID_t menuID; // flag of Menu IDs
[MarshalAs(UnmanagedType.I4)]
public Int32 active_level; // menu active level : max : MAX_ACTIVE_LEVEL
[MarshalAs(UnmanagedType.I4)]
public Int32 fFirstPW; // [1] First (request to modify), [0] Next (not request)
[MarshalAs(UnmanagedType.I4)]
public Int32 login_fail_count; // [1] First (request to modify), [0] Next (not request)
}
#endregion
#region Struct UserMgr_user_modify_t
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct UserMgr_user_modify_t
{
public int status;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_ID_LENGTH)]
public string user_id;
}
#endregion
#region Struct UserMgr_user_del_t
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct UserMgr_user_del_t
{
public int status;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_ID_LENGTH)]
public string user_id;
}
#endregion
#region Struct UserMgr_login_timeout_t
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct UserMgr_login_timeout_t
{
public int remainder_time;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_ID_LENGTH)]
public string user_id;
}
#endregion
#region Struct UserMgr_user_add_t
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct UserMgr_user_add_t
{
public int status;
public int flock_status_account;
public int flock_status_password;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_ID_LENGTH)]
public string user_id;
}
#endregion
#region Struct UserMgr_user_lock_t
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct UserMgr_user_lock_t
{
public int flock_status_account;
public int flock_status_password;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_ID_LENGTH)]
public string user_id;
}
#endregion
#region Struct UserMgr_user_list_t
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct UserMgr_user_list_t
{
[MarshalAs(UnmanagedType.I4)]
public int status; // user_new_add_status_e
[MarshalAs(UnmanagedType.I4)]
public int total_count;
[MarshalAs(UnmanagedType.I4)]
public int index;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_ID_LENGTH)]
public string user_id;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_PW_LEGNTH)]
public string user_pw;
[MarshalAs(UnmanagedType.I4)]
public Int32 fadmin;
[MarshalAs(UnmanagedType.I4)]
public Int32 password_expire_period; // password lock
[MarshalAs(UnmanagedType.I4)]
public Int32 id_expire_period; // account lock
[MarshalAs(UnmanagedType.I4)]
public Int32 id_flock_status; // user ID (account) lock
[MarshalAs(UnmanagedType.I4)]
public Int32 flock_status_password; // password lock (need to change password)
[MarshalAs(UnmanagedType.Struct)]
public DateTime_t password_register_date; // date/time when the user password was registered or changed
[MarshalAs(UnmanagedType.Struct)]
public DateTime_t id_login_date; // date/time when the user was login
[MarshalAs(UnmanagedType.Struct)]
public DateTime_t password_expire_date; // Password Expiration Date
[MarshalAs(UnmanagedType.Struct)]
public DateTime_t id_expire_date; // Account Expiration Date
[MarshalAs(UnmanagedType.I4)]
public Int32 active_level; // menu active level : max : MAX_ACTIVE_LEVEL
[MarshalAs(UnmanagedType.Struct)]
public MenuID_t menuID; // flag of Menu IDs
[MarshalAs(UnmanagedType.I4)]
public Int32 fFirstPW; // flag first password
}
#endregion
#region Struct UserMgr_user_list_name_t
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct UserMgr_user_list_name_t
{
public int total_count;
public int index;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_ID_LENGTH)]
public string user_id;
}
#endregion
}
}

View File

@ -1,415 +0,0 @@
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace INT89DB_26.Part11_UserManager
{
public partial class UserManager
{
public delegate void ObjectEventHandler(object data);
public static event ObjectEventHandler UserListNewDataEvent;
public static event ObjectEventHandler UserListAddDataEvent;
public static event ObjectEventHandler UserListModifyUserDataEvent;
public static event ObjectEventHandler UserListModifyInfoDataEvent;
public static event ObjectEventHandler UserListDeleteDataEvent;
public static event ObjectEventHandler UserListLockDataEvent;
public static event ObjectEventHandler UserListDefautSettingDataEvent;
public static event ObjectEventHandler UserListLoginTimeoutDataEvent;
public static event ObjectEventHandler UserListGetListDataEvent;
public static event ObjectEventHandler UserListGetListNameDataEvent;
public static event ObjectEventHandler UserListGetVersionDataEvent;
public delegate void IntObjectEventHandler(int status, object data);
public static event IntObjectEventHandler UserListLoginDataEvent;
public delegate void IntEventHandler(int status);
public static event IntEventHandler UserListLogoutDataEvent;
public static void IntializeUserManager(string folder)
{
// regisetr callback
fnUserMgrVersionCallBack = UserManager_VersionCallback;
DLL_UserMgr_Register_VersionCB(fnUserMgrVersionCallBack);
fnUserMgrDebugCallBack = UserManager_DebugCallback;
DLL_UserMgr_Register_DebugCB(fnUserMgrDebugCallBack);
fnUserMgrNewUserCallBack = UserManager_NewUserCallBack;
DLL_UserMgr_Register_NewStatusCB(fnUserMgrNewUserCallBack);
fnUserMgrAddUserCallBack = UserManager_AddUserCallBack;
DLL_UserMgr_Register_AddStatusCB(fnUserMgrAddUserCallBack);
fnUserMgrModifyUserCallBack = UserManager_ModifyUserCallBack;
DLL_UserMgr_Register_ModifyUserCB(fnUserMgrModifyUserCallBack);
fnUserMgrModifyInfoCallBack = UserManager_ModifyInfoCallBack;
DLL_UserMgr_Register_ModifyStatusCB(fnUserMgrModifyInfoCallBack);
fnUserMgrDelUserCallBack = UserManager_DelUserCallBack;
DLL_UserMgr_Register_DelStatusCB(fnUserMgrDelUserCallBack);
fnUserMgrUserLockCallBack = UserManager_LockCallBack;
DLL_UserMgr_Register_UserLockCB(fnUserMgrUserLockCallBack);
fnUserMgrDefaultSettingCallBack = UserManager_DefaultSettingCallBack;
DLL_UserMgr_Register_DefaultSettingCB(fnUserMgrDefaultSettingCallBack);
fnUserMgrLoginCallBack = UserManager_LoginCallBack;
DLL_UserMgr_Register_LoginStausCB(fnUserMgrLoginCallBack);
fnUserMgrLogoutCallBack = UserManager_LogoutCallBack;
DLL_UserMgr_Register_LogoutStausCB(fnUserMgrLogoutCallBack);
fnUserMgrLoginTimeoutCallBack = UserManager_LoginTimeoutCallBack;
DLL_UserMgr_Register_LoginTimeoutCB(fnUserMgrLoginTimeoutCallBack);
fnUserMgrGetListCallBack = UserManager_GetListCallBack;
DLL_UserMgr_Register_GetListCB(fnUserMgrGetListCallBack);
fnUsermgrGetListNameCallBack = UserManager_GetListNameCallBack;
DLL_UserMgr_Register_GetListNameCB(fnUsermgrGetListNameCallBack);
DLL_UserMgr_Activation();
IntPtr pFolder = Marshal.StringToBSTR(folder);
DLL_UserMgr_SetFolder(pFolder);
}
#region UM_FUNCTION
public static void UserManager_GetUserList(String data)
{
if (String.IsNullOrEmpty(data) == true)
DLL_UserMgr_GetUserListID(IntPtr.Zero);
else
{
IntPtr pID = Marshal.StringToBSTR(data);
DLL_UserMgr_GetUserListID(pID);
}
}
public static void UserManager_UserAdd(String sID, String sPW, int fAdmin, int expire_period_pw, int expire_period_account, int active_level, DateTime_t password_date, DateTime_t account_date)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
IntPtr pPW = Marshal.StringToBSTR(sPW.ToString());
DLL_UserMgr_UserAdd(pID, pPW, fAdmin, expire_period_pw, expire_period_account, active_level, password_date, account_date);
}
public static void UserManager_UserNew(String sID, String sPW, int fAdmin, int expire_period_pw, int expire_period_account, int active_level, MenuID_t menuId)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
IntPtr pPW = Marshal.StringToBSTR(sPW.ToString());
IntPtr pMenuId = Marshal.AllocHGlobal(Marshal.SizeOf(menuId));
Marshal.StructureToPtr(menuId, pMenuId, false);
DLL_UserMgr_UserNew(pID, pPW, fAdmin, expire_period_pw, expire_period_account, active_level, pMenuId);
}
public static void UserManager_UserAddHistoryPW(String sID, String sHistoryPW)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
IntPtr pPW = Marshal.StringToBSTR(sHistoryPW.ToString());
DLL_UserMgr_UserAddHistoryPW(pID, pPW);
}
public static void UserManager_UserResetHistoryPW(String sID)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
DLL_UserMgr_UserResetHistoryPW(pID);
}
public static void UserManager_UserModify(String sID, String sPW, int fAdmin, int expire_period_pw, int expire_period_account, int active_level, MenuID_t menuId)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
IntPtr pPW = Marshal.StringToBSTR(sPW.ToString());
IntPtr pMenuId = Marshal.AllocHGlobal(Marshal.SizeOf(menuId));
Marshal.StructureToPtr(menuId, pMenuId, false);
DLL_UserMgr_UserModify(pID, pPW, fAdmin, expire_period_pw, expire_period_account, active_level, pMenuId);
}
public static void UserManager_UserModifyPW(String sID, String sNewPW)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
IntPtr pPW = Marshal.StringToBSTR(sNewPW.ToString());
DLL_UserMgr_UserModifyPW(pID, pPW);
}
public static int UserManager_UserModifyPWDirect(String sID, String sNewPW)
{
int ret = 0;
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
IntPtr pPW = Marshal.StringToBSTR(sNewPW.ToString());
ret = DLL_UserMgr_UserModifyPWDirect(pID, pPW);
return ret;
}
public static int UserManager_UserResetPWDirect(String sID, String sNewPW)
{
int ret = 0;
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
IntPtr pPW = Marshal.StringToBSTR(sNewPW.ToString());
ret = DLL_UserMgr_UserResetPWDirect(pID, pPW);
return ret;
}
public static void UserManager_UserModifyID(String sID, String sNewID)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
IntPtr pNewID = Marshal.StringToBSTR(sNewID.ToString());
DLL_UserMgr_UserModifyID(pID, pNewID);
}
public static void UserManager_UserModifyOthers(String sID, int fadmin, int period_expire_pw, int period_expire_account, int active_level)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
DLL_UserMgr_UserModifyOthers(pID, fadmin, period_expire_pw, period_expire_account, active_level);
}
public static void UserManager_UserDel(String sID)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
DLL_UserMgr_UserDel(pID);
}
public static void UserManager_UserAllDel()
{
DLL_UserMgr_UserAllDel_Default();
}
public static void UserManager_UserLockRelease(String sID, bool lock_account, bool lock_password)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
DLL_UserMgr_UserLockRelease(pID, lock_account, lock_password);
}
public static void UserManager_UserLockGet(String sID)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
DLL_UserMgr_UserLockGet(pID);
}
public static void UserManager_UserLoginFailLockSet(String sID)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
DLL_UserMgr_UserLoginFailLockSet(pID);
}
public static void UserManager_UserLoginCB(String sID, String sPW)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
IntPtr pPW = Marshal.StringToBSTR(sPW.ToString());
DLL_UserMgr_UserLoginCB(pID, pPW);
}
public static void UserManager_UserLoginDirect(string sID, string sPW, ref UserMgr_user_info_t user_info)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
IntPtr pPW = Marshal.StringToBSTR(sPW.ToString());
DLL_UserMgr_UserLoginDirect(pID, pPW, ref user_info);
}
public static void UserManager_UserLogout()
{
DLL_UserMgr_UserLogout();
}
public static void UserManager_AutoLogoutTimeoutReset()
{
DLL_UserMgr_AutoLogoutTimeoutReset();
}
public static void UserManager_AutoLogoutTimeoutPause()
{
DLL_UserMgr_AutoLogoutTimeoutPause();
}
public static void UserManager_AutoLogoutSetTimeout(int timeout_min, int warning_timeout_sec)
{
DLL_UserMgr_AutoLogoutSetTimeout(timeout_min, warning_timeout_sec);
}
public static void UserManager_GetUserList(int index)
{
DLL_UserMgr_GetUserList(index);
}
public static void UserManager_GetUserListID(String sID)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
DLL_UserMgr_GetUserListID(pID);
}
public static void UserManager_GetUserListName()
{
DLL_UserMgr_GetUserListName();
}
public static void UserManager_GetVersion()
{
DLL_UserMgr_Getversion();
}
#endregion
#region UM_CALLBACK
private static void UserManager_GetListNameCallBack(ref UserMgr_user_list_name_t user_name)
{
try
{
if (UserListGetListNameDataEvent != null)
UserListGetListNameDataEvent(user_name);
}
catch
{
}
}
private static void UserManager_GetListCallBack(ref UserMgr_user_list_t user_list)
{
try
{
if (UserListGetListDataEvent != null)
UserListGetListDataEvent(user_list);
}
catch
{
}
}
private static void UserManager_LoginTimeoutCallBack(ref UserMgr_login_timeout_t timeout)
{
try
{
if (UserListLoginTimeoutDataEvent != null)
UserListLoginTimeoutDataEvent(timeout);
}
catch
{
}
}
private static void UserManager_LogoutCallBack(int status)
{
try
{
if (UserListLogoutDataEvent != null)
UserListLogoutDataEvent(status);
}
catch
{
}
}
private static void UserManager_LoginCallBack(int status, IntPtr pBuffer)
{
try
{
if (UserListLoginDataEvent != null)
UserListLoginDataEvent(status, pBuffer);
}
catch
{
}
}
private static void UserManager_LockCallBack(ref UserMgr_user_lock_t user_lock)
{
try
{
if (UserListLockDataEvent != null)
UserListLockDataEvent(user_lock);
}
catch
{
}
}
private static void UserManager_DefaultSettingCallBack(int status)
{
try
{
if (UserListDefautSettingDataEvent != null)
UserListDefautSettingDataEvent(status);
}
catch
{
}
}
private static void UserManager_DelUserCallBack(ref UserMgr_user_del_t user_del)
{
try
{
if (UserListDeleteDataEvent != null)
UserListDeleteDataEvent(user_del);
}
catch
{
}
}
private static void UserManager_ModifyUserCallBack(ref UserMgr_user_modify_t user_mod)
{
try
{
if (UserListModifyUserDataEvent != null)
UserListModifyUserDataEvent(user_mod);
}
catch
{
}
}
private static void UserManager_ModifyInfoCallBack(ref UserMgr_user_info_t user_info)
{
try
{
if (UserListModifyInfoDataEvent != null)
UserListModifyInfoDataEvent(user_info);
}
catch
{
}
}
private static void UserManager_AddUserCallBack(ref UserMgr_user_add_t user_add)
{
try
{
if (UserListAddDataEvent != null)
UserListAddDataEvent(user_add);
}
catch
{
}
}
private static void UserManager_NewUserCallBack(IntPtr pBuffer)
{
try
{
if (pBuffer != IntPtr.Zero)
{
UserMgr_user_info_t user_info = (UserMgr_user_info_t)Marshal.PtrToStructure(pBuffer, typeof(UserMgr_user_info_t));
if (UserListNewDataEvent != null)
UserListNewDataEvent(user_info);
}
}
catch
{
}
}
private static void UserManager_DebugCallback(int type, StringBuilder pMessage)
{
try
{
}
catch
{
}
}
private static void UserManager_VersionCallback(StringBuilder version)
{
try
{
if (UserListGetVersionDataEvent != null)
UserListGetVersionDataEvent(version);
}
catch
{
}
}
#endregion
}
}

View File

@ -13,12 +13,6 @@
멀티형 2~6열 컨베어 계량기
*/
@ Ver 8.7.0 by CJY
- 2026.02.03
- Ver 8.6.0 Modify
- Framework : SmartX Framework V3.1.1(update: 2019.03.21)
- Pay Service 추가
@ Ver 8.6.0 by LSJ
- 2026.01.13
- Ver 8.5.0 Modify