commit 973524ee779df3814587b9822656f4977a676a30 Author: Arin(asus) Date: Tue Nov 26 20:15:16 2024 +0900 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7e78b6a --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +*.suo +*.user +*.pdb +bin +obj +desktop.ini +.vs +packages +*.patch +/Project/SourceSetup.exe +/Setup_BK +/Setup_HWCA1 +/Setup_HWCA4 diff --git a/Alert.ico b/Alert.ico new file mode 100644 index 0000000..6223315 Binary files /dev/null and b/Alert.ico differ diff --git a/ArinLog.Net4.dll b/ArinLog.Net4.dll new file mode 100644 index 0000000..be589fc Binary files /dev/null and b/ArinLog.Net4.dll differ diff --git a/ArinSetting.Net4.dll b/ArinSetting.Net4.dll new file mode 100644 index 0000000..699d439 Binary files /dev/null and b/ArinSetting.Net4.dll differ diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000..5c5bf6f --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,2 @@ +240925 chi Æ®·»µåºä Ä¿¼­°ü·Ã ¿À·ù ¼öÁ¤ +240925 chi initial commit \ No newline at end of file diff --git a/DLL/Winsock Orcas.dll b/DLL/Winsock Orcas.dll new file mode 100644 index 0000000..10ccd6e Binary files /dev/null and b/DLL/Winsock Orcas.dll differ diff --git a/DLL/arCommSM.dll b/DLL/arCommSM.dll new file mode 100644 index 0000000..7c99c16 Binary files /dev/null and b/DLL/arCommSM.dll differ diff --git a/DLL/arCommUtil.dll b/DLL/arCommUtil.dll new file mode 100644 index 0000000..593a165 Binary files /dev/null and b/DLL/arCommUtil.dll differ diff --git a/DLL/arMasterK.dll b/DLL/arMasterK.dll new file mode 100644 index 0000000..835759c Binary files /dev/null and b/DLL/arMasterK.dll differ diff --git a/JdModbus/Attributes/CoilAttribute.cs b/JdModbus/Attributes/CoilAttribute.cs new file mode 100644 index 0000000..cae73ce --- /dev/null +++ b/JdModbus/Attributes/CoilAttribute.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JdModbusV1.Attributes; + +public class CoilAttribute(ushort address) : ModbusAddressAttribute(address) +{ +} diff --git a/JdModbus/Attributes/HoldingAttribute.cs b/JdModbus/Attributes/HoldingAttribute.cs new file mode 100644 index 0000000..55b7b11 --- /dev/null +++ b/JdModbus/Attributes/HoldingAttribute.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JdModbusV1.Attributes; + +public class HoldingAttribute(ushort address) : ModbusAddressAttribute(address) +{ +} diff --git a/JdModbus/Attributes/InputAttribute.cs b/JdModbus/Attributes/InputAttribute.cs new file mode 100644 index 0000000..7bd27a1 --- /dev/null +++ b/JdModbus/Attributes/InputAttribute.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JdModbusV1.Attributes; + +public class InputAttribute(ushort address) : ModbusAddressAttribute(address) +{ +} diff --git a/JdModbus/Attributes/ModbusAddressAttribute.cs b/JdModbus/Attributes/ModbusAddressAttribute.cs new file mode 100644 index 0000000..35ee268 --- /dev/null +++ b/JdModbus/Attributes/ModbusAddressAttribute.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JdModbusV1.Attributes; + +[AttributeUsage(AttributeTargets.Field)] +public class ModbusAddressAttribute(ushort address) : Attribute +{ + public ushort Address { get; } = address; +} diff --git a/JdModbus/Configures/RtuConfigure.cs b/JdModbus/Configures/RtuConfigure.cs new file mode 100644 index 0000000..718e0d8 --- /dev/null +++ b/JdModbus/Configures/RtuConfigure.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.IO.Ports; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +//namespace JdModbusV1.Models; +namespace JdModbusV1.Configures; + +public record RtuConfigure +{ + public int BaudRate { get; set; } = 9600; + public Parity Parity { get; set; } = Parity.None; + public StopBits StopBits { get; set; } = StopBits.One; + public int DataBits { get; set; } = 8; +} diff --git a/JdModbus/Configures/TcpConfigure.cs b/JdModbus/Configures/TcpConfigure.cs new file mode 100644 index 0000000..aa007c1 --- /dev/null +++ b/JdModbus/Configures/TcpConfigure.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JdModbusV1.Configures; + +public record TcpConfigure(string Ip, int Port) +{ +} diff --git a/JdModbus/JdModbus.cs b/JdModbus/JdModbus.cs new file mode 100644 index 0000000..276c110 --- /dev/null +++ b/JdModbus/JdModbus.cs @@ -0,0 +1,151 @@ +using JdModbusV1.Attributes; +using JdModbusV1.Configures; +//using JdModbusV1.Models; +using NModbus; +using NModbus.Serial; +using System.IO.Ports; +using System.Net.Sockets; + +namespace JdModbusV1; + +public class JdModbus : IDisposable +{ + + + private readonly RtuConfigure? _rtuConfigure; + private readonly TcpConfigure? _tcpConfigure; + private IModbusMaster? _client; + + private readonly string _comPort; + public JdModbus(string comPort, RtuConfigure? rtuConfigure) + { + _comPort = comPort; + _rtuConfigure = rtuConfigure ?? new(); + + } + + public JdModbus(string ip, int port = 502) + { + _tcpConfigure = new(ip, port); + } + + public void Connect() + { + if (_client != null) return; + + if (_rtuConfigure != null) + { + var serialPort = new SerialPort(_comPort) + { + BaudRate = _rtuConfigure.BaudRate, + Parity = _rtuConfigure.Parity, + StopBits = _rtuConfigure.StopBits, + DataBits = _rtuConfigure.DataBits, + }; + + serialPort.Open(); + _client = new ModbusFactory().CreateRtuMaster(serialPort); + return; + } + + if (_tcpConfigure != null) + { + var tcpClient = new TcpClient(_tcpConfigure.Ip, _tcpConfigure.Port); + _client = new ModbusFactory().CreateMaster(tcpClient); + return; + } + } + + + public bool ReadCoil(TAddress address, byte slave=1) where TAddress : Enum + { + ThrowIfNullClient(); + + var attr = GetAddressAttribute(address); + var result = _client.ReadCoils(slave, attr.Address, 1); + + return result[0]; + } + + public void WriteCoil(TAddress address, bool value, byte slave = 1) where TAddress : Enum + { + ThrowIfNullClient(); + + var attr = GetAddressAttribute(address); + _client.WriteSingleCoil(slave, attr.Address, value); + } + + public void WriteCoils(TAdddress address, bool[] value, byte slave = 1) where TAdddress : Enum + { + ThrowIfNullClient(); + + var attr = GetAddressAttribute (address); + _client.WriteMultipleCoils(slave, attr.Address, value); + } + + public bool[] ReadCoils(TAddress address, ushort numOfCoils, byte slave=1) where TAddress : Enum + { + ThrowIfNullClient(); + + var attr = GetAddressAttribute(address); + var result = _client.ReadCoils(slave, attr.Address, numOfCoils); + + return result; + } + + public ushort ReadHoldingRegister(TAddress address, byte slave = 1) where TAddress : Enum + { + ThrowIfNullClient(); + + var attr = GetAddressAttribute(address); + var result = _client.ReadHoldingRegisters(slave, attr.Address, 1); + + return result[0]; + } + + public ushort[] ReadHoldingRegisters(TAddress address, ushort numOfCoils, byte slave = 1) where TAddress : Enum + { + ThrowIfNullClient(); + + var attr = GetAddressAttribute(address); + var result = _client.ReadHoldingRegisters(slave, attr.Address, numOfCoils); + + return result; + } + + public void WriteHoldingRegister(TAddress address, ushort value, byte slave = 1) where TAddress : Enum + { + ThrowIfNullClient(); + + var attr = GetAddressAttribute(address); + _client.WriteSingleRegister(slave, attr.Address, value); + } + + public void WriteHoldingRegisters(TAddress address, ushort[] value, byte slave = 1) where TAddress : Enum + { + ThrowIfNullClient(); + + var attr = GetAddressAttribute(address); + _client.WriteMultipleRegisters(slave, attr.Address, value); + } + + private static TAttribute GetAddressAttribute(Enum value) where TAttribute : ModbusAddressAttribute + { + var fieldInfo = value.GetType().GetField(value.ToString()); + var attribute = fieldInfo.GetCustomAttributes(typeof(TAttribute), false); + + if (attribute.Length == 0) + throw new ArgumentException($"`{value}`는 {nameof(ModbusAddressAttribute)} ì†ì„±ì„ 지정하지 않았습니다."); + + return (TAttribute)attribute[0]; + } + + public void Dispose() => _client?.Dispose(); + + + private void ThrowIfNullClient() + { + if (_client == null) + throw new NullReferenceException("Modbus Clientê°€ 초기화 ë˜ì§€ 않았습니다."); + } +} diff --git a/JdModbus/JdModbusV1.csproj b/JdModbus/JdModbusV1.csproj new file mode 100644 index 0000000..c113183 --- /dev/null +++ b/JdModbus/JdModbusV1.csproj @@ -0,0 +1,14 @@ + + + + net8.0 + enable + enable + + + + + + + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..bfc4341 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +VMS 2016 + GM10 Visual Basic .Net C# Port Version \ No newline at end of file diff --git a/Smiley.ico b/Smiley.ico new file mode 100644 index 0000000..ecd1ce0 Binary files /dev/null and b/Smiley.ico differ diff --git a/Sub/CommData/CommData.csproj b/Sub/CommData/CommData.csproj new file mode 100644 index 0000000..b5bf931 --- /dev/null +++ b/Sub/CommData/CommData.csproj @@ -0,0 +1,55 @@ + + + + + Debug + AnyCPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623} + Library + Properties + VarData + VarData + v4.8 + 512 + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + IDE1006,IDE0019,IDE1005,IDE0031 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Sub/CommData/Enum.cs b/Sub/CommData/Enum.cs new file mode 100644 index 0000000..df9b787 --- /dev/null +++ b/Sub/CommData/Enum.cs @@ -0,0 +1,314 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace COMM +{ + + public enum EALAMTYPE + { + 그룹설정ì„따름, + 개별알람, + 개별알람ìžë™, + 사용안함 + } + + public enum EALAMRAISETYPE + { + HIGH_OFF = 0, + HIGH_ON = 1, + LOW_OFF = 2, + LOW_ON = 3, + A1_ON = 4, + A1_OFF = 5, + A2_ON = 6, + A2_OFF = 7, + OVER_ON = 8, + OVER_OFF = 9, + } + + public enum eDataSource + { + Measure, + SLT + } + public enum eVldResult + { + notset= 0, + Fail , + Pass, + Error, + Offline, + NoLotInfo, + CalData, + } + public enum EJob + { + OfflineOff_BTM=0, + OfflineOn_TOP, + Local_BTM, + Local_TOP, + Remote, + RepeatOff_BTM, + RepeatOn_Top, + None=999, + } + + public enum ESMStep : byte + { + //예약ì˜ì—­(1) + NOTSET = 0, + INIT = 1, + IDLE = 10, + ZAGING, //Zì¶• 모션 aging + + RUN = 50, + TEST, + + RUN_MGZ_LOADER, + RUN_MGZ_UNLOADER, + + RUN_PICKER_LOADER, + RUN_PICKER_UNLOADER, + + RUN_PUSHER_LOADER, + RUN_PUSHER_UNLOADER, + + + RUN_TABLE, + //RUN_TABLE_WITH_PICKER, + + + RUN_MGZ_OUT_UNLOADER, + RUN_MGZ_OUT_LOADER, + RUN_MGZ_IN_UNLOADER, + RUN_MGZ_IN_LOADER, + + + + + RUN_SAVEDATA, + + //예약ì˜ì—­(2) + EMERGENCY = 200, + HOME_FULL = 201, + HOME_DELAY, + + CLOSING = 250, + CLOSEWAIT = 251, + CLOSED = 252, + + //ì‚¬ìš©ìž ì˜ì—­ + FINISH = 100, + + HOME_QUICK, + PAUSE, + WAITSTART, + ERROR, + HOME_CONFIRM, + } + + public enum eStatusMesage : byte + { + LoaderMGZ = 0, + UnLoaderMGZ, + LoaderPicker, + UnLoaderPicker, + Sensor, + Main, + } + public enum eILock + { + EMG = 0, + PAUSE, + HOMESET, + //HOMEVALID, + DOOR, + DISABLE, + Z_POS, + Y_POS, + X_POS, + PCB, + SAFTYAREA, + + LEFTPICKER, + RIGHTPICKER, + LOADERPUSHER, + STOPPER, + UNLOADERPUSHER, + PCBOUT, + PRESSDOWN, + } + + + public enum eBuzzer + { + Alarm, + Finish, + All, + } + + public enum eWorkMZ + { + Loader = 0, + UnLoader + } + + + public enum eWaitType : byte + { + Normal = 0, + } + + + public enum StepResult + { + Wait = 0, + Complete, + Error, + Cancel, + } + + public enum eResult : byte + { + NOERROR, + EMERGENCY, + SAFTY, + SETUP, + HARDWARE, + DEVELOP, + VISION, + SENSOR, + SOFTWARE, + MOTION, + OPERATION, + COMMUNICATION, + TIMEOUT, + } + + + public enum eECode : byte + { + + NOTSET = 0, + EMERGENCY, + NOMODELV,//ìž‘ì—…ëª¨ë¸ + NOMODELM,//ëª¨ì…˜ëª¨ë¸ + DOORSAFTY, + AREASAFTY, + MOT_HSET, + MOT_SVOFF, + MOT_HSEARCH, + MOT_CMD, + HOME_TIMEOUT, + AIRNOOUT, + NOFUNCTION, + DOOFF,//출력 off + DOON,//출력 on + DIOFF,//ìž…ë ¥off + DION,//ìž…ë ¥ on + MESSAGE_INFO, + MESSAGE_ERROR, + AZJINIT, + USER_STOP, + USER_STEP, + SEP_MOT_HOME, + SECS_NOTONLINE, + MODEL_MISSMATCH, + + /// + /// 로ë”측 Y,Zê°€ 정위치가 아닙니다. + /// + INITPOS_LOADER_MAGAZIN = 100, + INITPOS_UNLOADER_MAGAZIN, + INITPOS_LOADER_PICKER, + INITPOS_UNLOADER_PICKER, + + INITPOS_LOADER_PUSHER, + INITPOS_UNLOADER_PUSHER, + + TENKEY_STOP, + UNLOADER_RAIL_PCBDETECT, + LOADER_RAIL_PCBDETECT, + + UNLOADER_RAIL_OUT_PCBDETECT, + LOADER_RAIL_OUT_PCBDETECT, + + LOADER_MGZ_OUT_FULL, + UNLOADER_MGZ_OUT_FULL, + + LOADER_RAIL_EMPTY, + UNLOADER_RAIL_EMPTY, + + LOADER_PCBRAILOUT, + UNLOADER_PCBRAILOUT, + + LOADER_MGZ_DETECT, + UNLOADER_MGZ_DETECT, + LOADER_MGZ_CLAMPDOWN, + UNLOADER_MGZ_CLAMPDOWN, + + LOADER_MGZ_CLAMPUP, + UNLOADER_MGZ_CLAMPUP, + + LOADER_PICKER_PCBDETECT, + UNLOADER_PICKER_PCBDETECT, + + Y_MGZ_LOADER_POSITION, + Y_MGZ_UNLOADER_POSITION, + + LOADER_PUSHER_NOBACK, + LOADER_OVERLOAD, + UNLOADER_OVERLOAD, + + SIDE_CLAMP_NOTOPEN, + ENDCAP_LOADER, + TABLE_NOT_READY, + TABLE_VAC_ERROR, + NOBARCODE, + + LOADER_MGZ_CLAMPDOWN_HOME, + UNLOADER_MGZ_CLAMPDOWN_HOME, + ENDCAP_UNLOADER, + + LOADER_MZ_NOTREADY, + UNLOADER_MZ_NOTREADY, + STRIP_NOT_DETECT, + + LOADER_MGZ_NOT_DETECT, + UNLOADER_MGZ_NOT_DETECT, + DOORSAFTY_REAL, + AREASAFTY_REAL, + MOT_POWEROFF, + MOT_ALM, + + LOADER_RAIL_NOPCB, + UNLOADER_RAIL_NOPCB, + + LOADER_RAIL_IMCOMPLETE_PCB, + UNLOADER_RAIL_IMCOMPLETE_NOPCB, + + SECS_RECVLOT_ERROR, + SECS_RECVLOT_ERROR_FORMAT, + + GETTHICK_FROMDB, + LOWAIR, + + LOADER_MGZ_CLAMPSENSOR_ERROR, + UNLOADER_MGZ_CLAMPSENSOR_ERROR, + + + CREDIT = 255, + + } + + public enum eNextStep : byte + { + NOTHING = 0, + PAUSE, + PAUSENOMESAGE, + ERROR + } + +} diff --git a/Sub/CommData/EnumDIO.cs b/Sub/CommData/EnumDIO.cs new file mode 100644 index 0000000..07127b4 --- /dev/null +++ b/Sub/CommData/EnumDIO.cs @@ -0,0 +1,180 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace COMM +{ + public enum EDIName : byte + { + EMERGENCY_F1 = 0x00, + EMERGENCY_F2, + EMERGENCY_R1, + EMERGENCY_R2, + + AIR_DETECT, + BUTTON_AIR, + BUTTON_START, + BUTTON_STOP, + BUTTON_RESET, + + DOOR_FC, + DOOR_FR, + DOOR_FL, + DOOR_RC, + DOOR_RL, + DOOR_RR, + + Loader_MGZ_Check = 0x10, + Loader_MGZ_Arrive, + Loader_Elevator_MGZ_Check, + Loader_MGZ_Out, + Loader_MGZ_Gripper_MGZ_Check1, + Loader_MGZ_Gripper_MGZ_Check2, + Loader_MGZ_Clamp_Down, + Loader_MGZ_Clamp_Up, + Loader_MGZ_Clamp_Bwd, + Loader_MGZ_Clamp_Fwd, + Loader_Pusher_Back, + Loader_Pusher_Fwd, + Loader_Pusher_Overload, + Loader_PCB_MGZ_Out, + Index_Gripper_Open, + Index_Gripper_Close, + + Loader_MGZ_EndCap_Check = 0x20, + Loader_Rail_PCB_CheckL, + Loader_Rail_PCB_CheckM, + Loader_Rail_PCB_CheckR, + PickerL_Close, + PickerL_Open, + Picker1_PCB_Check1, + Picker1_PCB_Check2, + PickerU_Close, + PickerU_Open, + Picker2_PCB_Check1, + Picker2_PCB_Check2, + + SaftyArea_Left = 0x2E, + SaftyArea_Right, + + UnLoader_Rail_PCB_CheckL = 0x30, + UnLoader_Rail_PCB_CheckM, + UnLoader_Rail_PCB_CheckR, + UnLoader_Pusher_Overload, + Unloader_MGZ_Check, + UnLoader_MGZ_Arrive, + UnLoader_Elevator_MGZ_Check, + UnLoader_MGZ_Out, + UnLoader_MGZ_Gripper_MGZ_Check1, + UnLoader_MGZ_Gripper_MGZ_Check2, + UnLoader_MGZ_Clamp_Up, + UnLoader_MGZ_Clamp_Down, + UnLoader_MGZ_Clamp_Fwd, + UnLoader_MGZ_Clamp_Bwd, + UnLoader_PCB_MGZ_Out, + UnLoader_MGZ_EndCap_Check = 0x3F, + + Table_Vac_Check = 0x40, + Side_Clamp1_Close = 0x43, + Side_Clamp1_Open, + Side_Clamp2_Close, + Side_Clamp2_Open, + + Glass_Press1_Up = 0x48, + Glass_Press1_Down, + Glass_Press2_Up, + Glass_Press2_Down, + + SR2000_OK = 0x04D, + SR2000_ER, + SR2000_BS, + + CL3000U_RUN=0x50, + CL3000U_ALM, + CL3000U_ERR, + + CL3000D_RUN = 0x54, + CL3000D_ALM, + CL3000D_ERR, + + Loader_MGZ_Stopper_Up = 0x57, + Loader_MGZ_Stopper_Down, + UnLoader_MGZ_Stopper_Up, + UnLoader_MGZ_Stopper_Down + + + } + + public enum EDOName : byte + {//output + + EMERGENCY_F1 = 0x000, + EMERGENCY_F2 = 0x001, + EMERGENCY_R1 = 0x002, + EMERGENCY_R2 = 0x003, + + BUTTON_AIR = 0x005, + BUTTON_START = 0x006, + BUTTON_STOP = 0x007, + BUTTON_RESET = 0x008, + AIR_DETECT = 0x009, + BUZZER_ERROR = 0x00A, + + TOWER_GRN = 0x00B, + TOWER_YEL = 0x00C, + TOWER_RED = 0x00D, + + ROOM_LIGHT = 0x00F, + + Loader_MGZ_Clamp_Up = 0x10, + Loader_MGZ_Clamp_Down, + Loader_MGZ_Clamp_Fwd, + Loader_MGZ_Clamp_Bwd, + Loader_Pusher_Fwd, + Index_Gripper_Close, + PickerL_Open, + PCB_Side_Clamp_Close, + PCB_Glass_Press_Plate_Down, + PickerU_Open = 0x19, + Unloader_MGZ_Clamp_Up, + UnLoader_MGZ_Clamp_Down, + UnLoader_MGZ_Clamp_Fwd, + Unloader_MGZ_Clamp_Bwd, + Table_Eject1_On, + Table_Vacuum1_On, + + Loader_MGZ_InMotor_Run = 0x20, + Loader_MGZ_OutMotor_Run, + UnLoader_MGZ_InMotor_Run, + UnLoader_MGZ_OutMotor_Run, + + MOTOR_01_POWER_OFF = 0x024, + MOTOR_02_POWER_OFF, + MOTOR_03_POWER_OFF, + MOTOR_04_POWER_OFF, + MOTOR_05_POWER_OFF, + MOTOR_06_POWER_OFF, + MOTOR_07_POWER_OFF, + MOTOR_08_POWER_OFF, + MOTOR_09_POWER_OFF, + MOTOR_10_POWER_OFF, + MOTOR_11_POWER_OFF, + + CL_3000L_POWER = 0x30, + CL_3000R_POWER, + + CL_3000L_ZERO1 = 0x33, + CL_3000L_ZERO2, + + CL_3000R_ZERO1 = 0x35, + CL_3000R_ZERO2, + + Loader_MGZ_Stopper_Up=0x38, + UnLoader_MGZ_Stopper_Up, + + SR2000_TRIGGER = 0x3F, + } + + +} diff --git a/Sub/CommData/EnumMot.cs b/Sub/CommData/EnumMot.cs new file mode 100644 index 0000000..f2e0b49 --- /dev/null +++ b/Sub/CommData/EnumMot.cs @@ -0,0 +1,43 @@ +#pragma warning disable IDE1006 // 명명 ìŠ¤íƒ€ì¼ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; + +namespace COMM +{ + public enum eAxis : byte + { + + [Category("Y"), Description("Loader Y - Front/Back")] + LOADER_FRONTBACK = 0, + + [Category("Z"), Description("Loader Z - Up/Down")] + LOADER_UPDOWN, + [Category("X"), Description("Loader Pusher X - Left/Right")] + LOADER_PUSHER, + [Category("Z"), Description("Loader Picker Z - Up/Down")] + LPICKER_UPDOWN, + + [Category("Z"), Description("UnLoader Picket Z - Up/Down")] + UPICKER_UPDOWN, + [Category("X"), Description("Unloader Pusher X - Left/Right")] + UNLOADER_PUSHER, + + [Category("Y"), Description("UnLoader Y - Front/Back")] + UNLOADER_FRONTBACK, + [Category("Z"), Description("UnLoader Z - Up/Down")] + UNLOADER_UPDOWN, + [Category("X"), Description("Loader Picker X - Left/Right")] + LPICKER_LEFTRIGHT, + [Category("Y"), Description("Glass table Y - Front/Back")] + TABLE, + + [Category("X"), Description("UnLoader Picket X - Left/Right")] + UPICKER_LEFTRIGHT, + [Description("미사용 위치")] + SPARE, + + } +} diff --git a/Sub/CommData/EnumVAR.cs b/Sub/CommData/EnumVAR.cs new file mode 100644 index 0000000..d12ccf0 --- /dev/null +++ b/Sub/CommData/EnumVAR.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace COMM +{ + #region "VAR DATA" + public enum EVarI32 + { + None = 0, + DevConnectSeq, + CONNTRY_PLC, + CONNTRY_INDICATOR, + ChargeWaitSec, + + DataIndex, + } + + public enum EVarDBL + { + + } + + public enum EVarBool + { + //comm area start(0~31) + None = 0, + INIT_SYSTEM, + SMRUN, + DebugMode, + SQLCONN, + RESUMEJOB, + USERSTEP, + } + + + public enum EVarString + { + MCStatus, + JobMode, + } + + public enum EVarTime + { + MOTIONLINK, + AREALTIME, + AREARTIME, + LIVEVIEWR, + CONNTRY_PLC, + CONNTRY_INDICATOR, + JOB_START, + JOB_END, + JOB_REFRESH, + + } + #endregion + + + +} diff --git a/Sub/CommData/Enum_MotPosition.cs b/Sub/CommData/Enum_MotPosition.cs new file mode 100644 index 0000000..10ca25f --- /dev/null +++ b/Sub/CommData/Enum_MotPosition.cs @@ -0,0 +1,199 @@ +using System.ComponentModel; + +namespace Project +{ + //public enum EDefLoc : byte + //{//í¬ì§€ì…˜ 현재 ì¶•ì´ ì–´ë””ìžˆëŠ”ì§€ ìƒíƒœê°’ + // UNKNOWN = 0, + // LIMITP, + // LIMITN, + // HOME, + // ERROR, + //} + + public enum EYLoader : byte + { + //í¬ì§€ì…˜ 현재 ì¶•ì´ ì–´ë””ìžˆëŠ”ì§€ ìƒíƒœê°’ + UNKNOWN = 0, + LIMITP, + LIMITN, + HOME, + ERROR, + + [Description("대기위치")] + A00_READY = 50, + A01_MGZ_GRIP_START, + A02_MGZ_GRIP_CLOSE, + A03_MGZ_ENDCAP_CHECK, + A04_MGZ_WORKING_FIRST, + A05_MGZ_WORKING_PITCH, + A06_MGZ_OUT_START, + A07_MGZ_OUT_END, + } + public enum EZLoader : byte + { + //í¬ì§€ì…˜ 현재 ì¶•ì´ ì–´ë””ìžˆëŠ”ì§€ ìƒíƒœê°’ + UNKNOWN = 0, + LIMITP, + LIMITN, + HOME, + ERROR, + + [Description("대기위치")] + A00_READY = 50,// + A01_MGZ_GRIP_START, + A02_MGZ_GRIP_UP, + A03_MGZ_ENDCAP_CHECK, + A04_MGZ_WORKING_FIRST, + A05_MGZ_WORKING_PITCH, + A06_MGZ_OUT, + A07_MGZ_OUT_DOWN, + } + + + + //public enum EYUnLoader : byte + //{ + // //í¬ì§€ì…˜ 현재 ì¶•ì´ ì–´ë””ìžˆëŠ”ì§€ ìƒíƒœê°’ + // UNKNOWN = 0, + // LIMITP, + // LIMITN, + // HOME, + // ERROR, + + // [Description("대기위치")] + // A00_READY = 50, + // A01_MGZ_GRIP_START, + // A02_MGZ_GRIP_CLOSE, + // A03_MGZ_WORKING_FIRST, + // A04_MGZ_WORKING_PITCH, + // A05_MGZ_OUT_START, + // A06_MGZ_OUT_END, + + //} + //public enum EZUnLoader : byte + //{ + // //í¬ì§€ì…˜ 현재 ì¶•ì´ ì–´ë””ìžˆëŠ”ì§€ ìƒíƒœê°’ + // UNKNOWN = 0, + // LIMITP, + // LIMITN, + // HOME, + // ERROR, + + // [Description("대기위치")] + // A00_READY = 50, + // A01_MGZ_GRIP_START, + // A02_MGZ_GRIP_UP, + // A03_MGZ_WORKING_FIRST, + // A04_MGZ_WORKING_PITCH, + // A05_MGZ_OUT, + // A06_MGZ_OUT_DOWN, + //} + + public enum EXLoaderPusher : byte + { + //í¬ì§€ì…˜ 현재 ì¶•ì´ ì–´ë””ìžˆëŠ”ì§€ ìƒíƒœê°’ + UNKNOWN = 0, + LIMITP, + LIMITN, + HOME, + ERROR, + + [Description("대기위치")] + A00_READY = 50, + A01_BARCODE_END, + A02_PICKON , + A03_PICKOFF, + A04_PICKOFFBACK, + } + + public enum EXUnLoaderPusher : byte + { + //í¬ì§€ì…˜ 현재 ì¶•ì´ ì–´ë””ìžˆëŠ”ì§€ ìƒíƒœê°’ + UNKNOWN = 0, + LIMITP, + LIMITN, + HOME, + ERROR, + + [Description("대기위치")] + A00_READY = 50, + A01_PUSH_START, + A02_PUSH_SLOW_START, + A03_PUSH_SLOW_END, + A04_PUSH_END, + } + public enum EXLoaderPicker : byte + { + //í¬ì§€ì…˜ 현재 ì¶•ì´ ì–´ë””ìžˆëŠ”ì§€ ìƒíƒœê°’ + UNKNOWN = 0, + LIMITP, + LIMITN, + HOME, + ERROR, + + [Description("대기위치")] + A00_READY = 50, + A01_PICKON, + A02_PICKOFF, + } + public enum EZLoaderPicker : byte + { + //í¬ì§€ì…˜ 현재 ì¶•ì´ ì–´ë””ìžˆëŠ”ì§€ ìƒíƒœê°’ + UNKNOWN = 0, + LIMITP, + LIMITN, + HOME, + ERROR, + + [Description("대기위치")] + A00_READY = 50, + A01_PICKON, + A02_PICKOFF, + } + + + public enum EXUnLoaderPicker : byte + { + //í¬ì§€ì…˜ 현재 ì¶•ì´ ì–´ë””ìžˆëŠ”ì§€ ìƒíƒœê°’ + UNKNOWN = 0, + LIMITP, + LIMITN, + HOME, + ERROR, + + [Description("대기위치")] + A00_READY = 50, + A01_PICKON, + A02_PICKOFF, + } + + public enum EZUnLoaderPicker : byte + { + //í¬ì§€ì…˜ 현재 ì¶•ì´ ì–´ë””ìžˆëŠ”ì§€ ìƒíƒœê°’ + UNKNOWN = 0, + LIMITP, + LIMITN, + HOME, + ERROR, + + [Description("대기위치")] + A00_READY = 50, + A01_PICKON, + A02_PICKOFF, + } + public enum EYGlass : byte + { + //í¬ì§€ì…˜ 현재 ì¶•ì´ ì–´ë””ìžˆëŠ”ì§€ ìƒíƒœê°’ + UNKNOWN = 0, + LIMITP, + LIMITN, + HOME, + ERROR, + + [Description("대기위치")] + A00_READY = 50, + A01_MEASURE, + } + +} \ No newline at end of file diff --git a/Sub/CommData/Properties/AssemblyInfo.cs b/Sub/CommData/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..8d44db4 --- /dev/null +++ b/Sub/CommData/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// ì–´ì…ˆë¸”ë¦¬ì— ëŒ€í•œ ì¼ë°˜ 정보는 ë‹¤ìŒ íŠ¹ì„± ì§‘í•©ì„ í†µí•´ +// 제어ë©ë‹ˆë‹¤. 어셈블리와 ê´€ë ¨ëœ ì •ë³´ë¥¼ 수정하려면 +// ì´ëŸ¬í•œ 특성 ê°’ì„ ë³€ê²½í•˜ì„¸ìš”. +[assembly: AssemblyTitle("VarData")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("VarData")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisibleì„ false로 설정하면 ì´ ì–´ì…ˆë¸”ë¦¬ì˜ í˜•ì‹ì´ COM 구성 ìš”ì†Œì— +// 표시ë˜ì§€ 않습니다. COMì—서 ì´ ì–´ì…ˆë¸”ë¦¬ì˜ í˜•ì‹ì— 액세스하려면 +// 해당 형ì‹ì— 대해 ComVisible íŠ¹ì„±ì„ true로 설정하세요. +[assembly: ComVisible(false)] + +// ì´ í”„ë¡œì íŠ¸ê°€ COMì— ë…¸ì¶œë˜ëŠ” 경우 ë‹¤ìŒ GUID는 typelibì˜ ID를 나타냅니다. +[assembly: Guid("14e8c9a5-013e-49ba-b435-efefc77dd623")] + +// ì–´ì…ˆë¸”ë¦¬ì˜ ë²„ì „ 정보는 ë‹¤ìŒ ë„¤ 가지 값으로 구성ë©ë‹ˆë‹¤. +// +// 주 버전 +// ë¶€ 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 ê°’ì„ ì§€ì •í•˜ê±°ë‚˜ 아래와 ê°™ì´ '*'를 사용하여 빌드 번호 ë° ìˆ˜ì • 번호를 +// 기본값으로 í•  수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Sub/WinsockOracs/About.txt b/Sub/WinsockOracs/About.txt new file mode 100644 index 0000000..b1678af --- /dev/null +++ b/Sub/WinsockOracs/About.txt @@ -0,0 +1,23 @@ +Winsock Orcas is the result of refining a project that started when I graduated from VB6 to VB.NET 2003. + +.NET no longer supported the old Winsock control that had been so easy to use in VB6. Instead they gave us something with much more power, but also much more complexity: the Socket. + +It took me a bit of time to figure the socket out, but when I did I decided to create a wrapper that worked just like the old control I was familiar with - making sockets much easier. + +The first version was wrought with bugs and wasn't thread-safe. When VS 2005 came out, and revealed even more functions with regards to the socket - I resolved to make a new version. + +That was Winsock 2005. It was thread-safe (to a point), and fixed the major bugs of the previous version. It even had UDP support. + +In April of 2007 I started work on Winsock 2007. Due to a project I was working on at the time, I was looking into Remoting to synchronize an object between server/client. I decided Remoting wasn't for my project (couldn't implement blacklist), thus a new version of Winsock was born. + +Winsock 2007 enabled synchronizing of objects (via BinaryFormatter), making the Send/Get routines simpler. The thread-safe events have been improved, as has UDP support. IPv6 support was added making it much easier to use with Vista. + +Winsock Orcas (version 4.0.0) was made just to keep this going. It had come to my attention that VS2008 had problems compiling the code for previous version, so I made this version. This version streamlines the code, making it simpler to read (mainly by removing the WinsockMonitor class), and also adds in some Generics support on the Get/Peek methods to do automatic conversion to the type you want (watch out, you could cause exceptions for casting to the wrong type). + +All in all I've enjoyed creating this component, and hope others find it as helpful as I have. + +To report bugs please visit: http://www.k-koding.com/ and use the bug tracker. + +Thanks for using it, + +Chris Kolkman \ No newline at end of file diff --git a/Sub/WinsockOracs/AsyncSocket.vb b/Sub/WinsockOracs/AsyncSocket.vb new file mode 100644 index 0000000..4d2c512 --- /dev/null +++ b/Sub/WinsockOracs/AsyncSocket.vb @@ -0,0 +1,1247 @@ +Option Strict On + +Imports System.Net +Imports System.Net.Sockets +Imports System.Threading + +''' +''' A class that encapsulates all the raw functions of the System.Net.Sockets.Socket +''' +Public Class AsyncSocket + + Private myParent As IWinsock ' The parent Winsock - allows access to properties and event raising + Private mSock1 As Socket ' for IPv4 (listening) or both IPv4 and IPv6 (connections) + Private mSock2 As Socket ' for IPv6 (listening) only + Private byteBuffer() As Byte ' Stores the incoming bytes waiting to be processed + Private incBufferSize As Integer = 8192 ' The buffer size of the socket + Private _buff As ByteBufferCol ' Temporary byte buffer - used while an object is being assembled + Private _closing As Boolean = False ' Prevents the Close() method from being run while it already running + Private qBuffer As Queue ' The Buffer Queue - where objects wait to be picked up by the Get() method + Private phProcessor As PacketHeader ' The PacketHeader processor - looks for and reads the packet header added to the byte array + Private sBufferMutex As New Mutex() + Private sendBuffer As Deque ' The Sending Buffer Queue - where objects wait to be sent. + Private thdSendLoop As Thread ' Used to send everything in the sendBuffer + Private lckSendLoop As Object ' Used for a syncronized lock on the SendLoop thread + Private bIsSending As Boolean ' Used internally to tell if a sending loop is in progress. + + Public Sub New(ByRef parent As IWinsock) + Try + myParent = parent + phProcessor = New PacketHeader + qBuffer = New Queue + _buff = New ByteBufferCol + sendBuffer = New Deque + lckSendLoop = New Object() + ReDim byteBuffer(incBufferSize) + Catch ex As Exception + SharedMethods.RaiseError(myParent, "Unable to initialize the AsyncSocket.") + End Try + End Sub + + ''' + ''' Gets a value containing the remote IP address. + ''' + Protected Friend ReadOnly Property RemoteIP() As String + Get + Dim rEP As System.Net.IPEndPoint = CType(mSock1.RemoteEndPoint, System.Net.IPEndPoint) + Return rEP.Address.ToString() + End Get + End Property + + ''' + ''' Gets a value containing the remote port number. + ''' + Protected Friend ReadOnly Property RemotePort() As Integer + Get + Dim rEP As System.Net.IPEndPoint = CType(mSock1.RemoteEndPoint, System.Net.IPEndPoint) + Return rEP.Port + End Get + End Property + + ''' + ''' Gets a value containing the local port number. + ''' + Protected Friend ReadOnly Property LocalPort() As Integer + Get + Dim lEP As System.Net.IPEndPoint = CType(mSock1.LocalEndPoint, IPEndPoint) + Return lEP.Port + End Get + End Property + + Protected Friend ReadOnly Property BufferCount() As Integer + Get + Dim i As Integer = -1 + SyncLock qBuffer.SyncRoot + i = qBuffer.Count + End SyncLock + Return i + End Get + End Property + + Protected Friend Property BufferSize() As Integer + Get + Return incBufferSize + End Get + Set(ByVal value As Integer) + incBufferSize = value + End Set + End Property + + Protected Friend ReadOnly Property UnderlyingStream() As Net.Sockets.NetworkStream + Get + If mSock1 IsNot Nothing Then Return New Net.Sockets.NetworkStream(mSock1, IO.FileAccess.ReadWrite, False) + Return Nothing + End Get + End Property + +#Region " Public Methods " + + ''' + ''' Accepts an incoming connection and starts the data listener. + ''' + ''' The client to accept. + Public Function Accept(ByVal client As Socket) As Boolean + Try + If myParent.State <> WinsockStates.Closed Then + Throw New Exception("Cannot accept a connection while the State is not closed.") + End If + mSock1 = client + Receive() + myParent.ChangeState(WinsockStates.Connected) + Dim e As New WinsockConnectedEventArgs(CType(mSock1.RemoteEndPoint, System.Net.IPEndPoint).Address.ToString, CType(mSock1.RemoteEndPoint, System.Net.IPEndPoint).Port) + myParent.OnConnected(e) + Return True + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + Return False + End Try + End Function + + ''' + ''' Closes the socket if its already open or listening. + ''' + Public Sub Close() + Try + ' If we are already closing then exit the subroutine + If _closing Then Exit Sub + ' Set the closing flag so that this doesn't get run more than once + ' at a time. + _closing = True + ' If we are already closed - exit the subroutine + If myParent.State = WinsockStates.Closed Then _closing = False : Exit Sub + Dim bAllowDisconnect As Boolean = False + ' Close the Socket(s) as necessary + Select Case myParent.State + Case WinsockStates.Connected + ' Change the state to Closing + myParent.ChangeState(WinsockStates.Closing) + If mSock1 IsNot Nothing Then mSock1.Close() + ' Allow disconnect event to raise + bAllowDisconnect = True + Case WinsockStates.Listening + ' Change the state to Closing + myParent.ChangeState(WinsockStates.Closing) + If mSock1 IsNot Nothing Then mSock1.Close() + If mSock2 IsNot Nothing Then mSock2.Close() + ' Do not allow Disconnect event - we weren't connected to anything + ' only listening. + bAllowDisconnect = False + End Select + ' Change state to Closed + myParent.ChangeState(WinsockStates.Closed) + ' Raise the Disconnected event - if allowed to + If bAllowDisconnect Then myParent.OnDisconnected() + _closing = False + Catch ex As Exception + _closing = False + If ex.InnerException IsNot Nothing Then + SharedMethods.RaiseError(myParent, ex.Message, ex.InnerException.Message) + Else + SharedMethods.RaiseError(myParent, ex.Message) + End If + End Try + End Sub + + ''' + ''' Starts Listening for incoming connections. For UDP sockets it starts listening for incoming data. + ''' + ''' The port to start listening on. + ''' The maximum length of the pending connections queue. + Public Sub Listen(ByVal port As Integer, ByVal max_pending As Integer) + Try + If myParent.Protocol = WinsockProtocol.Tcp Then + Dim blnChangePort As Boolean = False + ' Start listening on IPv4 - if available + If Socket.SupportsIPv4 Then + mSock1 = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) + Dim ipLocal As New IPEndPoint(IPAddress.Any, port) + mSock1.Bind(ipLocal) + mSock1.Listen(max_pending) + mSock1.BeginAccept(New AsyncCallback(AddressOf ListenCallback), mSock1) + End If + ' if port was 0 find port used for IPv4 and use it for IPv6 + If port = 0 Then + Dim lEP As System.Net.IPEndPoint = CType(mSock1.LocalEndPoint, IPEndPoint) + port = lEP.Port + blnChangePort = True + End If + ' Start listening on IPv6 - if available + If Socket.OSSupportsIPv6 Then + mSock2 = New Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp) + Dim ipLocal As New IPEndPoint(IPAddress.IPv6Any, port) + mSock2.Bind(ipLocal) + mSock2.Listen(max_pending) + mSock2.BeginAccept(New AsyncCallback(AddressOf ListenCallback), mSock2) + End If + If blnChangePort Then + myParent.ChangeLocalPort(port) + End If + ' Change state to Listening + myParent.ChangeState(WinsockStates.Listening) + ElseIf myParent.Protocol = WinsockProtocol.Udp Then + If port <= 0 Then + Throw New ArgumentException("While port 0 works for getting random port for UPD, there is no way for the server operator to know the port used until a completed send/receive method call is used which means the port is known already.", "port") + End If + ' Start data listening on IPv4 - if available + If Socket.SupportsIPv4 Then + mSock1 = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp) + + Dim ipLocal As New IPEndPoint(IPAddress.Any, port) + Dim ipeSender As New IPEndPoint(IPAddress.Any, 0) + + Dim xe As New UdpReceiveState() + xe.SendingSocket = mSock1 + xe.ReceivingEndpoint = ipeSender + + mSock1.Bind(ipLocal) + mSock1.BeginReceiveFrom(byteBuffer, 0, incBufferSize, SocketFlags.None, xe.ReceivingEndpoint, New AsyncCallback(AddressOf ReceiveCallbackUDP), xe) + End If + ' Start data listening on IPv6 - if available + If Socket.OSSupportsIPv6 Then + mSock2 = New Socket(AddressFamily.InterNetworkV6, SocketType.Dgram, ProtocolType.Udp) + + Dim ipLocal As New IPEndPoint(IPAddress.IPv6Any, port) + Dim ipeSender As New IPEndPoint(IPAddress.IPv6Any, 0) + + Dim xe As New UdpReceiveState() + xe.SendingSocket = mSock2 + xe.ReceivingEndpoint = ipeSender + + mSock2.Bind(ipLocal) + mSock2.BeginReceiveFrom(byteBuffer, 0, incBufferSize, SocketFlags.None, xe.ReceivingEndpoint, New AsyncCallback(AddressOf ReceiveCallbackUDP), xe) + End If + myParent.ChangeState(WinsockStates.Listening) + End If + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' Starts Listening for incoming connections on the specified IP address. For UDP sockets it starts listening for incoming data. + ''' + ''' The port to start listening on. + ''' The maximum length of the pending connections queue. + ''' The IP address on which to listen. + Public Sub Listen(ByVal port As Integer, ByVal max_pending As Integer, ByVal ip As IPAddress) + Try + ' IP contains information on type (IPv4 vs. IPv6) so we can just work with that + If myParent.Protocol = WinsockProtocol.Tcp Then + mSock1 = New Socket(ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp) + Dim ipLocal As New IPEndPoint(ip, port) + mSock1.Bind(ipLocal) + mSock1.Listen(max_pending) + mSock1.BeginAccept(New AsyncCallback(AddressOf ListenCallback), mSock1) + If port = 0 Then + Dim lEP As System.Net.IPEndPoint = CType(mSock1.LocalEndPoint, IPEndPoint) + myParent.ChangeLocalPort(lEP.Port) + End If + ElseIf myParent.Protocol = WinsockProtocol.Udp Then + If port <= 0 Then + Throw New ArgumentException("While port 0 works for getting random port for UPD, there is no way for the server operator to know the port used until a completed send/receive method call is used which means the port is known already.", "port") + End If + mSock1 = New Socket(ip.AddressFamily, SocketType.Dgram, ProtocolType.Udp) + + Dim ipLocal As New IPEndPoint(ip, port) + Dim ipeSender As New IPEndPoint(ip, 0) + + Dim xe As New UdpReceiveState() + xe.SendingSocket = mSock1 + xe.ReceivingEndpoint = ipeSender + + mSock1.Bind(ipLocal) + mSock1.BeginReceiveFrom(byteBuffer, 0, incBufferSize, SocketFlags.None, xe.ReceivingEndpoint, New AsyncCallback(AddressOf ReceiveCallbackUDP), xe) + End If + myParent.ChangeState(WinsockStates.Listening) + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' Gets the first object in the buffer without removing it. + ''' + Public Function PeekData() As Byte() + Dim ret() As Byte + SyncLock qBuffer.SyncRoot + If qBuffer.Count = 0 Then + ret = Nothing + Else + ret = DirectCast(qBuffer.Peek(), Byte()) + End If + End SyncLock + Return ret + End Function + + ''' + ''' Gets and removes the first object in the buffer. + ''' + Public Function GetData() As Byte() + Dim ret() As Byte + SyncLock qBuffer.SyncRoot + If qBuffer.Count = 0 Then + ret = Nothing + Else + ret = DirectCast(qBuffer.Dequeue, Byte()) + End If + End SyncLock + Return ret + End Function + + ''' + ''' Attemps to connect to a remote computer. + ''' + ''' The remote host or IP address of the remote computer. + ''' The port number on which to connect to the remote computer. + Public Sub Connect(ByVal remoteHostOrIp As String, ByVal remote_port As Integer) + Try + If myParent.State <> WinsockStates.Closed Then + Throw New Exception("Cannot connect to a remote host when the Winsock State is not closed.") + End If + + myParent.ChangeState(WinsockStates.ResolvingHost) + + Dim resolvedIP As IPAddress = Nothing + If IPAddress.TryParse(remoteHostOrIp, resolvedIP) Then + myParent.ChangeState(WinsockStates.HostResolved) + Connect(resolvedIP, remote_port) + Else + Dns.BeginGetHostEntry(remoteHostOrIp, New AsyncCallback(AddressOf DoConnectCallback), remote_port) + End If + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + ''' + ''' Attempts to connect to a remote computer. + ''' + ''' The IP address of the remote computer. + ''' The port number on which to connect to the remote computer. + Public Sub Connect(ByVal remIP As IPAddress, ByVal port As Integer) + Try + Dim remEP As New IPEndPoint(remIP, port) + If myParent.State <> WinsockStates.HostResolved Then Exit Sub + mSock1 = New Socket(remIP.AddressFamily, SocketType.Stream, ProtocolType.Tcp) + myParent.ChangeState(WinsockStates.Connecting) + mSock1.BeginConnect(remEP, New AsyncCallback(AddressOf ConnectCallback), mSock1) + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message, ex.ToString) + End Try + End Sub + + ''' + ''' Sends data to the remote computer. + ''' + ''' The byte array of data to send. + Public Sub Send(ByVal byt() As Byte) + Try + ' If it's going out UDP, get the location it's going to + Dim remEP As IPEndPoint = Nothing + If myParent.Protocol = WinsockProtocol.Udp Then + Dim ihe As IPHostEntry = Dns.GetHostEntry(myParent.RemoteHost) + remEP = New IPEndPoint(ihe.AddressList(0), myParent.RemotePort) + End If + + ' LegacySupport doesn't need a header, so if it's NOT active we can add one + If Not myParent.LegacySupport Then + ' LegacySupport INACTIVE - add a packet header, the other end knows how to decode it + phProcessor.AddHeader(byt) + End If + + ' Create the data object and add it to the queue + Dim sqData As New SendQueueData(remEP, byt) + ' We must lock access to the send buffer to prevent simultaneous access + ' from multiple threads + SyncLock sendBuffer.SyncRoot + sendBuffer.Enqueue(sqData) + End SyncLock + + ' Start the sending process - if the process isn't already started. + SyncLock lckSendLoop + If Not bIsSending Then + thdSendLoop = New Thread(AddressOf DoSend) + thdSendLoop.Start() + End If + End SyncLock + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + +#End Region + +#Region " Callback Methods " + + ''' + ''' The callback for the listener - only used for a TCP listener. + ''' + ''' This routine starts again when finished making it loop to continuously receive connections. + Private Sub ListenCallback(ByVal ar As IAsyncResult) + Try + ' Get the socket doing the listening, if it's not there + ' we can't continue. + Dim listener As Socket = TryCast(ar.AsyncState, Socket) + If listener Is Nothing Then + Throw New Exception("Listener object no longer exists.") + End If + + ' End the Accept that was started + Dim client As Socket = listener.EndAccept(ar) + ' Raise ConnectionRequest event + Dim e As New WinsockConnectionRequestEventArgs(client) + myParent.OnConnectionRequest(e) + + ' If the Winsock is no longer in the listening state + ' close and exit gracefully. + If myParent.State <> WinsockStates.Listening Then + listener.Close() + Exit Sub + End If + ' start listening again + listener.BeginAccept(New AsyncCallback(AddressOf ListenCallback), listener) + Catch exO As ObjectDisposedException + ' Close was called, destroying the object - exit without + ' displaying an error. + Exit Try + Catch exS As SocketException + ' There was a problem with the connection + ' If the SocketError is not Success, then close and + ' show an error message + Select Case exS.SocketErrorCode + Case Is <> SocketError.Success + 'Close() + SharedMethods.RaiseError(myParent, exS.Message, "", exS.SocketErrorCode) + Exit Try + End Select + Catch ex As Exception + ' General execption - show an error message. + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' The callback method for the Receive method (UDP only) - used when there is incoming data. + ''' + Private Sub ReceiveCallbackUDP(ByVal ar As IAsyncResult) + Try + ' Get actively receiving socket and IPEndPoint + Dim xe As UdpReceiveState = CType(ar.AsyncState, UdpReceiveState) + Dim cb_UDP As Socket = CType(xe.SendingSocket, Socket) + ' Get the size of the received data + Dim iSize As Integer = cb_UDP.EndReceiveFrom(ar, xe.ReceivingEndpoint) + Dim remEP As IPEndPoint = TryCast(xe.ReceivingEndpoint, IPEndPoint) + If iSize < 1 Then + SyncLock _buff.SyncRoot + If _buff.Count > 0 Then _buff.Clear() + End SyncLock + Close() + Exit Sub + End If + ' Process the receieved data + ProcessIncoming(byteBuffer, iSize, remEP.Address.ToString, remEP.Port) + ' Clear and resize the buffer + ReDim byteBuffer(incBufferSize) + ' Restart data listener + Dim ipeSender As IPEndPoint + If remEP.AddressFamily = AddressFamily.InterNetwork Then + ipeSender = New IPEndPoint(IPAddress.Any, 0) + Else + ipeSender = New IPEndPoint(IPAddress.IPv6Any, 0) + End If + xe.ReceivingEndpoint = ipeSender + cb_UDP.BeginReceiveFrom(byteBuffer, 0, incBufferSize, SocketFlags.None, xe.ReceivingEndpoint, New AsyncCallback(AddressOf ReceiveCallbackUDP), xe) + Catch exO As ObjectDisposedException + ' Close was called, destroying the object - exit without + ' displaying an error. + Exit Try + Catch exS As SocketException + ' There was a problem with the connection + ' If the SocketError is not Success, then close and + ' show an error message + Select Case exS.SocketErrorCode + Case Is <> SocketError.Success + 'Close() + SharedMethods.RaiseError(myParent, exS.Message, "", exS.SocketErrorCode) + Exit Try + End Select + Catch ex As Exception + ' General execption - show an error message. + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' The callback for the Connect method - used on the client to start looking for data. + ''' + Private Sub ConnectCallback(ByVal ar As IAsyncResult) + Try + If myParent.State <> WinsockStates.Connecting Then Exit Sub + Dim sock As Socket = CType(ar.AsyncState, Socket) + sock.EndConnect(ar) + If myParent.State <> WinsockStates.Connecting Then sock.Close() : Exit Sub + ' start listening for data + Receive() + ' Finished - raise events... + myParent.ChangeState(WinsockStates.Connected) + ' Raise the Connected event + Dim ipE As IPEndPoint = DirectCast(sock.RemoteEndPoint, IPEndPoint) + Dim e As New WinsockConnectedEventArgs(ipE.Address.ToString, ipE.Port) + myParent.OnConnected(e) + Catch exS As SocketException + Select Case exS.SocketErrorCode + Case Is <> SocketError.Success + Close() + SharedMethods.RaiseError(myParent, exS.Message, "", exS.SocketErrorCode) + Exit Try + End Select + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' The callback method for the Receive method (TCP only) - used when there is incoming data. + ''' + Private Sub ReceiveCallback(ByVal ar As IAsyncResult) + Try + ' Get the possible error code + Dim errCode As SocketError = CType(ar.AsyncState, SocketError) + ' Get the size of the incoming data while ending the receive + Dim iSize As Integer = mSock1.EndReceive(ar) + If iSize < 1 Then + ' no size identified - connection closed + SyncLock _buff.SyncRoot + If _buff.Count > 0 Then _buff.Clear() + End SyncLock + Close() + Exit Sub + End If + ' Get the remote IP address + Dim ipE As IPEndPoint = CType(mSock1.RemoteEndPoint, IPEndPoint) + ' Process the incoming data (also raises DataArrival) + ProcessIncoming(byteBuffer, iSize, ipE.Address.ToString, ipE.Port) + ReDim byteBuffer(incBufferSize) + ' Start listening for data again + mSock1.BeginReceive(byteBuffer, 0, incBufferSize, SocketFlags.None, errCode, New AsyncCallback(AddressOf ReceiveCallback), errCode) + Catch exS As SocketException + Select Case exS.SocketErrorCode + Case Is <> SocketError.Success + Close() + SharedMethods.RaiseError(myParent, exS.Message, "", exS.SocketErrorCode) + End Select + Catch exO As ObjectDisposedException + Exit Try + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' The callback method for the Send method (TCP only) - loops if not all the data was sent. + ''' + Private Sub SendCallback(ByVal ar As IAsyncResult) + Try + ' Retrieve the AsyncState + Dim ssState As SendState = DirectCast(ar.AsyncState, SendState) + ' Update the total sent - while ending this send call + ssState.TotalSent += ssState.SendingSocket.EndSend(ar) + ' Build the event args for the event that will be raised + Dim e As New WinsockSendEventArgs(RemoteIP, ssState.TotalSent, ssState.Length) + If ssState.SendCompleted Then + ' Object finished sending - raise the SendComplete event + myParent.OnSendComplete(e) + ' Check for more items in the buffer - if so run the send again + ' we can't run DoSend from within the SyncLock, or we'll run into + ' a deadlock + Dim blnRunAgain As Boolean = False + SyncLock sendBuffer.SyncRoot + If sendBuffer.Count > 0 Then + blnRunAgain = True + End If + End SyncLock + If blnRunAgain Then DoSend() + Else + ' Raise SendProgress event + myParent.OnSendProgress(e) + ' Object still has more data in the buffer, get the next part and send it + Dim byt() As Byte + SyncLock sendBuffer.SyncRoot + Dim sqData As SendQueueData = sendBuffer.Dequeue(Of SendQueueData)() + byt = sqData.Data + If byt.GetUpperBound(0) > incBufferSize Then + Dim tmpByt() As Byte = SharedMethods.ShrinkArray(Of Byte)(byt, incBufferSize + 1) + sqData.Data = DirectCast(byt.Clone(), Byte()) + sendBuffer.Push(sqData) + byt = DirectCast(tmpByt.Clone(), Byte()) + End If + End SyncLock + ssState.SendingSocket.BeginSend(byt, 0, byt.Length, SocketFlags.None, ssState.ErrCode, New AsyncCallback(AddressOf SendCallback), ssState) + End If + Catch exS As SocketException + Select Case exS.SocketErrorCode + Case Is <> SocketError.Success + Close() + SharedMethods.RaiseError(myParent, exS.Message, "", exS.SocketErrorCode) + End Select + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' The callback method for the Send method (UDP only) - loops if not all the data was sent. + ''' + Private Sub SendToCallback(ByVal ar As IAsyncResult) + Try + ' Retrieve the AsyncState + Dim ssState As SendState = DirectCast(ar.AsyncState, SendState) + ' Update the total sent - while ending this send call + ssState.TotalSent += ssState.SendingSocket.EndSendTo(ar) + ' Build the event args for the event that will be raised + Dim e As New WinsockSendEventArgs(ssState.SendToAddress.Address.ToString(), ssState.TotalSent, ssState.Length) + If ssState.SendCompleted Then + ' Object finished sending - raise the SendComplete event + myParent.OnSendComplete(e) + ' Check for more items in the buffer - if so run the send again + ' we can't run DoSend from within the SyncLock, or we'll run into + ' a deadlock + Dim blnRunAgain As Boolean = False + SyncLock sendBuffer.SyncRoot + If sendBuffer.Count > 0 Then + blnRunAgain = True + End If + End SyncLock + If blnRunAgain Then DoSend() + Else + ' Raise the SendProgress event + myParent.OnSendProgress(e) + ' Object still has more data in the buffer, get it and send it. + Dim byt() As Byte + SyncLock sendBuffer.SyncRoot + Dim sqData As SendQueueData = sendBuffer.Dequeue(Of SendQueueData)() + byt = sqData.Data + If byt.GetUpperBound(0) > incBufferSize Then + Dim tmpByt() As Byte = SharedMethods.ShrinkArray(Of Byte)(byt, incBufferSize + 1) + sqData.Data = DirectCast(byt.Clone(), Byte()) + sendBuffer.Push(sqData) + byt = DirectCast(tmpByt.Clone(), Byte()) + End If + End SyncLock + ssState.SendingSocket.BeginSendTo(byt, 0, byt.Length, SocketFlags.None, ssState.SendToAddress, New AsyncCallback(AddressOf SendToCallback), ssState) + End If + Catch exS As SocketException + Select Case exS.SocketErrorCode + Case Is <> SocketError.Success + Close() + SharedMethods.RaiseError(myParent, exS.Message, "", exS.SocketErrorCode) + End Select + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' The callback method for resolving the address given - starts the socket on connecting. + ''' + Public Sub DoConnectCallback(ByVal ar As IAsyncResult) + Try + Dim port As Integer = DirectCast(ar.AsyncState, Integer) + Dim resolved As IPHostEntry + Try + resolved = Dns.EndGetHostEntry(ar) + Catch ex As SocketException + resolved = Nothing + End Try + If resolved Is Nothing OrElse resolved.AddressList.Length = 0 Then + Dim name As String = CStr(IIf(resolved IsNot Nothing, """" & resolved.HostName & """ ", "")) + Throw New Exception("Hostname " & name & "could not be resolved.") + End If + myParent.ChangeState(WinsockStates.HostResolved) + Connect(resolved.AddressList(0), port) + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + +#End Region + +#Region " Private Methods " + + ''' + ''' Processes raw data that was received from the socket and places it into the appropriate buffer. + ''' + ''' The raw byte buffer containing the data received from the socket. + ''' The size of the data received from the socket (reported from the EndReceive). + ''' The IP address the data came from, used for event raising. + ''' The Port the data arrived on, used for event raising. + Private Sub ProcessIncoming(ByVal byt() As Byte, ByVal iSize As Integer, ByVal source_ip As String, ByVal source_port As Integer) + 'check if we are using LegacySupport + If myParent.LegacySupport Then + ' legacy support is active just output the data to the buffer + ' if we actually received some data + If iSize > 0 Then + ' yes we received some data - resize the array + ResizeArray(byt, iSize) + ' add the byte array to the buffer queue + SyncLock qBuffer.SyncRoot + qBuffer.Enqueue(byt) + End SyncLock + ' raise the DataArrival event + Dim e As New WinsockDataArrivalEventArgs(iSize, source_ip, source_port) + myParent.OnDataArrival(e) + End If + Else + SyncLock _buff.SyncRoot + ' legacy support is inactive + ' if total size is <= 0 no data came in - exit + If iSize <= 0 Then Exit Sub + ' reduce the size of the array to the reported size (fixes trailling zeros) + ResizeArray(byt, iSize) + ' Do we have a packet header? + If Not phProcessor.Completed And _buff.Count > 1 Then + ' no packet header and already have more than enough data for a header + ' most likely no header is coming - throw an error to use LegacySupport + phProcessor.Reset() + Throw New Exception("Unable to determine size of incoming packet. It's possible you may need to use Legacy Support.") + ElseIf Not phProcessor.Completed Then + phProcessor.ProcessHeader(byt, _buff) + If Not phProcessor.Completed Then + ProcessIncoming(byt, byt.Length, source_ip, source_port) + End If + End If + + ' Packet Header obtained... Process data, raise data arrival when all is received + If _buff.Count = 0 AndAlso byt.Length >= phProcessor.Size Then + ' everything is located in the byte array + If byt.GetUpperBound(0) > phProcessor.Size Then + ' everything and MORE in byte array + ' remove our data, and run process again on the rest + Dim tmp() As Byte = SharedMethods.ShrinkArray(Of Byte)(byt, phProcessor.Size) + ' add the data to the queue + SyncLock qBuffer.SyncRoot + qBuffer.Enqueue(tmp) + End SyncLock + ' reset the packet header processor + phProcessor.Reset() + ' raise the received progress event + Dim eR As New WinsockReceiveProgressEventArgs(source_ip, tmp.Length, phProcessor.Size) + myParent.OnReceiveProgress(eR) + ' raise the DataArrival event + Dim e As New WinsockDataArrivalEventArgs(tmp.Length, source_ip, source_port) + myParent.OnDataArrival(e) + ' process the extra data + ProcessIncoming(byt, byt.Length, source_ip, source_port) + Else + ' add everything to the queue + SyncLock qBuffer.SyncRoot + qBuffer.Enqueue(byt) + End SyncLock + ' raise the received progress event + Dim eR As New WinsockReceiveProgressEventArgs(source_ip, byt.Length, phProcessor.Size) + myParent.OnReceiveProgress(eR) + ' reset the packet header processor + phProcessor.Reset() + ' raise the DataArrival event + Dim e As New WinsockDataArrivalEventArgs(byt.Length, source_ip, source_port) + myParent.OnDataArrival(e) + End If + ElseIf _buff.Count > 0 AndAlso _buff.Combine().Length + byt.Length >= phProcessor.Size Then + ' if you include the temp buffer, we have all the data + ' get everything + _buff.Add(byt) + Dim tmp() As Byte = _buff.Combine() + ' clear the temp buffer + _buff.Clear() + If tmp.GetUpperBound(0) > phProcessor.Size Then + ' tmp contains more than what we need + ' remove what wee need, and then run the process again on the rest + Dim t2() As Byte = SharedMethods.ShrinkArray(Of Byte)(tmp, phProcessor.Size) + ' add the data to the queue + SyncLock qBuffer.SyncRoot + qBuffer.Enqueue(t2) + End SyncLock + ' raise the received progress event + Dim eR As New WinsockReceiveProgressEventArgs(source_ip, tmp.Length, phProcessor.Size) + myParent.OnReceiveProgress(eR) + ' reset the packet header processor + phProcessor.Reset() + ' raise the DataArrival event + Dim e As New WinsockDataArrivalEventArgs(tmp.Length, source_ip, source_port) + myParent.OnDataArrival(e) + ' process the extra data + ProcessIncoming(tmp, tmp.Length, source_ip, source_port) + Else + ' tmp contains only what we need - add it to the queue + SyncLock qBuffer.SyncRoot + qBuffer.Enqueue(tmp) + End SyncLock + ' raise the received progress event + Dim eR As New WinsockReceiveProgressEventArgs(source_ip, tmp.Length, phProcessor.Size) + myParent.OnReceiveProgress(eR) + ' reset the packet header processor + phProcessor.Reset() + ' raise the DataArrival event + Dim e As New WinsockDataArrivalEventArgs(tmp.Length, source_ip, source_port) + myParent.OnDataArrival(e) + End If + Else + _buff.Add(byt) + ' raise the received progress event + Dim eR As New WinsockReceiveProgressEventArgs(source_ip, _buff.Combine.Length, phProcessor.Size) + myParent.OnReceiveProgress(eR) + End If + End SyncLock + End If + End Sub + + ''' + ''' Resizes an array to the desired length - preserving the data at the begining of the array. + ''' + ''' The array to be resized. + ''' The size to resize the array to. + Private Sub ResizeArray(ByRef byt() As Byte, ByVal iSize As Integer) + If iSize - 1 < byt.GetUpperBound(0) Then + ReDim Preserve byt(iSize - 1) + End If + End Sub + + ''' + ''' Starts listening for incoming packets on the socket. + ''' + ''' The is private because, the user should never have to call this. + Private Sub Receive() + Try + Dim errorState As SocketError + mSock1.BeginReceive(byteBuffer, 0, incBufferSize, SocketFlags.None, errorState, New AsyncCallback(AddressOf ReceiveCallback), errorState) + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' Starts the sending of an object in the send buffer. + ''' + Private Sub DoSend() + Try + ' Retrieve the bytes to send + Dim byt() As Byte + Dim fullSize As Integer + Dim remEP As IPEndPoint + SyncLock sendBuffer.SyncRoot + If sendBuffer.Count = 0 Then Exit Sub + Dim sqData As SendQueueData = sendBuffer.Dequeue(Of SendQueueData)() + If sqData Is Nothing Then + Throw New Exception("Buffer count was greater than zero, yet a nothing was retrieved. Something broke.") + End If + remEP = sqData.IPAddress + byt = sqData.Data() + fullSize = byt.GetUpperBound(0) + If byt.GetUpperBound(0) > incBufferSize Then + Dim tmpByt() As Byte = SharedMethods.ShrinkArray(Of Byte)(byt, incBufferSize + 1) + sqData.Data = DirectCast(byt.Clone(), Byte()) + sendBuffer.Push(sqData) + byt = DirectCast(tmpByt.Clone(), Byte()) + End If + End SyncLock + + ' Send according to the appropriate protocol + If myParent.Protocol = WinsockProtocol.Tcp Then + Dim ssState As SendState = SendState.Build(fullSize, mSock1, incBufferSize) + mSock1.BeginSend(byt, 0, byt.Length, SocketFlags.None, ssState.ErrCode, New AsyncCallback(AddressOf SendCallback), ssState) + ElseIf myParent.Protocol = WinsockProtocol.Udp Then + Dim tmpSock As New Socket(remEP.AddressFamily, SocketType.Dgram, ProtocolType.Udp) + + Dim ssState As SendState = SendState.Build(fullSize, tmpSock, incBufferSize) + ssState.SendToAddress = remEP + tmpSock.BeginSendTo(byt, 0, byt.Length, SocketFlags.None, remEP, New AsyncCallback(AddressOf SendToCallback), ssState) + End If + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + +#End Region + +#Region " Private Classes " + + ''' + ''' A class that decodes and stores the packet header information. + ''' + Public Class PacketHeader + + Private _delimiter As Byte + Private _hasDelim As Boolean + Private _size As Integer + + Public Sub New() + _size = -1 + _delimiter = Byte.MinValue + _hasDelim = False + End Sub + + ''' + ''' A Boolean value to determine if the class has found a delimiter yet. + ''' + Public ReadOnly Property HasDelimiter() As Boolean + Get + Return _hasDelim + End Get + End Property + + ''' + ''' A Boolean value to determine if the class has found the size or not. + ''' + Public ReadOnly Property HasSize() As Boolean + Get + Return _size > -1 + End Get + End Property + + ''' + ''' A Boolean value to determine if the header processing has been completed or not. + ''' + ''' Based on HasDelimiter and HasSize + Public ReadOnly Property Completed() As Boolean + Get + Return HasDelimiter AndAlso HasSize + End Get + End Property + + ''' + ''' The determined Size that was contained within the header. + ''' + Public ReadOnly Property Size() As Integer + Get + Return _size + End Get + End Property + + ''' + ''' The delimiter found within the header (typically the first byte). + ''' + Public Property Delimiter() As Byte + Get + Return _delimiter + End Get + Set(ByVal value As Byte) + _delimiter = value + _hasDelim = True + End Set + End Property + + ''' + ''' Processes a received byte array for possible header information to decode the length of the data received. + ''' + ''' The byte array to process. + ''' A temporary byte buffer to stored data in. + ''' The parameters must be passed ByRef to allow the other routines to work with the exact same data (and modified data). + Public Sub ProcessHeader(ByRef byt() As Byte, ByRef _buff As ByteBufferCol) + ' Do we have an opening delimiter? + If Not HasDelimiter Then + ' We do now + Delimiter = SharedMethods.ShrinkArray(Of Byte)(byt, 1)(0) + If byt Is Nothing OrElse byt.Length = 0 Then Exit Sub + End If + ' check for the next instance of the delimiter + Dim idx As Integer = Array.IndexOf(byt, _delimiter) + If idx = -1 Then + ' delimiter not found - add bytes to temp buffer + _buff.Add(byt) + Exit Sub + End If + ' delimiter was found, grab the size (part may be in the temp buffer) so combine them + Dim temp() As Byte = SharedMethods.ShrinkArray(Of Byte)(byt, (idx + 1)) + ReDim Preserve temp(temp.GetUpperBound(0) - 1) + _buff.Add(temp) + temp = _buff.Combine() + ' Clear the temp buffer + _buff.Clear() + ' convert the bytes containing the size back to string + Dim strSize As String = System.Text.Encoding.ASCII.GetString(temp) + ' try converting the string back to an integer + If Not Integer.TryParse(strSize, _size) Then + ' data not an integer, maybe legacy support should be used + ' reset the delimiter and the size + Reset() + ' throw the exception + Throw New Exception("Unable to determine size of incoming packet. It's possible you may need to use Legacy Support.") + End If + ' is there data to follow? + If _size = 0 Then + ' no data followed the size + ' reset the size and the delimiter + Reset() + ' exit + Exit Sub + End If + End Sub + + ''' + ''' Resets the packet processor for another run. + ''' + Public Sub Reset() + _delimiter = Byte.MinValue + _hasDelim = False + _size = -1 + End Sub + + ''' + ''' Adds a packet header to the byte array given. + ''' + ''' The byte array to prepend with a packet header. + Public Sub AddHeader(ByRef byt() As Byte) + 'Dim arrSize As Integer = byt.GetUpperBound(0) 'Gets the size of the data to be sent + Dim arrSize As Integer = byt.Length ' Gets the size of the data to be sent + Dim strSize() As Byte = System.Text.Encoding.ASCII.GetBytes(arrSize.ToString) ' Converts the size to a string (to handle sizes larger than 255) and converts that to a byte array + Dim fByte As Byte = FreeByte(strSize) ' Determines a byte not used by the size (delimiter) + strSize = EncloseByte(fByte, strSize) ' Put the delimeter around the size header + byt = AppendByte(strSize, byt) ' Combine the header with the data + End Sub + + ''' + ''' Determines which byte value was not used in the byte array. + ''' + ''' The byte array to check. + Private Function FreeByte(ByVal byt() As Byte) As Byte + 'look for a free byte between 1 and 255 + Dim lowest As Byte = 0 + For i As Integer = 1 To 255 + If Array.IndexOf(byt, CByte(i)) = -1 Then + lowest = CByte(i) + Exit For + End If + Next + Return lowest + End Function + + ''' + ''' Encloses a byte array with another byte. + ''' + ''' A byte to enclose around a byte array. + ''' The byte array that needs a byte enclosed around it. + Private Function EncloseByte(ByVal byt As Byte, ByVal bytArr() As Byte) As Byte() + Dim orig As Integer = bytArr.GetUpperBound(0) + Dim newa As Integer = orig + 2 + Dim ar(newa) As Byte + ar(0) = byt + Array.Copy(bytArr, 0, ar, 1, bytArr.Length) + ar(newa) = byt + Return ar + End Function + + ''' + ''' Combines two byte arrays. + ''' + Private Function AppendByte(ByVal first() As Byte, ByVal sec() As Byte) As Byte() + Dim orig As Integer = first.GetUpperBound(0) + sec.Length + Dim ar(orig) As Byte + Array.Copy(first, 0, ar, 0, first.Length) + Array.Copy(sec, 0, ar, first.GetUpperBound(0) + 1, sec.Length) + Return ar + End Function + + End Class + + ''' + ''' A class that allows a state to be transfered from the calling method to the asyncrounous callback method. + ''' This class is used for receiving data via UDP. + ''' + Private Class UdpReceiveState + + ''' + ''' The incoming socket information - allows UDP to determine the sender. + ''' + Public SendingSocket As Object + ''' + ''' The EndPoint on which the data was received (server side). + ''' + Public ReceivingEndpoint As EndPoint + + End Class + + ''' + ''' A class that helps store data waiting to be sent in the SendQueue + ''' + ''' + ''' This class was borne out of necessity - not for TCP, but for UDP. + ''' I realized that if you are sending large data chunks out via UDP + ''' to different remote addresses, you could end up sending data to + ''' the wrong remote host. This class allows the component to recognize + ''' that it needs to send to a different remote host. + ''' + Private Class SendQueueData + + ''' + ''' Initializes a new instance of the SendQueueData class. + ''' + ''' An IPEndPoint containing the IP address that you will be sending to. + ''' The data that needs to be sent. + Public Sub New(ByVal ip As IPEndPoint, ByVal byt() As Byte) + _ip = ip + _data = byt + End Sub + + Private _data() As Byte + Private _ip As IPEndPoint + + ''' + ''' The IPEndPoint that contains the IP address information needed to send the data. + ''' + Public ReadOnly Property IPAddress() As IPEndPoint + Get + Return _ip + End Get + End Property + + ''' + ''' The data that needs to be sent. + ''' + Public Property Data() As Byte() + Get + Return _data + End Get + Set(ByVal value As Byte()) + _data = value + End Set + End Property + + End Class + + ''' + ''' A class that allows a state to be transfered from the calling method to the asyncrounous callback method. + ''' This class is used when sending data. + ''' + Private Class SendState + + ''' + ''' The total length of the original byte array to be sent. (Includes packet header) + ''' + Public Length As Integer + ''' + ''' The error code as reported by the socket - used during the callback method. + ''' + Public ErrCode As SocketError + ' '' + ' '' The bytes that are to be sent. + ' '' + 'Public Bytes() As Byte + ''' + ''' The index at which to start sending - usefull when sending packets larger than the buffer size. + ''' + Public StartIndex As Integer + ''' + ''' The number of bytes to send during this time - usefull when sending packets larger than the buffer size. + ''' + Public SendLength As Integer + ''' + ''' The total number of bytes actually transmitted. + ''' + Public TotalSent As Integer + ''' + ''' The socket that is doing the sending - used for UDP statistic information during the callback method. + ''' + Public SendingSocket As Socket + ''' + ''' The IP address of the computer you are sending to - used for UDP statistic information during the callback method. + ''' + Public SendToAddress As IPEndPoint + + ''' + ''' Builds and returns an instance of the SendState class. + ''' + ''' The UpperBound of the byte array that will be sent. + ''' The socket to assign to the SendState. + ''' The socket's buffer size. + Public Shared Function Build(ByVal bytUpperBound As Integer, ByRef sock As Socket, ByVal buffer_size As Integer) As SendState + Dim ret As New SendState + ret.Length = bytUpperBound + 1 + ret.StartIndex = 0 + If bytUpperBound > buffer_size Then + ret.SendLength = buffer_size + 1 + Else + ret.SendLength = bytUpperBound + End If + ret.SendingSocket = sock + Return ret + End Function + + ''' + ''' Returns a boolean indicating whether the object being sent has completed or not. + ''' + Public ReadOnly Property SendCompleted() As Boolean + Get + Return Not (TotalSent < Length) + End Get + End Property + End Class + +#End Region + +End Class + +''' +''' A special collection class to act as a byte buffer. +''' +Public Class ByteBufferCol + Inherits CollectionBase + + ''' + ''' Adds a byte to the byte buffer. + ''' + ''' The byte to add to the buffer. + Public Sub Add(ByVal byt As Byte) + List.Add(byt) + End Sub + + ''' + ''' Adds a byte array to the byte buffer. + ''' + ''' The byte array to add to the buffer. + ''' Adds all the bytes in the array individually - not the array itself. + Public Sub Add(ByVal byt() As Byte) + For i As Integer = 0 To UBound(byt) + List.Add(byt(i)) + Next + End Sub + + ''' + ''' Combines all the bytes in the buffer into one byte array. + ''' + Public Function Combine() As Byte() + If List.Count = 0 Then Return Nothing + Dim ar(List.Count - 1) As Byte + For i As Integer = 0 To List.Count - 1 + ar(i) = CByte(List.Item(i)) + Next + Return ar + End Function + + Public ReadOnly Property SyncRoot() As Object + Get + Dim iCL As ICollection = CType(Me, ICollection) + ' Return CType(llList, ICollection).SyncRoot + Return iCL.SyncRoot + End Get + End Property + +End Class \ No newline at end of file diff --git a/Sub/WinsockOracs/Backup/About.txt b/Sub/WinsockOracs/Backup/About.txt new file mode 100644 index 0000000..b1678af --- /dev/null +++ b/Sub/WinsockOracs/Backup/About.txt @@ -0,0 +1,23 @@ +Winsock Orcas is the result of refining a project that started when I graduated from VB6 to VB.NET 2003. + +.NET no longer supported the old Winsock control that had been so easy to use in VB6. Instead they gave us something with much more power, but also much more complexity: the Socket. + +It took me a bit of time to figure the socket out, but when I did I decided to create a wrapper that worked just like the old control I was familiar with - making sockets much easier. + +The first version was wrought with bugs and wasn't thread-safe. When VS 2005 came out, and revealed even more functions with regards to the socket - I resolved to make a new version. + +That was Winsock 2005. It was thread-safe (to a point), and fixed the major bugs of the previous version. It even had UDP support. + +In April of 2007 I started work on Winsock 2007. Due to a project I was working on at the time, I was looking into Remoting to synchronize an object between server/client. I decided Remoting wasn't for my project (couldn't implement blacklist), thus a new version of Winsock was born. + +Winsock 2007 enabled synchronizing of objects (via BinaryFormatter), making the Send/Get routines simpler. The thread-safe events have been improved, as has UDP support. IPv6 support was added making it much easier to use with Vista. + +Winsock Orcas (version 4.0.0) was made just to keep this going. It had come to my attention that VS2008 had problems compiling the code for previous version, so I made this version. This version streamlines the code, making it simpler to read (mainly by removing the WinsockMonitor class), and also adds in some Generics support on the Get/Peek methods to do automatic conversion to the type you want (watch out, you could cause exceptions for casting to the wrong type). + +All in all I've enjoyed creating this component, and hope others find it as helpful as I have. + +To report bugs please visit: http://www.k-koding.com/ and use the bug tracker. + +Thanks for using it, + +Chris Kolkman \ No newline at end of file diff --git a/Sub/WinsockOracs/Backup/AsyncSocket.vb b/Sub/WinsockOracs/Backup/AsyncSocket.vb new file mode 100644 index 0000000..4d2c512 --- /dev/null +++ b/Sub/WinsockOracs/Backup/AsyncSocket.vb @@ -0,0 +1,1247 @@ +Option Strict On + +Imports System.Net +Imports System.Net.Sockets +Imports System.Threading + +''' +''' A class that encapsulates all the raw functions of the System.Net.Sockets.Socket +''' +Public Class AsyncSocket + + Private myParent As IWinsock ' The parent Winsock - allows access to properties and event raising + Private mSock1 As Socket ' for IPv4 (listening) or both IPv4 and IPv6 (connections) + Private mSock2 As Socket ' for IPv6 (listening) only + Private byteBuffer() As Byte ' Stores the incoming bytes waiting to be processed + Private incBufferSize As Integer = 8192 ' The buffer size of the socket + Private _buff As ByteBufferCol ' Temporary byte buffer - used while an object is being assembled + Private _closing As Boolean = False ' Prevents the Close() method from being run while it already running + Private qBuffer As Queue ' The Buffer Queue - where objects wait to be picked up by the Get() method + Private phProcessor As PacketHeader ' The PacketHeader processor - looks for and reads the packet header added to the byte array + Private sBufferMutex As New Mutex() + Private sendBuffer As Deque ' The Sending Buffer Queue - where objects wait to be sent. + Private thdSendLoop As Thread ' Used to send everything in the sendBuffer + Private lckSendLoop As Object ' Used for a syncronized lock on the SendLoop thread + Private bIsSending As Boolean ' Used internally to tell if a sending loop is in progress. + + Public Sub New(ByRef parent As IWinsock) + Try + myParent = parent + phProcessor = New PacketHeader + qBuffer = New Queue + _buff = New ByteBufferCol + sendBuffer = New Deque + lckSendLoop = New Object() + ReDim byteBuffer(incBufferSize) + Catch ex As Exception + SharedMethods.RaiseError(myParent, "Unable to initialize the AsyncSocket.") + End Try + End Sub + + ''' + ''' Gets a value containing the remote IP address. + ''' + Protected Friend ReadOnly Property RemoteIP() As String + Get + Dim rEP As System.Net.IPEndPoint = CType(mSock1.RemoteEndPoint, System.Net.IPEndPoint) + Return rEP.Address.ToString() + End Get + End Property + + ''' + ''' Gets a value containing the remote port number. + ''' + Protected Friend ReadOnly Property RemotePort() As Integer + Get + Dim rEP As System.Net.IPEndPoint = CType(mSock1.RemoteEndPoint, System.Net.IPEndPoint) + Return rEP.Port + End Get + End Property + + ''' + ''' Gets a value containing the local port number. + ''' + Protected Friend ReadOnly Property LocalPort() As Integer + Get + Dim lEP As System.Net.IPEndPoint = CType(mSock1.LocalEndPoint, IPEndPoint) + Return lEP.Port + End Get + End Property + + Protected Friend ReadOnly Property BufferCount() As Integer + Get + Dim i As Integer = -1 + SyncLock qBuffer.SyncRoot + i = qBuffer.Count + End SyncLock + Return i + End Get + End Property + + Protected Friend Property BufferSize() As Integer + Get + Return incBufferSize + End Get + Set(ByVal value As Integer) + incBufferSize = value + End Set + End Property + + Protected Friend ReadOnly Property UnderlyingStream() As Net.Sockets.NetworkStream + Get + If mSock1 IsNot Nothing Then Return New Net.Sockets.NetworkStream(mSock1, IO.FileAccess.ReadWrite, False) + Return Nothing + End Get + End Property + +#Region " Public Methods " + + ''' + ''' Accepts an incoming connection and starts the data listener. + ''' + ''' The client to accept. + Public Function Accept(ByVal client As Socket) As Boolean + Try + If myParent.State <> WinsockStates.Closed Then + Throw New Exception("Cannot accept a connection while the State is not closed.") + End If + mSock1 = client + Receive() + myParent.ChangeState(WinsockStates.Connected) + Dim e As New WinsockConnectedEventArgs(CType(mSock1.RemoteEndPoint, System.Net.IPEndPoint).Address.ToString, CType(mSock1.RemoteEndPoint, System.Net.IPEndPoint).Port) + myParent.OnConnected(e) + Return True + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + Return False + End Try + End Function + + ''' + ''' Closes the socket if its already open or listening. + ''' + Public Sub Close() + Try + ' If we are already closing then exit the subroutine + If _closing Then Exit Sub + ' Set the closing flag so that this doesn't get run more than once + ' at a time. + _closing = True + ' If we are already closed - exit the subroutine + If myParent.State = WinsockStates.Closed Then _closing = False : Exit Sub + Dim bAllowDisconnect As Boolean = False + ' Close the Socket(s) as necessary + Select Case myParent.State + Case WinsockStates.Connected + ' Change the state to Closing + myParent.ChangeState(WinsockStates.Closing) + If mSock1 IsNot Nothing Then mSock1.Close() + ' Allow disconnect event to raise + bAllowDisconnect = True + Case WinsockStates.Listening + ' Change the state to Closing + myParent.ChangeState(WinsockStates.Closing) + If mSock1 IsNot Nothing Then mSock1.Close() + If mSock2 IsNot Nothing Then mSock2.Close() + ' Do not allow Disconnect event - we weren't connected to anything + ' only listening. + bAllowDisconnect = False + End Select + ' Change state to Closed + myParent.ChangeState(WinsockStates.Closed) + ' Raise the Disconnected event - if allowed to + If bAllowDisconnect Then myParent.OnDisconnected() + _closing = False + Catch ex As Exception + _closing = False + If ex.InnerException IsNot Nothing Then + SharedMethods.RaiseError(myParent, ex.Message, ex.InnerException.Message) + Else + SharedMethods.RaiseError(myParent, ex.Message) + End If + End Try + End Sub + + ''' + ''' Starts Listening for incoming connections. For UDP sockets it starts listening for incoming data. + ''' + ''' The port to start listening on. + ''' The maximum length of the pending connections queue. + Public Sub Listen(ByVal port As Integer, ByVal max_pending As Integer) + Try + If myParent.Protocol = WinsockProtocol.Tcp Then + Dim blnChangePort As Boolean = False + ' Start listening on IPv4 - if available + If Socket.SupportsIPv4 Then + mSock1 = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) + Dim ipLocal As New IPEndPoint(IPAddress.Any, port) + mSock1.Bind(ipLocal) + mSock1.Listen(max_pending) + mSock1.BeginAccept(New AsyncCallback(AddressOf ListenCallback), mSock1) + End If + ' if port was 0 find port used for IPv4 and use it for IPv6 + If port = 0 Then + Dim lEP As System.Net.IPEndPoint = CType(mSock1.LocalEndPoint, IPEndPoint) + port = lEP.Port + blnChangePort = True + End If + ' Start listening on IPv6 - if available + If Socket.OSSupportsIPv6 Then + mSock2 = New Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp) + Dim ipLocal As New IPEndPoint(IPAddress.IPv6Any, port) + mSock2.Bind(ipLocal) + mSock2.Listen(max_pending) + mSock2.BeginAccept(New AsyncCallback(AddressOf ListenCallback), mSock2) + End If + If blnChangePort Then + myParent.ChangeLocalPort(port) + End If + ' Change state to Listening + myParent.ChangeState(WinsockStates.Listening) + ElseIf myParent.Protocol = WinsockProtocol.Udp Then + If port <= 0 Then + Throw New ArgumentException("While port 0 works for getting random port for UPD, there is no way for the server operator to know the port used until a completed send/receive method call is used which means the port is known already.", "port") + End If + ' Start data listening on IPv4 - if available + If Socket.SupportsIPv4 Then + mSock1 = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp) + + Dim ipLocal As New IPEndPoint(IPAddress.Any, port) + Dim ipeSender As New IPEndPoint(IPAddress.Any, 0) + + Dim xe As New UdpReceiveState() + xe.SendingSocket = mSock1 + xe.ReceivingEndpoint = ipeSender + + mSock1.Bind(ipLocal) + mSock1.BeginReceiveFrom(byteBuffer, 0, incBufferSize, SocketFlags.None, xe.ReceivingEndpoint, New AsyncCallback(AddressOf ReceiveCallbackUDP), xe) + End If + ' Start data listening on IPv6 - if available + If Socket.OSSupportsIPv6 Then + mSock2 = New Socket(AddressFamily.InterNetworkV6, SocketType.Dgram, ProtocolType.Udp) + + Dim ipLocal As New IPEndPoint(IPAddress.IPv6Any, port) + Dim ipeSender As New IPEndPoint(IPAddress.IPv6Any, 0) + + Dim xe As New UdpReceiveState() + xe.SendingSocket = mSock2 + xe.ReceivingEndpoint = ipeSender + + mSock2.Bind(ipLocal) + mSock2.BeginReceiveFrom(byteBuffer, 0, incBufferSize, SocketFlags.None, xe.ReceivingEndpoint, New AsyncCallback(AddressOf ReceiveCallbackUDP), xe) + End If + myParent.ChangeState(WinsockStates.Listening) + End If + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' Starts Listening for incoming connections on the specified IP address. For UDP sockets it starts listening for incoming data. + ''' + ''' The port to start listening on. + ''' The maximum length of the pending connections queue. + ''' The IP address on which to listen. + Public Sub Listen(ByVal port As Integer, ByVal max_pending As Integer, ByVal ip As IPAddress) + Try + ' IP contains information on type (IPv4 vs. IPv6) so we can just work with that + If myParent.Protocol = WinsockProtocol.Tcp Then + mSock1 = New Socket(ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp) + Dim ipLocal As New IPEndPoint(ip, port) + mSock1.Bind(ipLocal) + mSock1.Listen(max_pending) + mSock1.BeginAccept(New AsyncCallback(AddressOf ListenCallback), mSock1) + If port = 0 Then + Dim lEP As System.Net.IPEndPoint = CType(mSock1.LocalEndPoint, IPEndPoint) + myParent.ChangeLocalPort(lEP.Port) + End If + ElseIf myParent.Protocol = WinsockProtocol.Udp Then + If port <= 0 Then + Throw New ArgumentException("While port 0 works for getting random port for UPD, there is no way for the server operator to know the port used until a completed send/receive method call is used which means the port is known already.", "port") + End If + mSock1 = New Socket(ip.AddressFamily, SocketType.Dgram, ProtocolType.Udp) + + Dim ipLocal As New IPEndPoint(ip, port) + Dim ipeSender As New IPEndPoint(ip, 0) + + Dim xe As New UdpReceiveState() + xe.SendingSocket = mSock1 + xe.ReceivingEndpoint = ipeSender + + mSock1.Bind(ipLocal) + mSock1.BeginReceiveFrom(byteBuffer, 0, incBufferSize, SocketFlags.None, xe.ReceivingEndpoint, New AsyncCallback(AddressOf ReceiveCallbackUDP), xe) + End If + myParent.ChangeState(WinsockStates.Listening) + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' Gets the first object in the buffer without removing it. + ''' + Public Function PeekData() As Byte() + Dim ret() As Byte + SyncLock qBuffer.SyncRoot + If qBuffer.Count = 0 Then + ret = Nothing + Else + ret = DirectCast(qBuffer.Peek(), Byte()) + End If + End SyncLock + Return ret + End Function + + ''' + ''' Gets and removes the first object in the buffer. + ''' + Public Function GetData() As Byte() + Dim ret() As Byte + SyncLock qBuffer.SyncRoot + If qBuffer.Count = 0 Then + ret = Nothing + Else + ret = DirectCast(qBuffer.Dequeue, Byte()) + End If + End SyncLock + Return ret + End Function + + ''' + ''' Attemps to connect to a remote computer. + ''' + ''' The remote host or IP address of the remote computer. + ''' The port number on which to connect to the remote computer. + Public Sub Connect(ByVal remoteHostOrIp As String, ByVal remote_port As Integer) + Try + If myParent.State <> WinsockStates.Closed Then + Throw New Exception("Cannot connect to a remote host when the Winsock State is not closed.") + End If + + myParent.ChangeState(WinsockStates.ResolvingHost) + + Dim resolvedIP As IPAddress = Nothing + If IPAddress.TryParse(remoteHostOrIp, resolvedIP) Then + myParent.ChangeState(WinsockStates.HostResolved) + Connect(resolvedIP, remote_port) + Else + Dns.BeginGetHostEntry(remoteHostOrIp, New AsyncCallback(AddressOf DoConnectCallback), remote_port) + End If + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + ''' + ''' Attempts to connect to a remote computer. + ''' + ''' The IP address of the remote computer. + ''' The port number on which to connect to the remote computer. + Public Sub Connect(ByVal remIP As IPAddress, ByVal port As Integer) + Try + Dim remEP As New IPEndPoint(remIP, port) + If myParent.State <> WinsockStates.HostResolved Then Exit Sub + mSock1 = New Socket(remIP.AddressFamily, SocketType.Stream, ProtocolType.Tcp) + myParent.ChangeState(WinsockStates.Connecting) + mSock1.BeginConnect(remEP, New AsyncCallback(AddressOf ConnectCallback), mSock1) + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message, ex.ToString) + End Try + End Sub + + ''' + ''' Sends data to the remote computer. + ''' + ''' The byte array of data to send. + Public Sub Send(ByVal byt() As Byte) + Try + ' If it's going out UDP, get the location it's going to + Dim remEP As IPEndPoint = Nothing + If myParent.Protocol = WinsockProtocol.Udp Then + Dim ihe As IPHostEntry = Dns.GetHostEntry(myParent.RemoteHost) + remEP = New IPEndPoint(ihe.AddressList(0), myParent.RemotePort) + End If + + ' LegacySupport doesn't need a header, so if it's NOT active we can add one + If Not myParent.LegacySupport Then + ' LegacySupport INACTIVE - add a packet header, the other end knows how to decode it + phProcessor.AddHeader(byt) + End If + + ' Create the data object and add it to the queue + Dim sqData As New SendQueueData(remEP, byt) + ' We must lock access to the send buffer to prevent simultaneous access + ' from multiple threads + SyncLock sendBuffer.SyncRoot + sendBuffer.Enqueue(sqData) + End SyncLock + + ' Start the sending process - if the process isn't already started. + SyncLock lckSendLoop + If Not bIsSending Then + thdSendLoop = New Thread(AddressOf DoSend) + thdSendLoop.Start() + End If + End SyncLock + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + +#End Region + +#Region " Callback Methods " + + ''' + ''' The callback for the listener - only used for a TCP listener. + ''' + ''' This routine starts again when finished making it loop to continuously receive connections. + Private Sub ListenCallback(ByVal ar As IAsyncResult) + Try + ' Get the socket doing the listening, if it's not there + ' we can't continue. + Dim listener As Socket = TryCast(ar.AsyncState, Socket) + If listener Is Nothing Then + Throw New Exception("Listener object no longer exists.") + End If + + ' End the Accept that was started + Dim client As Socket = listener.EndAccept(ar) + ' Raise ConnectionRequest event + Dim e As New WinsockConnectionRequestEventArgs(client) + myParent.OnConnectionRequest(e) + + ' If the Winsock is no longer in the listening state + ' close and exit gracefully. + If myParent.State <> WinsockStates.Listening Then + listener.Close() + Exit Sub + End If + ' start listening again + listener.BeginAccept(New AsyncCallback(AddressOf ListenCallback), listener) + Catch exO As ObjectDisposedException + ' Close was called, destroying the object - exit without + ' displaying an error. + Exit Try + Catch exS As SocketException + ' There was a problem with the connection + ' If the SocketError is not Success, then close and + ' show an error message + Select Case exS.SocketErrorCode + Case Is <> SocketError.Success + 'Close() + SharedMethods.RaiseError(myParent, exS.Message, "", exS.SocketErrorCode) + Exit Try + End Select + Catch ex As Exception + ' General execption - show an error message. + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' The callback method for the Receive method (UDP only) - used when there is incoming data. + ''' + Private Sub ReceiveCallbackUDP(ByVal ar As IAsyncResult) + Try + ' Get actively receiving socket and IPEndPoint + Dim xe As UdpReceiveState = CType(ar.AsyncState, UdpReceiveState) + Dim cb_UDP As Socket = CType(xe.SendingSocket, Socket) + ' Get the size of the received data + Dim iSize As Integer = cb_UDP.EndReceiveFrom(ar, xe.ReceivingEndpoint) + Dim remEP As IPEndPoint = TryCast(xe.ReceivingEndpoint, IPEndPoint) + If iSize < 1 Then + SyncLock _buff.SyncRoot + If _buff.Count > 0 Then _buff.Clear() + End SyncLock + Close() + Exit Sub + End If + ' Process the receieved data + ProcessIncoming(byteBuffer, iSize, remEP.Address.ToString, remEP.Port) + ' Clear and resize the buffer + ReDim byteBuffer(incBufferSize) + ' Restart data listener + Dim ipeSender As IPEndPoint + If remEP.AddressFamily = AddressFamily.InterNetwork Then + ipeSender = New IPEndPoint(IPAddress.Any, 0) + Else + ipeSender = New IPEndPoint(IPAddress.IPv6Any, 0) + End If + xe.ReceivingEndpoint = ipeSender + cb_UDP.BeginReceiveFrom(byteBuffer, 0, incBufferSize, SocketFlags.None, xe.ReceivingEndpoint, New AsyncCallback(AddressOf ReceiveCallbackUDP), xe) + Catch exO As ObjectDisposedException + ' Close was called, destroying the object - exit without + ' displaying an error. + Exit Try + Catch exS As SocketException + ' There was a problem with the connection + ' If the SocketError is not Success, then close and + ' show an error message + Select Case exS.SocketErrorCode + Case Is <> SocketError.Success + 'Close() + SharedMethods.RaiseError(myParent, exS.Message, "", exS.SocketErrorCode) + Exit Try + End Select + Catch ex As Exception + ' General execption - show an error message. + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' The callback for the Connect method - used on the client to start looking for data. + ''' + Private Sub ConnectCallback(ByVal ar As IAsyncResult) + Try + If myParent.State <> WinsockStates.Connecting Then Exit Sub + Dim sock As Socket = CType(ar.AsyncState, Socket) + sock.EndConnect(ar) + If myParent.State <> WinsockStates.Connecting Then sock.Close() : Exit Sub + ' start listening for data + Receive() + ' Finished - raise events... + myParent.ChangeState(WinsockStates.Connected) + ' Raise the Connected event + Dim ipE As IPEndPoint = DirectCast(sock.RemoteEndPoint, IPEndPoint) + Dim e As New WinsockConnectedEventArgs(ipE.Address.ToString, ipE.Port) + myParent.OnConnected(e) + Catch exS As SocketException + Select Case exS.SocketErrorCode + Case Is <> SocketError.Success + Close() + SharedMethods.RaiseError(myParent, exS.Message, "", exS.SocketErrorCode) + Exit Try + End Select + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' The callback method for the Receive method (TCP only) - used when there is incoming data. + ''' + Private Sub ReceiveCallback(ByVal ar As IAsyncResult) + Try + ' Get the possible error code + Dim errCode As SocketError = CType(ar.AsyncState, SocketError) + ' Get the size of the incoming data while ending the receive + Dim iSize As Integer = mSock1.EndReceive(ar) + If iSize < 1 Then + ' no size identified - connection closed + SyncLock _buff.SyncRoot + If _buff.Count > 0 Then _buff.Clear() + End SyncLock + Close() + Exit Sub + End If + ' Get the remote IP address + Dim ipE As IPEndPoint = CType(mSock1.RemoteEndPoint, IPEndPoint) + ' Process the incoming data (also raises DataArrival) + ProcessIncoming(byteBuffer, iSize, ipE.Address.ToString, ipE.Port) + ReDim byteBuffer(incBufferSize) + ' Start listening for data again + mSock1.BeginReceive(byteBuffer, 0, incBufferSize, SocketFlags.None, errCode, New AsyncCallback(AddressOf ReceiveCallback), errCode) + Catch exS As SocketException + Select Case exS.SocketErrorCode + Case Is <> SocketError.Success + Close() + SharedMethods.RaiseError(myParent, exS.Message, "", exS.SocketErrorCode) + End Select + Catch exO As ObjectDisposedException + Exit Try + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' The callback method for the Send method (TCP only) - loops if not all the data was sent. + ''' + Private Sub SendCallback(ByVal ar As IAsyncResult) + Try + ' Retrieve the AsyncState + Dim ssState As SendState = DirectCast(ar.AsyncState, SendState) + ' Update the total sent - while ending this send call + ssState.TotalSent += ssState.SendingSocket.EndSend(ar) + ' Build the event args for the event that will be raised + Dim e As New WinsockSendEventArgs(RemoteIP, ssState.TotalSent, ssState.Length) + If ssState.SendCompleted Then + ' Object finished sending - raise the SendComplete event + myParent.OnSendComplete(e) + ' Check for more items in the buffer - if so run the send again + ' we can't run DoSend from within the SyncLock, or we'll run into + ' a deadlock + Dim blnRunAgain As Boolean = False + SyncLock sendBuffer.SyncRoot + If sendBuffer.Count > 0 Then + blnRunAgain = True + End If + End SyncLock + If blnRunAgain Then DoSend() + Else + ' Raise SendProgress event + myParent.OnSendProgress(e) + ' Object still has more data in the buffer, get the next part and send it + Dim byt() As Byte + SyncLock sendBuffer.SyncRoot + Dim sqData As SendQueueData = sendBuffer.Dequeue(Of SendQueueData)() + byt = sqData.Data + If byt.GetUpperBound(0) > incBufferSize Then + Dim tmpByt() As Byte = SharedMethods.ShrinkArray(Of Byte)(byt, incBufferSize + 1) + sqData.Data = DirectCast(byt.Clone(), Byte()) + sendBuffer.Push(sqData) + byt = DirectCast(tmpByt.Clone(), Byte()) + End If + End SyncLock + ssState.SendingSocket.BeginSend(byt, 0, byt.Length, SocketFlags.None, ssState.ErrCode, New AsyncCallback(AddressOf SendCallback), ssState) + End If + Catch exS As SocketException + Select Case exS.SocketErrorCode + Case Is <> SocketError.Success + Close() + SharedMethods.RaiseError(myParent, exS.Message, "", exS.SocketErrorCode) + End Select + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' The callback method for the Send method (UDP only) - loops if not all the data was sent. + ''' + Private Sub SendToCallback(ByVal ar As IAsyncResult) + Try + ' Retrieve the AsyncState + Dim ssState As SendState = DirectCast(ar.AsyncState, SendState) + ' Update the total sent - while ending this send call + ssState.TotalSent += ssState.SendingSocket.EndSendTo(ar) + ' Build the event args for the event that will be raised + Dim e As New WinsockSendEventArgs(ssState.SendToAddress.Address.ToString(), ssState.TotalSent, ssState.Length) + If ssState.SendCompleted Then + ' Object finished sending - raise the SendComplete event + myParent.OnSendComplete(e) + ' Check for more items in the buffer - if so run the send again + ' we can't run DoSend from within the SyncLock, or we'll run into + ' a deadlock + Dim blnRunAgain As Boolean = False + SyncLock sendBuffer.SyncRoot + If sendBuffer.Count > 0 Then + blnRunAgain = True + End If + End SyncLock + If blnRunAgain Then DoSend() + Else + ' Raise the SendProgress event + myParent.OnSendProgress(e) + ' Object still has more data in the buffer, get it and send it. + Dim byt() As Byte + SyncLock sendBuffer.SyncRoot + Dim sqData As SendQueueData = sendBuffer.Dequeue(Of SendQueueData)() + byt = sqData.Data + If byt.GetUpperBound(0) > incBufferSize Then + Dim tmpByt() As Byte = SharedMethods.ShrinkArray(Of Byte)(byt, incBufferSize + 1) + sqData.Data = DirectCast(byt.Clone(), Byte()) + sendBuffer.Push(sqData) + byt = DirectCast(tmpByt.Clone(), Byte()) + End If + End SyncLock + ssState.SendingSocket.BeginSendTo(byt, 0, byt.Length, SocketFlags.None, ssState.SendToAddress, New AsyncCallback(AddressOf SendToCallback), ssState) + End If + Catch exS As SocketException + Select Case exS.SocketErrorCode + Case Is <> SocketError.Success + Close() + SharedMethods.RaiseError(myParent, exS.Message, "", exS.SocketErrorCode) + End Select + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' The callback method for resolving the address given - starts the socket on connecting. + ''' + Public Sub DoConnectCallback(ByVal ar As IAsyncResult) + Try + Dim port As Integer = DirectCast(ar.AsyncState, Integer) + Dim resolved As IPHostEntry + Try + resolved = Dns.EndGetHostEntry(ar) + Catch ex As SocketException + resolved = Nothing + End Try + If resolved Is Nothing OrElse resolved.AddressList.Length = 0 Then + Dim name As String = CStr(IIf(resolved IsNot Nothing, """" & resolved.HostName & """ ", "")) + Throw New Exception("Hostname " & name & "could not be resolved.") + End If + myParent.ChangeState(WinsockStates.HostResolved) + Connect(resolved.AddressList(0), port) + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + +#End Region + +#Region " Private Methods " + + ''' + ''' Processes raw data that was received from the socket and places it into the appropriate buffer. + ''' + ''' The raw byte buffer containing the data received from the socket. + ''' The size of the data received from the socket (reported from the EndReceive). + ''' The IP address the data came from, used for event raising. + ''' The Port the data arrived on, used for event raising. + Private Sub ProcessIncoming(ByVal byt() As Byte, ByVal iSize As Integer, ByVal source_ip As String, ByVal source_port As Integer) + 'check if we are using LegacySupport + If myParent.LegacySupport Then + ' legacy support is active just output the data to the buffer + ' if we actually received some data + If iSize > 0 Then + ' yes we received some data - resize the array + ResizeArray(byt, iSize) + ' add the byte array to the buffer queue + SyncLock qBuffer.SyncRoot + qBuffer.Enqueue(byt) + End SyncLock + ' raise the DataArrival event + Dim e As New WinsockDataArrivalEventArgs(iSize, source_ip, source_port) + myParent.OnDataArrival(e) + End If + Else + SyncLock _buff.SyncRoot + ' legacy support is inactive + ' if total size is <= 0 no data came in - exit + If iSize <= 0 Then Exit Sub + ' reduce the size of the array to the reported size (fixes trailling zeros) + ResizeArray(byt, iSize) + ' Do we have a packet header? + If Not phProcessor.Completed And _buff.Count > 1 Then + ' no packet header and already have more than enough data for a header + ' most likely no header is coming - throw an error to use LegacySupport + phProcessor.Reset() + Throw New Exception("Unable to determine size of incoming packet. It's possible you may need to use Legacy Support.") + ElseIf Not phProcessor.Completed Then + phProcessor.ProcessHeader(byt, _buff) + If Not phProcessor.Completed Then + ProcessIncoming(byt, byt.Length, source_ip, source_port) + End If + End If + + ' Packet Header obtained... Process data, raise data arrival when all is received + If _buff.Count = 0 AndAlso byt.Length >= phProcessor.Size Then + ' everything is located in the byte array + If byt.GetUpperBound(0) > phProcessor.Size Then + ' everything and MORE in byte array + ' remove our data, and run process again on the rest + Dim tmp() As Byte = SharedMethods.ShrinkArray(Of Byte)(byt, phProcessor.Size) + ' add the data to the queue + SyncLock qBuffer.SyncRoot + qBuffer.Enqueue(tmp) + End SyncLock + ' reset the packet header processor + phProcessor.Reset() + ' raise the received progress event + Dim eR As New WinsockReceiveProgressEventArgs(source_ip, tmp.Length, phProcessor.Size) + myParent.OnReceiveProgress(eR) + ' raise the DataArrival event + Dim e As New WinsockDataArrivalEventArgs(tmp.Length, source_ip, source_port) + myParent.OnDataArrival(e) + ' process the extra data + ProcessIncoming(byt, byt.Length, source_ip, source_port) + Else + ' add everything to the queue + SyncLock qBuffer.SyncRoot + qBuffer.Enqueue(byt) + End SyncLock + ' raise the received progress event + Dim eR As New WinsockReceiveProgressEventArgs(source_ip, byt.Length, phProcessor.Size) + myParent.OnReceiveProgress(eR) + ' reset the packet header processor + phProcessor.Reset() + ' raise the DataArrival event + Dim e As New WinsockDataArrivalEventArgs(byt.Length, source_ip, source_port) + myParent.OnDataArrival(e) + End If + ElseIf _buff.Count > 0 AndAlso _buff.Combine().Length + byt.Length >= phProcessor.Size Then + ' if you include the temp buffer, we have all the data + ' get everything + _buff.Add(byt) + Dim tmp() As Byte = _buff.Combine() + ' clear the temp buffer + _buff.Clear() + If tmp.GetUpperBound(0) > phProcessor.Size Then + ' tmp contains more than what we need + ' remove what wee need, and then run the process again on the rest + Dim t2() As Byte = SharedMethods.ShrinkArray(Of Byte)(tmp, phProcessor.Size) + ' add the data to the queue + SyncLock qBuffer.SyncRoot + qBuffer.Enqueue(t2) + End SyncLock + ' raise the received progress event + Dim eR As New WinsockReceiveProgressEventArgs(source_ip, tmp.Length, phProcessor.Size) + myParent.OnReceiveProgress(eR) + ' reset the packet header processor + phProcessor.Reset() + ' raise the DataArrival event + Dim e As New WinsockDataArrivalEventArgs(tmp.Length, source_ip, source_port) + myParent.OnDataArrival(e) + ' process the extra data + ProcessIncoming(tmp, tmp.Length, source_ip, source_port) + Else + ' tmp contains only what we need - add it to the queue + SyncLock qBuffer.SyncRoot + qBuffer.Enqueue(tmp) + End SyncLock + ' raise the received progress event + Dim eR As New WinsockReceiveProgressEventArgs(source_ip, tmp.Length, phProcessor.Size) + myParent.OnReceiveProgress(eR) + ' reset the packet header processor + phProcessor.Reset() + ' raise the DataArrival event + Dim e As New WinsockDataArrivalEventArgs(tmp.Length, source_ip, source_port) + myParent.OnDataArrival(e) + End If + Else + _buff.Add(byt) + ' raise the received progress event + Dim eR As New WinsockReceiveProgressEventArgs(source_ip, _buff.Combine.Length, phProcessor.Size) + myParent.OnReceiveProgress(eR) + End If + End SyncLock + End If + End Sub + + ''' + ''' Resizes an array to the desired length - preserving the data at the begining of the array. + ''' + ''' The array to be resized. + ''' The size to resize the array to. + Private Sub ResizeArray(ByRef byt() As Byte, ByVal iSize As Integer) + If iSize - 1 < byt.GetUpperBound(0) Then + ReDim Preserve byt(iSize - 1) + End If + End Sub + + ''' + ''' Starts listening for incoming packets on the socket. + ''' + ''' The is private because, the user should never have to call this. + Private Sub Receive() + Try + Dim errorState As SocketError + mSock1.BeginReceive(byteBuffer, 0, incBufferSize, SocketFlags.None, errorState, New AsyncCallback(AddressOf ReceiveCallback), errorState) + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + + ''' + ''' Starts the sending of an object in the send buffer. + ''' + Private Sub DoSend() + Try + ' Retrieve the bytes to send + Dim byt() As Byte + Dim fullSize As Integer + Dim remEP As IPEndPoint + SyncLock sendBuffer.SyncRoot + If sendBuffer.Count = 0 Then Exit Sub + Dim sqData As SendQueueData = sendBuffer.Dequeue(Of SendQueueData)() + If sqData Is Nothing Then + Throw New Exception("Buffer count was greater than zero, yet a nothing was retrieved. Something broke.") + End If + remEP = sqData.IPAddress + byt = sqData.Data() + fullSize = byt.GetUpperBound(0) + If byt.GetUpperBound(0) > incBufferSize Then + Dim tmpByt() As Byte = SharedMethods.ShrinkArray(Of Byte)(byt, incBufferSize + 1) + sqData.Data = DirectCast(byt.Clone(), Byte()) + sendBuffer.Push(sqData) + byt = DirectCast(tmpByt.Clone(), Byte()) + End If + End SyncLock + + ' Send according to the appropriate protocol + If myParent.Protocol = WinsockProtocol.Tcp Then + Dim ssState As SendState = SendState.Build(fullSize, mSock1, incBufferSize) + mSock1.BeginSend(byt, 0, byt.Length, SocketFlags.None, ssState.ErrCode, New AsyncCallback(AddressOf SendCallback), ssState) + ElseIf myParent.Protocol = WinsockProtocol.Udp Then + Dim tmpSock As New Socket(remEP.AddressFamily, SocketType.Dgram, ProtocolType.Udp) + + Dim ssState As SendState = SendState.Build(fullSize, tmpSock, incBufferSize) + ssState.SendToAddress = remEP + tmpSock.BeginSendTo(byt, 0, byt.Length, SocketFlags.None, remEP, New AsyncCallback(AddressOf SendToCallback), ssState) + End If + Catch ex As Exception + SharedMethods.RaiseError(myParent, ex.Message) + End Try + End Sub + +#End Region + +#Region " Private Classes " + + ''' + ''' A class that decodes and stores the packet header information. + ''' + Public Class PacketHeader + + Private _delimiter As Byte + Private _hasDelim As Boolean + Private _size As Integer + + Public Sub New() + _size = -1 + _delimiter = Byte.MinValue + _hasDelim = False + End Sub + + ''' + ''' A Boolean value to determine if the class has found a delimiter yet. + ''' + Public ReadOnly Property HasDelimiter() As Boolean + Get + Return _hasDelim + End Get + End Property + + ''' + ''' A Boolean value to determine if the class has found the size or not. + ''' + Public ReadOnly Property HasSize() As Boolean + Get + Return _size > -1 + End Get + End Property + + ''' + ''' A Boolean value to determine if the header processing has been completed or not. + ''' + ''' Based on HasDelimiter and HasSize + Public ReadOnly Property Completed() As Boolean + Get + Return HasDelimiter AndAlso HasSize + End Get + End Property + + ''' + ''' The determined Size that was contained within the header. + ''' + Public ReadOnly Property Size() As Integer + Get + Return _size + End Get + End Property + + ''' + ''' The delimiter found within the header (typically the first byte). + ''' + Public Property Delimiter() As Byte + Get + Return _delimiter + End Get + Set(ByVal value As Byte) + _delimiter = value + _hasDelim = True + End Set + End Property + + ''' + ''' Processes a received byte array for possible header information to decode the length of the data received. + ''' + ''' The byte array to process. + ''' A temporary byte buffer to stored data in. + ''' The parameters must be passed ByRef to allow the other routines to work with the exact same data (and modified data). + Public Sub ProcessHeader(ByRef byt() As Byte, ByRef _buff As ByteBufferCol) + ' Do we have an opening delimiter? + If Not HasDelimiter Then + ' We do now + Delimiter = SharedMethods.ShrinkArray(Of Byte)(byt, 1)(0) + If byt Is Nothing OrElse byt.Length = 0 Then Exit Sub + End If + ' check for the next instance of the delimiter + Dim idx As Integer = Array.IndexOf(byt, _delimiter) + If idx = -1 Then + ' delimiter not found - add bytes to temp buffer + _buff.Add(byt) + Exit Sub + End If + ' delimiter was found, grab the size (part may be in the temp buffer) so combine them + Dim temp() As Byte = SharedMethods.ShrinkArray(Of Byte)(byt, (idx + 1)) + ReDim Preserve temp(temp.GetUpperBound(0) - 1) + _buff.Add(temp) + temp = _buff.Combine() + ' Clear the temp buffer + _buff.Clear() + ' convert the bytes containing the size back to string + Dim strSize As String = System.Text.Encoding.ASCII.GetString(temp) + ' try converting the string back to an integer + If Not Integer.TryParse(strSize, _size) Then + ' data not an integer, maybe legacy support should be used + ' reset the delimiter and the size + Reset() + ' throw the exception + Throw New Exception("Unable to determine size of incoming packet. It's possible you may need to use Legacy Support.") + End If + ' is there data to follow? + If _size = 0 Then + ' no data followed the size + ' reset the size and the delimiter + Reset() + ' exit + Exit Sub + End If + End Sub + + ''' + ''' Resets the packet processor for another run. + ''' + Public Sub Reset() + _delimiter = Byte.MinValue + _hasDelim = False + _size = -1 + End Sub + + ''' + ''' Adds a packet header to the byte array given. + ''' + ''' The byte array to prepend with a packet header. + Public Sub AddHeader(ByRef byt() As Byte) + 'Dim arrSize As Integer = byt.GetUpperBound(0) 'Gets the size of the data to be sent + Dim arrSize As Integer = byt.Length ' Gets the size of the data to be sent + Dim strSize() As Byte = System.Text.Encoding.ASCII.GetBytes(arrSize.ToString) ' Converts the size to a string (to handle sizes larger than 255) and converts that to a byte array + Dim fByte As Byte = FreeByte(strSize) ' Determines a byte not used by the size (delimiter) + strSize = EncloseByte(fByte, strSize) ' Put the delimeter around the size header + byt = AppendByte(strSize, byt) ' Combine the header with the data + End Sub + + ''' + ''' Determines which byte value was not used in the byte array. + ''' + ''' The byte array to check. + Private Function FreeByte(ByVal byt() As Byte) As Byte + 'look for a free byte between 1 and 255 + Dim lowest As Byte = 0 + For i As Integer = 1 To 255 + If Array.IndexOf(byt, CByte(i)) = -1 Then + lowest = CByte(i) + Exit For + End If + Next + Return lowest + End Function + + ''' + ''' Encloses a byte array with another byte. + ''' + ''' A byte to enclose around a byte array. + ''' The byte array that needs a byte enclosed around it. + Private Function EncloseByte(ByVal byt As Byte, ByVal bytArr() As Byte) As Byte() + Dim orig As Integer = bytArr.GetUpperBound(0) + Dim newa As Integer = orig + 2 + Dim ar(newa) As Byte + ar(0) = byt + Array.Copy(bytArr, 0, ar, 1, bytArr.Length) + ar(newa) = byt + Return ar + End Function + + ''' + ''' Combines two byte arrays. + ''' + Private Function AppendByte(ByVal first() As Byte, ByVal sec() As Byte) As Byte() + Dim orig As Integer = first.GetUpperBound(0) + sec.Length + Dim ar(orig) As Byte + Array.Copy(first, 0, ar, 0, first.Length) + Array.Copy(sec, 0, ar, first.GetUpperBound(0) + 1, sec.Length) + Return ar + End Function + + End Class + + ''' + ''' A class that allows a state to be transfered from the calling method to the asyncrounous callback method. + ''' This class is used for receiving data via UDP. + ''' + Private Class UdpReceiveState + + ''' + ''' The incoming socket information - allows UDP to determine the sender. + ''' + Public SendingSocket As Object + ''' + ''' The EndPoint on which the data was received (server side). + ''' + Public ReceivingEndpoint As EndPoint + + End Class + + ''' + ''' A class that helps store data waiting to be sent in the SendQueue + ''' + ''' + ''' This class was borne out of necessity - not for TCP, but for UDP. + ''' I realized that if you are sending large data chunks out via UDP + ''' to different remote addresses, you could end up sending data to + ''' the wrong remote host. This class allows the component to recognize + ''' that it needs to send to a different remote host. + ''' + Private Class SendQueueData + + ''' + ''' Initializes a new instance of the SendQueueData class. + ''' + ''' An IPEndPoint containing the IP address that you will be sending to. + ''' The data that needs to be sent. + Public Sub New(ByVal ip As IPEndPoint, ByVal byt() As Byte) + _ip = ip + _data = byt + End Sub + + Private _data() As Byte + Private _ip As IPEndPoint + + ''' + ''' The IPEndPoint that contains the IP address information needed to send the data. + ''' + Public ReadOnly Property IPAddress() As IPEndPoint + Get + Return _ip + End Get + End Property + + ''' + ''' The data that needs to be sent. + ''' + Public Property Data() As Byte() + Get + Return _data + End Get + Set(ByVal value As Byte()) + _data = value + End Set + End Property + + End Class + + ''' + ''' A class that allows a state to be transfered from the calling method to the asyncrounous callback method. + ''' This class is used when sending data. + ''' + Private Class SendState + + ''' + ''' The total length of the original byte array to be sent. (Includes packet header) + ''' + Public Length As Integer + ''' + ''' The error code as reported by the socket - used during the callback method. + ''' + Public ErrCode As SocketError + ' '' + ' '' The bytes that are to be sent. + ' '' + 'Public Bytes() As Byte + ''' + ''' The index at which to start sending - usefull when sending packets larger than the buffer size. + ''' + Public StartIndex As Integer + ''' + ''' The number of bytes to send during this time - usefull when sending packets larger than the buffer size. + ''' + Public SendLength As Integer + ''' + ''' The total number of bytes actually transmitted. + ''' + Public TotalSent As Integer + ''' + ''' The socket that is doing the sending - used for UDP statistic information during the callback method. + ''' + Public SendingSocket As Socket + ''' + ''' The IP address of the computer you are sending to - used for UDP statistic information during the callback method. + ''' + Public SendToAddress As IPEndPoint + + ''' + ''' Builds and returns an instance of the SendState class. + ''' + ''' The UpperBound of the byte array that will be sent. + ''' The socket to assign to the SendState. + ''' The socket's buffer size. + Public Shared Function Build(ByVal bytUpperBound As Integer, ByRef sock As Socket, ByVal buffer_size As Integer) As SendState + Dim ret As New SendState + ret.Length = bytUpperBound + 1 + ret.StartIndex = 0 + If bytUpperBound > buffer_size Then + ret.SendLength = buffer_size + 1 + Else + ret.SendLength = bytUpperBound + End If + ret.SendingSocket = sock + Return ret + End Function + + ''' + ''' Returns a boolean indicating whether the object being sent has completed or not. + ''' + Public ReadOnly Property SendCompleted() As Boolean + Get + Return Not (TotalSent < Length) + End Get + End Property + End Class + +#End Region + +End Class + +''' +''' A special collection class to act as a byte buffer. +''' +Public Class ByteBufferCol + Inherits CollectionBase + + ''' + ''' Adds a byte to the byte buffer. + ''' + ''' The byte to add to the buffer. + Public Sub Add(ByVal byt As Byte) + List.Add(byt) + End Sub + + ''' + ''' Adds a byte array to the byte buffer. + ''' + ''' The byte array to add to the buffer. + ''' Adds all the bytes in the array individually - not the array itself. + Public Sub Add(ByVal byt() As Byte) + For i As Integer = 0 To UBound(byt) + List.Add(byt(i)) + Next + End Sub + + ''' + ''' Combines all the bytes in the buffer into one byte array. + ''' + Public Function Combine() As Byte() + If List.Count = 0 Then Return Nothing + Dim ar(List.Count - 1) As Byte + For i As Integer = 0 To List.Count - 1 + ar(i) = CByte(List.Item(i)) + Next + Return ar + End Function + + Public ReadOnly Property SyncRoot() As Object + Get + Dim iCL As ICollection = CType(Me, ICollection) + ' Return CType(llList, ICollection).SyncRoot + Return iCL.SyncRoot + End Get + End Property + +End Class \ No newline at end of file diff --git a/Sub/WinsockOracs/Backup/Deque.vb b/Sub/WinsockOracs/Backup/Deque.vb new file mode 100644 index 0000000..256dc3c --- /dev/null +++ b/Sub/WinsockOracs/Backup/Deque.vb @@ -0,0 +1,185 @@ +Option Strict On +''' +''' Represents both a last-in, first-out (LIFO) and a first-in, first-out (FIFO) non-generic collection of objects. +''' +''' +''' While the System.Collections.Stack and the System.Collections.Queue +''' have seemingly different ways of operating, they can be combined easily +''' by just manipulating the way in which an item in inserted into the list. +''' +''' This allows the removal from the list to remain the same, whether you +''' are treating this class like a Stack or a Queue. The also allows the +''' Peek() method to work for both at the same time. +''' +''' Helping tidbit - Deque is pronounced like "deck." +''' +Public Class Deque + Implements ICollection, IEnumerable, ICloneable + +#Region " Private Members " + + ''' + ''' Stores the list of items within this instance. + ''' + Private llList As LinkedList(Of Object) + +#End Region + +#Region " Constructor " + + ''' + ''' Initializes a new instance of the Deque class that is empty and has the default initial capacity. + ''' + Public Sub New() + llList = New LinkedList(Of Object) + End Sub + + ''' + ''' Initializes a new instance of the Deque class that contains elements copied from the specified collection and has sufficient capacity to accommodate the number of elements copied. + ''' + ''' The collection whose elements are copied to the new Deque. + Public Sub New(ByVal col As ICollection) + llList = New LinkedList(Of Object)(CType(col, IEnumerable(Of Object))) + End Sub + +#End Region + +#Region " Interface Method Implementations " + + ''' + ''' Copies the entire Deque to a compatible one-dimensional array, starting at the specified index of the target array. + ''' + ''' The one-dimensional Array that is the destination of the elements copied from Deque. The Array must have zero-based indexing. + ''' The zero-based index in array at which copying begins. + Public Sub CopyTo(ByVal array As System.Array, ByVal index As Integer) Implements System.Collections.ICollection.CopyTo + If array.Rank > 1 Then Throw New ArgumentException("Array must have only a single dimension.", "array") + llList.CopyTo(CType(array, Object()), index) + End Sub + + ''' + ''' Gets the number of elements actually contained in the Deque. + ''' + ''' The number of elements actually contained in the Deque. + Public ReadOnly Property Count() As Integer Implements System.Collections.ICollection.Count + Get + Return llList.Count + End Get + End Property + + ''' + ''' Gets a value indicating whether access to the ICollection is synchronized (thread safe). + ''' + ''' true if access to the ICollection is synchronized (thread safe); otherwise, false. In the default implementation of List, this property always returns false. + Public ReadOnly Property IsSynchronized() As Boolean Implements System.Collections.ICollection.IsSynchronized + Get + Return CType(llList, ICollection).IsSynchronized + End Get + End Property + + ''' + ''' Gets an object that can be used to synchronize access to the ICollection. + ''' + ''' An object that can be used to synchronize access to the ICollection. In the default implementation of List, this property always returns the current instance. + Public ReadOnly Property SyncRoot() As Object Implements System.Collections.ICollection.SyncRoot + Get + Return CType(llList, ICollection).SyncRoot + End Get + End Property + + ''' + ''' Returns an enumerator that iterates through the Queue. + ''' + Public Function GetEnumerator() As System.Collections.IEnumerator Implements System.Collections.IEnumerable.GetEnumerator + Return llList.GetEnumerator() + End Function + + ''' + ''' Creates a shallow copy of the Queue. + ''' + Public Function Clone() As Object Implements System.ICloneable.Clone + Return New Deque(llList) + End Function + +#End Region + +#Region " Methods common to both Queues and Stacks " + + ''' + ''' Removes all elements from the Deque. + ''' + Public Sub Clear() + llList.Clear() + End Sub + + ''' + ''' Determines whether an element is in the Deque. + ''' + ''' The object to locate in the Deque. The value can be a null reference (Nothing in Visual Basic) for reference types. + Public Function Contains(ByVal obj As Object) As Boolean + Return llList.Contains(obj) + End Function + + ''' + ''' Returns the object at the beginning (top) of the Deque without removing it. + ''' + ''' The object at the beginning (top) of the Deque. + Public Function Peek(Of dataType)() As dataType + If llList.Count = 0 Then Return Nothing + Return DirectCast(llList.First().Value, dataType) + End Function + + ''' + ''' Returns a String that represents the current Object. + ''' + ''' A String that represents the current Object. + Public Overrides Function ToString() As String + Return llList.ToString() + End Function + +#End Region + +#Region " Queue methods " + + ''' + ''' Removes and returns the object at the beginning of the Deque. + ''' + ''' The object that is removed from the beginning of the Deque. + ''' Synonymous with Pop(). + Public Function Dequeue(Of dataType)() As dataType + Dim oRet As dataType = Peek(Of dataType)() + llList.RemoveFirst() + Return oRet + End Function + + ''' + ''' Adds an object to the end of the Deque. + ''' + ''' The object to add to the Deque. The value can be a null reference (Nothing in Visual Basic). + Public Sub Enqueue(ByVal obj As Object) + llList.AddLast(obj) + End Sub + +#End Region + +#Region " Stack methods " + + ''' + ''' Removes and returns the object at the top of the Deque. + ''' + ''' The Object removed from the top of the Deque. + ''' Synonymous with Dequeue(). + Public Function Pop(Of dataType)() As dataType + Return Dequeue(Of dataType)() + End Function + + ''' + ''' Inserts an object at the top of the Deque. + ''' + ''' The Object to push onto the Deque. The value can be a null reference (Nothing in Visual Basic). + Public Sub Push(ByVal obj As Object) + llList.AddFirst(obj) + End Sub + +#End Region + +End Class \ No newline at end of file diff --git a/Sub/WinsockOracs/Backup/Enumerations.vb b/Sub/WinsockOracs/Backup/Enumerations.vb new file mode 100644 index 0000000..d132c37 --- /dev/null +++ b/Sub/WinsockOracs/Backup/Enumerations.vb @@ -0,0 +1,49 @@ +Option Strict On + +''' +''' Enumeration containing the various supported network protocols. +''' +Public Enum WinsockProtocol + ''' + ''' Transmission Control Protocol - a connection oriented protocol. + ''' + Tcp = 0 + ''' + ''' User Datagram Protocol - a connection-less protocol. + ''' + Udp = 1 +End Enum + +''' +''' Enumeration containing the various Winsock states. +''' +Public Enum WinsockStates + ''' + ''' The Winsock is closed. + ''' + Closed = 0 + ''' + ''' The Winsock is listening (TCP for connections, UDP for data). + ''' + Listening = 1 + ''' + ''' The Winsock is attempting the resolve the remote host. + ''' + ResolvingHost = 2 + ''' + ''' The remote host has been resolved to IP address. + ''' + HostResolved = 3 + ''' + ''' The Winsock is attempting to connect to the remote host. + ''' + Connecting = 4 + ''' + ''' The Winsock is connected to a remote source (client or server). + ''' + Connected = 5 + ''' + ''' The Winsock is attempting to close the connection. + ''' + Closing = 6 +End Enum \ No newline at end of file diff --git a/Sub/WinsockOracs/Backup/EventArgs.vb b/Sub/WinsockOracs/Backup/EventArgs.vb new file mode 100644 index 0000000..0bed9ec --- /dev/null +++ b/Sub/WinsockOracs/Backup/EventArgs.vb @@ -0,0 +1,422 @@ +Option Strict On + +''' +''' Provides data for the Winsock.ErrorReceived event. +''' +Public Class WinsockErrorReceivedEventArgs + Inherits System.EventArgs + + Private m_errorMsg As String + Private m_function As String + Private m_errorCode As System.Net.Sockets.SocketError + Private m_Details As String + + ''' + ''' Initializes a new instance of the WinsockErrorEventArgs class. + ''' + ''' A String containing the error message. + Public Sub New(ByVal error_message As String) + Me.New(error_message, Nothing) + End Sub + ''' + ''' Initializes a new instance of the WinsockErrorEventArgs class. + ''' + ''' A String containing the error message. + ''' A String containing the name of the function that produced the error. + Public Sub New(ByVal error_message As String, ByVal function_name As String) + Me.New(error_message, function_name, Nothing) + End Sub + ''' + ''' Initializes a new instance of the WinsockErrorEventArgs class. + ''' + ''' A String containing the error message. + ''' A String containing the name of the function that produced the error. + ''' A String containing extra details for the error message. + Public Sub New(ByVal error_message As String, ByVal function_name As String, ByVal extra_details As String) + Me.New(error_message, function_name, extra_details, Net.Sockets.SocketError.Success) + End Sub + ''' + ''' Initializes a new instance of the WinsockErrorEventArgs class. + ''' + ''' A String containing the error message. + ''' A String containing the name of the function that produced the error. + ''' A String containing extra details for the error message. + ''' A value containing the socket's ErrorCode. + Public Sub New(ByVal error_message As String, ByVal function_name As String, ByVal extra_details As String, ByVal error_code As System.Net.Sockets.SocketError) + m_errorMsg = error_message + m_function = function_name + m_Details = extra_details + m_errorCode = error_code + End Sub + + ''' + ''' Gets a value containing the error message. + ''' + Public ReadOnly Property Message() As String + Get + Return m_errorMsg + End Get + End Property + + ''' + ''' Gets a value containing the name of the function that produced the error. + ''' + Public ReadOnly Property [Function]() As String + Get + Return m_function + End Get + End Property + + ''' + ''' Gets a value indicating the error code returned by the socket. + ''' + ''' If it wasn't returned by the socket, it defaults to success. + Public ReadOnly Property ErrorCode() As System.Net.Sockets.SocketError + Get + Return m_errorCode + End Get + End Property + + ''' + ''' Gets a value containing more details than the typical error message. + ''' + Public ReadOnly Property Details() As String + Get + Return m_Details + End Get + End Property +End Class + +''' +''' Provides data for the Winsock.ConnectionRequest event. +''' +Public Class WinsockConnectionRequestEventArgs + Inherits System.EventArgs + + Private _client As System.Net.Sockets.Socket + Private _cancel As Boolean = False + + ''' + ''' Initializes a new instance of the WinsockClientReceivedEventArgs class. + ''' + ''' A Socket object containing the new client that needs to be accepted. + Public Sub New(ByVal new_client As System.Net.Sockets.Socket) + _client = new_client + End Sub + + ''' + ''' Gets a value containing the client information. + ''' + ''' Used in accepting the client. + Public ReadOnly Property Client() As System.Net.Sockets.Socket + Get + Return _client + End Get + End Property + + ''' + ''' Gets a value containing the incoming clients IP address. + ''' + Public ReadOnly Property ClientIP() As String + Get + Dim rEP As System.Net.IPEndPoint = CType(_client.RemoteEndPoint, System.Net.IPEndPoint) + Return rEP.Address.ToString() + End Get + End Property + + ''' + ''' Gets or sets a value indicating whether the incoming client request should be cancelled. + ''' + Public Property Cancel() As Boolean + Get + Return _cancel + End Get + Set(ByVal value As Boolean) + _cancel = value + End Set + End Property +End Class + +''' +''' Provides data for the Winsock.StateChanged event. +''' +Public Class WinsockStateChangedEventArgs + Inherits System.EventArgs + + Private m_OldState As WinsockStates + Private m_NewState As WinsockStates + + ''' + ''' Initializes a new instance of the WinsockStateChangingEventArgs class. + ''' + ''' The old state of the Winsock control. + ''' The state the Winsock control is changing to. + Public Sub New(ByVal oldState As WinsockStates, ByVal newState As WinsockStates) + m_OldState = oldState + m_NewState = newState + End Sub + + ''' + ''' Gets a value indicating the previous state of the Winsock control. + ''' + Public ReadOnly Property Old_State() As WinsockStates + Get + Return m_OldState + End Get + End Property + + ''' + ''' Gets a value indicating the new state of the Winsock control. + ''' + Public ReadOnly Property New_State() As WinsockStates + Get + Return m_NewState + End Get + End Property +End Class + +''' +''' Provides data for the Winsock.DataArrival event. +''' +Public Class WinsockDataArrivalEventArgs + Inherits System.EventArgs + + Private _bTotal As Integer + Private _IP As String + Private _Port As Integer + + ''' + ''' Initializes a new instance of the WinsockDataArrivalEventArgs class. + ''' + ''' The number of bytes that were received. + ''' The source address of the bytes. + ''' The source port of the bytes. + Public Sub New(ByVal bytes_total As Integer, ByVal source_ip As String, ByVal source_port As Integer) + _bTotal = bytes_total + _IP = source_ip + _Port = source_port + End Sub + + ''' + ''' Gets a value indicating the number of bytes received. + ''' + Public ReadOnly Property TotalBytes() As Integer + Get + Return _bTotal + End Get + End Property + + ''' + ''' Gets a value indicating the data's originating address. + ''' + Public ReadOnly Property SourceIP() As String + Get + Return _IP + End Get + End Property + + ''' + ''' Gets a value indicating the data's originating port. + ''' + Public ReadOnly Property SourcePort() As Integer + Get + Return _Port + End Get + End Property +End Class + +''' +''' Provides data for the Winsock.Connected event. +''' +Public Class WinsockConnectedEventArgs + Inherits System.EventArgs + + Private _IP As String + Private _Port As Integer + + ''' + ''' Initializes a new instance of the WinsockConnectedEventArgs class. + ''' + ''' The source address of the connection. + ''' The source port of the connection. + Public Sub New(ByVal source_ip As String, ByVal source_port As Integer) + _IP = source_ip + _Port = source_port + End Sub + + ''' + ''' Gets a value indicating the remote address of the connection. + ''' + Public ReadOnly Property SourceIP() As String + Get + Return _IP + End Get + End Property + + ''' + ''' Gets a value indicating the remote port of the connection. + ''' + Public ReadOnly Property SourcePort() As Integer + Get + Return _Port + End Get + End Property +End Class + +''' +''' Provides data for the Winsock.SendComplete event. +''' +Public Class WinsockSendEventArgs + Inherits System.EventArgs + + Private _bTotal As Integer + Private _bSent As Integer + Private _IP As String + + ''' + ''' Initializes a new instance of the WinsockSendEventArgs class. + ''' + ''' The destination of the bytes sent. + ''' The total number of bytes sent. + ''' The total number of bytes that were supposed to be sent. + Public Sub New(ByVal dest_ip As String, ByVal bytes_sent As Integer, ByVal bytes_total As Integer) + _IP = dest_ip + _bTotal = bytes_total + _bSent = bytes_sent + End Sub + + ''' + ''' Gets a value indicating the destination of the bytes sent. + ''' + Public ReadOnly Property DestinationIP() As String + Get + Return _IP + End Get + End Property + + ''' + ''' Gets a value indicating the number of bytes sent. + ''' + Public ReadOnly Property BytesSent() As Integer + Get + Return _bSent + End Get + End Property + + ''' + ''' Gets a value indicating the total number of bytes that should have been sent. + ''' + Public ReadOnly Property BytesTotal() As Integer + Get + Return _bTotal + End Get + End Property + + ''' + ''' Gets a value indicating the percentage (0-100) of bytes that where sent. + ''' + Public ReadOnly Property SentPercent() As Double + Get + Return (_bSent / _bTotal) * 100 + End Get + End Property + +End Class + +''' +''' Provides data for the WinsockCollection.CountChanged event. +''' +Public Class WinsockCollectionCountChangedEventArgs + Inherits System.EventArgs + + Private _oldCount As Integer + Private _newCount As Integer + + ''' + ''' Initializes a new instance of the WinsockCollectionCountChangedEventArgs class. + ''' + ''' The old number of items in the collection. + ''' The new number of items in the collection. + Public Sub New(ByVal old_count As Integer, ByVal new_count As Integer) + _oldCount = old_count + _newCount = new_count + End Sub + + ''' + ''' Gets a value indicating the previous number of items in the collection. + ''' + Public ReadOnly Property OldCount() As Integer + Get + Return _oldCount + End Get + End Property + + ''' + ''' Gets a value indicating the current number of items in the collection. + ''' + Public ReadOnly Property NewCount() As Integer + Get + Return _newCount + End Get + End Property +End Class + +''' +''' Provides data for the Winsock.ReceiveProgress event. +''' +Public Class WinsockReceiveProgressEventArgs + Inherits System.EventArgs + + Private _bTotal As Integer + Private _bIn As Integer + Private _IP As String + + ''' + ''' Initializes a new instance of the WinsockReceiveProgressEventArgs class. + ''' + ''' The source ip of the bytes received. + ''' The total number of bytes received. + ''' The total number of bytes that were supposed to be received. + Public Sub New(ByVal source_ip As String, ByVal bytes_received As Integer, ByVal bytes_total As Integer) + _IP = source_ip + _bTotal = bytes_total + _bIn = bytes_received + End Sub + + ''' + ''' Gets a value indicating the source of the bytes sent. + ''' + Public ReadOnly Property SourceIP() As String + Get + Return _IP + End Get + End Property + + ''' + ''' Gets a value indicating the number of bytes received. + ''' + Public ReadOnly Property BytesReceived() As Integer + Get + Return _bIn + End Get + End Property + + ''' + ''' Gets a value indicating the total number of bytes that should be received. + ''' + Public ReadOnly Property BytesTotal() As Integer + Get + Return _bTotal + End Get + End Property + + ''' + ''' Gets a value indicating the percentage (0-100) of bytes that where received. + ''' + Public ReadOnly Property ReceivedPercent() As Double + Get + Return (_bIn / _bTotal) * 100 + End Get + End Property + +End Class \ No newline at end of file diff --git a/Sub/WinsockOracs/Backup/History.txt b/Sub/WinsockOracs/Backup/History.txt new file mode 100644 index 0000000..d9081e3 --- /dev/null +++ b/Sub/WinsockOracs/Backup/History.txt @@ -0,0 +1,28 @@ +04.21.2008 - Fixed RaiseEventSafe in Winsock.vb and WinsockCollection.vb to use BeginInvoke instead of Invoked. Changed order of operations in ReceiveCallbackUDP to allow remote IP address to be detected properly. + +03.25.2008 - Added a NetworkStream property to expose a NetworkStream object that uses the connection made by this component. + +03.24.2008 - Fixed Listen methods to properly raise state changed events for UDP as well as TCP. Modified IWinsock, Winsock, and AsyncSocket to allow AsyncSocket to modify the LocalPort property of the component. + +02.14.2008 - Fixed a bug in UDP receiving that caused it to always receive at the full byte buffer instead of size of the incoming data. + +12.28.2007 - Winsock.Get and Winsock.Peek updated to check for nothing. + SyncLock added to all qBuffer instances in AsyncSocket and _buff (ProcessIncoming) + +12.26.2007 - Added new event ReceiveProgress. + +12.13.2007 - Fixed PacketHeader.AddHeader to use .Length instead of .GetUpperBound(0). Also changed AsyncSocket.ProcessIncoming in two places with the same change (second half of the first nested IF statements with the >= comparison operator). + +11.19.2007 - Completed WinsockDesigner to original intentions. Can now jump to event code using the Action list. + +11.14.2007 - Demo programs completed, and test ran successfully (quick tests) + +11.06.2007 - Began work on version 4.0.0 + +Interim time - various bug fixes + +04.27.2007 - Third release using VS 2005 (called Winsock 2007) + +06.12.2006 - Second release using VS 2005 (called Winsock 2005) + +08.24.2005 - First release using VB 2003 (called Winsock.NET) \ No newline at end of file diff --git a/Sub/WinsockOracs/Backup/IWinsock.vb b/Sub/WinsockOracs/Backup/IWinsock.vb new file mode 100644 index 0000000..e962a8c --- /dev/null +++ b/Sub/WinsockOracs/Backup/IWinsock.vb @@ -0,0 +1,111 @@ +Option Strict On + +Public Interface IWinsock + +#Region " Events " + + ''' + ''' Occurs when connection is achieved (client and server). + ''' + Event Connected(ByVal sender As Object, ByVal e As WinsockConnectedEventArgs) + ''' + ''' Occurs on the server when a client is attempting to connect. + ''' + ''' Client registers connected at this point. Server must Accept in order for it to be connected. + Event ConnectionRequest(ByVal sender As Object, ByVal e As WinsockConnectionRequestEventArgs) + ''' + ''' Occurs when data arrives on the socket. + ''' + ''' Raised only after all parts of the data have been collected. + Event DataArrival(ByVal sender As Object, ByVal e As WinsockDataArrivalEventArgs) + ''' + ''' Occurs when disconnected from the remote computer (client and server). + ''' + Event Disconnected(ByVal sender As Object, ByVal e As System.EventArgs) + ''' + ''' Occurs when an error is detected in the socket. + ''' + ''' May also be raised on disconnected (depending on disconnect circumstance). + Event ErrorReceived(ByVal sender As Object, ByVal e As WinsockErrorReceivedEventArgs) + ''' + ''' Occurs while the receive buffer is being filled with data. + ''' + Event ReceiveProgress(ByVal sender As Object, ByVal e As WinsockReceiveProgressEventArgs) + ''' + ''' Occurs when sending of data is completed. + ''' + Event SendComplete(ByVal sender As Object, ByVal e As WinsockSendEventArgs) + ''' + ''' Occurs when the send buffer has been sent but not all the data has been sent yet. + ''' + Event SendProgress(ByVal sender As Object, ByVal e As WinsockSendEventArgs) + ''' + ''' Occurs when the state of the socket changes. + ''' + Event StateChanged(ByVal sender As Object, ByVal e As WinsockStateChangedEventArgs) + + ''' + ''' Raises the Connected event. + ''' + Sub OnConnected(ByVal e As WinsockConnectedEventArgs) + ''' + ''' Raises the ConnectionRequest event. + ''' + Sub OnConnectionRequest(ByVal e As WinsockConnectionRequestEventArgs) + ''' + ''' Raises the DataArrival event. + ''' + Sub OnDataArrival(ByVal e As WinsockDataArrivalEventArgs) + ''' + ''' Raises the Disconnected event. + ''' + Sub OnDisconnected() + ''' + ''' Raises the ErrorReceived event. + ''' + Sub OnErrorReceived(ByVal e As WinsockErrorReceivedEventArgs) + ''' + ''' Raises the ReceiveProgress event. + ''' + Sub OnReceiveProgress(ByVal e As WinsockReceiveProgressEventArgs) + ''' + ''' Raises the SendComplete event. + ''' + Sub OnSendComplete(ByVal e As WinsockSendEventArgs) + ''' + ''' Raises the SendProgress event. + ''' + Sub OnSendProgress(ByVal e As WinsockSendEventArgs) + ' '' + ' '' Raises the StateChanged event. + ' '' + 'Sub OnStateChanged(ByVal e As WinsockStateChangedEventArgs) + +#End Region + +#Region " Properties " + + Property LegacySupport() As Boolean + Property Protocol() As WinsockProtocol + Property RemoteHost() As String + Property RemotePort() As Integer + ''' + ''' Gets the state of the Winsock control. + ''' + ReadOnly Property State() As WinsockStates + +#End Region + + ''' + ''' Encapsulates the OnStateChanged methods so the AsyncSocket + ''' doesn't have to build the EventArgs parameter all the time. + ''' + ''' The new state of the Winsock. + Sub ChangeState(ByVal new_state As WinsockStates) + + ''' + ''' When the port is set dynamically by using port 0, the socket can now update the property of the component. + ''' + ''' The port we are now listening on. + Sub ChangeLocalPort(ByVal new_port As Integer) +End Interface \ No newline at end of file diff --git a/Sub/WinsockOracs/Backup/My Project/Application.Designer.vb b/Sub/WinsockOracs/Backup/My Project/Application.Designer.vb new file mode 100644 index 0000000..651bd86 --- /dev/null +++ b/Sub/WinsockOracs/Backup/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:2.0.50727.1318 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/Sub/WinsockOracs/Backup/My Project/Application.myapp b/Sub/WinsockOracs/Backup/My Project/Application.myapp new file mode 100644 index 0000000..758895d --- /dev/null +++ b/Sub/WinsockOracs/Backup/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/Sub/WinsockOracs/Backup/My Project/AssemblyInfo.vb b/Sub/WinsockOracs/Backup/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..4e330ee --- /dev/null +++ b/Sub/WinsockOracs/Backup/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' General Information about an assembly is controlled through the following +' set of attributes. Change these attribute values to modify the information +' associated with an assembly. + +' Review the values of the assembly attributes + + + + + + + + + + +'The following GUID is for the ID of the typelib if this project is exposed to COM + + +' Version information for an assembly consists of the following four values: +' +' Major Version +' Minor Version +' Build Number +' Revision +' +' You can specify all the values or you can default the Build and Revision Numbers +' by using the '*' as shown below: +' + + + diff --git a/Sub/WinsockOracs/Backup/My Project/Resources.Designer.vb b/Sub/WinsockOracs/Backup/My Project/Resources.Designer.vb new file mode 100644 index 0000000..30a538d --- /dev/null +++ b/Sub/WinsockOracs/Backup/My Project/Resources.Designer.vb @@ -0,0 +1,70 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:2.0.50727.1318 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + 'This class was auto-generated by the StronglyTypedResourceBuilder + 'class via a tool like ResGen or Visual Studio. + 'To add or remove a member, edit your .ResX file then rerun ResGen + 'with the /str option, or rebuild your VS project. + ''' + ''' A strongly-typed resource class, for looking up localized strings, etc. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Returns the cached ResourceManager instance used by this class. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Winsock_Orcas.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Overrides the current thread's CurrentUICulture property for all + ''' resource lookups using this strongly typed resource class. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + + Friend ReadOnly Property k_koding() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("k-koding", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + End Module +End Namespace diff --git a/Sub/WinsockOracs/Backup/My Project/Resources.resx b/Sub/WinsockOracs/Backup/My Project/Resources.resx new file mode 100644 index 0000000..e11d804 --- /dev/null +++ b/Sub/WinsockOracs/Backup/My Project/Resources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\k-koding.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Sub/WinsockOracs/Backup/My Project/Settings.Designer.vb b/Sub/WinsockOracs/Backup/My Project/Settings.Designer.vb new file mode 100644 index 0000000..936bd24 --- /dev/null +++ b/Sub/WinsockOracs/Backup/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:2.0.50727.1318 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) + +#Region "My.Settings Auto-Save Functionality" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.Winsock_Orcas.My.MySettings + Get + Return Global.Winsock_Orcas.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/Sub/WinsockOracs/Backup/My Project/Settings.settings b/Sub/WinsockOracs/Backup/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/Sub/WinsockOracs/Backup/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Sub/WinsockOracs/Backup/ObjectPacker.vb b/Sub/WinsockOracs/Backup/ObjectPacker.vb new file mode 100644 index 0000000..4fe5627 --- /dev/null +++ b/Sub/WinsockOracs/Backup/ObjectPacker.vb @@ -0,0 +1,53 @@ +Imports System.IO +Imports System.Xml +Imports System.Xml.Serialization +Imports System.Runtime.Serialization.Formatters.Binary + +''' +''' Contains function for serializing/deserializing an object to and from a byte array. +''' +Public Class ObjectPacker + + ''' + ''' Serializes an object to a byte array. + ''' + ''' The object to be serialized. + Public Shared Function GetBytes(ByVal obj As Object) As Byte() + If obj.GetType Is GetType(Byte).MakeArrayType Then + Return CType(obj, Byte()) + End If + Dim ret() As Byte = Nothing + Dim blnRetAfterClose As Boolean = False + Dim ms As New MemoryStream() + Dim bf As New BinaryFormatter() + Try + bf.Serialize(ms, obj) + Catch ex As Exception + blnRetAfterClose = True + Finally + ms.Close() + End Try + If blnRetAfterClose Then Return ret + ret = ms.ToArray() + Return ret + End Function + + ''' + ''' Deserializes an object from a byte array. + ''' + ''' The byte array from which to obtain the object. + Public Shared Function GetObject(ByVal byt() As Byte) As Object + Dim ms As New MemoryStream(byt, False) + Dim bf As New BinaryFormatter() + Dim x As Object + Try + x = bf.Deserialize(ms) + Catch ex As Exception + x = byt + Finally + ms.Close() + End Try + Return x + End Function + +End Class diff --git a/Sub/WinsockOracs/Backup/Resources/k-koding.png b/Sub/WinsockOracs/Backup/Resources/k-koding.png new file mode 100644 index 0000000..958f7fd Binary files /dev/null and b/Sub/WinsockOracs/Backup/Resources/k-koding.png differ diff --git a/Sub/WinsockOracs/Backup/SharedMethods.vb b/Sub/WinsockOracs/Backup/SharedMethods.vb new file mode 100644 index 0000000..4ed0790 --- /dev/null +++ b/Sub/WinsockOracs/Backup/SharedMethods.vb @@ -0,0 +1,85 @@ +Option Strict On + +Imports System.Net.Sockets + +''' +''' This call contains shared methods that any class can use. +''' +Public Class SharedMethods + + ''' + ''' Raises an error on the parent Winsock object. + ''' + ''' The parent Winsock object to raise the error on. + ''' A String containing a message describing the error being raised. + Protected Friend Shared Sub RaiseError(ByRef iParent As IWinsock, ByVal msg As String) + ' First use the StackTrace to get the calling class and function. + Dim CurrentStack As New System.Diagnostics.StackTrace() + Dim callingFunction As String = CurrentStack.GetFrame(1).GetMethod.Name + Dim callingClass As String = CurrentStack.GetFrame(1).GetMethod.DeclaringType.ToString() + Dim caller As String = CStr(IIf(callingFunction.StartsWith("."), callingClass & callingFunction, callingClass & "." & callingFunction)) + ' Create the event arguement + Dim e As New WinsockErrorReceivedEventArgs(msg, caller) + ' Raise the event only if there really is a parent + If iParent IsNot Nothing Then + iParent.OnErrorReceived(e) + End If + End Sub + + ''' + ''' Raises an error on the parent Winsock object. + ''' + ''' The parent Winsock object to raise the error on. + ''' A String containing a message describing the error being raised. + ''' A String containing extra details describing the error being raised. + Protected Friend Shared Sub RaiseError(ByRef iParent As IWinsock, ByVal msg As String, ByVal details As String) + ' First use the StackTrace to get the calling class and function + Dim CurrentStack As New System.Diagnostics.StackTrace() + Dim callingFunction As String = CurrentStack.GetFrame(1).GetMethod.Name + Dim callingClass As String = CurrentStack.GetFrame(1).GetMethod.DeclaringType.ToString() + Dim caller As String = CStr(IIf(callingFunction.StartsWith("."), callingClass & callingFunction, callingClass & "." & callingFunction)) + ' Create the event arguement + Dim e As New WinsockErrorReceivedEventArgs(msg, caller, details) + ' Raise the event only if there really is a parent + If iParent IsNot Nothing Then + iParent.OnErrorReceived(e) + End If + End Sub + + ''' + ''' Raises an error on the parent Winsock object. + ''' + ''' The parent Winsock object to raise the error on. + ''' A String containing a message describing the error being raised. + ''' A String containing extra details describing the error being raised. + ''' A value containing the socket's error code. + Protected Friend Shared Sub RaiseError(ByRef iParent As IWinsock, ByVal msg As String, ByVal details As String, ByVal errCode As SocketError) + ' First use the StackTrace to get the calling class and function + Dim CurrentStack As New System.Diagnostics.StackTrace() + Dim callingFunction As String = CurrentStack.GetFrame(1).GetMethod.Name + Dim callingClass As String = CurrentStack.GetFrame(1).GetMethod.DeclaringType.ToString() + Dim caller As String = CStr(IIf(callingFunction.StartsWith("."), callingClass & callingFunction, callingClass & "." & callingFunction)) + ' Create the event arguement + Dim e As New WinsockErrorReceivedEventArgs(msg, caller, details, errCode) + ' Raise the event only if there really is a parent + If iParent IsNot Nothing Then + iParent.OnErrorReceived(e) + End If + End Sub + + ''' + ''' Removes items from the beginning of an array. + ''' + Protected Friend Shared Function ShrinkArray(Of arrayType)(ByRef arr() As arrayType, ByVal desiredLengthToTrim As Integer) As arrayType() + ' Grab desired length from array - this will be returned + Dim retArr(desiredLengthToTrim - 1) As arrayType + Array.Copy(arr, 0, retArr, 0, desiredLengthToTrim) + ' Trim what we grabbed out of the array + Dim tmpArr(arr.GetUpperBound(0) - desiredLengthToTrim) As arrayType + Array.Copy(arr, desiredLengthToTrim, tmpArr, 0, arr.Length - desiredLengthToTrim) + arr = DirectCast(tmpArr.Clone(), arrayType()) + ' Return the data + Return retArr + End Function + +End Class diff --git a/Sub/WinsockOracs/Backup/Winsock Orcas.vbproj b/Sub/WinsockOracs/Backup/Winsock Orcas.vbproj new file mode 100644 index 0000000..b9f83ae --- /dev/null +++ b/Sub/WinsockOracs/Backup/Winsock Orcas.vbproj @@ -0,0 +1,129 @@ + + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {C422352B-E7E1-4CA6-9275-1142249D40E2} + Library + Winsock_Orcas + Winsock Orcas + 512 + Windows + v3.5 + On + Binary + Off + On + + + true + full + true + true + bin\Debug\ + Winsock Orcas.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + pdbonly + false + true + true + bin\Release\ + Winsock Orcas.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + + + + + + + + + + + + + + + + + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + + Designer + frmAbout.vb + + + + + + frmAbout.vb + + + Form + + + + + + + Component + + + + + + + + + + + \ No newline at end of file diff --git a/Sub/WinsockOracs/Backup/Winsock.png b/Sub/WinsockOracs/Backup/Winsock.png new file mode 100644 index 0000000..f54bf73 Binary files /dev/null and b/Sub/WinsockOracs/Backup/Winsock.png differ diff --git a/Sub/WinsockOracs/Backup/Winsock.vb b/Sub/WinsockOracs/Backup/Winsock.vb new file mode 100644 index 0000000..2cbb805 --- /dev/null +++ b/Sub/WinsockOracs/Backup/Winsock.vb @@ -0,0 +1,583 @@ +Option Strict On + +Imports System.ComponentModel +Imports System.ComponentModel.Design +Imports System.Drawing +Imports System.Net + + _ + _ + _ +Public Class Winsock + Inherits Component + Implements IWinsock + + Public Sub New() + _localPort = 8080 + _remotePort = 8080 + _remoteHost = "localhost" + _maxPendingConnections = 1 + _legacySupport = False + _protocol = WinsockProtocol.Tcp + _wsState = WinsockStates.Closed + _asSock = New AsyncSocket(Me) + End Sub + +#Region " Events " + + ''' + ''' Triggers an event declared at module level within a class, form, or document in a thread-safe manner. + ''' + ''' The event to be raised. + ''' The arguements for the event. + Private Sub RaiseEventSafe(ByVal ev As System.Delegate, ByRef args() As Object) + Dim bFired As Boolean + If ev IsNot Nothing Then + For Each singleCast As System.Delegate In ev.GetInvocationList() + bFired = False + Try + Dim syncInvoke As ISynchronizeInvoke = CType(singleCast.Target, ISynchronizeInvoke) + If syncInvoke IsNot Nothing AndAlso syncInvoke.InvokeRequired Then + bFired = True + syncInvoke.BeginInvoke(singleCast, args) + Else + bFired = True + singleCast.DynamicInvoke(args) + End If + Catch ex As Exception + If Not bFired Then singleCast.DynamicInvoke(args) + End Try + Next + End If + End Sub + + ''' + ''' Occurs when connection is achieved (client and server). + ''' + Public Event Connected(ByVal sender As Object, ByVal e As WinsockConnectedEventArgs) Implements IWinsock.Connected + ''' + ''' Occurs on the server when a client is attempting to connect. + ''' + ''' Client registers connected at this point. Server must Accept in order for it to be connected. + Public Event ConnectionRequest(ByVal sender As Object, ByVal e As WinsockConnectionRequestEventArgs) Implements IWinsock.ConnectionRequest + ''' + ''' Occurs when data arrives on the socket. + ''' + ''' Raised only after all parts of the data have been collected. + Public Event DataArrival(ByVal sender As Object, ByVal e As WinsockDataArrivalEventArgs) Implements IWinsock.DataArrival + ''' + ''' Occurs when disconnected from the remote computer (client and server). + ''' + Public Event Disconnected(ByVal sender As Object, ByVal e As System.EventArgs) Implements IWinsock.Disconnected + ''' + ''' Occurs when an error is detected in the socket. + ''' + ''' May also be raised on disconnected (depending on disconnect circumstance). + Public Event ErrorReceived(ByVal sender As Object, ByVal e As WinsockErrorReceivedEventArgs) Implements IWinsock.ErrorReceived + ''' + ''' Occurs while the receive buffer is being filled with data. + ''' + Public Event ReceiveProgress(ByVal sender As Object, ByVal e As WinsockReceiveProgressEventArgs) Implements IWinsock.ReceiveProgress + ''' + ''' Occurs when sending of data is completed. + ''' + Public Event SendComplete(ByVal sender As Object, ByVal e As WinsockSendEventArgs) Implements IWinsock.SendComplete + ''' + ''' Occurs when the send buffer has been sent but not all the data has been sent yet. + ''' + Public Event SendProgress(ByVal sender As Object, ByVal e As WinsockSendEventArgs) Implements IWinsock.SendProgress + ''' + ''' Occurs when the state of the socket changes. + ''' + Public Event StateChanged(ByVal sender As Object, ByVal e As WinsockStateChangedEventArgs) Implements IWinsock.StateChanged + + ''' + ''' Raises the Connected event. + ''' + Public Sub OnConnected(ByVal e As WinsockConnectedEventArgs) Implements IWinsock.OnConnected + RaiseEventSafe(ConnectedEvent, New Object() {Me, e}) + End Sub + + ''' + ''' Raises the ConnectionRequest event. + ''' + Public Sub OnConnectionRequest(ByVal e As WinsockConnectionRequestEventArgs) Implements IWinsock.OnConnectionRequest + RaiseEventSafe(ConnectionRequestEvent, New Object() {Me, e}) + If e.Cancel Then + e.Client.Disconnect(False) + e.Client.Close() + End If + End Sub + + ''' + ''' Raises the DataArrival event. + ''' + Public Sub OnDataArrival(ByVal e As WinsockDataArrivalEventArgs) Implements IWinsock.OnDataArrival + RaiseEventSafe(DataArrivalEvent, New Object() {Me, e}) + End Sub + + ''' + ''' Raises the Disconnected event. + ''' + Public Sub OnDisconnected() Implements IWinsock.OnDisconnected + RaiseEventSafe(DisconnectedEvent, New Object() {Me, New System.EventArgs}) + End Sub + + ''' + ''' Raises the ErrorReceived event. + ''' + Public Sub OnErrorReceived(ByVal e As WinsockErrorReceivedEventArgs) Implements IWinsock.OnErrorReceived + RaiseEventSafe(ErrorReceivedEvent, New Object() {Me, e}) + End Sub + + ''' + ''' Raises the ReceiveProgress event. + ''' + Public Sub OnReceiveProgress(ByVal e As WinsockReceiveProgressEventArgs) Implements IWinsock.OnReceiveProgress + RaiseEventSafe(ReceiveProgressEvent, New Object() {Me, e}) + End Sub + + ''' + ''' Raises the SendComplete event. + ''' + Public Sub OnSendComplete(ByVal e As WinsockSendEventArgs) Implements IWinsock.OnSendComplete + RaiseEventSafe(SendCompleteEvent, New Object() {Me, e}) + End Sub + + ''' + ''' Raises the SendProgress event. + ''' + Public Sub OnSendProgress(ByVal e As WinsockSendEventArgs) Implements IWinsock.OnSendProgress + RaiseEventSafe(SendProgressEvent, New Object() {Me, e}) + End Sub + + ''' + ''' Raises the StateChanged event. + ''' + Private Sub OnStateChanged(ByVal e As WinsockStateChangedEventArgs) 'Implements IWinsock.OnStateChanged + If _wsState <> e.New_State Then + _wsState = e.New_State + RaiseEventSafe(StateChangedEvent, New Object() {Me, e}) + End If + End Sub + +#End Region + +#Region " Private Members " + + Private _asSock As AsyncSocket + Private _wsState As WinsockStates + Private _localPort As Integer + Private _maxPendingConnections As Integer + Private _remoteHost As String + Private _remotePort As Integer + Private _legacySupport As Boolean + Private _protocol As WinsockProtocol + +#End Region + +#Region " Helper Methods " + + ''' + ''' Encapsulates the OnStateChanged methods so the AsyncSocket + ''' doesn't have to build the EventArgs parameter all the time. + ''' + ''' The new state of the Winsock. + Protected Friend Sub ChangeState(ByVal new_state As WinsockStates) Implements IWinsock.ChangeState + OnStateChanged(New WinsockStateChangedEventArgs(_wsState, new_state)) + End Sub + + ''' + ''' When the port is set dynamically by using port 0, the socket can now update the property of the component. + ''' + ''' The port we are now listening on. + Protected Friend Sub ChangeLocalPort(ByVal new_port As Integer) Implements IWinsock.ChangeLocalPort + _localPort = new_port + End Sub + +#End Region + +#Region " Public Properties " + + ''' + ''' Gets or sets a value indicating the interal size of the byte buffers. + ''' + Public Property BufferSize() As Integer + Get + Return _asSock.BufferSize + End Get + Set(ByVal value As Integer) + _asSock.BufferSize = value + End Set + End Property + + ''' + ''' Gets a value indicating whether the buffer has data for retrieval. + ''' + _ + Public ReadOnly Property HasData() As Boolean + Get + Return _asSock.BufferCount > 0 + End Get + End Property + + ''' + ''' Gets or sets a value indicating if Legacy support should be used or not. + ''' + ''' Legacy support is to support older winsock style connections. + Public Property LegacySupport() As Boolean Implements IWinsock.LegacySupport + Get + Return _legacySupport + End Get + Set(ByVal value As Boolean) + If Not value AndAlso Protocol = WinsockProtocol.Udp Then + Throw New Exception("LegacySupport is required for UDP connections.") + End If + _legacySupport = value + End Set + End Property + + ''' + ''' Gets the local machine's IP address(es). + ''' + _ + Public ReadOnly Property LocalIP() As String() + Get + Dim h As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName) + Dim s(h.AddressList.Length - 1) As String + For i As Integer = 0 To h.AddressList.Length - 1 + s(i) = CType(h.AddressList.GetValue(i), Net.IPAddress).ToString + Next + Return s + End Get + End Property + + ''' + ''' Gets or sets a value indicating the port the control should listen on. + ''' + ''' Cannot change while listening, connected, or connecting - but can change while closing. + Public Property LocalPort() As Integer + Get + Return _localPort + End Get + Set(ByVal value As Integer) + Select Case State + Case WinsockStates.Listening + Throw New Exception("Cannot change the local port while already listening on a port.") + Case WinsockStates.Connected + Throw New Exception("Cannot change the local port of a connection that is already active.") + Case Else + If State <> WinsockStates.Closed AndAlso State <> WinsockStates.Closing Then + Throw New Exception("Cannot change the local port while the component is processing, it may have adverse effects on the connection process.") + End If + End Select + _localPort = value + End Set + End Property + + ''' + ''' Gets or sets a value that control the length of the maximum length of the pending connections queue. + ''' + ''' Cannot change while listening. + Public Property MaxPendingConnections() As Integer + Get + Return _maxPendingConnections + End Get + Set(ByVal value As Integer) + Select Case State + Case WinsockStates.Listening + Throw New Exception("Cannot change the pending connections value while already listening.") + End Select + _maxPendingConnections = value + End Set + End Property + + ''' + ''' Gets a NetworkStream that this Winsock object is based on. + ''' + _ + Public ReadOnly Property NetworkStream() As System.Net.Sockets.NetworkStream + Get + Return _asSock.UnderlyingStream + End Get + End Property + + ''' + ''' Gets or sets the winsock protocol to use when communicating with the remote computer. + ''' + _ + Public Property Protocol() As WinsockProtocol Implements IWinsock.Protocol + Get + Return _protocol + End Get + Set(ByVal value As WinsockProtocol) + If State <> WinsockStates.Closed Then + Throw New Exception("Cannot change the protocol while listening or connected to a remote computer.") + End If + _protocol = value + End Set + End Property + + ''' + ''' Gets or sets a value that determines what remote computer to connect to, or is currently connected to. + ''' + ''' Can only change if closed or listening. + Public Property RemoteHost() As String Implements IWinsock.RemoteHost + Get + Return _remoteHost + End Get + Set(ByVal value As String) + If State <> WinsockStates.Closed AndAlso State <> WinsockStates.Listening Then + Throw New Exception("Cannot change the remote host while already connected to a remote computer.") + End If + _remoteHost = value + End Set + End Property + + ''' + ''' Gets or sets a value that determines which port on the remote computer to connect on, or is currently connected on. + ''' + ''' Can only change if closed or listening. + Public Property RemotePort() As Integer Implements IWinsock.RemotePort + Get + Return _remotePort + End Get + Set(ByVal value As Integer) + If State <> WinsockStates.Closed AndAlso State <> WinsockStates.Listening Then + Throw New Exception("Cannot change the remote port while already connected to a remote computer.") + End If + _remotePort = value + End Set + End Property + + ''' + ''' Gets the state of the Winsock control. + ''' + _ + Public ReadOnly Property State() As WinsockStates Implements IWinsock.State + Get + Return _wsState + End Get + End Property + +#End Region + +#Region " Public Methods " + + ''' + ''' Places a Winsock in a listening state. + ''' + Public Sub Listen() + _asSock.Listen(LocalPort, MaxPendingConnections) + End Sub + ''' + ''' Places a Winsock in a listening state. + ''' + ''' The port Winsock should listen on. + Public Sub Listen(ByVal port As Integer) + If port < 0 Then + Throw New ArgumentException("Port cannot be less than zero.", "port") + End If + LocalPort = port + Listen() + End Sub + ''' + ''' Places a Winsock in a listening state. + ''' + ''' The IP address the Winsock should listen on. This must be an ip address. + Public Sub Listen(ByVal ip As String) + If ip Is Nothing Then + Listen() + Else + Dim ipAddr As IPAddress = Nothing + If Not IPAddress.TryParse(ip, ipAddr) Then + Throw New ArgumentException("IP address specified is not a valid IP address.", "ip") + End If + _asSock.Listen(LocalPort, MaxPendingConnections, ipAddr) + End If + End Sub + ''' + ''' Places a Winsock in a listening state. + ''' + ''' The IP address the Winsock should listen on. + ''' The port Winsock should listen on. + Public Sub Listen(ByVal ip As String, ByVal port As Integer) + If port < 0 Then + Throw New ArgumentException("Port cannot be less than zero.", "port") + End If + LocalPort = port + If ip Is Nothing Then + Listen() + Else + Dim ipAddr As IPAddress = Nothing + If Not IPAddress.TryParse(ip, ipAddr) Then + Throw New ArgumentException("IP address specified is not a valid IP address.", "ip") + End If + _asSock.Listen(LocalPort, MaxPendingConnections, ipAddr) + End If + End Sub + + ''' + ''' Accepts a client connect as valid and begins to monitor it for incoming data. + ''' + ''' A System.Net.Sockets.Socket that represents the client being accepted. + Public Sub Accept(ByVal client As Sockets.Socket) + If _asSock.Accept(client) Then + _localPort = _asSock.LocalPort + ' also set remote host and port + End If + End Sub + + ''' + ''' Creates an new Winsock and accepts the client connection on it. + ''' + ''' A System.Net.Sockets.Socket that represents the client being accepted. + ''' + ''' This was created to be used by the listener, to keep the listener listening while + ''' also accepting a connection. + ''' + Public Function AcceptNew(ByVal client As Sockets.Socket) As Winsock + Dim wskReturn As New Winsock() + wskReturn.Protocol = Me.Protocol + wskReturn.LegacySupport = Me.LegacySupport + wskReturn.Accept(client) + Return wskReturn + End Function + + ''' + ''' Closes an open Winsock connection. + ''' + Public Sub Close() + _asSock.Close() + End Sub + + ''' + ''' Establishes a connection to a remote host. + ''' + Public Sub Connect() + _asSock.Connect(RemoteHost, RemotePort) + End Sub + ''' + ''' Establishes a connection to a remote host. + ''' + ''' A System.String containing the Hostname or IP address of the remote host. + ''' A value indicating the port on the remote host to connect to. + Public Sub Connect(ByVal remoteHostOrIP As String, ByVal remote_port As Integer) + RemoteHost = remoteHostOrIP + RemotePort = remote_port + Connect() + End Sub + + ''' + ''' Sends an object to a connected socket on a remote computer. + ''' + ''' The object to send. + ''' + ''' The object is first serialized using a BinaryFormatter - unless + ''' it is already a byte array, in which case it just sends the byte array. + ''' + Public Sub Send(ByVal data As Object) + Dim byt() As Byte + If LegacySupport AndAlso data.GetType Is GetType(String) Then + byt = System.Text.Encoding.Default.GetBytes(CStr(data)) + Else + byt = ObjectPacker.GetBytes(data) + End If + _asSock.Send(byt) + End Sub + ''' + ''' Sends a file to a connected socket on a remote computer. + ''' + ''' The full path to the file you want to send. + ''' + ''' Creates a special file object to send, so the receiving end knows what to do with it. + ''' + Public Sub SendFile(ByVal filename As String) + Dim wsf As New WinsockFileData() + Try + If Not wsf.ReadFile(filename) Then + Throw New Exception("File does not exist, or there was a problem reading the file.") + End If + If LegacySupport Then + Send(wsf.FileData) + Else + Send(wsf) + End If + Catch ex As Exception + SharedMethods.RaiseError(Me, ex.Message) + End Try + End Sub + + ''' + ''' Gets the next object from the buffer, removing it from the buffer. + ''' + ''' + ''' A Deserialized object or if it can't be deserialized the byte array. + ''' + Public Function [Get]() As Object + Dim byt() As Byte = _asSock.GetData() + If byt Is Nothing Then Return Nothing + Return ObjectPacker.GetObject(byt) + End Function + ''' + ''' Gets the next object from the buffer as the supplied type, removing it from the buffer. + ''' + ''' The System.Type you wish to have the data returned as. + ''' + ''' A Deserialized object converted to the data type you wish. + ''' + ''' + ''' This function was added to make it easier for Option Strict users. + ''' It allows for easier conversion instead of the user using CType, DirectCast, or the like. + ''' Can throw an error if you specify the wrong type. + ''' + Public Function [Get](Of dataType)() As dataType + Dim byt() As Byte = _asSock.GetData() + If byt Is Nothing Then Return Nothing + Dim obj As Object + If LegacySupport AndAlso GetType(dataType) Is GetType(String) Then + obj = System.Text.Encoding.Default.GetString(byt) + Else + obj = ObjectPacker.GetObject(byt) + End If + Return DirectCast(obj, dataType) + End Function + + ''' + ''' Gets the next object from the buffer, leaving it ing the buffer. + ''' + ''' + ''' A Deserialized object or if it can't be deserialized the byte array. + ''' + Public Function Peek() As Object + Dim byt() As Byte = _asSock.PeekData() + If byt Is Nothing Then Return Nothing + Return ObjectPacker.GetObject(byt) + End Function + ''' + ''' Gets the next object from the buffer as the supplied type, leaving it in the buffer. + ''' + ''' The System.Type you wish to have the data returned as. + ''' + ''' A Deserialized object converted to the data type you wish. + ''' + ''' + ''' This function was added to make it easier for Option Strict users. + ''' It allows for easier conversion instead of the user using CType, DirectCast, or the like. + ''' Can throw an error if you specify the wrong type. + ''' + Public Function Peek(Of dataType)() As dataType + Dim byt() As Byte = _asSock.PeekData() + If byt Is Nothing Then Return Nothing + Dim obj As Object + If LegacySupport AndAlso GetType(dataType) Is GetType(String) Then + obj = System.Text.Encoding.Default.GetString(byt) + Else + obj = ObjectPacker.GetObject(byt) + End If + Return DirectCast(obj, dataType) + End Function + +#End Region + +End Class diff --git a/Sub/WinsockOracs/Backup/WinsockCollection.vb b/Sub/WinsockOracs/Backup/WinsockCollection.vb new file mode 100644 index 0000000..e9ec07c --- /dev/null +++ b/Sub/WinsockOracs/Backup/WinsockCollection.vb @@ -0,0 +1,571 @@ +Imports System.ComponentModel + +''' +''' A collection of Winsock objects. +''' +Public Class WinsockCollection + Inherits CollectionBase + + +#Region " Private Members " + + ' These two hashtables store the key's and the values. + ' The base class's List store the GUID that ties the + ' keys to the values + Private _keys As Hashtable + Private _values As Hashtable + + ' These are for auto removal of the Winsock object + ' when the Winsock's Disconnected event is raised. + Private _autoRemoval As Queue + Private _autoRemove As Boolean = False + + ' These are for timing and removal of every Winsock + ' object in the collection - only used when the + ' Clear() method is run. + Private _clearRemoval As Queue + Private _clearRemove As Boolean = False + Private _clearOK As Boolean = False + + ' Allows LegacySupport to work in a multi-client + ' environment + Private _legacySupport As Boolean = False + +#End Region + +#Region " Constructor " + + ''' + ''' Initializes a new instance of the WinsockCollection class. + ''' + ''' + ''' Determines if the collection should automatically remove the + ''' connection when the Disconnected event is fired. + ''' + ''' + ''' Enables LegacySupport for connections accepted using the + ''' collections Accept method. + ''' + Public Sub New(Optional ByVal auto_remove As Boolean = False, Optional ByVal legacy_support As Boolean = False) + _keys = New Hashtable + _values = New Hashtable + _autoRemoval = New Queue + _autoRemove = auto_remove + _clearRemoval = New Queue + _legacySupport = legacy_support + End Sub + +#End Region + +#Region " Overriden Methods " + + ''' + ''' Run when the base class's list is finished clearing. + ''' Triggers clearing of the keys and values - closing + ''' all connections. + ''' + Protected Overrides Sub OnClearComplete() + MyBase.OnClearComplete() + _keys.Clear() + Dim b As Boolean = _autoRemove : _autoRemove = False + _clearOK = False + _clearRemove = True + For Each wsk As Winsock In _values.Values + wsk.Close() + Next + _clearOK = True + _autoRemove = b + End Sub + + ''' + ''' Causes the CountChanged event to be triggered when an item is added to the collection. + ''' + Protected Overrides Sub OnInsertComplete(ByVal index As Integer, ByVal value As Object) + MyBase.OnInsertComplete(index, value) + OnCountChanged(List.Count - 1, List.Count) + End Sub + + ''' + ''' Causes the CountChanged event to be triggered when an item is removed from the collection. + ''' + Protected Overrides Sub OnRemoveComplete(ByVal index As Integer, ByVal value As Object) + MyBase.OnRemoveComplete(index, value) + OnCountChanged(List.Count + 1, List.Count) + End Sub + +#End Region + +#Region " Private Methods " + + ''' + ''' Run during the Clearing of the collection. + ''' The method actually clears the values safely + ''' so as not to cause exceptions. Triggered via + ''' the last Disconnected event. + ''' + Private Sub ClearAllValues() + While _values.Count > 0 + If _clearOK AndAlso _clearRemoval.Count > 0 Then + Dim i As Integer = _values.Count + Dim gid2Rem As Guid = CType(_clearRemoval.Dequeue(), Guid) + _values.Remove(gid2Rem) + OnCountChanged(i, _values.Count) + End If + End While + End Sub + + ''' + ''' Attemps to retrieve the GUID of the item at the index specified. + ''' + ''' The zero-based index of the GUID you are attempting to find. + Private Function getGID(ByVal index As Integer) As Guid + Return CType(List.Item(index), Guid) + End Function + + ''' + ''' Attempts to retrieve the GUID of the item using the Key given to the item. + ''' + ''' The key whose GUID you are looking for. + Private Function getGID(ByVal key As Object) As Guid + For Each gid As Guid In _keys.Keys + If Object.ReferenceEquals(_keys(gid), key) Then Return gid + Next + Return Guid.Empty + End Function + + ''' + ''' Removes the given GUID and it's ties from the collections. + ''' + ''' The GUID to remove. + Private Sub RemoveGID(ByVal gid As Guid) + If gid <> Guid.Empty Then + CType(_values(gid), Winsock).Dispose() + _values.Remove(gid) + _keys.Remove(gid) + List.Remove(gid) + End If + End Sub + + ''' + ''' Adds a winsock value to the collection. + ''' + ''' The GUID of the object. + ''' The Key of the object (may be nothing). + ''' The Winsock that is to be added to the collection. + ''' Attaches handlers to each Winsock event so the collection can act as a proxy. + Private Sub Add(ByVal gid As Guid, ByVal key As Object, ByVal value As Winsock) + AddHandler value.Connected, AddressOf OnConnected + AddHandler value.ConnectionRequest, AddressOf OnConnectionRequest + AddHandler value.DataArrival, AddressOf OnDataArrival + AddHandler value.Disconnected, AddressOf OnDisconnected + AddHandler value.ErrorReceived, AddressOf OnErrorReceived + AddHandler value.SendComplete, AddressOf OnSendComplete + AddHandler value.SendProgress, AddressOf OnSendProgress + AddHandler value.StateChanged, AddressOf OnStateChanged + _keys.Add(gid, key) + _values.Add(gid, value) + List.Add(gid) + End Sub + + ''' + ''' Method to remove an object automatically - threaded to avoid problems. + ''' + Private Sub RemovalThread() + Threading.Thread.Sleep(50) + Dim gid As Guid = CType(_autoRemoval.Dequeue(), Guid) + RemoveGID(gid) + End Sub + +#End Region + +#Region " Public Methods " + + ''' + ''' Retrieves the GUID assigned to the specified Winsock object in the collection. + ''' + ''' The Winsock object to find the GUID of. + Public Function findGID(ByVal value As Winsock) As Guid + If Not ContainsValue(value) Then Return Guid.Empty + For Each gid As Guid In _values.Keys + If Object.ReferenceEquals(_values(gid), value) Then Return gid + Next + Return Guid.Empty + End Function + + ''' + ''' Retrieves the Key assigned to the specified Winsock object in the collection. + ''' + ''' The Winsock object to find the Key of. + ''' The key object that was assigned to the Winsock - may be Nothing. + Public Function findKey(ByVal value As Winsock) As Object + Dim gid As Guid = findGID(value) + If gid = Guid.Empty Then Return Nothing + Return _keys(gid) + End Function + + ''' + ''' Determines if the collection contains the key specified. + ''' + ''' The key to search the collection for. + Public Function ContainsKey(ByVal key As Object) As Boolean + If key Is Nothing Then + Throw New ArgumentNullException("key") + End If + Return _keys.ContainsValue(key) + End Function + + ''' + ''' Determines if the collection contains the specified value. + ''' + ''' The value to search the collection for. + Public Function ContainsValue(ByVal value As Winsock) As Boolean + Return _values.ContainsValue(value) + End Function + + ''' + ''' Removes the value at the specified index. Use this instead of RemoveAt. + ''' + ''' The zero-based index of the item you wish to remove. + Public Sub Remove(ByVal index As Integer) + Dim gid As Guid = getGID(index) + RemoveGID(gid) + End Sub + + ''' + ''' Removes the value with the specified key. + ''' + ''' The key of the value you wish to remove. + Public Sub Remove(ByVal key As Object) + If TypeOf (key) Is Integer Then + Dim gidIndex As Guid = getGID(CInt(key)) + RemoveGID(gidIndex) + Exit Sub + End If + If Not ContainsKey(key) Then Exit Sub + Dim gid As Guid = getGID(key) + RemoveGID(gid) + End Sub + + ''' + ''' Removes the value with the specified Guid. + ''' + ''' The Guid of the value you wish to remove. + Public Sub Remove(ByVal gid As Guid) + RemoveGID(gid) + End Sub + + ''' + ''' Adds a value to the collection. + ''' + ''' The Winsock object to add to the collection. + ''' Returns the GUID assigned to the element. + Public Function Add(ByVal value As Winsock) As Guid + Dim gid As Guid = Guid.NewGuid() + Add(gid, Nothing, value) + Return gid + End Function + ''' + ''' Adds a value to the collection. + ''' + ''' The Winsock object to add to the collection. + ''' The Key of the element to add. + ''' Returns the GUID assigned to the element. + Public Function Add(ByVal value As Winsock, ByVal key As Object) As Guid + Dim gid As Guid = Guid.NewGuid() + Add(gid, key, value) + Return gid + End Function + + ''' + ''' Accepts an incoming connection and adds it to the collection. + ''' + ''' The client to accept. + ''' Returns the GUID assigned to the element. + Public Function Accept(ByVal client As System.Net.Sockets.Socket) As Guid + Dim wsk As New Winsock() + wsk.LegacySupport = _legacySupport + Dim gid As Guid = Add(wsk, Nothing) + wsk.Accept(client) + Return gid + End Function + ''' + ''' Accepts an incoming connection and adds it to the collection. + ''' + ''' The client to accept. + ''' The Key of the element to add. + ''' Returns the GUID assigned to the element. + Public Function Accept(ByVal client As System.Net.Sockets.Socket, ByVal key As Object) As Guid + Dim wsk As New Winsock() + wsk.LegacySupport = _legacySupport + Dim gid As Guid = Me.Add(wsk, key) + wsk.Accept(client) + Return gid + End Function + + ''' + ''' Connects to a remote host and adds it to the collection. + ''' + ''' A containing the Hostname or IP address of the remote host. + ''' A value indicating the port on the remote host to connect to. + ''' Return the GUID assigned to the element. + Public Function Connect(ByVal remoteHostOrIP As String, ByVal remotePort As Integer) As Guid + Dim wsk As New Winsock() + wsk.Protocol = WinsockProtocol.Tcp + wsk.LegacySupport = _legacySupport + Dim gid As Guid = Add(wsk, Nothing) + CType(_values(gid), Winsock).Connect(remoteHostOrIP, remotePort) + End Function + ''' + ''' Connects to a remote host and adds it to the collection. + ''' + ''' A containing the Hostname or IP address of the remote host. + ''' A value indicating the port on the remote host to connect to. + ''' The Key of the element to add. + ''' Return the GUID assigned to the element. + Public Function Connect(ByVal remoteHostOrIP As String, ByVal remotePort As Integer, ByVal key As Object) As Guid + Dim wsk As New Winsock() + wsk.Protocol = WinsockProtocol.Tcp + wsk.LegacySupport = _legacySupport + Dim gid As Guid = Add(wsk, key) + CType(_values(gid), Winsock).Connect(remoteHostOrIP, remotePort) + End Function + + ''' + ''' Gets an Array of all the remote IP addresses of each connection in this collection. + ''' + Public Function GetRemoteIPs() As ArrayList + Dim ar As New ArrayList + For Each key As Object In _values.Keys + ar.Add(CType(_values(key), Winsock).RemoteHost) + Next + Return ar + End Function + +#End Region + +#Region " Public Properties " + + ''' + ''' Gets a Collection containing all the keys in this collection. + ''' + Public ReadOnly Property Keys() As System.Collections.ICollection + Get + Return _keys.Values() + End Get + End Property + + ''' + ''' Gets a Collection containing all the values in this collection. + ''' + Public ReadOnly Property Values() As System.Collections.ICollection + Get + Return _values.Values + End Get + End Property + + ''' + ''' Gets or sets the Winsock at the specified index. + ''' + ''' A zero-based index of the Winsock to get or set. + Default Public Property Item(ByVal index As Integer) As Winsock + Get + Dim gid As Guid = getGID(index) + Return CType(_values(gid), Winsock) + End Get + Set(ByVal value As Winsock) + Dim gid As Guid = getGID(index) + If Not _values.ContainsKey(gid) Then + Add(gid, Nothing, value) + Else + _values(gid) = value + End If + End Set + End Property + + ''' + ''' Gets or sets the Winsock associated with the specified key. + ''' + ''' The key whose value to get or set. + Default Public Property Item(ByVal key As Object) As Winsock + Get + Dim gid As Guid = getGID(key) + Return CType(_values(gid), Winsock) + End Get + Set(ByVal value As Winsock) + Dim gid As Guid = getGID(key) + If Not _values.ContainsKey(gid) Then + Add(gid, Nothing, value) + Else + _values(gid) = value + End If + End Set + End Property + + ''' + ''' Gets or sets the Winsock associated with the specified GUID. + ''' + ''' The GUID whose value to get or set. + Default Public Property Item(ByVal gid As Guid) As Winsock + Get + Return CType(_values(gid), Winsock) + End Get + Set(ByVal value As Winsock) + If Not _values.ContainsKey(gid) Then + Add(gid, Nothing, value) + Else + _values(gid) = value + End If + End Set + End Property + +#End Region + +#Region " Events " + + ''' + ''' Occurs when connection is achieved (client and server). + ''' + Public Event Connected(ByVal sender As Object, ByVal e As WinsockConnectedEventArgs) + ''' + ''' Occurs on the server when a client is attempting to connect. + ''' + ''' Client registers connected at this point. Server must Accept in order for it to be connected. + Public Event ConnectionRequest(ByVal sender As Object, ByVal e As WinsockConnectionRequestEventArgs) + ''' + ''' Occurs when the number of items in the collection has changed. + ''' + Public Event CountChanged(ByVal sender As Object, ByVal e As WinsockCollectionCountChangedEventArgs) + ''' + ''' Occurs when data arrives on the socket. + ''' + ''' Raised only after all parts of the data have been collected. + Public Event DataArrival(ByVal sender As Object, ByVal e As WinsockDataArrivalEventArgs) + ''' + ''' Occurs when disconnected from the remote computer (client and server). + ''' + Public Event Disconnected(ByVal sender As Object, ByVal e As System.EventArgs) + ''' + ''' Occurs when an error is detected in the socket. + ''' + ''' May also be raised on disconnected (depending on disconnect circumstance). + Public Event ErrorReceived(ByVal sender As Object, ByVal e As WinsockErrorReceivedEventArgs) + ''' + ''' Occurs when sending of data is completed. + ''' + Public Event SendComplete(ByVal sender As Object, ByVal e As WinsockSendEventArgs) + ''' + ''' Occurs when the send buffer has been sent but not all the data has been sent yet. + ''' + Public Event SendProgress(ByVal sender As Object, ByVal e As WinsockSendEventArgs) + ''' + ''' Occurs when the state of the socket changes. + ''' + Public Event StateChanged(ByVal sender As Object, ByVal e As WinsockStateChangedEventArgs) + + ''' + ''' Triggers an event declared at module level within a class, form, or document in a thread-safe manner. + ''' + ''' The event to be raised. + ''' The arguements for the event. + Private Sub RaiseEventSafe(ByVal ev As System.Delegate, ByRef args() As Object) + Dim bFired As Boolean + If ev IsNot Nothing Then + For Each singleCast As System.Delegate In ev.GetInvocationList() + bFired = False + Try + Dim syncInvoke As ISynchronizeInvoke = CType(singleCast.Target, ISynchronizeInvoke) + If syncInvoke IsNot Nothing AndAlso syncInvoke.InvokeRequired Then + bFired = True + syncInvoke.BeginInvoke(singleCast, args) + Else + bFired = True + singleCast.DynamicInvoke(args) + End If + Catch ex As Exception + If Not bFired Then singleCast.DynamicInvoke(args) + End Try + Next + End If + End Sub + + ''' + ''' Raises the Connected event. + ''' + Protected Friend Sub OnConnected(ByVal sender As Object, ByVal e As WinsockConnectedEventArgs) + RaiseEventSafe(ConnectedEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the ConnectionRequest event, and closes the socket if the ConnectionRequest was rejected. + ''' + Protected Friend Sub OnConnectionRequest(ByVal sender As Object, ByVal e As WinsockConnectionRequestEventArgs) + RaiseEventSafe(ConnectionRequestEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the DataArrival event. + ''' + Protected Friend Sub OnDataArrival(ByVal sender As Object, ByVal e As WinsockDataArrivalEventArgs) + RaiseEventSafe(DataArrivalEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the Disconnected Event. + ''' + Protected Friend Sub OnDisconnected(ByVal sender As Object, ByVal e As System.EventArgs) + RaiseEventSafe(DisconnectedEvent, New Object() {sender, e}) + If _clearRemove Then + Dim gid As Guid = findGID(CType(sender, Winsock)) + _clearRemoval.Enqueue(gid) + If _clearRemoval.Count = _values.Count Then + Dim thd As New Threading.Thread(AddressOf ClearAllValues) + thd.Start() + _clearRemove = False + End If + ElseIf _autoRemove Then + Dim gid As Guid = findGID(CType(sender, Winsock)) + _autoRemoval.Enqueue(gid) + Dim thd As New Threading.Thread(AddressOf RemovalThread) + thd.Start() + End If + End Sub + + ''' + ''' Raises the ErrorReceived event. + ''' + Protected Friend Sub OnErrorReceived(ByVal sender As Object, ByVal e As WinsockErrorReceivedEventArgs) + RaiseEventSafe(ErrorReceivedEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the SendComplete event. + ''' + Protected Friend Sub OnSendComplete(ByVal sender As Object, ByVal e As WinsockSendEventArgs) + RaiseEventSafe(SendCompleteEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the SendProgress event. + ''' + Protected Friend Sub OnSendProgress(ByVal sender As Object, ByVal e As WinsockSendEventArgs) + RaiseEventSafe(SendProgressEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the StateChanged event. + ''' + Protected Friend Sub OnStateChanged(ByVal sender As Object, ByVal e As WinsockStateChangedEventArgs) + RaiseEventSafe(StateChangedEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the count changed event. + ''' + Private Sub OnCountChanged(ByVal old_count As Integer, ByVal new_count As Integer) + Dim e As New WinsockCollectionCountChangedEventArgs(old_count, new_count) + RaiseEventSafe(CountChangedEvent, New Object() {Me, e}) + End Sub + +#End Region + +End Class \ No newline at end of file diff --git a/Sub/WinsockOracs/Backup/WinsockDesigner.vb b/Sub/WinsockOracs/Backup/WinsockDesigner.vb new file mode 100644 index 0000000..bb8e916 --- /dev/null +++ b/Sub/WinsockOracs/Backup/WinsockDesigner.vb @@ -0,0 +1,236 @@ +Imports System.ComponentModel +Imports System.ComponentModel.Design +Imports Microsoft.VisualBasic + +''' +''' Winsock designer class provides designer time support for the Winsock component. +''' +Public Class WinsockDesigner + Inherits System.ComponentModel.Design.ComponentDesigner + + Private lists As DesignerActionListCollection + + ''' + ''' Creates a new instance of the WinsockDesigner class. + ''' + ''' + Public Sub New() + End Sub + + ''' + ''' Initializes this instance of the WinsockDesigner class. + ''' + ''' The base component of the designer. + Public Overrides Sub Initialize(ByVal component As System.ComponentModel.IComponent) + MyBase.Initialize(component) + End Sub + + ''' + ''' Gets the Verb collection. + ''' + ''' + ''' The Verb collection is used to display links at the + ''' bottom of the description in the Properties pane. + ''' + Public Overrides ReadOnly Property Verbs() As System.ComponentModel.Design.DesignerVerbCollection + Get + Return New DesignerVerbCollection() + End Get + End Property + + ''' + ''' Gets the Action list collection. + ''' + ''' + ''' The Action list collection is used for the Smart Tag + ''' popup to provide easy access to various properties/actions. + ''' + Public Overrides ReadOnly Property ActionLists() As DesignerActionListCollection + Get + If lists Is Nothing Then + lists = New DesignerActionListCollection() + lists.Add(New WinsockActionList(Me.Component)) + End If + Return lists + End Get + End Property + +End Class + +''' +''' Provides the action list for the Winsock component during design time. +''' +Public Class WinsockActionList + Inherits DesignerActionList + + Private _wsk As Winsock + Private designerActionUISvc As DesignerActionUIService = Nothing + + Private host As IDesignerHost + Private parentDesigner As IDesigner + + ''' + ''' Initializes a new instance of the WinsockActionList class. + ''' + ''' The component used in initialization. + Public Sub New(ByVal component As IComponent) + MyBase.New(component) + Me._wsk = CType(component, Winsock) + + Me.designerActionUISvc = CType(GetService(GetType(DesignerActionUIService)), DesignerActionUIService) + + Me.host = Me.Component.Site.GetService(GetType(IDesignerHost)) + + Me.parentDesigner = host.GetDesigner(Me.Component) + End Sub + + ''' + ''' Gets or sets a value indicating if Legacy support should be used or not. + ''' + ''' Legacy support is to support older winsock style connections. + Public Property LegacySupport() As Boolean + Get + Return _wsk.LegacySupport + End Get + Set(ByVal value As Boolean) + GetPropertyByName("LegacySupport").SetValue(_wsk, value) + Me.designerActionUISvc.Refresh(Me.Component) + End Set + End Property + + ''' + ''' Gets or sets the winsock protocol to use when communicating with the remote computer. + ''' + Public Property Protocol() As WinsockProtocol + Get + Return _wsk.Protocol + End Get + Set(ByVal value As WinsockProtocol) + GetPropertyByName("Protocol").SetValue(_wsk, value) + Me.designerActionUISvc.Refresh(Me.Component) + End Set + End Property + + ''' + ''' Builds and retrieves the Action list itself. + ''' + Public Overrides Function GetSortedActionItems() As DesignerActionItemCollection + Dim items As New DesignerActionItemCollection() + + ' create the headers + items.Add(New DesignerActionHeaderItem("Appearance & Behavior")) + items.Add(New DesignerActionHeaderItem("Events")) + items.Add(New DesignerActionHeaderItem("About")) + + ' add the properties + items.Add(New DesignerActionPropertyItem("LegacySupport", "Legacy Support", "Appearance & Behavior", "Enables legacy (VB6) send/receive support.")) + items.Add(New DesignerActionPropertyItem("Protocol", "Protocol", "Appearance & Behavior", "Specifies whether the component should use the TCP or UDP protocol.")) + + ' add the events + items.Add(New DesignerActionMethodItem(Me, "TriggerConnectedEvent", "Connected", "Events", "Takes you to the handler for the Connected event.", False)) + items.Add(New DesignerActionMethodItem(Me, "TriggerConnectionRequestEvent", "ConnectionRequest", "Events", "Takes you to the handler for the ConnectionRequest event.", False)) + items.Add(New DesignerActionMethodItem(Me, "TriggerDataArrivalEvent", "DataArrival", "Events", "Takes you to the handler for the DataArrival event.", False)) + items.Add(New DesignerActionMethodItem(Me, "TriggerDisconnectedEvent", "Disconnected", "Events", "Takes you to the handler for the Disconnected event.", False)) + items.Add(New DesignerActionMethodItem(Me, "TriggerErrorReceivedEvent", "ErrorReceived", "Events", "Takes you to the handler for the ErrorReceived event.", False)) + items.Add(New DesignerActionMethodItem(Me, "TriggerStateChangedEvent", "StateChanged", "Events", "Takes you to the handler for the StateChanged event.", False)) + + ' add support items + Dim ver As String = String.Format("{0}.{1}.{2}", My.Application.Info.Version.Major, My.Application.Info.Version.Minor, My.Application.Info.Version.Build) + items.Add(New DesignerActionMethodItem(Me, "ShowAbout", "About Winsock " & ver, "About", "Displays the about box.", False)) + items.Add(New DesignerActionMethodItem(Me, "LaunchWebSite", "Kolkman Koding Website", "About", "Opens the author's website.", False)) + + Return items + End Function + + ''' + ''' Gets the property information by the given name. + ''' + ''' The name of the property to get. + Private Function GetPropertyByName(ByVal propName As String) As PropertyDescriptor + Dim prop As PropertyDescriptor + prop = TypeDescriptor.GetProperties(_wsk)(propName) + If prop Is Nothing Then + Throw New ArgumentException("Invalid property.", propName) + Else + Return prop + End If + End Function + + ''' + ''' Shows the about box. + ''' + Public Sub ShowAbout() + Dim f As New frmAbout() + f.ShowDialog() + End Sub + + ''' + ''' Launches the author's website. + ''' + Public Sub LaunchWebSite() + System.Diagnostics.Process.Start("http://www.k-koding.com") + End Sub + + Public Sub TriggerConnectedEvent() + CreateAndShowEvent("Connected") + End Sub + Public Sub TriggerConnectionRequestEvent() + CreateAndShowEvent("ConnectionRequest") + End Sub + Public Sub TriggerDataArrivalEvent() + CreateAndShowEvent("DataArrival") + End Sub + Public Sub TriggerDisconnectedEvent() + CreateAndShowEvent("Disconnected") + End Sub + Public Sub TriggerErrorReceivedEvent() + CreateAndShowEvent("ErrorReceived") + End Sub + Public Sub TriggerStateChangedEvent() + CreateAndShowEvent("StateChanged") + End Sub + + Private Sub CreateAndShowEvent(ByVal eventName As String) + Dim evService As IEventBindingService = CType(Me.Component.Site.GetService(GetType(System.ComponentModel.Design.IEventBindingService)), IEventBindingService) + Dim ev As EventDescriptor = GetEvent(evService, eventName) + If ev IsNot Nothing Then + CreateEvent(evService, ev) + Me.designerActionUISvc.HideUI(Me.Component) + evService.ShowCode(Me.Component, ev) + End If + End Sub + + Private Sub CreateEvent(ByRef evService As IEventBindingService, ByVal ev As EventDescriptor) + Dim epd As PropertyDescriptor = evService.GetEventProperty(ev) + Dim strEventName As String = Me.Component.Site.Name & "_" & ev.Name + Dim existing As Object = epd.GetValue(Me.Component) + 'Only create if there isn't already a handler + If existing Is Nothing Then + epd.SetValue(Me.Component, strEventName) + End If + End Sub + + Private Function GetEvent(ByRef evService As IEventBindingService, ByVal eventName As String) As EventDescriptor + If evService Is Nothing Then Return Nothing + ' Attempt to obtain a PropertyDescriptor for a + ' component event named "testEvent". + Dim edc As EventDescriptorCollection = TypeDescriptor.GetEvents(Me.Component) + If edc Is Nothing Or edc.Count = 0 Then + Return Nothing + End If + Dim ed As EventDescriptor = Nothing + ' Search for an event named "Connected". + Dim edi As EventDescriptor + For Each edi In edc + If edi.Name = eventName Then + ed = edi + Exit For + End If + Next edi + If ed Is Nothing Then + Return Nothing + End If + Return ed + End Function + +End Class diff --git a/Sub/WinsockOracs/Backup/WinsockFileData.vb b/Sub/WinsockOracs/Backup/WinsockFileData.vb new file mode 100644 index 0000000..cb091eb --- /dev/null +++ b/Sub/WinsockOracs/Backup/WinsockFileData.vb @@ -0,0 +1,83 @@ +''' +''' A class that wraps a file allowing you to serialize it for transport. +''' + _ +Public Class WinsockFileData + +#Region " Private Members " + + Private _fileData() As Byte ' Stores the file data + Private _fileName As String ' Stores the file name + +#End Region + +#Region " Constructor " + + ''' + ''' Initializes a new instance of the WinsockFileData class. + ''' + Public Sub New() + _fileData = Nothing + _fileName = Nothing + End Sub + +#End Region + +#Region " Properties " + + ''' + ''' Gets or sets the name of the file. + ''' + Public Property FileName() As String + Get + Return _fileName + End Get + Set(ByVal value As String) + _fileName = value + End Set + End Property + + ''' + ''' Gets or sets the contents of the file. + ''' + Public Property FileData() As Byte() + Get + Return _fileData + End Get + Set(ByVal value As Byte()) + _fileData = value + End Set + End Property + +#End Region + +#Region " Methods " + + ''' + ''' Saves the file to the specified path. + ''' + ''' The full path of the file to save to. + ''' Whether you want to append the data to the end of an existing file or not. + Public Sub SaveFile(ByVal save_path As String, Optional ByVal append As Boolean = False) + My.Computer.FileSystem.WriteAllBytes(save_path, _fileData, append) + End Sub + + ''' + ''' Reads a file into the WinsockFileData class. + ''' + ''' The full path of the file you want to read. + Public Function ReadFile(ByVal file_path As String) As Boolean + Dim fi As IO.FileInfo = My.Computer.FileSystem.GetFileInfo(file_path) + If fi.Exists Then + ReDim _fileData(0) + _fileName = fi.Name + _fileData = My.Computer.FileSystem.ReadAllBytes(fi.FullName) + Else + Return False + End If + Return True + End Function + +#End Region + +End Class diff --git a/Sub/WinsockOracs/Backup/frmAbout.Designer.vb b/Sub/WinsockOracs/Backup/frmAbout.Designer.vb new file mode 100644 index 0000000..860a938 --- /dev/null +++ b/Sub/WinsockOracs/Backup/frmAbout.Designer.vb @@ -0,0 +1,146 @@ + _ +Partial Class frmAbout + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmAbout)) + Me.pctLogo = New System.Windows.Forms.PictureBox + Me.txtAbout = New System.Windows.Forms.TextBox + Me.cmdClose = New System.Windows.Forms.Button + Me.TabControl1 = New System.Windows.Forms.TabControl + Me.TabPage1 = New System.Windows.Forms.TabPage + Me.TabPage2 = New System.Windows.Forms.TabPage + Me.txtHistory = New System.Windows.Forms.TextBox + CType(Me.pctLogo, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TabControl1.SuspendLayout() + Me.TabPage1.SuspendLayout() + Me.TabPage2.SuspendLayout() + Me.SuspendLayout() + ' + 'pctLogo + ' + Me.pctLogo.Anchor = System.Windows.Forms.AnchorStyles.Top + Me.pctLogo.Image = Global.Winsock_Orcas.My.Resources.Resources.k_koding + Me.pctLogo.Location = New System.Drawing.Point(169, 12) + Me.pctLogo.Name = "pctLogo" + Me.pctLogo.Size = New System.Drawing.Size(121, 120) + Me.pctLogo.TabIndex = 0 + Me.pctLogo.TabStop = False + ' + 'txtAbout + ' + Me.txtAbout.Dock = System.Windows.Forms.DockStyle.Fill + Me.txtAbout.Location = New System.Drawing.Point(3, 3) + Me.txtAbout.Multiline = True + Me.txtAbout.Name = "txtAbout" + Me.txtAbout.ReadOnly = True + Me.txtAbout.ScrollBars = System.Windows.Forms.ScrollBars.Vertical + Me.txtAbout.Size = New System.Drawing.Size(420, 221) + Me.txtAbout.TabIndex = 1 + ' + 'cmdClose + ' + Me.cmdClose.Location = New System.Drawing.Point(371, 397) + Me.cmdClose.Name = "cmdClose" + Me.cmdClose.Size = New System.Drawing.Size(75, 23) + Me.cmdClose.TabIndex = 2 + Me.cmdClose.Text = "Close" + Me.cmdClose.UseVisualStyleBackColor = True + ' + 'TabControl1 + ' + Me.TabControl1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.TabControl1.Controls.Add(Me.TabPage1) + Me.TabControl1.Controls.Add(Me.TabPage2) + Me.TabControl1.Location = New System.Drawing.Point(12, 138) + Me.TabControl1.Name = "TabControl1" + Me.TabControl1.SelectedIndex = 0 + Me.TabControl1.Size = New System.Drawing.Size(434, 253) + Me.TabControl1.TabIndex = 3 + ' + 'TabPage1 + ' + Me.TabPage1.BackColor = System.Drawing.SystemColors.Control + Me.TabPage1.Controls.Add(Me.txtAbout) + Me.TabPage1.Location = New System.Drawing.Point(4, 22) + Me.TabPage1.Name = "TabPage1" + Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage1.Size = New System.Drawing.Size(426, 227) + Me.TabPage1.TabIndex = 0 + Me.TabPage1.Text = "About" + ' + 'TabPage2 + ' + Me.TabPage2.BackColor = System.Drawing.SystemColors.Control + Me.TabPage2.Controls.Add(Me.txtHistory) + Me.TabPage2.Location = New System.Drawing.Point(4, 22) + Me.TabPage2.Name = "TabPage2" + Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage2.Size = New System.Drawing.Size(426, 227) + Me.TabPage2.TabIndex = 1 + Me.TabPage2.Text = "History" + ' + 'txtHistory + ' + Me.txtHistory.Dock = System.Windows.Forms.DockStyle.Fill + Me.txtHistory.Location = New System.Drawing.Point(3, 3) + Me.txtHistory.Multiline = True + Me.txtHistory.Name = "txtHistory" + Me.txtHistory.ReadOnly = True + Me.txtHistory.ScrollBars = System.Windows.Forms.ScrollBars.Vertical + Me.txtHistory.Size = New System.Drawing.Size(420, 221) + Me.txtHistory.TabIndex = 0 + ' + 'frmAbout + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(458, 432) + Me.Controls.Add(Me.TabControl1) + Me.Controls.Add(Me.cmdClose) + Me.Controls.Add(Me.pctLogo) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "frmAbout" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "About Winsock Orcas" + CType(Me.pctLogo, System.ComponentModel.ISupportInitialize).EndInit() + Me.TabControl1.ResumeLayout(False) + Me.TabPage1.ResumeLayout(False) + Me.TabPage1.PerformLayout() + Me.TabPage2.ResumeLayout(False) + Me.TabPage2.PerformLayout() + Me.ResumeLayout(False) + + End Sub + Friend WithEvents pctLogo As System.Windows.Forms.PictureBox + Friend WithEvents txtAbout As System.Windows.Forms.TextBox + Friend WithEvents cmdClose As System.Windows.Forms.Button + Friend WithEvents TabControl1 As System.Windows.Forms.TabControl + Friend WithEvents TabPage1 As System.Windows.Forms.TabPage + Friend WithEvents TabPage2 As System.Windows.Forms.TabPage + Friend WithEvents txtHistory As System.Windows.Forms.TextBox +End Class diff --git a/Sub/WinsockOracs/Backup/frmAbout.resx b/Sub/WinsockOracs/Backup/frmAbout.resx new file mode 100644 index 0000000..590829d --- /dev/null +++ b/Sub/WinsockOracs/Backup/frmAbout.resx @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA////ACJ6/wCioqIAeq//ALrc/wB/f38AxMTEAE2T/wCdxP8As7OzAI+PjwDP6/8AYqL/ADSI + /wCLuf8ArM7/AJmZmQCHh4cAvLy8AKqqqgBYmv8AcKj/ALnQ/wAtf/8AP4r/AJK//wCDtf8ApMn/AGmk + /wAoe/8AM4L/ALPR/wBQmP8Adaz/AF6e/wCXwP8Ay+n/AIe3/wB+sf8Ao8X/AI6+/wBtpf8AqMn/ALDQ + /wBlo/8Acqv/ADGE/wBcnP8AkLz/AHeu/wCBs/8AIXz/AKbI/wBXmP8AlcH/AGqm/wAkev8AS5P/AJe+ + /wCQvv8Ahbf/AHCq/wB3rP8AJ3r/ADSD/wCx0f8ApMb/AGij/wCItv8AfbD/AKTI/wCjxv8AnsT/AJXA + /wBlov8AZqP/AGmj/wBxqP8Acqr/AHWt/wB7r/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAABQAAAAABgAAAAAAAAAAAAAK + FAMRCxIAAAAAAAAAAAAAAAoMJREAAAAAAAAAAAAAAAATChQDAAAAAAAAS1AVAAAAABcFAAAAADQONC4J + LQA2IQAHEwAvGAA5ODRRSD4ADUQAAAAAOkEAHioCPUMEAAAzAAAAAEwAAB8dQABJPAAALhsWOE4hAAAI + MAAAGjUmAAAAPh0AAAAITxkAAAAcRw8AAAAAAAAjP00AAAAAAEcQJEU9RjInKQQAAAAAAAAAOytCICwo + SiIAAAAAAAAAAAAAOzcxDwAAAAAAAP//AAD3/wAA+98AAPgfAAD8PwAA/D8AAB54AAASSAAAE8gAABvY + AACYGQAAjnEAAMfjAADgBwAA8A8AAPw/AAA= + + + \ No newline at end of file diff --git a/Sub/WinsockOracs/Backup/frmAbout.vb b/Sub/WinsockOracs/Backup/frmAbout.vb new file mode 100644 index 0000000..86087a4 --- /dev/null +++ b/Sub/WinsockOracs/Backup/frmAbout.vb @@ -0,0 +1,24 @@ +Public Class frmAbout + + Private Sub cmdClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdClose.Click + Me.Close() + End Sub + + Private Sub frmAbout_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + txtAbout.Text = ReadFromAssembly("About.txt") + txtHistory.Text = ReadFromAssembly("History.txt") + End Sub + + Private Function ReadFromAssembly(ByVal filename As String) As String + Dim sRet As String = "" + Dim executing_assembly As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly() + Dim my_namespace As String = GetType(frmAbout).Namespace + Dim text_stream As IO.Stream = executing_assembly.GetManifestResourceStream(my_namespace & "." & filename) + If text_stream IsNot Nothing Then + Dim stream_reader As New IO.StreamReader(text_stream) + sRet = stream_reader.ReadToEnd() + End If + Return sRet + End Function + +End Class \ No newline at end of file diff --git a/Sub/WinsockOracs/Deque.vb b/Sub/WinsockOracs/Deque.vb new file mode 100644 index 0000000..256dc3c --- /dev/null +++ b/Sub/WinsockOracs/Deque.vb @@ -0,0 +1,185 @@ +Option Strict On +''' +''' Represents both a last-in, first-out (LIFO) and a first-in, first-out (FIFO) non-generic collection of objects. +''' +''' +''' While the System.Collections.Stack and the System.Collections.Queue +''' have seemingly different ways of operating, they can be combined easily +''' by just manipulating the way in which an item in inserted into the list. +''' +''' This allows the removal from the list to remain the same, whether you +''' are treating this class like a Stack or a Queue. The also allows the +''' Peek() method to work for both at the same time. +''' +''' Helping tidbit - Deque is pronounced like "deck." +''' +Public Class Deque + Implements ICollection, IEnumerable, ICloneable + +#Region " Private Members " + + ''' + ''' Stores the list of items within this instance. + ''' + Private llList As LinkedList(Of Object) + +#End Region + +#Region " Constructor " + + ''' + ''' Initializes a new instance of the Deque class that is empty and has the default initial capacity. + ''' + Public Sub New() + llList = New LinkedList(Of Object) + End Sub + + ''' + ''' Initializes a new instance of the Deque class that contains elements copied from the specified collection and has sufficient capacity to accommodate the number of elements copied. + ''' + ''' The collection whose elements are copied to the new Deque. + Public Sub New(ByVal col As ICollection) + llList = New LinkedList(Of Object)(CType(col, IEnumerable(Of Object))) + End Sub + +#End Region + +#Region " Interface Method Implementations " + + ''' + ''' Copies the entire Deque to a compatible one-dimensional array, starting at the specified index of the target array. + ''' + ''' The one-dimensional Array that is the destination of the elements copied from Deque. The Array must have zero-based indexing. + ''' The zero-based index in array at which copying begins. + Public Sub CopyTo(ByVal array As System.Array, ByVal index As Integer) Implements System.Collections.ICollection.CopyTo + If array.Rank > 1 Then Throw New ArgumentException("Array must have only a single dimension.", "array") + llList.CopyTo(CType(array, Object()), index) + End Sub + + ''' + ''' Gets the number of elements actually contained in the Deque. + ''' + ''' The number of elements actually contained in the Deque. + Public ReadOnly Property Count() As Integer Implements System.Collections.ICollection.Count + Get + Return llList.Count + End Get + End Property + + ''' + ''' Gets a value indicating whether access to the ICollection is synchronized (thread safe). + ''' + ''' true if access to the ICollection is synchronized (thread safe); otherwise, false. In the default implementation of List, this property always returns false. + Public ReadOnly Property IsSynchronized() As Boolean Implements System.Collections.ICollection.IsSynchronized + Get + Return CType(llList, ICollection).IsSynchronized + End Get + End Property + + ''' + ''' Gets an object that can be used to synchronize access to the ICollection. + ''' + ''' An object that can be used to synchronize access to the ICollection. In the default implementation of List, this property always returns the current instance. + Public ReadOnly Property SyncRoot() As Object Implements System.Collections.ICollection.SyncRoot + Get + Return CType(llList, ICollection).SyncRoot + End Get + End Property + + ''' + ''' Returns an enumerator that iterates through the Queue. + ''' + Public Function GetEnumerator() As System.Collections.IEnumerator Implements System.Collections.IEnumerable.GetEnumerator + Return llList.GetEnumerator() + End Function + + ''' + ''' Creates a shallow copy of the Queue. + ''' + Public Function Clone() As Object Implements System.ICloneable.Clone + Return New Deque(llList) + End Function + +#End Region + +#Region " Methods common to both Queues and Stacks " + + ''' + ''' Removes all elements from the Deque. + ''' + Public Sub Clear() + llList.Clear() + End Sub + + ''' + ''' Determines whether an element is in the Deque. + ''' + ''' The object to locate in the Deque. The value can be a null reference (Nothing in Visual Basic) for reference types. + Public Function Contains(ByVal obj As Object) As Boolean + Return llList.Contains(obj) + End Function + + ''' + ''' Returns the object at the beginning (top) of the Deque without removing it. + ''' + ''' The object at the beginning (top) of the Deque. + Public Function Peek(Of dataType)() As dataType + If llList.Count = 0 Then Return Nothing + Return DirectCast(llList.First().Value, dataType) + End Function + + ''' + ''' Returns a String that represents the current Object. + ''' + ''' A String that represents the current Object. + Public Overrides Function ToString() As String + Return llList.ToString() + End Function + +#End Region + +#Region " Queue methods " + + ''' + ''' Removes and returns the object at the beginning of the Deque. + ''' + ''' The object that is removed from the beginning of the Deque. + ''' Synonymous with Pop(). + Public Function Dequeue(Of dataType)() As dataType + Dim oRet As dataType = Peek(Of dataType)() + llList.RemoveFirst() + Return oRet + End Function + + ''' + ''' Adds an object to the end of the Deque. + ''' + ''' The object to add to the Deque. The value can be a null reference (Nothing in Visual Basic). + Public Sub Enqueue(ByVal obj As Object) + llList.AddLast(obj) + End Sub + +#End Region + +#Region " Stack methods " + + ''' + ''' Removes and returns the object at the top of the Deque. + ''' + ''' The Object removed from the top of the Deque. + ''' Synonymous with Dequeue(). + Public Function Pop(Of dataType)() As dataType + Return Dequeue(Of dataType)() + End Function + + ''' + ''' Inserts an object at the top of the Deque. + ''' + ''' The Object to push onto the Deque. The value can be a null reference (Nothing in Visual Basic). + Public Sub Push(ByVal obj As Object) + llList.AddFirst(obj) + End Sub + +#End Region + +End Class \ No newline at end of file diff --git a/Sub/WinsockOracs/Enumerations.vb b/Sub/WinsockOracs/Enumerations.vb new file mode 100644 index 0000000..d132c37 --- /dev/null +++ b/Sub/WinsockOracs/Enumerations.vb @@ -0,0 +1,49 @@ +Option Strict On + +''' +''' Enumeration containing the various supported network protocols. +''' +Public Enum WinsockProtocol + ''' + ''' Transmission Control Protocol - a connection oriented protocol. + ''' + Tcp = 0 + ''' + ''' User Datagram Protocol - a connection-less protocol. + ''' + Udp = 1 +End Enum + +''' +''' Enumeration containing the various Winsock states. +''' +Public Enum WinsockStates + ''' + ''' The Winsock is closed. + ''' + Closed = 0 + ''' + ''' The Winsock is listening (TCP for connections, UDP for data). + ''' + Listening = 1 + ''' + ''' The Winsock is attempting the resolve the remote host. + ''' + ResolvingHost = 2 + ''' + ''' The remote host has been resolved to IP address. + ''' + HostResolved = 3 + ''' + ''' The Winsock is attempting to connect to the remote host. + ''' + Connecting = 4 + ''' + ''' The Winsock is connected to a remote source (client or server). + ''' + Connected = 5 + ''' + ''' The Winsock is attempting to close the connection. + ''' + Closing = 6 +End Enum \ No newline at end of file diff --git a/Sub/WinsockOracs/EventArgs.vb b/Sub/WinsockOracs/EventArgs.vb new file mode 100644 index 0000000..0bed9ec --- /dev/null +++ b/Sub/WinsockOracs/EventArgs.vb @@ -0,0 +1,422 @@ +Option Strict On + +''' +''' Provides data for the Winsock.ErrorReceived event. +''' +Public Class WinsockErrorReceivedEventArgs + Inherits System.EventArgs + + Private m_errorMsg As String + Private m_function As String + Private m_errorCode As System.Net.Sockets.SocketError + Private m_Details As String + + ''' + ''' Initializes a new instance of the WinsockErrorEventArgs class. + ''' + ''' A String containing the error message. + Public Sub New(ByVal error_message As String) + Me.New(error_message, Nothing) + End Sub + ''' + ''' Initializes a new instance of the WinsockErrorEventArgs class. + ''' + ''' A String containing the error message. + ''' A String containing the name of the function that produced the error. + Public Sub New(ByVal error_message As String, ByVal function_name As String) + Me.New(error_message, function_name, Nothing) + End Sub + ''' + ''' Initializes a new instance of the WinsockErrorEventArgs class. + ''' + ''' A String containing the error message. + ''' A String containing the name of the function that produced the error. + ''' A String containing extra details for the error message. + Public Sub New(ByVal error_message As String, ByVal function_name As String, ByVal extra_details As String) + Me.New(error_message, function_name, extra_details, Net.Sockets.SocketError.Success) + End Sub + ''' + ''' Initializes a new instance of the WinsockErrorEventArgs class. + ''' + ''' A String containing the error message. + ''' A String containing the name of the function that produced the error. + ''' A String containing extra details for the error message. + ''' A value containing the socket's ErrorCode. + Public Sub New(ByVal error_message As String, ByVal function_name As String, ByVal extra_details As String, ByVal error_code As System.Net.Sockets.SocketError) + m_errorMsg = error_message + m_function = function_name + m_Details = extra_details + m_errorCode = error_code + End Sub + + ''' + ''' Gets a value containing the error message. + ''' + Public ReadOnly Property Message() As String + Get + Return m_errorMsg + End Get + End Property + + ''' + ''' Gets a value containing the name of the function that produced the error. + ''' + Public ReadOnly Property [Function]() As String + Get + Return m_function + End Get + End Property + + ''' + ''' Gets a value indicating the error code returned by the socket. + ''' + ''' If it wasn't returned by the socket, it defaults to success. + Public ReadOnly Property ErrorCode() As System.Net.Sockets.SocketError + Get + Return m_errorCode + End Get + End Property + + ''' + ''' Gets a value containing more details than the typical error message. + ''' + Public ReadOnly Property Details() As String + Get + Return m_Details + End Get + End Property +End Class + +''' +''' Provides data for the Winsock.ConnectionRequest event. +''' +Public Class WinsockConnectionRequestEventArgs + Inherits System.EventArgs + + Private _client As System.Net.Sockets.Socket + Private _cancel As Boolean = False + + ''' + ''' Initializes a new instance of the WinsockClientReceivedEventArgs class. + ''' + ''' A Socket object containing the new client that needs to be accepted. + Public Sub New(ByVal new_client As System.Net.Sockets.Socket) + _client = new_client + End Sub + + ''' + ''' Gets a value containing the client information. + ''' + ''' Used in accepting the client. + Public ReadOnly Property Client() As System.Net.Sockets.Socket + Get + Return _client + End Get + End Property + + ''' + ''' Gets a value containing the incoming clients IP address. + ''' + Public ReadOnly Property ClientIP() As String + Get + Dim rEP As System.Net.IPEndPoint = CType(_client.RemoteEndPoint, System.Net.IPEndPoint) + Return rEP.Address.ToString() + End Get + End Property + + ''' + ''' Gets or sets a value indicating whether the incoming client request should be cancelled. + ''' + Public Property Cancel() As Boolean + Get + Return _cancel + End Get + Set(ByVal value As Boolean) + _cancel = value + End Set + End Property +End Class + +''' +''' Provides data for the Winsock.StateChanged event. +''' +Public Class WinsockStateChangedEventArgs + Inherits System.EventArgs + + Private m_OldState As WinsockStates + Private m_NewState As WinsockStates + + ''' + ''' Initializes a new instance of the WinsockStateChangingEventArgs class. + ''' + ''' The old state of the Winsock control. + ''' The state the Winsock control is changing to. + Public Sub New(ByVal oldState As WinsockStates, ByVal newState As WinsockStates) + m_OldState = oldState + m_NewState = newState + End Sub + + ''' + ''' Gets a value indicating the previous state of the Winsock control. + ''' + Public ReadOnly Property Old_State() As WinsockStates + Get + Return m_OldState + End Get + End Property + + ''' + ''' Gets a value indicating the new state of the Winsock control. + ''' + Public ReadOnly Property New_State() As WinsockStates + Get + Return m_NewState + End Get + End Property +End Class + +''' +''' Provides data for the Winsock.DataArrival event. +''' +Public Class WinsockDataArrivalEventArgs + Inherits System.EventArgs + + Private _bTotal As Integer + Private _IP As String + Private _Port As Integer + + ''' + ''' Initializes a new instance of the WinsockDataArrivalEventArgs class. + ''' + ''' The number of bytes that were received. + ''' The source address of the bytes. + ''' The source port of the bytes. + Public Sub New(ByVal bytes_total As Integer, ByVal source_ip As String, ByVal source_port As Integer) + _bTotal = bytes_total + _IP = source_ip + _Port = source_port + End Sub + + ''' + ''' Gets a value indicating the number of bytes received. + ''' + Public ReadOnly Property TotalBytes() As Integer + Get + Return _bTotal + End Get + End Property + + ''' + ''' Gets a value indicating the data's originating address. + ''' + Public ReadOnly Property SourceIP() As String + Get + Return _IP + End Get + End Property + + ''' + ''' Gets a value indicating the data's originating port. + ''' + Public ReadOnly Property SourcePort() As Integer + Get + Return _Port + End Get + End Property +End Class + +''' +''' Provides data for the Winsock.Connected event. +''' +Public Class WinsockConnectedEventArgs + Inherits System.EventArgs + + Private _IP As String + Private _Port As Integer + + ''' + ''' Initializes a new instance of the WinsockConnectedEventArgs class. + ''' + ''' The source address of the connection. + ''' The source port of the connection. + Public Sub New(ByVal source_ip As String, ByVal source_port As Integer) + _IP = source_ip + _Port = source_port + End Sub + + ''' + ''' Gets a value indicating the remote address of the connection. + ''' + Public ReadOnly Property SourceIP() As String + Get + Return _IP + End Get + End Property + + ''' + ''' Gets a value indicating the remote port of the connection. + ''' + Public ReadOnly Property SourcePort() As Integer + Get + Return _Port + End Get + End Property +End Class + +''' +''' Provides data for the Winsock.SendComplete event. +''' +Public Class WinsockSendEventArgs + Inherits System.EventArgs + + Private _bTotal As Integer + Private _bSent As Integer + Private _IP As String + + ''' + ''' Initializes a new instance of the WinsockSendEventArgs class. + ''' + ''' The destination of the bytes sent. + ''' The total number of bytes sent. + ''' The total number of bytes that were supposed to be sent. + Public Sub New(ByVal dest_ip As String, ByVal bytes_sent As Integer, ByVal bytes_total As Integer) + _IP = dest_ip + _bTotal = bytes_total + _bSent = bytes_sent + End Sub + + ''' + ''' Gets a value indicating the destination of the bytes sent. + ''' + Public ReadOnly Property DestinationIP() As String + Get + Return _IP + End Get + End Property + + ''' + ''' Gets a value indicating the number of bytes sent. + ''' + Public ReadOnly Property BytesSent() As Integer + Get + Return _bSent + End Get + End Property + + ''' + ''' Gets a value indicating the total number of bytes that should have been sent. + ''' + Public ReadOnly Property BytesTotal() As Integer + Get + Return _bTotal + End Get + End Property + + ''' + ''' Gets a value indicating the percentage (0-100) of bytes that where sent. + ''' + Public ReadOnly Property SentPercent() As Double + Get + Return (_bSent / _bTotal) * 100 + End Get + End Property + +End Class + +''' +''' Provides data for the WinsockCollection.CountChanged event. +''' +Public Class WinsockCollectionCountChangedEventArgs + Inherits System.EventArgs + + Private _oldCount As Integer + Private _newCount As Integer + + ''' + ''' Initializes a new instance of the WinsockCollectionCountChangedEventArgs class. + ''' + ''' The old number of items in the collection. + ''' The new number of items in the collection. + Public Sub New(ByVal old_count As Integer, ByVal new_count As Integer) + _oldCount = old_count + _newCount = new_count + End Sub + + ''' + ''' Gets a value indicating the previous number of items in the collection. + ''' + Public ReadOnly Property OldCount() As Integer + Get + Return _oldCount + End Get + End Property + + ''' + ''' Gets a value indicating the current number of items in the collection. + ''' + Public ReadOnly Property NewCount() As Integer + Get + Return _newCount + End Get + End Property +End Class + +''' +''' Provides data for the Winsock.ReceiveProgress event. +''' +Public Class WinsockReceiveProgressEventArgs + Inherits System.EventArgs + + Private _bTotal As Integer + Private _bIn As Integer + Private _IP As String + + ''' + ''' Initializes a new instance of the WinsockReceiveProgressEventArgs class. + ''' + ''' The source ip of the bytes received. + ''' The total number of bytes received. + ''' The total number of bytes that were supposed to be received. + Public Sub New(ByVal source_ip As String, ByVal bytes_received As Integer, ByVal bytes_total As Integer) + _IP = source_ip + _bTotal = bytes_total + _bIn = bytes_received + End Sub + + ''' + ''' Gets a value indicating the source of the bytes sent. + ''' + Public ReadOnly Property SourceIP() As String + Get + Return _IP + End Get + End Property + + ''' + ''' Gets a value indicating the number of bytes received. + ''' + Public ReadOnly Property BytesReceived() As Integer + Get + Return _bIn + End Get + End Property + + ''' + ''' Gets a value indicating the total number of bytes that should be received. + ''' + Public ReadOnly Property BytesTotal() As Integer + Get + Return _bTotal + End Get + End Property + + ''' + ''' Gets a value indicating the percentage (0-100) of bytes that where received. + ''' + Public ReadOnly Property ReceivedPercent() As Double + Get + Return (_bIn / _bTotal) * 100 + End Get + End Property + +End Class \ No newline at end of file diff --git a/Sub/WinsockOracs/History.txt b/Sub/WinsockOracs/History.txt new file mode 100644 index 0000000..d9081e3 --- /dev/null +++ b/Sub/WinsockOracs/History.txt @@ -0,0 +1,28 @@ +04.21.2008 - Fixed RaiseEventSafe in Winsock.vb and WinsockCollection.vb to use BeginInvoke instead of Invoked. Changed order of operations in ReceiveCallbackUDP to allow remote IP address to be detected properly. + +03.25.2008 - Added a NetworkStream property to expose a NetworkStream object that uses the connection made by this component. + +03.24.2008 - Fixed Listen methods to properly raise state changed events for UDP as well as TCP. Modified IWinsock, Winsock, and AsyncSocket to allow AsyncSocket to modify the LocalPort property of the component. + +02.14.2008 - Fixed a bug in UDP receiving that caused it to always receive at the full byte buffer instead of size of the incoming data. + +12.28.2007 - Winsock.Get and Winsock.Peek updated to check for nothing. + SyncLock added to all qBuffer instances in AsyncSocket and _buff (ProcessIncoming) + +12.26.2007 - Added new event ReceiveProgress. + +12.13.2007 - Fixed PacketHeader.AddHeader to use .Length instead of .GetUpperBound(0). Also changed AsyncSocket.ProcessIncoming in two places with the same change (second half of the first nested IF statements with the >= comparison operator). + +11.19.2007 - Completed WinsockDesigner to original intentions. Can now jump to event code using the Action list. + +11.14.2007 - Demo programs completed, and test ran successfully (quick tests) + +11.06.2007 - Began work on version 4.0.0 + +Interim time - various bug fixes + +04.27.2007 - Third release using VS 2005 (called Winsock 2007) + +06.12.2006 - Second release using VS 2005 (called Winsock 2005) + +08.24.2005 - First release using VB 2003 (called Winsock.NET) \ No newline at end of file diff --git a/Sub/WinsockOracs/IWinsock.vb b/Sub/WinsockOracs/IWinsock.vb new file mode 100644 index 0000000..e962a8c --- /dev/null +++ b/Sub/WinsockOracs/IWinsock.vb @@ -0,0 +1,111 @@ +Option Strict On + +Public Interface IWinsock + +#Region " Events " + + ''' + ''' Occurs when connection is achieved (client and server). + ''' + Event Connected(ByVal sender As Object, ByVal e As WinsockConnectedEventArgs) + ''' + ''' Occurs on the server when a client is attempting to connect. + ''' + ''' Client registers connected at this point. Server must Accept in order for it to be connected. + Event ConnectionRequest(ByVal sender As Object, ByVal e As WinsockConnectionRequestEventArgs) + ''' + ''' Occurs when data arrives on the socket. + ''' + ''' Raised only after all parts of the data have been collected. + Event DataArrival(ByVal sender As Object, ByVal e As WinsockDataArrivalEventArgs) + ''' + ''' Occurs when disconnected from the remote computer (client and server). + ''' + Event Disconnected(ByVal sender As Object, ByVal e As System.EventArgs) + ''' + ''' Occurs when an error is detected in the socket. + ''' + ''' May also be raised on disconnected (depending on disconnect circumstance). + Event ErrorReceived(ByVal sender As Object, ByVal e As WinsockErrorReceivedEventArgs) + ''' + ''' Occurs while the receive buffer is being filled with data. + ''' + Event ReceiveProgress(ByVal sender As Object, ByVal e As WinsockReceiveProgressEventArgs) + ''' + ''' Occurs when sending of data is completed. + ''' + Event SendComplete(ByVal sender As Object, ByVal e As WinsockSendEventArgs) + ''' + ''' Occurs when the send buffer has been sent but not all the data has been sent yet. + ''' + Event SendProgress(ByVal sender As Object, ByVal e As WinsockSendEventArgs) + ''' + ''' Occurs when the state of the socket changes. + ''' + Event StateChanged(ByVal sender As Object, ByVal e As WinsockStateChangedEventArgs) + + ''' + ''' Raises the Connected event. + ''' + Sub OnConnected(ByVal e As WinsockConnectedEventArgs) + ''' + ''' Raises the ConnectionRequest event. + ''' + Sub OnConnectionRequest(ByVal e As WinsockConnectionRequestEventArgs) + ''' + ''' Raises the DataArrival event. + ''' + Sub OnDataArrival(ByVal e As WinsockDataArrivalEventArgs) + ''' + ''' Raises the Disconnected event. + ''' + Sub OnDisconnected() + ''' + ''' Raises the ErrorReceived event. + ''' + Sub OnErrorReceived(ByVal e As WinsockErrorReceivedEventArgs) + ''' + ''' Raises the ReceiveProgress event. + ''' + Sub OnReceiveProgress(ByVal e As WinsockReceiveProgressEventArgs) + ''' + ''' Raises the SendComplete event. + ''' + Sub OnSendComplete(ByVal e As WinsockSendEventArgs) + ''' + ''' Raises the SendProgress event. + ''' + Sub OnSendProgress(ByVal e As WinsockSendEventArgs) + ' '' + ' '' Raises the StateChanged event. + ' '' + 'Sub OnStateChanged(ByVal e As WinsockStateChangedEventArgs) + +#End Region + +#Region " Properties " + + Property LegacySupport() As Boolean + Property Protocol() As WinsockProtocol + Property RemoteHost() As String + Property RemotePort() As Integer + ''' + ''' Gets the state of the Winsock control. + ''' + ReadOnly Property State() As WinsockStates + +#End Region + + ''' + ''' Encapsulates the OnStateChanged methods so the AsyncSocket + ''' doesn't have to build the EventArgs parameter all the time. + ''' + ''' The new state of the Winsock. + Sub ChangeState(ByVal new_state As WinsockStates) + + ''' + ''' When the port is set dynamically by using port 0, the socket can now update the property of the component. + ''' + ''' The port we are now listening on. + Sub ChangeLocalPort(ByVal new_port As Integer) +End Interface \ No newline at end of file diff --git a/Sub/WinsockOracs/My Project/Application.Designer.vb b/Sub/WinsockOracs/My Project/Application.Designer.vb new file mode 100644 index 0000000..c33da88 --- /dev/null +++ b/Sub/WinsockOracs/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +' 런타임 버전:4.0.30319.42000 +' +' íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +' ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/Sub/WinsockOracs/My Project/Application.myapp b/Sub/WinsockOracs/My Project/Application.myapp new file mode 100644 index 0000000..758895d --- /dev/null +++ b/Sub/WinsockOracs/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/Sub/WinsockOracs/My Project/AssemblyInfo.vb b/Sub/WinsockOracs/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..4e330ee --- /dev/null +++ b/Sub/WinsockOracs/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' General Information about an assembly is controlled through the following +' set of attributes. Change these attribute values to modify the information +' associated with an assembly. + +' Review the values of the assembly attributes + + + + + + + + + + +'The following GUID is for the ID of the typelib if this project is exposed to COM + + +' Version information for an assembly consists of the following four values: +' +' Major Version +' Minor Version +' Build Number +' Revision +' +' You can specify all the values or you can default the Build and Revision Numbers +' by using the '*' as shown below: +' + + + diff --git a/Sub/WinsockOracs/My Project/Resources.Designer.vb b/Sub/WinsockOracs/My Project/Resources.Designer.vb new file mode 100644 index 0000000..da63ffc --- /dev/null +++ b/Sub/WinsockOracs/My Project/Resources.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +' 런타임 버전:4.0.30319.42000 +' +' íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +' ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + 'ì´ í´ëž˜ìŠ¤ëŠ” ResGen ë˜ëŠ” Visual Studio와 ê°™ì€ ë„구를 통해 StronglyTypedResourceBuilder + 'í´ëž˜ìФì—서 ìžë™ìœ¼ë¡œ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. + '멤버를 추가하거나 제거하려면 .ResX 파ì¼ì„ 편집한 ë‹¤ìŒ /str ì˜µì…˜ì„ ì‚¬ìš©í•˜ì—¬ ResGenì„ + '다시 실행하거나 VS 프로ì íŠ¸ë¥¼ 다시 빌드하십시오. + ''' + ''' ì§€ì—­í™”ëœ ë¬¸ìžì—´ ë“±ì„ ì°¾ê¸° 위한 강력한 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' ì´ í´ëž˜ìФì—서 사용하는 ìºì‹œëœ ResourceManager ì¸ìŠ¤í„´ìŠ¤ë¥¼ 반환합니다. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Winsock_Orcas.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' ì´ ê°•ë ¥í•œ 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ë¥¼ 사용하여 모든 리소스 ì¡°íšŒì— ëŒ€í•´ 현재 ìŠ¤ë ˆë“œì˜ CurrentUICulture ì†ì„±ì„ + ''' 재정ì˜í•©ë‹ˆë‹¤. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + + ''' + ''' System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + ''' + Friend ReadOnly Property k_koding() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("k-koding", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + End Module +End Namespace diff --git a/Sub/WinsockOracs/My Project/Resources.resx b/Sub/WinsockOracs/My Project/Resources.resx new file mode 100644 index 0000000..e11d804 --- /dev/null +++ b/Sub/WinsockOracs/My Project/Resources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\k-koding.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Sub/WinsockOracs/My Project/Settings.Designer.vb b/Sub/WinsockOracs/My Project/Settings.Designer.vb new file mode 100644 index 0000000..7ca83f6 --- /dev/null +++ b/Sub/WinsockOracs/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +' 런타임 버전:4.0.30319.42000 +' +' íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +' ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "My.Settings ìžë™ 저장 기능" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.Winsock_Orcas.My.MySettings + Get + Return Global.Winsock_Orcas.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/Sub/WinsockOracs/My Project/Settings.settings b/Sub/WinsockOracs/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/Sub/WinsockOracs/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Sub/WinsockOracs/ObjectPacker.vb b/Sub/WinsockOracs/ObjectPacker.vb new file mode 100644 index 0000000..4fe5627 --- /dev/null +++ b/Sub/WinsockOracs/ObjectPacker.vb @@ -0,0 +1,53 @@ +Imports System.IO +Imports System.Xml +Imports System.Xml.Serialization +Imports System.Runtime.Serialization.Formatters.Binary + +''' +''' Contains function for serializing/deserializing an object to and from a byte array. +''' +Public Class ObjectPacker + + ''' + ''' Serializes an object to a byte array. + ''' + ''' The object to be serialized. + Public Shared Function GetBytes(ByVal obj As Object) As Byte() + If obj.GetType Is GetType(Byte).MakeArrayType Then + Return CType(obj, Byte()) + End If + Dim ret() As Byte = Nothing + Dim blnRetAfterClose As Boolean = False + Dim ms As New MemoryStream() + Dim bf As New BinaryFormatter() + Try + bf.Serialize(ms, obj) + Catch ex As Exception + blnRetAfterClose = True + Finally + ms.Close() + End Try + If blnRetAfterClose Then Return ret + ret = ms.ToArray() + Return ret + End Function + + ''' + ''' Deserializes an object from a byte array. + ''' + ''' The byte array from which to obtain the object. + Public Shared Function GetObject(ByVal byt() As Byte) As Object + Dim ms As New MemoryStream(byt, False) + Dim bf As New BinaryFormatter() + Dim x As Object + Try + x = bf.Deserialize(ms) + Catch ex As Exception + x = byt + Finally + ms.Close() + End Try + Return x + End Function + +End Class diff --git a/Sub/WinsockOracs/Resources/k-koding.png b/Sub/WinsockOracs/Resources/k-koding.png new file mode 100644 index 0000000..958f7fd Binary files /dev/null and b/Sub/WinsockOracs/Resources/k-koding.png differ diff --git a/Sub/WinsockOracs/SharedMethods.vb b/Sub/WinsockOracs/SharedMethods.vb new file mode 100644 index 0000000..4ed0790 --- /dev/null +++ b/Sub/WinsockOracs/SharedMethods.vb @@ -0,0 +1,85 @@ +Option Strict On + +Imports System.Net.Sockets + +''' +''' This call contains shared methods that any class can use. +''' +Public Class SharedMethods + + ''' + ''' Raises an error on the parent Winsock object. + ''' + ''' The parent Winsock object to raise the error on. + ''' A String containing a message describing the error being raised. + Protected Friend Shared Sub RaiseError(ByRef iParent As IWinsock, ByVal msg As String) + ' First use the StackTrace to get the calling class and function. + Dim CurrentStack As New System.Diagnostics.StackTrace() + Dim callingFunction As String = CurrentStack.GetFrame(1).GetMethod.Name + Dim callingClass As String = CurrentStack.GetFrame(1).GetMethod.DeclaringType.ToString() + Dim caller As String = CStr(IIf(callingFunction.StartsWith("."), callingClass & callingFunction, callingClass & "." & callingFunction)) + ' Create the event arguement + Dim e As New WinsockErrorReceivedEventArgs(msg, caller) + ' Raise the event only if there really is a parent + If iParent IsNot Nothing Then + iParent.OnErrorReceived(e) + End If + End Sub + + ''' + ''' Raises an error on the parent Winsock object. + ''' + ''' The parent Winsock object to raise the error on. + ''' A String containing a message describing the error being raised. + ''' A String containing extra details describing the error being raised. + Protected Friend Shared Sub RaiseError(ByRef iParent As IWinsock, ByVal msg As String, ByVal details As String) + ' First use the StackTrace to get the calling class and function + Dim CurrentStack As New System.Diagnostics.StackTrace() + Dim callingFunction As String = CurrentStack.GetFrame(1).GetMethod.Name + Dim callingClass As String = CurrentStack.GetFrame(1).GetMethod.DeclaringType.ToString() + Dim caller As String = CStr(IIf(callingFunction.StartsWith("."), callingClass & callingFunction, callingClass & "." & callingFunction)) + ' Create the event arguement + Dim e As New WinsockErrorReceivedEventArgs(msg, caller, details) + ' Raise the event only if there really is a parent + If iParent IsNot Nothing Then + iParent.OnErrorReceived(e) + End If + End Sub + + ''' + ''' Raises an error on the parent Winsock object. + ''' + ''' The parent Winsock object to raise the error on. + ''' A String containing a message describing the error being raised. + ''' A String containing extra details describing the error being raised. + ''' A value containing the socket's error code. + Protected Friend Shared Sub RaiseError(ByRef iParent As IWinsock, ByVal msg As String, ByVal details As String, ByVal errCode As SocketError) + ' First use the StackTrace to get the calling class and function + Dim CurrentStack As New System.Diagnostics.StackTrace() + Dim callingFunction As String = CurrentStack.GetFrame(1).GetMethod.Name + Dim callingClass As String = CurrentStack.GetFrame(1).GetMethod.DeclaringType.ToString() + Dim caller As String = CStr(IIf(callingFunction.StartsWith("."), callingClass & callingFunction, callingClass & "." & callingFunction)) + ' Create the event arguement + Dim e As New WinsockErrorReceivedEventArgs(msg, caller, details, errCode) + ' Raise the event only if there really is a parent + If iParent IsNot Nothing Then + iParent.OnErrorReceived(e) + End If + End Sub + + ''' + ''' Removes items from the beginning of an array. + ''' + Protected Friend Shared Function ShrinkArray(Of arrayType)(ByRef arr() As arrayType, ByVal desiredLengthToTrim As Integer) As arrayType() + ' Grab desired length from array - this will be returned + Dim retArr(desiredLengthToTrim - 1) As arrayType + Array.Copy(arr, 0, retArr, 0, desiredLengthToTrim) + ' Trim what we grabbed out of the array + Dim tmpArr(arr.GetUpperBound(0) - desiredLengthToTrim) As arrayType + Array.Copy(arr, desiredLengthToTrim, tmpArr, 0, arr.Length - desiredLengthToTrim) + arr = DirectCast(tmpArr.Clone(), arrayType()) + ' Return the data + Return retArr + End Function + +End Class diff --git a/Sub/WinsockOracs/UpgradeLog.htm b/Sub/WinsockOracs/UpgradeLog.htm new file mode 100644 index 0000000..a85531a --- /dev/null +++ b/Sub/WinsockOracs/UpgradeLog.htm @@ -0,0 +1,299 @@ + + + + 마ì´ê·¸ë ˆì´ì…˜ 보고서 +

+ 마ì´ê·¸ë ˆì´ì…˜ 보고서 -

개요

프로ì íŠ¸ê²½ë¡œì˜¤ë¥˜ê²½ê³ ë©”ì‹œì§€
Winsock OrcasWinsock Orcas.vbproj0028

솔루션 ë° í”„ë¡œì íЏ

Winsock Orcas

메시지
+ 표시 28 추가 메시지 +
Winsock Orcas.vbproj: + 프로ì íЏ 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\Winsock Orcas.vbproj(으)로 백업했습니다.
AsyncSocket.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\AsyncSocket.vb(으)로 백업했습니다.
My Project\AssemblyInfo.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\My Project\AssemblyInfo.vb(으)로 백업했습니다.
My Project\Application.Designer.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\My Project\Application.Designer.vb(으)로 백업했습니다.
My Project\Resources.Designer.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\My Project\Resources.Designer.vb(으)로 백업했습니다.
My Project\Settings.Designer.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\My Project\Settings.Designer.vb(으)로 백업했습니다.
Enumerations.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\Enumerations.vb(으)로 백업했습니다.
EventArgs.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\EventArgs.vb(으)로 백업했습니다.
frmAbout.Designer.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\frmAbout.Designer.vb(으)로 백업했습니다.
frmAbout.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\frmAbout.vb(으)로 백업했습니다.
IWinsock.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\IWinsock.vb(으)로 백업했습니다.
Deque.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\Deque.vb(으)로 백업했습니다.
ObjectPacker.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\ObjectPacker.vb(으)로 백업했습니다.
SharedMethods.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\SharedMethods.vb(으)로 백업했습니다.
Winsock.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\Winsock.vb(으)로 백업했습니다.
WinsockCollection.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\WinsockCollection.vb(으)로 백업했습니다.
WinsockDesigner.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\WinsockDesigner.vb(으)로 백업했습니다.
WinsockFileData.vb: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\WinsockFileData.vb(으)로 백업했습니다.
My Project\Application.myapp: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\My Project\Application.myapp(으)로 백업했습니다.
My Project\Settings.settings: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\My Project\Settings.settings(으)로 백업했습니다.
Resources\k-koding.png: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\Resources\k-koding.png(으)로 백업했습니다.
My Project\Resources.resx: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\My Project\Resources.resx(으)로 백업했습니다.
History.txt: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\History.txt(으)로 백업했습니다.
frmAbout.resx: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\frmAbout.resx(으)로 백업했습니다.
Winsock.png: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\Winsock.png(으)로 백업했습니다.
About.txt: + 파ì¼ì„ S:\Source\JDTEK\VMS2016\Sub\WinsockOracs\Backup\About.txt(으)로 백업했습니다.
Winsock Orcas.vbproj: + 프로ì íŠ¸ë¥¼ 마ì´ê·¸ë ˆì´ì…˜í–ˆìŠµë‹ˆë‹¤.
Winsock Orcas.vbproj: + 검사 완료: 프로ì íЏ 파ì¼ì„ 마ì´ê·¸ë ˆì´ì…˜í•  필요가 없습니다.
+ 숨기기 28 추가 메시지 +
\ No newline at end of file diff --git a/Sub/WinsockOracs/Winsock Orcas.sln b/Sub/WinsockOracs/Winsock Orcas.sln new file mode 100644 index 0000000..ea74722 --- /dev/null +++ b/Sub/WinsockOracs/Winsock Orcas.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34408.163 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Winsock Orcas", "Winsock Orcas.vbproj", "{C422352B-E7E1-4CA6-9275-1142249D40E2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C422352B-E7E1-4CA6-9275-1142249D40E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C422352B-E7E1-4CA6-9275-1142249D40E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C422352B-E7E1-4CA6-9275-1142249D40E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C422352B-E7E1-4CA6-9275-1142249D40E2}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C158E686-1BDA-4FE7-84C5-496C1EDD5361} + EndGlobalSection +EndGlobal diff --git a/Sub/WinsockOracs/Winsock Orcas.vbproj b/Sub/WinsockOracs/Winsock Orcas.vbproj new file mode 100644 index 0000000..7372bdf --- /dev/null +++ b/Sub/WinsockOracs/Winsock Orcas.vbproj @@ -0,0 +1,136 @@ + + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {C422352B-E7E1-4CA6-9275-1142249D40E2} + Library + Winsock_Orcas + Winsock Orcas + 512 + Windows + v4.0 + On + Binary + Off + On + + + + + 3.5 + + + + true + full + true + true + bin\Debug\ + Winsock Orcas.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,42353,42354,42355 + + + pdbonly + false + true + true + bin\Release\ + Winsock Orcas.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,42353,42354,42355 + + + + + + + + + + + + + + + + + + + + + + True + Application.myapp + True + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + + Designer + frmAbout.vb + + + + + + frmAbout.vb + + + Form + + + + + + + Component + + + + + + + + + + + \ No newline at end of file diff --git a/Sub/WinsockOracs/Winsock.png b/Sub/WinsockOracs/Winsock.png new file mode 100644 index 0000000..f54bf73 Binary files /dev/null and b/Sub/WinsockOracs/Winsock.png differ diff --git a/Sub/WinsockOracs/Winsock.vb b/Sub/WinsockOracs/Winsock.vb new file mode 100644 index 0000000..2cbb805 --- /dev/null +++ b/Sub/WinsockOracs/Winsock.vb @@ -0,0 +1,583 @@ +Option Strict On + +Imports System.ComponentModel +Imports System.ComponentModel.Design +Imports System.Drawing +Imports System.Net + + _ + _ + _ +Public Class Winsock + Inherits Component + Implements IWinsock + + Public Sub New() + _localPort = 8080 + _remotePort = 8080 + _remoteHost = "localhost" + _maxPendingConnections = 1 + _legacySupport = False + _protocol = WinsockProtocol.Tcp + _wsState = WinsockStates.Closed + _asSock = New AsyncSocket(Me) + End Sub + +#Region " Events " + + ''' + ''' Triggers an event declared at module level within a class, form, or document in a thread-safe manner. + ''' + ''' The event to be raised. + ''' The arguements for the event. + Private Sub RaiseEventSafe(ByVal ev As System.Delegate, ByRef args() As Object) + Dim bFired As Boolean + If ev IsNot Nothing Then + For Each singleCast As System.Delegate In ev.GetInvocationList() + bFired = False + Try + Dim syncInvoke As ISynchronizeInvoke = CType(singleCast.Target, ISynchronizeInvoke) + If syncInvoke IsNot Nothing AndAlso syncInvoke.InvokeRequired Then + bFired = True + syncInvoke.BeginInvoke(singleCast, args) + Else + bFired = True + singleCast.DynamicInvoke(args) + End If + Catch ex As Exception + If Not bFired Then singleCast.DynamicInvoke(args) + End Try + Next + End If + End Sub + + ''' + ''' Occurs when connection is achieved (client and server). + ''' + Public Event Connected(ByVal sender As Object, ByVal e As WinsockConnectedEventArgs) Implements IWinsock.Connected + ''' + ''' Occurs on the server when a client is attempting to connect. + ''' + ''' Client registers connected at this point. Server must Accept in order for it to be connected. + Public Event ConnectionRequest(ByVal sender As Object, ByVal e As WinsockConnectionRequestEventArgs) Implements IWinsock.ConnectionRequest + ''' + ''' Occurs when data arrives on the socket. + ''' + ''' Raised only after all parts of the data have been collected. + Public Event DataArrival(ByVal sender As Object, ByVal e As WinsockDataArrivalEventArgs) Implements IWinsock.DataArrival + ''' + ''' Occurs when disconnected from the remote computer (client and server). + ''' + Public Event Disconnected(ByVal sender As Object, ByVal e As System.EventArgs) Implements IWinsock.Disconnected + ''' + ''' Occurs when an error is detected in the socket. + ''' + ''' May also be raised on disconnected (depending on disconnect circumstance). + Public Event ErrorReceived(ByVal sender As Object, ByVal e As WinsockErrorReceivedEventArgs) Implements IWinsock.ErrorReceived + ''' + ''' Occurs while the receive buffer is being filled with data. + ''' + Public Event ReceiveProgress(ByVal sender As Object, ByVal e As WinsockReceiveProgressEventArgs) Implements IWinsock.ReceiveProgress + ''' + ''' Occurs when sending of data is completed. + ''' + Public Event SendComplete(ByVal sender As Object, ByVal e As WinsockSendEventArgs) Implements IWinsock.SendComplete + ''' + ''' Occurs when the send buffer has been sent but not all the data has been sent yet. + ''' + Public Event SendProgress(ByVal sender As Object, ByVal e As WinsockSendEventArgs) Implements IWinsock.SendProgress + ''' + ''' Occurs when the state of the socket changes. + ''' + Public Event StateChanged(ByVal sender As Object, ByVal e As WinsockStateChangedEventArgs) Implements IWinsock.StateChanged + + ''' + ''' Raises the Connected event. + ''' + Public Sub OnConnected(ByVal e As WinsockConnectedEventArgs) Implements IWinsock.OnConnected + RaiseEventSafe(ConnectedEvent, New Object() {Me, e}) + End Sub + + ''' + ''' Raises the ConnectionRequest event. + ''' + Public Sub OnConnectionRequest(ByVal e As WinsockConnectionRequestEventArgs) Implements IWinsock.OnConnectionRequest + RaiseEventSafe(ConnectionRequestEvent, New Object() {Me, e}) + If e.Cancel Then + e.Client.Disconnect(False) + e.Client.Close() + End If + End Sub + + ''' + ''' Raises the DataArrival event. + ''' + Public Sub OnDataArrival(ByVal e As WinsockDataArrivalEventArgs) Implements IWinsock.OnDataArrival + RaiseEventSafe(DataArrivalEvent, New Object() {Me, e}) + End Sub + + ''' + ''' Raises the Disconnected event. + ''' + Public Sub OnDisconnected() Implements IWinsock.OnDisconnected + RaiseEventSafe(DisconnectedEvent, New Object() {Me, New System.EventArgs}) + End Sub + + ''' + ''' Raises the ErrorReceived event. + ''' + Public Sub OnErrorReceived(ByVal e As WinsockErrorReceivedEventArgs) Implements IWinsock.OnErrorReceived + RaiseEventSafe(ErrorReceivedEvent, New Object() {Me, e}) + End Sub + + ''' + ''' Raises the ReceiveProgress event. + ''' + Public Sub OnReceiveProgress(ByVal e As WinsockReceiveProgressEventArgs) Implements IWinsock.OnReceiveProgress + RaiseEventSafe(ReceiveProgressEvent, New Object() {Me, e}) + End Sub + + ''' + ''' Raises the SendComplete event. + ''' + Public Sub OnSendComplete(ByVal e As WinsockSendEventArgs) Implements IWinsock.OnSendComplete + RaiseEventSafe(SendCompleteEvent, New Object() {Me, e}) + End Sub + + ''' + ''' Raises the SendProgress event. + ''' + Public Sub OnSendProgress(ByVal e As WinsockSendEventArgs) Implements IWinsock.OnSendProgress + RaiseEventSafe(SendProgressEvent, New Object() {Me, e}) + End Sub + + ''' + ''' Raises the StateChanged event. + ''' + Private Sub OnStateChanged(ByVal e As WinsockStateChangedEventArgs) 'Implements IWinsock.OnStateChanged + If _wsState <> e.New_State Then + _wsState = e.New_State + RaiseEventSafe(StateChangedEvent, New Object() {Me, e}) + End If + End Sub + +#End Region + +#Region " Private Members " + + Private _asSock As AsyncSocket + Private _wsState As WinsockStates + Private _localPort As Integer + Private _maxPendingConnections As Integer + Private _remoteHost As String + Private _remotePort As Integer + Private _legacySupport As Boolean + Private _protocol As WinsockProtocol + +#End Region + +#Region " Helper Methods " + + ''' + ''' Encapsulates the OnStateChanged methods so the AsyncSocket + ''' doesn't have to build the EventArgs parameter all the time. + ''' + ''' The new state of the Winsock. + Protected Friend Sub ChangeState(ByVal new_state As WinsockStates) Implements IWinsock.ChangeState + OnStateChanged(New WinsockStateChangedEventArgs(_wsState, new_state)) + End Sub + + ''' + ''' When the port is set dynamically by using port 0, the socket can now update the property of the component. + ''' + ''' The port we are now listening on. + Protected Friend Sub ChangeLocalPort(ByVal new_port As Integer) Implements IWinsock.ChangeLocalPort + _localPort = new_port + End Sub + +#End Region + +#Region " Public Properties " + + ''' + ''' Gets or sets a value indicating the interal size of the byte buffers. + ''' + Public Property BufferSize() As Integer + Get + Return _asSock.BufferSize + End Get + Set(ByVal value As Integer) + _asSock.BufferSize = value + End Set + End Property + + ''' + ''' Gets a value indicating whether the buffer has data for retrieval. + ''' + _ + Public ReadOnly Property HasData() As Boolean + Get + Return _asSock.BufferCount > 0 + End Get + End Property + + ''' + ''' Gets or sets a value indicating if Legacy support should be used or not. + ''' + ''' Legacy support is to support older winsock style connections. + Public Property LegacySupport() As Boolean Implements IWinsock.LegacySupport + Get + Return _legacySupport + End Get + Set(ByVal value As Boolean) + If Not value AndAlso Protocol = WinsockProtocol.Udp Then + Throw New Exception("LegacySupport is required for UDP connections.") + End If + _legacySupport = value + End Set + End Property + + ''' + ''' Gets the local machine's IP address(es). + ''' + _ + Public ReadOnly Property LocalIP() As String() + Get + Dim h As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName) + Dim s(h.AddressList.Length - 1) As String + For i As Integer = 0 To h.AddressList.Length - 1 + s(i) = CType(h.AddressList.GetValue(i), Net.IPAddress).ToString + Next + Return s + End Get + End Property + + ''' + ''' Gets or sets a value indicating the port the control should listen on. + ''' + ''' Cannot change while listening, connected, or connecting - but can change while closing. + Public Property LocalPort() As Integer + Get + Return _localPort + End Get + Set(ByVal value As Integer) + Select Case State + Case WinsockStates.Listening + Throw New Exception("Cannot change the local port while already listening on a port.") + Case WinsockStates.Connected + Throw New Exception("Cannot change the local port of a connection that is already active.") + Case Else + If State <> WinsockStates.Closed AndAlso State <> WinsockStates.Closing Then + Throw New Exception("Cannot change the local port while the component is processing, it may have adverse effects on the connection process.") + End If + End Select + _localPort = value + End Set + End Property + + ''' + ''' Gets or sets a value that control the length of the maximum length of the pending connections queue. + ''' + ''' Cannot change while listening. + Public Property MaxPendingConnections() As Integer + Get + Return _maxPendingConnections + End Get + Set(ByVal value As Integer) + Select Case State + Case WinsockStates.Listening + Throw New Exception("Cannot change the pending connections value while already listening.") + End Select + _maxPendingConnections = value + End Set + End Property + + ''' + ''' Gets a NetworkStream that this Winsock object is based on. + ''' + _ + Public ReadOnly Property NetworkStream() As System.Net.Sockets.NetworkStream + Get + Return _asSock.UnderlyingStream + End Get + End Property + + ''' + ''' Gets or sets the winsock protocol to use when communicating with the remote computer. + ''' + _ + Public Property Protocol() As WinsockProtocol Implements IWinsock.Protocol + Get + Return _protocol + End Get + Set(ByVal value As WinsockProtocol) + If State <> WinsockStates.Closed Then + Throw New Exception("Cannot change the protocol while listening or connected to a remote computer.") + End If + _protocol = value + End Set + End Property + + ''' + ''' Gets or sets a value that determines what remote computer to connect to, or is currently connected to. + ''' + ''' Can only change if closed or listening. + Public Property RemoteHost() As String Implements IWinsock.RemoteHost + Get + Return _remoteHost + End Get + Set(ByVal value As String) + If State <> WinsockStates.Closed AndAlso State <> WinsockStates.Listening Then + Throw New Exception("Cannot change the remote host while already connected to a remote computer.") + End If + _remoteHost = value + End Set + End Property + + ''' + ''' Gets or sets a value that determines which port on the remote computer to connect on, or is currently connected on. + ''' + ''' Can only change if closed or listening. + Public Property RemotePort() As Integer Implements IWinsock.RemotePort + Get + Return _remotePort + End Get + Set(ByVal value As Integer) + If State <> WinsockStates.Closed AndAlso State <> WinsockStates.Listening Then + Throw New Exception("Cannot change the remote port while already connected to a remote computer.") + End If + _remotePort = value + End Set + End Property + + ''' + ''' Gets the state of the Winsock control. + ''' + _ + Public ReadOnly Property State() As WinsockStates Implements IWinsock.State + Get + Return _wsState + End Get + End Property + +#End Region + +#Region " Public Methods " + + ''' + ''' Places a Winsock in a listening state. + ''' + Public Sub Listen() + _asSock.Listen(LocalPort, MaxPendingConnections) + End Sub + ''' + ''' Places a Winsock in a listening state. + ''' + ''' The port Winsock should listen on. + Public Sub Listen(ByVal port As Integer) + If port < 0 Then + Throw New ArgumentException("Port cannot be less than zero.", "port") + End If + LocalPort = port + Listen() + End Sub + ''' + ''' Places a Winsock in a listening state. + ''' + ''' The IP address the Winsock should listen on. This must be an ip address. + Public Sub Listen(ByVal ip As String) + If ip Is Nothing Then + Listen() + Else + Dim ipAddr As IPAddress = Nothing + If Not IPAddress.TryParse(ip, ipAddr) Then + Throw New ArgumentException("IP address specified is not a valid IP address.", "ip") + End If + _asSock.Listen(LocalPort, MaxPendingConnections, ipAddr) + End If + End Sub + ''' + ''' Places a Winsock in a listening state. + ''' + ''' The IP address the Winsock should listen on. + ''' The port Winsock should listen on. + Public Sub Listen(ByVal ip As String, ByVal port As Integer) + If port < 0 Then + Throw New ArgumentException("Port cannot be less than zero.", "port") + End If + LocalPort = port + If ip Is Nothing Then + Listen() + Else + Dim ipAddr As IPAddress = Nothing + If Not IPAddress.TryParse(ip, ipAddr) Then + Throw New ArgumentException("IP address specified is not a valid IP address.", "ip") + End If + _asSock.Listen(LocalPort, MaxPendingConnections, ipAddr) + End If + End Sub + + ''' + ''' Accepts a client connect as valid and begins to monitor it for incoming data. + ''' + ''' A System.Net.Sockets.Socket that represents the client being accepted. + Public Sub Accept(ByVal client As Sockets.Socket) + If _asSock.Accept(client) Then + _localPort = _asSock.LocalPort + ' also set remote host and port + End If + End Sub + + ''' + ''' Creates an new Winsock and accepts the client connection on it. + ''' + ''' A System.Net.Sockets.Socket that represents the client being accepted. + ''' + ''' This was created to be used by the listener, to keep the listener listening while + ''' also accepting a connection. + ''' + Public Function AcceptNew(ByVal client As Sockets.Socket) As Winsock + Dim wskReturn As New Winsock() + wskReturn.Protocol = Me.Protocol + wskReturn.LegacySupport = Me.LegacySupport + wskReturn.Accept(client) + Return wskReturn + End Function + + ''' + ''' Closes an open Winsock connection. + ''' + Public Sub Close() + _asSock.Close() + End Sub + + ''' + ''' Establishes a connection to a remote host. + ''' + Public Sub Connect() + _asSock.Connect(RemoteHost, RemotePort) + End Sub + ''' + ''' Establishes a connection to a remote host. + ''' + ''' A System.String containing the Hostname or IP address of the remote host. + ''' A value indicating the port on the remote host to connect to. + Public Sub Connect(ByVal remoteHostOrIP As String, ByVal remote_port As Integer) + RemoteHost = remoteHostOrIP + RemotePort = remote_port + Connect() + End Sub + + ''' + ''' Sends an object to a connected socket on a remote computer. + ''' + ''' The object to send. + ''' + ''' The object is first serialized using a BinaryFormatter - unless + ''' it is already a byte array, in which case it just sends the byte array. + ''' + Public Sub Send(ByVal data As Object) + Dim byt() As Byte + If LegacySupport AndAlso data.GetType Is GetType(String) Then + byt = System.Text.Encoding.Default.GetBytes(CStr(data)) + Else + byt = ObjectPacker.GetBytes(data) + End If + _asSock.Send(byt) + End Sub + ''' + ''' Sends a file to a connected socket on a remote computer. + ''' + ''' The full path to the file you want to send. + ''' + ''' Creates a special file object to send, so the receiving end knows what to do with it. + ''' + Public Sub SendFile(ByVal filename As String) + Dim wsf As New WinsockFileData() + Try + If Not wsf.ReadFile(filename) Then + Throw New Exception("File does not exist, or there was a problem reading the file.") + End If + If LegacySupport Then + Send(wsf.FileData) + Else + Send(wsf) + End If + Catch ex As Exception + SharedMethods.RaiseError(Me, ex.Message) + End Try + End Sub + + ''' + ''' Gets the next object from the buffer, removing it from the buffer. + ''' + ''' + ''' A Deserialized object or if it can't be deserialized the byte array. + ''' + Public Function [Get]() As Object + Dim byt() As Byte = _asSock.GetData() + If byt Is Nothing Then Return Nothing + Return ObjectPacker.GetObject(byt) + End Function + ''' + ''' Gets the next object from the buffer as the supplied type, removing it from the buffer. + ''' + ''' The System.Type you wish to have the data returned as. + ''' + ''' A Deserialized object converted to the data type you wish. + ''' + ''' + ''' This function was added to make it easier for Option Strict users. + ''' It allows for easier conversion instead of the user using CType, DirectCast, or the like. + ''' Can throw an error if you specify the wrong type. + ''' + Public Function [Get](Of dataType)() As dataType + Dim byt() As Byte = _asSock.GetData() + If byt Is Nothing Then Return Nothing + Dim obj As Object + If LegacySupport AndAlso GetType(dataType) Is GetType(String) Then + obj = System.Text.Encoding.Default.GetString(byt) + Else + obj = ObjectPacker.GetObject(byt) + End If + Return DirectCast(obj, dataType) + End Function + + ''' + ''' Gets the next object from the buffer, leaving it ing the buffer. + ''' + ''' + ''' A Deserialized object or if it can't be deserialized the byte array. + ''' + Public Function Peek() As Object + Dim byt() As Byte = _asSock.PeekData() + If byt Is Nothing Then Return Nothing + Return ObjectPacker.GetObject(byt) + End Function + ''' + ''' Gets the next object from the buffer as the supplied type, leaving it in the buffer. + ''' + ''' The System.Type you wish to have the data returned as. + ''' + ''' A Deserialized object converted to the data type you wish. + ''' + ''' + ''' This function was added to make it easier for Option Strict users. + ''' It allows for easier conversion instead of the user using CType, DirectCast, or the like. + ''' Can throw an error if you specify the wrong type. + ''' + Public Function Peek(Of dataType)() As dataType + Dim byt() As Byte = _asSock.PeekData() + If byt Is Nothing Then Return Nothing + Dim obj As Object + If LegacySupport AndAlso GetType(dataType) Is GetType(String) Then + obj = System.Text.Encoding.Default.GetString(byt) + Else + obj = ObjectPacker.GetObject(byt) + End If + Return DirectCast(obj, dataType) + End Function + +#End Region + +End Class diff --git a/Sub/WinsockOracs/WinsockCollection.vb b/Sub/WinsockOracs/WinsockCollection.vb new file mode 100644 index 0000000..e9ec07c --- /dev/null +++ b/Sub/WinsockOracs/WinsockCollection.vb @@ -0,0 +1,571 @@ +Imports System.ComponentModel + +''' +''' A collection of Winsock objects. +''' +Public Class WinsockCollection + Inherits CollectionBase + + +#Region " Private Members " + + ' These two hashtables store the key's and the values. + ' The base class's List store the GUID that ties the + ' keys to the values + Private _keys As Hashtable + Private _values As Hashtable + + ' These are for auto removal of the Winsock object + ' when the Winsock's Disconnected event is raised. + Private _autoRemoval As Queue + Private _autoRemove As Boolean = False + + ' These are for timing and removal of every Winsock + ' object in the collection - only used when the + ' Clear() method is run. + Private _clearRemoval As Queue + Private _clearRemove As Boolean = False + Private _clearOK As Boolean = False + + ' Allows LegacySupport to work in a multi-client + ' environment + Private _legacySupport As Boolean = False + +#End Region + +#Region " Constructor " + + ''' + ''' Initializes a new instance of the WinsockCollection class. + ''' + ''' + ''' Determines if the collection should automatically remove the + ''' connection when the Disconnected event is fired. + ''' + ''' + ''' Enables LegacySupport for connections accepted using the + ''' collections Accept method. + ''' + Public Sub New(Optional ByVal auto_remove As Boolean = False, Optional ByVal legacy_support As Boolean = False) + _keys = New Hashtable + _values = New Hashtable + _autoRemoval = New Queue + _autoRemove = auto_remove + _clearRemoval = New Queue + _legacySupport = legacy_support + End Sub + +#End Region + +#Region " Overriden Methods " + + ''' + ''' Run when the base class's list is finished clearing. + ''' Triggers clearing of the keys and values - closing + ''' all connections. + ''' + Protected Overrides Sub OnClearComplete() + MyBase.OnClearComplete() + _keys.Clear() + Dim b As Boolean = _autoRemove : _autoRemove = False + _clearOK = False + _clearRemove = True + For Each wsk As Winsock In _values.Values + wsk.Close() + Next + _clearOK = True + _autoRemove = b + End Sub + + ''' + ''' Causes the CountChanged event to be triggered when an item is added to the collection. + ''' + Protected Overrides Sub OnInsertComplete(ByVal index As Integer, ByVal value As Object) + MyBase.OnInsertComplete(index, value) + OnCountChanged(List.Count - 1, List.Count) + End Sub + + ''' + ''' Causes the CountChanged event to be triggered when an item is removed from the collection. + ''' + Protected Overrides Sub OnRemoveComplete(ByVal index As Integer, ByVal value As Object) + MyBase.OnRemoveComplete(index, value) + OnCountChanged(List.Count + 1, List.Count) + End Sub + +#End Region + +#Region " Private Methods " + + ''' + ''' Run during the Clearing of the collection. + ''' The method actually clears the values safely + ''' so as not to cause exceptions. Triggered via + ''' the last Disconnected event. + ''' + Private Sub ClearAllValues() + While _values.Count > 0 + If _clearOK AndAlso _clearRemoval.Count > 0 Then + Dim i As Integer = _values.Count + Dim gid2Rem As Guid = CType(_clearRemoval.Dequeue(), Guid) + _values.Remove(gid2Rem) + OnCountChanged(i, _values.Count) + End If + End While + End Sub + + ''' + ''' Attemps to retrieve the GUID of the item at the index specified. + ''' + ''' The zero-based index of the GUID you are attempting to find. + Private Function getGID(ByVal index As Integer) As Guid + Return CType(List.Item(index), Guid) + End Function + + ''' + ''' Attempts to retrieve the GUID of the item using the Key given to the item. + ''' + ''' The key whose GUID you are looking for. + Private Function getGID(ByVal key As Object) As Guid + For Each gid As Guid In _keys.Keys + If Object.ReferenceEquals(_keys(gid), key) Then Return gid + Next + Return Guid.Empty + End Function + + ''' + ''' Removes the given GUID and it's ties from the collections. + ''' + ''' The GUID to remove. + Private Sub RemoveGID(ByVal gid As Guid) + If gid <> Guid.Empty Then + CType(_values(gid), Winsock).Dispose() + _values.Remove(gid) + _keys.Remove(gid) + List.Remove(gid) + End If + End Sub + + ''' + ''' Adds a winsock value to the collection. + ''' + ''' The GUID of the object. + ''' The Key of the object (may be nothing). + ''' The Winsock that is to be added to the collection. + ''' Attaches handlers to each Winsock event so the collection can act as a proxy. + Private Sub Add(ByVal gid As Guid, ByVal key As Object, ByVal value As Winsock) + AddHandler value.Connected, AddressOf OnConnected + AddHandler value.ConnectionRequest, AddressOf OnConnectionRequest + AddHandler value.DataArrival, AddressOf OnDataArrival + AddHandler value.Disconnected, AddressOf OnDisconnected + AddHandler value.ErrorReceived, AddressOf OnErrorReceived + AddHandler value.SendComplete, AddressOf OnSendComplete + AddHandler value.SendProgress, AddressOf OnSendProgress + AddHandler value.StateChanged, AddressOf OnStateChanged + _keys.Add(gid, key) + _values.Add(gid, value) + List.Add(gid) + End Sub + + ''' + ''' Method to remove an object automatically - threaded to avoid problems. + ''' + Private Sub RemovalThread() + Threading.Thread.Sleep(50) + Dim gid As Guid = CType(_autoRemoval.Dequeue(), Guid) + RemoveGID(gid) + End Sub + +#End Region + +#Region " Public Methods " + + ''' + ''' Retrieves the GUID assigned to the specified Winsock object in the collection. + ''' + ''' The Winsock object to find the GUID of. + Public Function findGID(ByVal value As Winsock) As Guid + If Not ContainsValue(value) Then Return Guid.Empty + For Each gid As Guid In _values.Keys + If Object.ReferenceEquals(_values(gid), value) Then Return gid + Next + Return Guid.Empty + End Function + + ''' + ''' Retrieves the Key assigned to the specified Winsock object in the collection. + ''' + ''' The Winsock object to find the Key of. + ''' The key object that was assigned to the Winsock - may be Nothing. + Public Function findKey(ByVal value As Winsock) As Object + Dim gid As Guid = findGID(value) + If gid = Guid.Empty Then Return Nothing + Return _keys(gid) + End Function + + ''' + ''' Determines if the collection contains the key specified. + ''' + ''' The key to search the collection for. + Public Function ContainsKey(ByVal key As Object) As Boolean + If key Is Nothing Then + Throw New ArgumentNullException("key") + End If + Return _keys.ContainsValue(key) + End Function + + ''' + ''' Determines if the collection contains the specified value. + ''' + ''' The value to search the collection for. + Public Function ContainsValue(ByVal value As Winsock) As Boolean + Return _values.ContainsValue(value) + End Function + + ''' + ''' Removes the value at the specified index. Use this instead of RemoveAt. + ''' + ''' The zero-based index of the item you wish to remove. + Public Sub Remove(ByVal index As Integer) + Dim gid As Guid = getGID(index) + RemoveGID(gid) + End Sub + + ''' + ''' Removes the value with the specified key. + ''' + ''' The key of the value you wish to remove. + Public Sub Remove(ByVal key As Object) + If TypeOf (key) Is Integer Then + Dim gidIndex As Guid = getGID(CInt(key)) + RemoveGID(gidIndex) + Exit Sub + End If + If Not ContainsKey(key) Then Exit Sub + Dim gid As Guid = getGID(key) + RemoveGID(gid) + End Sub + + ''' + ''' Removes the value with the specified Guid. + ''' + ''' The Guid of the value you wish to remove. + Public Sub Remove(ByVal gid As Guid) + RemoveGID(gid) + End Sub + + ''' + ''' Adds a value to the collection. + ''' + ''' The Winsock object to add to the collection. + ''' Returns the GUID assigned to the element. + Public Function Add(ByVal value As Winsock) As Guid + Dim gid As Guid = Guid.NewGuid() + Add(gid, Nothing, value) + Return gid + End Function + ''' + ''' Adds a value to the collection. + ''' + ''' The Winsock object to add to the collection. + ''' The Key of the element to add. + ''' Returns the GUID assigned to the element. + Public Function Add(ByVal value As Winsock, ByVal key As Object) As Guid + Dim gid As Guid = Guid.NewGuid() + Add(gid, key, value) + Return gid + End Function + + ''' + ''' Accepts an incoming connection and adds it to the collection. + ''' + ''' The client to accept. + ''' Returns the GUID assigned to the element. + Public Function Accept(ByVal client As System.Net.Sockets.Socket) As Guid + Dim wsk As New Winsock() + wsk.LegacySupport = _legacySupport + Dim gid As Guid = Add(wsk, Nothing) + wsk.Accept(client) + Return gid + End Function + ''' + ''' Accepts an incoming connection and adds it to the collection. + ''' + ''' The client to accept. + ''' The Key of the element to add. + ''' Returns the GUID assigned to the element. + Public Function Accept(ByVal client As System.Net.Sockets.Socket, ByVal key As Object) As Guid + Dim wsk As New Winsock() + wsk.LegacySupport = _legacySupport + Dim gid As Guid = Me.Add(wsk, key) + wsk.Accept(client) + Return gid + End Function + + ''' + ''' Connects to a remote host and adds it to the collection. + ''' + ''' A containing the Hostname or IP address of the remote host. + ''' A value indicating the port on the remote host to connect to. + ''' Return the GUID assigned to the element. + Public Function Connect(ByVal remoteHostOrIP As String, ByVal remotePort As Integer) As Guid + Dim wsk As New Winsock() + wsk.Protocol = WinsockProtocol.Tcp + wsk.LegacySupport = _legacySupport + Dim gid As Guid = Add(wsk, Nothing) + CType(_values(gid), Winsock).Connect(remoteHostOrIP, remotePort) + End Function + ''' + ''' Connects to a remote host and adds it to the collection. + ''' + ''' A containing the Hostname or IP address of the remote host. + ''' A value indicating the port on the remote host to connect to. + ''' The Key of the element to add. + ''' Return the GUID assigned to the element. + Public Function Connect(ByVal remoteHostOrIP As String, ByVal remotePort As Integer, ByVal key As Object) As Guid + Dim wsk As New Winsock() + wsk.Protocol = WinsockProtocol.Tcp + wsk.LegacySupport = _legacySupport + Dim gid As Guid = Add(wsk, key) + CType(_values(gid), Winsock).Connect(remoteHostOrIP, remotePort) + End Function + + ''' + ''' Gets an Array of all the remote IP addresses of each connection in this collection. + ''' + Public Function GetRemoteIPs() As ArrayList + Dim ar As New ArrayList + For Each key As Object In _values.Keys + ar.Add(CType(_values(key), Winsock).RemoteHost) + Next + Return ar + End Function + +#End Region + +#Region " Public Properties " + + ''' + ''' Gets a Collection containing all the keys in this collection. + ''' + Public ReadOnly Property Keys() As System.Collections.ICollection + Get + Return _keys.Values() + End Get + End Property + + ''' + ''' Gets a Collection containing all the values in this collection. + ''' + Public ReadOnly Property Values() As System.Collections.ICollection + Get + Return _values.Values + End Get + End Property + + ''' + ''' Gets or sets the Winsock at the specified index. + ''' + ''' A zero-based index of the Winsock to get or set. + Default Public Property Item(ByVal index As Integer) As Winsock + Get + Dim gid As Guid = getGID(index) + Return CType(_values(gid), Winsock) + End Get + Set(ByVal value As Winsock) + Dim gid As Guid = getGID(index) + If Not _values.ContainsKey(gid) Then + Add(gid, Nothing, value) + Else + _values(gid) = value + End If + End Set + End Property + + ''' + ''' Gets or sets the Winsock associated with the specified key. + ''' + ''' The key whose value to get or set. + Default Public Property Item(ByVal key As Object) As Winsock + Get + Dim gid As Guid = getGID(key) + Return CType(_values(gid), Winsock) + End Get + Set(ByVal value As Winsock) + Dim gid As Guid = getGID(key) + If Not _values.ContainsKey(gid) Then + Add(gid, Nothing, value) + Else + _values(gid) = value + End If + End Set + End Property + + ''' + ''' Gets or sets the Winsock associated with the specified GUID. + ''' + ''' The GUID whose value to get or set. + Default Public Property Item(ByVal gid As Guid) As Winsock + Get + Return CType(_values(gid), Winsock) + End Get + Set(ByVal value As Winsock) + If Not _values.ContainsKey(gid) Then + Add(gid, Nothing, value) + Else + _values(gid) = value + End If + End Set + End Property + +#End Region + +#Region " Events " + + ''' + ''' Occurs when connection is achieved (client and server). + ''' + Public Event Connected(ByVal sender As Object, ByVal e As WinsockConnectedEventArgs) + ''' + ''' Occurs on the server when a client is attempting to connect. + ''' + ''' Client registers connected at this point. Server must Accept in order for it to be connected. + Public Event ConnectionRequest(ByVal sender As Object, ByVal e As WinsockConnectionRequestEventArgs) + ''' + ''' Occurs when the number of items in the collection has changed. + ''' + Public Event CountChanged(ByVal sender As Object, ByVal e As WinsockCollectionCountChangedEventArgs) + ''' + ''' Occurs when data arrives on the socket. + ''' + ''' Raised only after all parts of the data have been collected. + Public Event DataArrival(ByVal sender As Object, ByVal e As WinsockDataArrivalEventArgs) + ''' + ''' Occurs when disconnected from the remote computer (client and server). + ''' + Public Event Disconnected(ByVal sender As Object, ByVal e As System.EventArgs) + ''' + ''' Occurs when an error is detected in the socket. + ''' + ''' May also be raised on disconnected (depending on disconnect circumstance). + Public Event ErrorReceived(ByVal sender As Object, ByVal e As WinsockErrorReceivedEventArgs) + ''' + ''' Occurs when sending of data is completed. + ''' + Public Event SendComplete(ByVal sender As Object, ByVal e As WinsockSendEventArgs) + ''' + ''' Occurs when the send buffer has been sent but not all the data has been sent yet. + ''' + Public Event SendProgress(ByVal sender As Object, ByVal e As WinsockSendEventArgs) + ''' + ''' Occurs when the state of the socket changes. + ''' + Public Event StateChanged(ByVal sender As Object, ByVal e As WinsockStateChangedEventArgs) + + ''' + ''' Triggers an event declared at module level within a class, form, or document in a thread-safe manner. + ''' + ''' The event to be raised. + ''' The arguements for the event. + Private Sub RaiseEventSafe(ByVal ev As System.Delegate, ByRef args() As Object) + Dim bFired As Boolean + If ev IsNot Nothing Then + For Each singleCast As System.Delegate In ev.GetInvocationList() + bFired = False + Try + Dim syncInvoke As ISynchronizeInvoke = CType(singleCast.Target, ISynchronizeInvoke) + If syncInvoke IsNot Nothing AndAlso syncInvoke.InvokeRequired Then + bFired = True + syncInvoke.BeginInvoke(singleCast, args) + Else + bFired = True + singleCast.DynamicInvoke(args) + End If + Catch ex As Exception + If Not bFired Then singleCast.DynamicInvoke(args) + End Try + Next + End If + End Sub + + ''' + ''' Raises the Connected event. + ''' + Protected Friend Sub OnConnected(ByVal sender As Object, ByVal e As WinsockConnectedEventArgs) + RaiseEventSafe(ConnectedEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the ConnectionRequest event, and closes the socket if the ConnectionRequest was rejected. + ''' + Protected Friend Sub OnConnectionRequest(ByVal sender As Object, ByVal e As WinsockConnectionRequestEventArgs) + RaiseEventSafe(ConnectionRequestEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the DataArrival event. + ''' + Protected Friend Sub OnDataArrival(ByVal sender As Object, ByVal e As WinsockDataArrivalEventArgs) + RaiseEventSafe(DataArrivalEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the Disconnected Event. + ''' + Protected Friend Sub OnDisconnected(ByVal sender As Object, ByVal e As System.EventArgs) + RaiseEventSafe(DisconnectedEvent, New Object() {sender, e}) + If _clearRemove Then + Dim gid As Guid = findGID(CType(sender, Winsock)) + _clearRemoval.Enqueue(gid) + If _clearRemoval.Count = _values.Count Then + Dim thd As New Threading.Thread(AddressOf ClearAllValues) + thd.Start() + _clearRemove = False + End If + ElseIf _autoRemove Then + Dim gid As Guid = findGID(CType(sender, Winsock)) + _autoRemoval.Enqueue(gid) + Dim thd As New Threading.Thread(AddressOf RemovalThread) + thd.Start() + End If + End Sub + + ''' + ''' Raises the ErrorReceived event. + ''' + Protected Friend Sub OnErrorReceived(ByVal sender As Object, ByVal e As WinsockErrorReceivedEventArgs) + RaiseEventSafe(ErrorReceivedEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the SendComplete event. + ''' + Protected Friend Sub OnSendComplete(ByVal sender As Object, ByVal e As WinsockSendEventArgs) + RaiseEventSafe(SendCompleteEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the SendProgress event. + ''' + Protected Friend Sub OnSendProgress(ByVal sender As Object, ByVal e As WinsockSendEventArgs) + RaiseEventSafe(SendProgressEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the StateChanged event. + ''' + Protected Friend Sub OnStateChanged(ByVal sender As Object, ByVal e As WinsockStateChangedEventArgs) + RaiseEventSafe(StateChangedEvent, New Object() {sender, e}) + End Sub + + ''' + ''' Raises the count changed event. + ''' + Private Sub OnCountChanged(ByVal old_count As Integer, ByVal new_count As Integer) + Dim e As New WinsockCollectionCountChangedEventArgs(old_count, new_count) + RaiseEventSafe(CountChangedEvent, New Object() {Me, e}) + End Sub + +#End Region + +End Class \ No newline at end of file diff --git a/Sub/WinsockOracs/WinsockDesigner.vb b/Sub/WinsockOracs/WinsockDesigner.vb new file mode 100644 index 0000000..bb8e916 --- /dev/null +++ b/Sub/WinsockOracs/WinsockDesigner.vb @@ -0,0 +1,236 @@ +Imports System.ComponentModel +Imports System.ComponentModel.Design +Imports Microsoft.VisualBasic + +''' +''' Winsock designer class provides designer time support for the Winsock component. +''' +Public Class WinsockDesigner + Inherits System.ComponentModel.Design.ComponentDesigner + + Private lists As DesignerActionListCollection + + ''' + ''' Creates a new instance of the WinsockDesigner class. + ''' + ''' + Public Sub New() + End Sub + + ''' + ''' Initializes this instance of the WinsockDesigner class. + ''' + ''' The base component of the designer. + Public Overrides Sub Initialize(ByVal component As System.ComponentModel.IComponent) + MyBase.Initialize(component) + End Sub + + ''' + ''' Gets the Verb collection. + ''' + ''' + ''' The Verb collection is used to display links at the + ''' bottom of the description in the Properties pane. + ''' + Public Overrides ReadOnly Property Verbs() As System.ComponentModel.Design.DesignerVerbCollection + Get + Return New DesignerVerbCollection() + End Get + End Property + + ''' + ''' Gets the Action list collection. + ''' + ''' + ''' The Action list collection is used for the Smart Tag + ''' popup to provide easy access to various properties/actions. + ''' + Public Overrides ReadOnly Property ActionLists() As DesignerActionListCollection + Get + If lists Is Nothing Then + lists = New DesignerActionListCollection() + lists.Add(New WinsockActionList(Me.Component)) + End If + Return lists + End Get + End Property + +End Class + +''' +''' Provides the action list for the Winsock component during design time. +''' +Public Class WinsockActionList + Inherits DesignerActionList + + Private _wsk As Winsock + Private designerActionUISvc As DesignerActionUIService = Nothing + + Private host As IDesignerHost + Private parentDesigner As IDesigner + + ''' + ''' Initializes a new instance of the WinsockActionList class. + ''' + ''' The component used in initialization. + Public Sub New(ByVal component As IComponent) + MyBase.New(component) + Me._wsk = CType(component, Winsock) + + Me.designerActionUISvc = CType(GetService(GetType(DesignerActionUIService)), DesignerActionUIService) + + Me.host = Me.Component.Site.GetService(GetType(IDesignerHost)) + + Me.parentDesigner = host.GetDesigner(Me.Component) + End Sub + + ''' + ''' Gets or sets a value indicating if Legacy support should be used or not. + ''' + ''' Legacy support is to support older winsock style connections. + Public Property LegacySupport() As Boolean + Get + Return _wsk.LegacySupport + End Get + Set(ByVal value As Boolean) + GetPropertyByName("LegacySupport").SetValue(_wsk, value) + Me.designerActionUISvc.Refresh(Me.Component) + End Set + End Property + + ''' + ''' Gets or sets the winsock protocol to use when communicating with the remote computer. + ''' + Public Property Protocol() As WinsockProtocol + Get + Return _wsk.Protocol + End Get + Set(ByVal value As WinsockProtocol) + GetPropertyByName("Protocol").SetValue(_wsk, value) + Me.designerActionUISvc.Refresh(Me.Component) + End Set + End Property + + ''' + ''' Builds and retrieves the Action list itself. + ''' + Public Overrides Function GetSortedActionItems() As DesignerActionItemCollection + Dim items As New DesignerActionItemCollection() + + ' create the headers + items.Add(New DesignerActionHeaderItem("Appearance & Behavior")) + items.Add(New DesignerActionHeaderItem("Events")) + items.Add(New DesignerActionHeaderItem("About")) + + ' add the properties + items.Add(New DesignerActionPropertyItem("LegacySupport", "Legacy Support", "Appearance & Behavior", "Enables legacy (VB6) send/receive support.")) + items.Add(New DesignerActionPropertyItem("Protocol", "Protocol", "Appearance & Behavior", "Specifies whether the component should use the TCP or UDP protocol.")) + + ' add the events + items.Add(New DesignerActionMethodItem(Me, "TriggerConnectedEvent", "Connected", "Events", "Takes you to the handler for the Connected event.", False)) + items.Add(New DesignerActionMethodItem(Me, "TriggerConnectionRequestEvent", "ConnectionRequest", "Events", "Takes you to the handler for the ConnectionRequest event.", False)) + items.Add(New DesignerActionMethodItem(Me, "TriggerDataArrivalEvent", "DataArrival", "Events", "Takes you to the handler for the DataArrival event.", False)) + items.Add(New DesignerActionMethodItem(Me, "TriggerDisconnectedEvent", "Disconnected", "Events", "Takes you to the handler for the Disconnected event.", False)) + items.Add(New DesignerActionMethodItem(Me, "TriggerErrorReceivedEvent", "ErrorReceived", "Events", "Takes you to the handler for the ErrorReceived event.", False)) + items.Add(New DesignerActionMethodItem(Me, "TriggerStateChangedEvent", "StateChanged", "Events", "Takes you to the handler for the StateChanged event.", False)) + + ' add support items + Dim ver As String = String.Format("{0}.{1}.{2}", My.Application.Info.Version.Major, My.Application.Info.Version.Minor, My.Application.Info.Version.Build) + items.Add(New DesignerActionMethodItem(Me, "ShowAbout", "About Winsock " & ver, "About", "Displays the about box.", False)) + items.Add(New DesignerActionMethodItem(Me, "LaunchWebSite", "Kolkman Koding Website", "About", "Opens the author's website.", False)) + + Return items + End Function + + ''' + ''' Gets the property information by the given name. + ''' + ''' The name of the property to get. + Private Function GetPropertyByName(ByVal propName As String) As PropertyDescriptor + Dim prop As PropertyDescriptor + prop = TypeDescriptor.GetProperties(_wsk)(propName) + If prop Is Nothing Then + Throw New ArgumentException("Invalid property.", propName) + Else + Return prop + End If + End Function + + ''' + ''' Shows the about box. + ''' + Public Sub ShowAbout() + Dim f As New frmAbout() + f.ShowDialog() + End Sub + + ''' + ''' Launches the author's website. + ''' + Public Sub LaunchWebSite() + System.Diagnostics.Process.Start("http://www.k-koding.com") + End Sub + + Public Sub TriggerConnectedEvent() + CreateAndShowEvent("Connected") + End Sub + Public Sub TriggerConnectionRequestEvent() + CreateAndShowEvent("ConnectionRequest") + End Sub + Public Sub TriggerDataArrivalEvent() + CreateAndShowEvent("DataArrival") + End Sub + Public Sub TriggerDisconnectedEvent() + CreateAndShowEvent("Disconnected") + End Sub + Public Sub TriggerErrorReceivedEvent() + CreateAndShowEvent("ErrorReceived") + End Sub + Public Sub TriggerStateChangedEvent() + CreateAndShowEvent("StateChanged") + End Sub + + Private Sub CreateAndShowEvent(ByVal eventName As String) + Dim evService As IEventBindingService = CType(Me.Component.Site.GetService(GetType(System.ComponentModel.Design.IEventBindingService)), IEventBindingService) + Dim ev As EventDescriptor = GetEvent(evService, eventName) + If ev IsNot Nothing Then + CreateEvent(evService, ev) + Me.designerActionUISvc.HideUI(Me.Component) + evService.ShowCode(Me.Component, ev) + End If + End Sub + + Private Sub CreateEvent(ByRef evService As IEventBindingService, ByVal ev As EventDescriptor) + Dim epd As PropertyDescriptor = evService.GetEventProperty(ev) + Dim strEventName As String = Me.Component.Site.Name & "_" & ev.Name + Dim existing As Object = epd.GetValue(Me.Component) + 'Only create if there isn't already a handler + If existing Is Nothing Then + epd.SetValue(Me.Component, strEventName) + End If + End Sub + + Private Function GetEvent(ByRef evService As IEventBindingService, ByVal eventName As String) As EventDescriptor + If evService Is Nothing Then Return Nothing + ' Attempt to obtain a PropertyDescriptor for a + ' component event named "testEvent". + Dim edc As EventDescriptorCollection = TypeDescriptor.GetEvents(Me.Component) + If edc Is Nothing Or edc.Count = 0 Then + Return Nothing + End If + Dim ed As EventDescriptor = Nothing + ' Search for an event named "Connected". + Dim edi As EventDescriptor + For Each edi In edc + If edi.Name = eventName Then + ed = edi + Exit For + End If + Next edi + If ed Is Nothing Then + Return Nothing + End If + Return ed + End Function + +End Class diff --git a/Sub/WinsockOracs/WinsockFileData.vb b/Sub/WinsockOracs/WinsockFileData.vb new file mode 100644 index 0000000..cb091eb --- /dev/null +++ b/Sub/WinsockOracs/WinsockFileData.vb @@ -0,0 +1,83 @@ +''' +''' A class that wraps a file allowing you to serialize it for transport. +''' + _ +Public Class WinsockFileData + +#Region " Private Members " + + Private _fileData() As Byte ' Stores the file data + Private _fileName As String ' Stores the file name + +#End Region + +#Region " Constructor " + + ''' + ''' Initializes a new instance of the WinsockFileData class. + ''' + Public Sub New() + _fileData = Nothing + _fileName = Nothing + End Sub + +#End Region + +#Region " Properties " + + ''' + ''' Gets or sets the name of the file. + ''' + Public Property FileName() As String + Get + Return _fileName + End Get + Set(ByVal value As String) + _fileName = value + End Set + End Property + + ''' + ''' Gets or sets the contents of the file. + ''' + Public Property FileData() As Byte() + Get + Return _fileData + End Get + Set(ByVal value As Byte()) + _fileData = value + End Set + End Property + +#End Region + +#Region " Methods " + + ''' + ''' Saves the file to the specified path. + ''' + ''' The full path of the file to save to. + ''' Whether you want to append the data to the end of an existing file or not. + Public Sub SaveFile(ByVal save_path As String, Optional ByVal append As Boolean = False) + My.Computer.FileSystem.WriteAllBytes(save_path, _fileData, append) + End Sub + + ''' + ''' Reads a file into the WinsockFileData class. + ''' + ''' The full path of the file you want to read. + Public Function ReadFile(ByVal file_path As String) As Boolean + Dim fi As IO.FileInfo = My.Computer.FileSystem.GetFileInfo(file_path) + If fi.Exists Then + ReDim _fileData(0) + _fileName = fi.Name + _fileData = My.Computer.FileSystem.ReadAllBytes(fi.FullName) + Else + Return False + End If + Return True + End Function + +#End Region + +End Class diff --git a/Sub/WinsockOracs/frmAbout.Designer.vb b/Sub/WinsockOracs/frmAbout.Designer.vb new file mode 100644 index 0000000..860a938 --- /dev/null +++ b/Sub/WinsockOracs/frmAbout.Designer.vb @@ -0,0 +1,146 @@ + _ +Partial Class frmAbout + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmAbout)) + Me.pctLogo = New System.Windows.Forms.PictureBox + Me.txtAbout = New System.Windows.Forms.TextBox + Me.cmdClose = New System.Windows.Forms.Button + Me.TabControl1 = New System.Windows.Forms.TabControl + Me.TabPage1 = New System.Windows.Forms.TabPage + Me.TabPage2 = New System.Windows.Forms.TabPage + Me.txtHistory = New System.Windows.Forms.TextBox + CType(Me.pctLogo, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TabControl1.SuspendLayout() + Me.TabPage1.SuspendLayout() + Me.TabPage2.SuspendLayout() + Me.SuspendLayout() + ' + 'pctLogo + ' + Me.pctLogo.Anchor = System.Windows.Forms.AnchorStyles.Top + Me.pctLogo.Image = Global.Winsock_Orcas.My.Resources.Resources.k_koding + Me.pctLogo.Location = New System.Drawing.Point(169, 12) + Me.pctLogo.Name = "pctLogo" + Me.pctLogo.Size = New System.Drawing.Size(121, 120) + Me.pctLogo.TabIndex = 0 + Me.pctLogo.TabStop = False + ' + 'txtAbout + ' + Me.txtAbout.Dock = System.Windows.Forms.DockStyle.Fill + Me.txtAbout.Location = New System.Drawing.Point(3, 3) + Me.txtAbout.Multiline = True + Me.txtAbout.Name = "txtAbout" + Me.txtAbout.ReadOnly = True + Me.txtAbout.ScrollBars = System.Windows.Forms.ScrollBars.Vertical + Me.txtAbout.Size = New System.Drawing.Size(420, 221) + Me.txtAbout.TabIndex = 1 + ' + 'cmdClose + ' + Me.cmdClose.Location = New System.Drawing.Point(371, 397) + Me.cmdClose.Name = "cmdClose" + Me.cmdClose.Size = New System.Drawing.Size(75, 23) + Me.cmdClose.TabIndex = 2 + Me.cmdClose.Text = "Close" + Me.cmdClose.UseVisualStyleBackColor = True + ' + 'TabControl1 + ' + Me.TabControl1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.TabControl1.Controls.Add(Me.TabPage1) + Me.TabControl1.Controls.Add(Me.TabPage2) + Me.TabControl1.Location = New System.Drawing.Point(12, 138) + Me.TabControl1.Name = "TabControl1" + Me.TabControl1.SelectedIndex = 0 + Me.TabControl1.Size = New System.Drawing.Size(434, 253) + Me.TabControl1.TabIndex = 3 + ' + 'TabPage1 + ' + Me.TabPage1.BackColor = System.Drawing.SystemColors.Control + Me.TabPage1.Controls.Add(Me.txtAbout) + Me.TabPage1.Location = New System.Drawing.Point(4, 22) + Me.TabPage1.Name = "TabPage1" + Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage1.Size = New System.Drawing.Size(426, 227) + Me.TabPage1.TabIndex = 0 + Me.TabPage1.Text = "About" + ' + 'TabPage2 + ' + Me.TabPage2.BackColor = System.Drawing.SystemColors.Control + Me.TabPage2.Controls.Add(Me.txtHistory) + Me.TabPage2.Location = New System.Drawing.Point(4, 22) + Me.TabPage2.Name = "TabPage2" + Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage2.Size = New System.Drawing.Size(426, 227) + Me.TabPage2.TabIndex = 1 + Me.TabPage2.Text = "History" + ' + 'txtHistory + ' + Me.txtHistory.Dock = System.Windows.Forms.DockStyle.Fill + Me.txtHistory.Location = New System.Drawing.Point(3, 3) + Me.txtHistory.Multiline = True + Me.txtHistory.Name = "txtHistory" + Me.txtHistory.ReadOnly = True + Me.txtHistory.ScrollBars = System.Windows.Forms.ScrollBars.Vertical + Me.txtHistory.Size = New System.Drawing.Size(420, 221) + Me.txtHistory.TabIndex = 0 + ' + 'frmAbout + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(458, 432) + Me.Controls.Add(Me.TabControl1) + Me.Controls.Add(Me.cmdClose) + Me.Controls.Add(Me.pctLogo) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "frmAbout" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "About Winsock Orcas" + CType(Me.pctLogo, System.ComponentModel.ISupportInitialize).EndInit() + Me.TabControl1.ResumeLayout(False) + Me.TabPage1.ResumeLayout(False) + Me.TabPage1.PerformLayout() + Me.TabPage2.ResumeLayout(False) + Me.TabPage2.PerformLayout() + Me.ResumeLayout(False) + + End Sub + Friend WithEvents pctLogo As System.Windows.Forms.PictureBox + Friend WithEvents txtAbout As System.Windows.Forms.TextBox + Friend WithEvents cmdClose As System.Windows.Forms.Button + Friend WithEvents TabControl1 As System.Windows.Forms.TabControl + Friend WithEvents TabPage1 As System.Windows.Forms.TabPage + Friend WithEvents TabPage2 As System.Windows.Forms.TabPage + Friend WithEvents txtHistory As System.Windows.Forms.TextBox +End Class diff --git a/Sub/WinsockOracs/frmAbout.resx b/Sub/WinsockOracs/frmAbout.resx new file mode 100644 index 0000000..590829d --- /dev/null +++ b/Sub/WinsockOracs/frmAbout.resx @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA////ACJ6/wCioqIAeq//ALrc/wB/f38AxMTEAE2T/wCdxP8As7OzAI+PjwDP6/8AYqL/ADSI + /wCLuf8ArM7/AJmZmQCHh4cAvLy8AKqqqgBYmv8AcKj/ALnQ/wAtf/8AP4r/AJK//wCDtf8ApMn/AGmk + /wAoe/8AM4L/ALPR/wBQmP8Adaz/AF6e/wCXwP8Ay+n/AIe3/wB+sf8Ao8X/AI6+/wBtpf8AqMn/ALDQ + /wBlo/8Acqv/ADGE/wBcnP8AkLz/AHeu/wCBs/8AIXz/AKbI/wBXmP8AlcH/AGqm/wAkev8AS5P/AJe+ + /wCQvv8Ahbf/AHCq/wB3rP8AJ3r/ADSD/wCx0f8ApMb/AGij/wCItv8AfbD/AKTI/wCjxv8AnsT/AJXA + /wBlov8AZqP/AGmj/wBxqP8Acqr/AHWt/wB7r/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAABQAAAAABgAAAAAAAAAAAAAK + FAMRCxIAAAAAAAAAAAAAAAoMJREAAAAAAAAAAAAAAAATChQDAAAAAAAAS1AVAAAAABcFAAAAADQONC4J + LQA2IQAHEwAvGAA5ODRRSD4ADUQAAAAAOkEAHioCPUMEAAAzAAAAAEwAAB8dQABJPAAALhsWOE4hAAAI + MAAAGjUmAAAAPh0AAAAITxkAAAAcRw8AAAAAAAAjP00AAAAAAEcQJEU9RjInKQQAAAAAAAAAOytCICwo + SiIAAAAAAAAAAAAAOzcxDwAAAAAAAP//AAD3/wAA+98AAPgfAAD8PwAA/D8AAB54AAASSAAAE8gAABvY + AACYGQAAjnEAAMfjAADgBwAA8A8AAPw/AAA= + + + \ No newline at end of file diff --git a/Sub/WinsockOracs/frmAbout.vb b/Sub/WinsockOracs/frmAbout.vb new file mode 100644 index 0000000..86087a4 --- /dev/null +++ b/Sub/WinsockOracs/frmAbout.vb @@ -0,0 +1,24 @@ +Public Class frmAbout + + Private Sub cmdClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdClose.Click + Me.Close() + End Sub + + Private Sub frmAbout_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + txtAbout.Text = ReadFromAssembly("About.txt") + txtHistory.Text = ReadFromAssembly("History.txt") + End Sub + + Private Function ReadFromAssembly(ByVal filename As String) As String + Dim sRet As String = "" + Dim executing_assembly As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly() + Dim my_namespace As String = GetType(frmAbout).Namespace + Dim text_stream As IO.Stream = executing_assembly.GetManifestResourceStream(my_namespace & "." & filename) + If text_stream IsNot Nothing Then + Dim stream_reader As New IO.StreamReader(text_stream) + sRet = stream_reader.ReadToEnd() + End If + Return sRet + End Function + +End Class \ No newline at end of file diff --git a/TEST/DigitalIndicator/App.config b/TEST/DigitalIndicator/App.config new file mode 100644 index 0000000..193aecc --- /dev/null +++ b/TEST/DigitalIndicator/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/TEST/DigitalIndicator/DigitalIndicator.csproj b/TEST/DigitalIndicator/DigitalIndicator.csproj new file mode 100644 index 0000000..c22e54b --- /dev/null +++ b/TEST/DigitalIndicator/DigitalIndicator.csproj @@ -0,0 +1,90 @@ + + + + + Debug + AnyCPU + {F69F811F-9B8C-4554-9624-2F8C2E1D9BFD} + WinExe + DigitalIndicator + DigitalIndicator + v4.8 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\DLL\arCommUtil.dll + + + ..\..\packages\NModbus4.2.1.0\lib\net40\NModbus4.dll + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/TEST/DigitalIndicator/Form1.Designer.cs b/TEST/DigitalIndicator/Form1.Designer.cs new file mode 100644 index 0000000..f9b3e90 --- /dev/null +++ b/TEST/DigitalIndicator/Form1.Designer.cs @@ -0,0 +1,220 @@ +namespace DigitalIndicator +{ + partial class Form1 + { + /// + /// 필수 ë””ìžì´ë„ˆ 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 ì¤‘ì¸ ëª¨ë“  리소스를 정리합니다. + /// + /// 관리ë˜ëŠ” 리소스를 삭제해야 하면 trueì´ê³ , 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form ë””ìžì´ë„ˆì—서 ìƒì„±í•œ 코드 + + /// + /// ë””ìžì´ë„ˆ ì§€ì›ì— 필요한 메서드입니다. + /// ì´ ë©”ì„œë“œì˜ ë‚´ìš©ì„ ì½”ë“œ 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.tbport = new System.Windows.Forms.TextBox(); + this.tbbaud = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.button2 = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); + this.button3 = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); + this.SuspendLayout(); + // + // tbport + // + this.tbport.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbport.Location = new System.Drawing.Point(113, 17); + this.tbport.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5); + this.tbport.Name = "tbport"; + this.tbport.Size = new System.Drawing.Size(222, 35); + this.tbport.TabIndex = 0; + this.tbport.Text = "com8"; + this.tbport.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // tbbaud + // + this.tbbaud.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbbaud.Location = new System.Drawing.Point(471, 17); + this.tbbaud.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5); + this.tbbaud.Name = "tbbaud"; + this.tbbaud.Size = new System.Drawing.Size(215, 35); + this.tbbaud.TabIndex = 0; + this.tbbaud.Text = "9600"; + this.tbbaud.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(24, 22); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 30); + this.label1.TabIndex = 1; + this.label1.Text = "port"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label2.Location = new System.Drawing.Point(348, 22); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(62, 30); + this.label2.TabIndex = 1; + this.label2.Text = "baud"; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(712, 17); + this.button1.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(250, 35); + this.button1.TabIndex = 2; + this.button1.Text = "ì—°ê²°/ëŠê¸°"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // timer1 + // + this.timer1.Interval = 1000; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.textBox1.Location = new System.Drawing.Point(120, 142); + this.textBox1.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(215, 35); + this.textBox1.TabIndex = 3; + this.textBox1.Text = "65636"; + this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(353, 87); + this.button2.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(257, 90); + this.button2.TabIndex = 4; + this.button2.Text = "쓰기"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label3.Location = new System.Drawing.Point(12, 102); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(91, 30); + this.label3.TabIndex = 6; + this.label3.Text = "slave no"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label4.Location = new System.Drawing.Point(12, 147); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(62, 30); + this.label4.TabIndex = 7; + this.label4.Text = "value"; + // + // numericUpDown1 + // + this.numericUpDown1.Location = new System.Drawing.Point(120, 99); + this.numericUpDown1.Maximum = new decimal(new int[] { + 255, + 0, + 0, + 0}); + this.numericUpDown1.Name = "numericUpDown1"; + this.numericUpDown1.Size = new System.Drawing.Size(215, 35); + this.numericUpDown1.TabIndex = 8; + this.numericUpDown1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.numericUpDown1.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // button3 + // + this.button3.Location = new System.Drawing.Point(17, 199); + this.button3.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(593, 84); + this.button3.TabIndex = 9; + this.button3.Text = "샘플ë°ì´í„°ì“°ê¸°(40001=100 ~ 40020=0)"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 30F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1100, 558); + this.Controls.Add(this.button3); + this.Controls.Add(this.numericUpDown1); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.button2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.button1); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.tbbaud); + this.Controls.Add(this.tbport); + this.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 15.75F); + this.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5); + this.Name = "Form1"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Digital Indicator Test"; + this.Load += new System.EventHandler(this.Form1_Load); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox tbport; + private System.Windows.Forms.TextBox tbbaud; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.NumericUpDown numericUpDown1; + private System.Windows.Forms.Button button3; + } +} + diff --git a/TEST/DigitalIndicator/Form1.cs b/TEST/DigitalIndicator/Form1.cs new file mode 100644 index 0000000..89896a8 --- /dev/null +++ b/TEST/DigitalIndicator/Form1.cs @@ -0,0 +1,123 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using AR; +using Modbus; +using Modbus.Device; +namespace DigitalIndicator +{ + public partial class Form1 : Form + { + ModbusSerialMaster modbus; + System.IO.Ports.SerialPort dev; + public Form1() + { + InitializeComponent(); + dev = new System.IO.Ports.SerialPort(); + } + + private void Form1_Load(object sender, EventArgs e) + { + timer1.Start(); + } + + private void button1_Click(object sender, EventArgs e) + { + if (tbport.Text.isEmpty()) + { + UTIL.MsgE("í¬íŠ¸ë²ˆí˜¸ë¥¼ 입력하세요"); + return; + } + if (int.TryParse(tbbaud.Text, out int port) == false) + { + UTIL.MsgE("baud rate ê°’ì„ ìž…ë ¥í•˜ì„¸ìš”\n(기본:9600)"); + return; + } + + if (dev.IsOpen) + { + if (modbus != null) modbus.Dispose(); + dev.Close(); + UTIL.MsgI("ì—°ê²°ì´ ì¢…ë£Œë˜ì—ˆìŠµë‹ˆë‹¤"); + + } + else + { + dev.PortName = this.tbport.Text; + dev.DataBits = 8; // ë°ì´í„° 비트 + dev.Parity = System.IO.Ports.Parity.None; + dev.StopBits = System.IO.Ports.StopBits.One; + try + { + dev.Open(); + } + catch (Exception ex) + { + UTIL.MsgE(ex.Message); + return; + } + + // Modbus 마스터 ìƒì„± + modbus = ModbusSerialMaster.CreateRtu(dev); + } + + + + + } + + private void timer1_Tick(object sender, EventArgs e) + { + this.button1.Text = (this.dev?.IsOpen ?? false) ? "ì—°ê²°ëŠê¸°" : "ì—°ê²°"; + } + + private void button2_Click(object sender, EventArgs e) + { + if (Int32.TryParse(this.textBox1.Text, out int value) == false) + { + UTIL.MsgE("숫ìžë¡œ 입력하세요"); + return; + } + if (this.textBox1.TextLength > 5) + { + UTIL.MsgE("5ìžë¦¬ë¥¼ 초과할 수 없습니다"); + return; + } + + var valuebuffer = splitI32(value); + var slave = (byte)numericUpDown1.Value; + modbus.WriteMultipleRegisters(slave, 0, valuebuffer); //ADDRESS 0=40001 + + } + + + UInt16[] splitI32(Int32 value) + { + var hValue = (UInt16)(value >> 16); + var lValue = (UInt16)(value & 0xFFFF); + return new ushort[] { hValue, lValue }; + } + + private void button3_Click(object sender, EventArgs e) + { + if (Int32.TryParse(this.textBox1.Text, out int value) == false) + { + UTIL.MsgE("숫ìžë¡œ 입력하세요"); + return; + } + + + var valuebuffer = new ushort[20]; + valuebuffer[0] = 100; + for (int i = 1; i < valuebuffer.Length; i++) valuebuffer[i] = 0; + var slave = (byte)numericUpDown1.Value; + modbus.WriteMultipleRegisters(slave, 0, valuebuffer); //ADDRESS 0=40001 + } + } +} diff --git a/TEST/DigitalIndicator/Form1.resx b/TEST/DigitalIndicator/Form1.resx new file mode 100644 index 0000000..1f666f2 --- /dev/null +++ b/TEST/DigitalIndicator/Form1.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/TEST/DigitalIndicator/Program.cs b/TEST/DigitalIndicator/Program.cs new file mode 100644 index 0000000..d86cfa8 --- /dev/null +++ b/TEST/DigitalIndicator/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace DigitalIndicator +{ + internal static class Program + { + /// + /// 해당 애플리케ì´ì…˜ì˜ 주 ì§„ìž…ì ìž…니다. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/TEST/DigitalIndicator/Properties/AssemblyInfo.cs b/TEST/DigitalIndicator/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..784a13c --- /dev/null +++ b/TEST/DigitalIndicator/Properties/AssemblyInfo.cs @@ -0,0 +1,33 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// ì–´ì…ˆë¸”ë¦¬ì— ëŒ€í•œ ì¼ë°˜ 정보는 ë‹¤ìŒ íŠ¹ì„± ì§‘í•©ì„ í†µí•´ +// 제어ë©ë‹ˆë‹¤. 어셈블리와 ê´€ë ¨ëœ ì •ë³´ë¥¼ 수정하려면 +// ì´ëŸ¬í•œ 특성 ê°’ì„ ë³€ê²½í•˜ì„¸ìš”. +[assembly: AssemblyTitle("DigitalIndicator")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("DigitalIndicator")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisibleì„ false로 설정하면 ì´ ì–´ì…ˆë¸”ë¦¬ì˜ í˜•ì‹ì´ COM 구성 ìš”ì†Œì— +// 표시ë˜ì§€ 않습니다. COMì—서 ì´ ì–´ì…ˆë¸”ë¦¬ì˜ í˜•ì‹ì— 액세스하려면 +// 해당 형ì‹ì— 대해 ComVisible íŠ¹ì„±ì„ true로 설정하세요. +[assembly: ComVisible(false)] + +// ì´ í”„ë¡œì íŠ¸ê°€ COMì— ë…¸ì¶œë˜ëŠ” 경우 ë‹¤ìŒ GUID는 typelibì˜ ID를 나타냅니다. +[assembly: Guid("f69f811f-9b8c-4554-9624-2f8c2e1d9bfd")] + +// ì–´ì…ˆë¸”ë¦¬ì˜ ë²„ì „ 정보는 ë‹¤ìŒ ë„¤ 가지 값으로 구성ë©ë‹ˆë‹¤. +// +// 주 버전 +// ë¶€ 버전 +// 빌드 번호 +// 수정 버전 +// +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/TEST/DigitalIndicator/Properties/Resources.Designer.cs b/TEST/DigitalIndicator/Properties/Resources.Designer.cs new file mode 100644 index 0000000..c70d877 --- /dev/null +++ b/TEST/DigitalIndicator/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +// 런타임 버전:4.0.30319.42000 +// +// íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +// ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +// +//------------------------------------------------------------------------------ + +namespace DigitalIndicator.Properties +{ + + + /// + /// ì§€ì—­í™”ëœ ë¬¸ìžì—´ ë“±ì„ ì°¾ê¸° 위한 강력한 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. + /// + // ì´ í´ëž˜ìŠ¤ëŠ” ResGen ë˜ëŠ” Visual Studio와 ê°™ì€ ë„구를 통해 StronglyTypedResourceBuilder + // í´ëž˜ìФì—서 ìžë™ìœ¼ë¡œ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. + // 멤버를 추가하거나 제거하려면 .ResX 파ì¼ì„ 편집한 ë‹¤ìŒ /str ì˜µì…˜ì„ ì‚¬ìš©í•˜ì—¬ + // ResGenì„ ë‹¤ì‹œ 실행하거나 VS 프로ì íŠ¸ë¥¼ 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// ì´ í´ëž˜ìФì—서 사용하는 ìºì‹œëœ ResourceManager ì¸ìŠ¤í„´ìŠ¤ë¥¼ 반환합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DigitalIndicator.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// ì´ ê°•ë ¥í•œ 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ë¥¼ 사용하여 모든 리소스 ì¡°íšŒì— ëŒ€í•´ 현재 ìŠ¤ë ˆë“œì˜ CurrentUICulture ì†ì„±ì„ + /// 재정ì˜í•©ë‹ˆë‹¤. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/TEST/DigitalIndicator/Properties/Resources.resx b/TEST/DigitalIndicator/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/TEST/DigitalIndicator/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TEST/DigitalIndicator/Properties/Settings.Designer.cs b/TEST/DigitalIndicator/Properties/Settings.Designer.cs new file mode 100644 index 0000000..70c83fe --- /dev/null +++ b/TEST/DigitalIndicator/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace DigitalIndicator.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/TEST/DigitalIndicator/Properties/Settings.settings b/TEST/DigitalIndicator/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/TEST/DigitalIndicator/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/TEST/DigitalIndicator/packages.config b/TEST/DigitalIndicator/packages.config new file mode 100644 index 0000000..ffde460 --- /dev/null +++ b/TEST/DigitalIndicator/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/TEST/chart_new/App.config b/TEST/chart_new/App.config new file mode 100644 index 0000000..193aecc --- /dev/null +++ b/TEST/chart_new/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/TEST/chart_new/CustomChartControl.cs b/TEST/chart_new/CustomChartControl.cs new file mode 100644 index 0000000..2ff0f1d --- /dev/null +++ b/TEST/chart_new/CustomChartControl.cs @@ -0,0 +1,501 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Windows.Forms; + +namespace CustomChartControl +{ + public class TimeVoltageChart : Control + { + private List dataPoints; + private float zoomFactorX = 1.0f; // Xì¶• 줌 팩터 + private float zoomFactorY = 1.0f; // Yì¶• 줌 팩터 + private PointF panOffset = PointF.Empty; + private Point lastMousePosition; + private bool isDragging = false; + private DateTime[] _timeData; + private float[] _voltageData; + private bool _showDataPoints = false; + + // 기존 필드 추가 + private bool isSelecting = false; // ì˜ì—­ ì„ íƒ ì¤‘ 여부 + private Point selectionStart; // ì˜ì—­ ì„ íƒ ì‹œìž‘ì  + private Rectangle selectionRectangle; // ì„ íƒ ì˜ì—­ + + public TimeVoltageChart() + { + this.DoubleBuffered = true; + this.dataPoints = new List(); + this.MouseWheel += TimeVoltageChart_MouseWheel; + this.MouseDown += TimeVoltageChart_MouseDown; + this.MouseMove += TimeVoltageChart_MouseMove; + this.MouseUp += TimeVoltageChart_MouseUp; + } + + public DateTime[] TimeData + { + get => _timeData; + set + { + _timeData = value; + UpdateDataPoints(); + } + } + + public float[] VoltageData + { + get => _voltageData; + set + { + _voltageData = value; + UpdateDataPoints(); + } + } + + public bool ShowDataPoints + { + get => _showDataPoints; + set + { + _showDataPoints = value; + Invalidate(); // ì†ì„± 변경 시 차트 다시 그리기 + } + } + + public void AdjustScaleX() + { + if (_timeData != null && _timeData.Length > 0) + { + // Xì¶• ìžë™ 스케ì¼ë§ + float totalSeconds = (float)(_timeData[_timeData.Length - 1] - _timeData[0]).TotalSeconds; + zoomFactorX = Width / totalSeconds; + panOffset.X = 0; // 초기화 + Invalidate(); // 변경 후 다시 그리기 + } + } + + public void AdjustScaleY() + { + if (_voltageData != null && _voltageData.Length > 0) + { + // Yì¶• ìžë™ 스케ì¼ë§ + float minY = float.MaxValue; + float maxY = float.MinValue; + foreach (var voltage in _voltageData) + { + if (voltage < minY) minY = voltage; + if (voltage > maxY) maxY = voltage; + } + + float range = maxY - minY; + if (range == 0) range = 1; + + zoomFactorY = Height / range; + panOffset.Y = -minY * zoomFactorY; // 초기화 + Invalidate(); // 변경 후 다시 그리기 + } + } + + private void UpdateDataPoints() + { + dataPoints.Clear(); + if (_timeData != null && _voltageData != null && _timeData.Length == _voltageData.Length) + { + DateTime startTime = _timeData[0]; + for (int i = 0; i < _timeData.Length; i++) + { + float timeOffset = (float)(_timeData[i] - startTime).TotalSeconds; + dataPoints.Add(new PointF(timeOffset, _voltageData[i])); + } + Invalidate(); // í™”ë©´ì„ ê°±ì‹ í•˜ì—¬ 차트를 다시 그리ë„ë¡ í•¨ + } + } + + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + DrawGrid(e.Graphics); + DrawData(e.Graphics); + DrawBorder(e.Graphics); + DrawZoomLevel(e.Graphics); + + if (isSelecting && selectionRectangle.Width > 0 && selectionRectangle.Height > 0) + { + using (var selectionPen = new Pen(Color.Gray, 1)) + { + selectionPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; + e.Graphics.DrawRectangle(selectionPen, selectionRectangle); + } + } + } + + private void DrawZoomLevel(Graphics g) + { + string zoomLevelText = $"Zoom Level - X: {zoomFactorX:F2}, Y: {zoomFactorY:F2}"; + Font zoomLevelFont = new Font("Arial", 10, FontStyle.Bold); + Brush zoomLevelBrush = new SolidBrush(Color.Black); + SizeF textSize = g.MeasureString(zoomLevelText, zoomLevelFont); + + float x = Width - textSize.Width - 60; // 오른쪽 ì—¬ë°±ì„ ì¤„ì´ê¸° + float y = 10; // ìƒë‹¨ 여백 10 + + g.DrawString(zoomLevelText, zoomLevelFont, zoomLevelBrush, x, y); + } + + private void DrawBorder(Graphics g) + { + int leftMargin = 50; // 왼쪽 Yì¶• ë¼ë²¨ì„ 위한 공간 + int rightMargin = 50; // 오른쪽 여백 + int bottomMargin = 30; // Xì¶• ë¼ë²¨ì„ 위한 공간 + + Pen borderPen = new Pen(Color.Black, 1); // í…Œë‘리 ìƒ‰ìƒ ë° ë‘께 + Rectangle borderRect = new Rectangle(leftMargin, 0, Width - leftMargin - rightMargin, Height - bottomMargin - 1); // í…Œë‘리 ì˜ì—­ + g.DrawRectangle(borderPen, borderRect); + } + private void DrawGrid(Graphics g) + { + int gridSpacingX = 60; // Xì¶• 그리드 간격 + int gridSpacingY = 20; // Yì¶• 그리드 간격 + int leftMargin = 50; // 왼쪽 Yì¶• ë¼ë²¨ì„ 위한 공간 + int rightMargin = 50; // 오른쪽 여백 + int bottomMargin = 30; // Xì¶• ë¼ë²¨ì„ 위한 공간 + + Pen gridPen = new Pen(Color.LightGray); + Brush labelBrush = new SolidBrush(Color.Black); + Font labelFont = new Font("Arial", 8); + + if (_timeData != null && _timeData.Length > 0) + { + DateTime minTime = _timeData[0]; + DateTime maxTime = _timeData[_timeData.Length - 1]; // 마지막 요소 + + double totalSeconds = (maxTime - minTime).TotalSeconds; + + float visibleStartTime = (0 - panOffset.X) / zoomFactorX; + float visibleEndTime = (Width - leftMargin - rightMargin - panOffset.X) / zoomFactorX; + + for (int x = leftMargin; x < Width - rightMargin; x += gridSpacingX) + { + float timeOffset = (x - leftMargin - panOffset.X) / zoomFactorX; + if (timeOffset < visibleStartTime || timeOffset > visibleEndTime) + continue; + + DateTime time = minTime.AddSeconds(timeOffset); + g.DrawLine(gridPen, x, 0, x, Height - bottomMargin); // í…Œë‘리 ìœ„ì— ë§žì¶”ê¸° + + using (StringFormat sf = new StringFormat()) + { + sf.LineAlignment = StringAlignment.Near; + sf.Alignment = StringAlignment.Center; + g.DrawString(time.ToString("yy-MM-dd\nHH:mm:ss"), labelFont, labelBrush, new PointF(x, Height - bottomMargin), sf); + } + } + } + + if (_voltageData != null && _voltageData.Length > 0) + { + float minY = float.MaxValue; + float maxY = float.MinValue; + foreach (var voltage in _voltageData) + { + if (voltage < minY) minY = voltage; + if (voltage > maxY) maxY = voltage; + } + + float range = maxY - minY; + if (range == 0) range = 1; + + using (StringFormat sfY = new StringFormat()) + { + sfY.LineAlignment = StringAlignment.Center; + sfY.Alignment = StringAlignment.Far; // Yì¶• ë¼ë²¨ì„ 오른쪽 ì •ë ¬ + for (int y = 0; y < Height - bottomMargin; y += gridSpacingY) // í…Œë‘리 ìœ„ì— ë§žì¶”ê¸° + { + float voltageValue = minY + (Height - y - panOffset.Y) / zoomFactorY * range / (Height - bottomMargin); + + // 모든 Yì¶• 눈금 ë¼ë²¨ì„ 표시 + g.DrawLine(gridPen, leftMargin, y, Width - rightMargin, y); // 패딩 추가 + g.DrawString(voltageValue.ToString("F2"), labelFont, labelBrush, new PointF(leftMargin - 10, y), sfY); + } + } + } + } + + private void DrawData(Graphics g) + { + if (dataPoints.Count < 2) return; + + int leftMargin = 50; + int rightMargin = 50; + int bottomMargin = 30; + int minPixelDistance = 3; // 최소 픽셀 거리 설정 + + Pen dataPen = new Pen(Color.Blue); + Brush pointBrush = new SolidBrush(Color.Red); // ë°ì´í„° í¬ì¸íŠ¸ì˜ ì› ìƒ‰ìƒ + + float visibleStartTime = (0 - panOffset.X) / zoomFactorX; + float visibleEndTime = (Width - leftMargin - rightMargin - panOffset.X) / zoomFactorX; + + PointF prevPoint = TransformPoint(dataPoints[0]); + PointF lastDrawnPoint = prevPoint; + bool skipNextPoint = false; + + // í¬ì¸íЏ ê°„ í‰ê·  간격 계산 + float totalWidth = Width - leftMargin - rightMargin; + float avgPixelDistance = totalWidth / dataPoints.Count; + int pointRadius = Math.Max(1, (int)(avgPixelDistance / 4)); // 밀집ë„ì— ë”°ë¥¸ í¬ì¸íЏ 반지름 ì¡°ì • + + for (int i = 1; i < dataPoints.Count; i++) + { + float timeOffset = dataPoints[i].X; + if (timeOffset < visibleStartTime || timeOffset > visibleEndTime) + { + prevPoint = TransformPoint(dataPoints[i]); + continue; + } + + PointF currPoint = TransformPoint(dataPoints[i]); + if (currPoint.X >= leftMargin && currPoint.X <= Width - rightMargin) + { + PointF clippedPrev = ClipToChartArea(prevPoint, leftMargin, Width - rightMargin, bottomMargin, Height); + PointF clippedCurr = ClipToChartArea(currPoint, leftMargin, Width - rightMargin, bottomMargin, Height); + + // ì„  ì—°ê²°ì„ ìœ ì§€í•˜ë˜, í¬ì¸íŠ¸ë¥¼ 그리지 ì•Šì„ ë•Œë§Œ 스킵 + if (skipNextPoint || Math.Abs(clippedCurr.X - lastDrawnPoint.X) >= minPixelDistance) + { + g.DrawLine(dataPen, clippedPrev, clippedCurr); + lastDrawnPoint = clippedCurr; + skipNextPoint = false; + + if (clippedCurr.X > leftMargin && clippedCurr.X < Width - rightMargin && clippedCurr.Y > 0 && clippedCurr.Y < Height - bottomMargin) + { + g.FillEllipse(pointBrush, clippedCurr.X - pointRadius, clippedCurr.Y - pointRadius, pointRadius * 2, pointRadius * 2); + } + } + else + { + skipNextPoint = true; + } + } + prevPoint = currPoint; + } + } + + private PointF ClipToChartArea(PointF point, int leftMargin, int rightLimit, int bottomMargin, int topLimit) + { + // Xì¶• í´ë¦¬í•‘ + if (point.X < leftMargin) point.X = leftMargin; + if (point.X > rightLimit) point.X = rightLimit; + + // Yì¶• í´ë¦¬í•‘ + if (point.Y < 0) point.Y = 0; + if (point.Y > topLimit - bottomMargin) point.Y = topLimit - bottomMargin; + + return point; + } + private PointF TransformPoint(PointF point) + { + int leftMargin = 50; + int bottomMargin = 30; + return new PointF( + (point.X * zoomFactorX + panOffset.X) + leftMargin, + Height - ((point.Y * zoomFactorY - panOffset.Y) + bottomMargin)); + } + + + + private void TimeVoltageChart_MouseWheel(object sender, MouseEventArgs e) + { + float zoomChange; + + if (ModifierKeys.HasFlag(Keys.Control)) + { + // Yì¶• 줌 레벨 ì¡°ì • + zoomChange = e.Delta > 0 ? 1.1f : 0.9f; + float newZoomFactorY = zoomFactorY * zoomChange; + if (CanZoomY(newZoomFactorY)) + { + AdjustPanOffsetY(newZoomFactorY, e.Delta > 0); + zoomFactorY = newZoomFactorY; + } + } + else + { + // Xì¶• 줌 레벨 ì¡°ì • + zoomChange = e.Delta > 0 ? 1.1f : 0.9f; + float newZoomFactorX = zoomFactorX * zoomChange; + if (CanZoomX(newZoomFactorX)) + { + AdjustPanOffsetX(newZoomFactorX, e.Delta > 0); + zoomFactorX = newZoomFactorX; + } + } + + Invalidate(); + } + + private void AdjustPanOffsetX(float newZoomFactorX, bool zoomingIn) + { + float totalDataTime = (float)(_timeData[_timeData.Length - 1] - _timeData[0]).TotalSeconds; + float currentVisibleStart = -panOffset.X / zoomFactorX; + float currentVisibleEnd = (Width - panOffset.X) / zoomFactorX; + float newVisibleStart, newVisibleEnd; + + if (zoomingIn) + { + newVisibleStart = currentVisibleStart + (currentVisibleEnd - currentVisibleStart) * 0.1f; + newVisibleEnd = currentVisibleEnd - (currentVisibleEnd - currentVisibleStart) * 0.1f; + } + else + { + newVisibleStart = currentVisibleStart - (currentVisibleEnd - currentVisibleStart) * 0.1f; + newVisibleEnd = currentVisibleEnd + (currentVisibleEnd - currentVisibleStart) * 0.1f; + } + + if (newVisibleStart < 0) + { + panOffset.X = 0; + } + else if (newVisibleEnd > totalDataTime) + { + panOffset.X = -(totalDataTime * newZoomFactorX - Width); + } + else + { + panOffset.X = -newVisibleStart * newZoomFactorX; + } + } + + private void AdjustPanOffsetY(float newZoomFactorY, bool zoomingIn) + { + float minY = float.MaxValue; + float maxY = float.MinValue; + foreach (var voltage in _voltageData) + { + if (voltage < minY) minY = voltage; + if (voltage > maxY) maxY = voltage; + } + + float dataRange = maxY - minY; + float visibleRange = (Height - 70) / newZoomFactorY; // ìƒí•˜ 여백 ê³ ë ¤ + float visibleStartY = -panOffset.Y / zoomFactorY; + float visibleEndY = visibleStartY + visibleRange; + + // Ensure the visible range is within the data range + if (visibleStartY < minY) + { + visibleStartY = minY; + visibleEndY = visibleStartY + visibleRange; + } + if (visibleEndY > maxY) + { + visibleEndY = maxY; + visibleStartY = visibleEndY - visibleRange; + } + + // Adjust panOffset.Y to ensure the data is visible within the screen bounds + panOffset.Y = -visibleStartY * newZoomFactorY; + } + + + private bool CanZoomX(float newZoomFactorX) + { + float totalDataTime = (float)(_timeData[_timeData.Length - 1] - _timeData[0]).TotalSeconds; + float visibleTime = (Width - 100) / newZoomFactorX; // 좌우 여백 ê³ ë ¤ + + float marginFactor = 0.05f; // 5% 여백 + float minVisibleTime = 1.0f; // 최소 가시 시간 + + return visibleTime < totalDataTime * (1 + marginFactor) && visibleTime > minVisibleTime; + } + + private bool CanZoomY(float newZoomFactorY) + { + float minY = float.MaxValue; + float maxY = float.MinValue; + foreach (var voltage in _voltageData) + { + if (voltage < minY) minY = voltage; + if (voltage > maxY) maxY = voltage; + } + + float dataRange = maxY - minY; + float visibleRange = (Height - 70) / newZoomFactorY; // ìƒí•˜ 여백 ê³ ë ¤ + + float marginFactor = 0.05f; // 5% 여백 + float minVisibleRange = 0.1f; // 최소 가시 범위 + + return visibleRange < dataRange * (1 + marginFactor) && visibleRange > minVisibleRange; + } + + private void TimeVoltageChart_MouseDown(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + isDragging = true; + lastMousePosition = e.Location; + } + else if (e.Button == MouseButtons.Right) + { + isSelecting = true; + selectionStart = e.Location; + selectionRectangle = new Rectangle(e.Location, Size.Empty); + } + } + + private void TimeVoltageChart_MouseMove(object sender, MouseEventArgs e) + { + if (isDragging) + { + panOffset.X += e.X - lastMousePosition.X; + panOffset.Y += e.Y - lastMousePosition.Y; // Yì¶• ì´ë™ ë°©í–¥ 수정 + lastMousePosition = e.Location; + Invalidate(); + } + else if (isSelecting) + { + var endPoint = e.Location; + selectionRectangle = new Rectangle( + Math.Min(selectionStart.X, endPoint.X), + Math.Min(selectionStart.Y, endPoint.Y), + Math.Abs(selectionStart.X - endPoint.X), + Math.Abs(selectionStart.Y - endPoint.Y)); + Invalidate(); + } + } + + private void TimeVoltageChart_MouseUp(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + isDragging = false; + } + else if (e.Button == MouseButtons.Right) + { + isSelecting = false; + + // ì„ íƒí•œ ì˜ì—­ë§Œí¼ 확대 + if (selectionRectangle.Width > 0 && selectionRectangle.Height > 0) + { + float newZoomFactorX = (Width - 100) / (float)selectionRectangle.Width; // ì—¬ë°±ì„ ê³ ë ¤í•œ 줌 + float newZoomFactorY = (Height - 30) / (float)selectionRectangle.Height; // ì—¬ë°±ì„ ê³ ë ¤í•œ 줌 + + // 확대할 ì˜ì—­ì˜ 좌표를 차트 좌표로 변환 + float selectedMinX = (selectionRectangle.Left - 50 - panOffset.X) / zoomFactorX; + float selectedMaxX = (selectionRectangle.Right - 50 - panOffset.X) / zoomFactorX; + float selectedMinY = (Height - selectionRectangle.Bottom - panOffset.Y) / zoomFactorY; + float selectedMaxY = (Height - selectionRectangle.Top - panOffset.Y) / zoomFactorY; + + zoomFactorX = newZoomFactorX; + zoomFactorY = newZoomFactorY; + + panOffset.X = -selectedMinX * zoomFactorX + 50; + panOffset.Y = -selectedMinY * zoomFactorY; + + Invalidate(); + } + } + } + } +} diff --git a/TEST/chart_new/Form1.Designer.cs b/TEST/chart_new/Form1.Designer.cs new file mode 100644 index 0000000..919e0f4 --- /dev/null +++ b/TEST/chart_new/Form1.Designer.cs @@ -0,0 +1,74 @@ +namespace chart_new +{ + partial class Form1 + { + /// + /// 필수 ë””ìžì´ë„ˆ 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 ì¤‘ì¸ ëª¨ë“  리소스를 정리합니다. + /// + /// 관리ë˜ëŠ” 리소스를 삭제해야 하면 trueì´ê³ , 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form ë””ìžì´ë„ˆì—서 ìƒì„±í•œ 코드 + + /// + /// ë””ìžì´ë„ˆ ì§€ì›ì— 필요한 메서드입니다. + /// ì´ ë©”ì„œë“œì˜ ë‚´ìš©ì„ ì½”ë“œ 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.chart = new CustomChartControl.TimeVoltageChart(); + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // timeVoltageChart1 + // + this.chart.Location = new System.Drawing.Point(76, 36); + this.chart.Name = "timeVoltageChart1"; + this.chart.Size = new System.Drawing.Size(631, 353); + this.chart.TabIndex = 0; + this.chart.Text = "timeVoltageChart1"; + this.chart.TimeData = null; + this.chart.VoltageData = null; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(67, 416); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(163, 40); + this.button1.TabIndex = 1; + this.button1.Text = "button1"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 498); + this.Controls.Add(this.button1); + this.Controls.Add(this.chart); + this.Name = "Form1"; + this.Text = "Form1"; + this.ResumeLayout(false); + + } + + #endregion + + private CustomChartControl.TimeVoltageChart chart; + private System.Windows.Forms.Button button1; + } +} + diff --git a/TEST/chart_new/Form1.cs b/TEST/chart_new/Form1.cs new file mode 100644 index 0000000..269aa32 --- /dev/null +++ b/TEST/chart_new/Form1.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace chart_new +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + + private void button1_Click(object sender, EventArgs e) + { + LoadTestData(); + chart.AdjustScaleX(); + chart.AdjustScaleY(); + this.chart.Refresh(); + } + + private void LoadTestData() + { + int dataCount = 100000; + DateTime[] timeData = new DateTime[dataCount]; + float[] voltageData = new float[dataCount]; + + DateTime startTime = DateTime.Now; + Random random = new Random(); + + for (int i = 0; i < dataCount; i++) + { + timeData[i] = startTime.AddSeconds(i+i*2); // 1ì´ˆ 간격으로 시간 ë°ì´í„° ìƒì„± + //if(i > 500) + //voltageData[i] = (float)(random.NextDouble() * 100); // 0부터 10 사ì´ì˜ ìž„ì˜ ì „ì•• ë°ì´í„° ìƒì„± + //else + voltageData[i] = (float)(random.NextDouble() * 10); // 0부터 10 사ì´ì˜ ìž„ì˜ ì „ì•• ë°ì´í„° ìƒì„± + } + + chart.TimeData = timeData; + chart.VoltageData = voltageData; + + } + } +} diff --git a/TEST/chart_new/Form1.resx b/TEST/chart_new/Form1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/TEST/chart_new/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TEST/chart_new/Program.cs b/TEST/chart_new/Program.cs new file mode 100644 index 0000000..4fad33c --- /dev/null +++ b/TEST/chart_new/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace chart_new +{ + internal static class Program + { + /// + /// 해당 애플리케ì´ì…˜ì˜ 주 ì§„ìž…ì ìž…니다. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/TEST/chart_new/Properties/AssemblyInfo.cs b/TEST/chart_new/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1d333c2 --- /dev/null +++ b/TEST/chart_new/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// ì–´ì…ˆë¸”ë¦¬ì— ëŒ€í•œ ì¼ë°˜ 정보는 ë‹¤ìŒ íŠ¹ì„± ì§‘í•©ì„ í†µí•´ +// 제어ë©ë‹ˆë‹¤. 어셈블리와 ê´€ë ¨ëœ ì •ë³´ë¥¼ 수정하려면 +// ì´ëŸ¬í•œ 특성 ê°’ì„ ë³€ê²½í•˜ì„¸ìš”. +[assembly: AssemblyTitle("chart_new")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("UserWork")] +[assembly: AssemblyProduct("chart_new")] +[assembly: AssemblyCopyright("Copyright © UserWork 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisibleì„ false로 설정하면 ì´ ì–´ì…ˆë¸”ë¦¬ì˜ í˜•ì‹ì´ COM 구성 ìš”ì†Œì— +// 표시ë˜ì§€ 않습니다. COMì—서 ì´ ì–´ì…ˆë¸”ë¦¬ì˜ í˜•ì‹ì— 액세스하려면 +// 해당 형ì‹ì— 대해 ComVisible íŠ¹ì„±ì„ true로 설정하세요. +[assembly: ComVisible(false)] + +// ì´ í”„ë¡œì íŠ¸ê°€ COMì— ë…¸ì¶œë˜ëŠ” 경우 ë‹¤ìŒ GUID는 typelibì˜ ID를 나타냅니다. +[assembly: Guid("5e7b97bf-d740-4997-bd6f-02a84b2d566f")] + +// ì–´ì…ˆë¸”ë¦¬ì˜ ë²„ì „ 정보는 ë‹¤ìŒ ë„¤ 가지 값으로 구성ë©ë‹ˆë‹¤. +// +// 주 버전 +// ë¶€ 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 ê°’ì„ ì§€ì •í•˜ê±°ë‚˜ 아래와 ê°™ì´ '*'를 사용하여 빌드 번호 ë° ìˆ˜ì • 번호를 +// 기본값으로 í•  수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/TEST/chart_new/Properties/Resources.Designer.cs b/TEST/chart_new/Properties/Resources.Designer.cs new file mode 100644 index 0000000..cbfcb83 --- /dev/null +++ b/TEST/chart_new/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +// 런타임 버전:4.0.30319.42000 +// +// íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +// ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +// +//------------------------------------------------------------------------------ + +namespace chart_new.Properties +{ + + + /// + /// ì§€ì—­í™”ëœ ë¬¸ìžì—´ ë“±ì„ ì°¾ê¸° 위한 강력한 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. + /// + // ì´ í´ëž˜ìŠ¤ëŠ” ResGen ë˜ëŠ” Visual Studio와 ê°™ì€ ë„구를 통해 StronglyTypedResourceBuilder + // í´ëž˜ìФì—서 ìžë™ìœ¼ë¡œ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. + // 멤버를 추가하거나 제거하려면 .ResX 파ì¼ì„ 편집한 ë‹¤ìŒ /str ì˜µì…˜ì„ ì‚¬ìš©í•˜ì—¬ + // ResGenì„ ë‹¤ì‹œ 실행하거나 VS 프로ì íŠ¸ë¥¼ 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// ì´ í´ëž˜ìФì—서 사용하는 ìºì‹œëœ ResourceManager ì¸ìŠ¤í„´ìŠ¤ë¥¼ 반환합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("chart_new.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// ì´ ê°•ë ¥í•œ 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ë¥¼ 사용하여 모든 리소스 ì¡°íšŒì— ëŒ€í•´ 현재 ìŠ¤ë ˆë“œì˜ CurrentUICulture ì†ì„±ì„ + /// 재정ì˜í•©ë‹ˆë‹¤. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/TEST/chart_new/Properties/Resources.resx b/TEST/chart_new/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/TEST/chart_new/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TEST/chart_new/Properties/Settings.Designer.cs b/TEST/chart_new/Properties/Settings.Designer.cs new file mode 100644 index 0000000..2ff8489 --- /dev/null +++ b/TEST/chart_new/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace chart_new.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/TEST/chart_new/Properties/Settings.settings b/TEST/chart_new/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/TEST/chart_new/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/TEST/chart_new/chart_new.csproj b/TEST/chart_new/chart_new.csproj new file mode 100644 index 0000000..d2b2977 --- /dev/null +++ b/TEST/chart_new/chart_new.csproj @@ -0,0 +1,86 @@ + + + + + Debug + AnyCPU + {5E7B97BF-D740-4997-BD6F-02A84B2D566F} + WinExe + chart_new + chart_new + v4.8 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + Component + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/TEST/chart_scottplot/App.config b/TEST/chart_scottplot/App.config new file mode 100644 index 0000000..bea55bd --- /dev/null +++ b/TEST/chart_scottplot/App.config @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TEST/chart_scottplot/Form1.Designer.cs b/TEST/chart_scottplot/Form1.Designer.cs new file mode 100644 index 0000000..930693d --- /dev/null +++ b/TEST/chart_scottplot/Form1.Designer.cs @@ -0,0 +1,86 @@ +namespace chart_scottplot +{ + partial class Form1 + { + /// + /// 필수 ë””ìžì´ë„ˆ 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 ì¤‘ì¸ ëª¨ë“  리소스를 정리합니다. + /// + /// 관리ë˜ëŠ” 리소스를 삭제해야 하면 trueì´ê³ , 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form ë””ìžì´ë„ˆì—서 ìƒì„±í•œ 코드 + + /// + /// ë””ìžì´ë„ˆ ì§€ì›ì— 필요한 메서드입니다. + /// ì´ ë©”ì„œë“œì˜ ë‚´ìš©ì„ ì½”ë“œ 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Location = new System.Drawing.Point(59, 54); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1101, 439); + this.panel1.TabIndex = 0; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(83, 528); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(346, 73); + this.button1.TabIndex = 1; + this.button1.Text = "button1"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button2 + // + this.button2.Location = new System.Drawing.Point(435, 528); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(346, 73); + this.button2.TabIndex = 2; + this.button2.Text = "button2"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 18F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1286, 646); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.panel1); + this.Name = "Form1"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Form1"; + this.Load += new System.EventHandler(this.Form1_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + } +} + diff --git a/TEST/chart_scottplot/Form1.cs b/TEST/chart_scottplot/Form1.cs new file mode 100644 index 0000000..d0537f4 --- /dev/null +++ b/TEST/chart_scottplot/Form1.cs @@ -0,0 +1,267 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ScottPlot; +using ScottPlot.Plottables; +using ScottPlot.TickGenerators; +using ScottPlot.WinForms; + +namespace chart_scottplot +{ + public partial class Form1 : Form + { // Create an instance of a FormsPlot like this + readonly FormsPlot formsPlot1; + public Form1() + { + InitializeComponent(); + + // Add the FormsPlot to the panel + formsPlot1 = new FormsPlot() { Dock = DockStyle.Fill }; + panel1.Controls.Add(formsPlot1); + + + } + + ScottPlot.Plottables.Crosshair CrossHair; + + private DateTime[] xs,xs2; + private double[] ys,ys2; + private int pointCount; + + private void Form1_Load(object sender, EventArgs e) + { + // 초기 ë°ì´í„° ìƒì„± + pointCount = 51; + xs = new DateTime[pointCount]; + ys = new double[pointCount]; + + xs2 = new DateTime[pointCount]; + ys2 = new double[pointCount]; + + DateTime startTime = DateTime.Now; + for (int i = 0; i < pointCount; i++) + { + xs[i] = startTime.AddSeconds(i); + ys[i] = Math.Sin(i * 0.1); + + xs2[i] = startTime.AddSeconds(i); + ys2[i] = Math.Sin(i * 0.1)+0.1; + } + + // 초기 ë°ì´í„° 플로팅 + var sig3 = formsPlot1.Plot.Add.Scatter(xs, ys); + // formsPlot1.Plot.Axes.DateTimeTicksBottom(); + + var sig4 = formsPlot1.Plot.Add.Scatter(xs2, ys2); + formsPlot1.Plot.Axes.DateTimeTicksBottom(); + + //var sig1 = formsPlot1.Plot.Add.Signal(Generate.Sin(51)); + //sig1.LegendText = "Sin"; + + //var sig2 = formsPlot1.Plot.Add.Signal(Generate.Cos(51)); + //sig2.LegendText = "Sin"; + + + //myScatter.Color = Colors.Green.WithOpacity(.2); + //myScatter.LineWidth = 5; + //myScatter.MarkerSize = 15; + //formsPlot1.Plot.Axes.SetLimits(-100, 150, -5, 5); //limit 설정 + formsPlot1.Plot.Axes.AutoScale(); //auto limit , fit data + + formsPlot1.Plot.XLabel("TIME"); + formsPlot1.Plot.YLabel("VOLTAGE"); + //formsPlot1.Plot.Title("V"); + var anno = formsPlot1.Plot.Add.Annotation("This is an Annotation"); + anno.LabelFontSize = 32; + anno.LabelFontName = Fonts.Serif; + anno.LabelBackgroundColor = Colors.RebeccaPurple.WithAlpha(.3); + anno.LabelFontColor = Colors.RebeccaPurple; + anno.LabelBorderColor = Colors.Green; + anno.LabelBorderWidth = 3; + anno.LabelShadowColor = Colors.Transparent; + anno.OffsetY = 40; + anno.OffsetX = 20; + + + CrossHair = formsPlot1.Plot.Add.Crosshair(0, 0); + CrossHair.TextColor = Colors.White; + CrossHair.TextBackgroundColor = CrossHair.HorizontalLine.Color; + + + //커서기능용 íŠ¹ì •ìœ„ì¹˜ì— ì„¸ë¡œì„ ì„ í‘œì‹œ + var axLine1 = formsPlot1.Plot.Add.VerticalLine(startTime.AddSeconds(pointCount / 2).ToOADate()); + axLine1.Text = "Cursor 1"; + axLine1.LabelAlignment = Alignment.UpperRight; + axLine1.IsDraggable = true; + + var axLine2 = formsPlot1.Plot.Add.VerticalLine(startTime.AddSeconds(pointCount / 3).ToOADate()); + axLine2.Text = "Cursor 2"; + axLine2.LabelAlignment = Alignment.UpperRight; + axLine2.IsDraggable = true; + + var hs = formsPlot1.Plot.Add.HorizontalSpan(startTime.AddSeconds(pointCount / 4).ToOADate(), startTime.AddSeconds(pointCount / 3).ToOADate()); + hs.LegendText = "Hello"; + hs.LineStyle.Width = 2; + hs.LineStyle.Color = Colors.Magenta; + hs.LineStyle.Pattern = LinePattern.Dashed; + hs.FillStyle.Color = Colors.Magenta.WithAlpha(.2); + + formsPlot1.Plot.Add.Callout("Hello", + textLocation: new Coordinates(xs[5].ToOADate(), 0.3), + tipLocation: new Coordinates(xs[6].ToOADate(), 1.2)); + + + //double[] values = { 100, 80}; + //formsPlot1.Plot.Add.RadialGaugePlot(values); + + + // add logic into the RenderStarting event to customize tick labels + formsPlot1.Plot.RenderManager.RenderStarting += (s1, e1) => + { + Tick[] ticks = formsPlot1.Plot.Axes.Bottom.TickGenerator.Ticks; + for (int i = 0; i < ticks.Length; i++) + { + DateTime dt = DateTime.FromOADate(ticks[i].Position); + string label = $"{dt:HH}:{dt:mm}:{dt:ss}"; + ticks[i] = new Tick(ticks[i].Position, label); + } + }; + + + + + // some items must be styled directly + //formsPlot1.Plot.Grid.MajorLineColor = Color.FromHex("#0e3d54"); + //formsPlot1.Plot.FigureBackground.Color = Color.FromHex("#07263b"); + //formsPlot1.Plot.DataBackground.Color = Color.FromHex("#0b3049"); + + + + // create a custom formatter to return a string with + // date only when zoomed out and time only when zoomed in + + // apply our custom tick formatter + + + + + + // the Style object contains helper methods to style many items at once + formsPlot1.Plot.Axes.Color(Color.FromHex("#a0acb5")); + + formsPlot1.MouseDown += FormsPlot1_MouseDown; + formsPlot1.MouseUp += FormsPlot1_MouseUp; + formsPlot1.MouseMove += FormsPlot1_MouseMove; + + + formsPlot1.Refresh(); + } + + private void FormsPlot1_MouseDown(object sender, MouseEventArgs e) + { + var lineUnderMouse = GetLineUnderMouse(e.X, e.Y); + if (lineUnderMouse != null) + { + PlottableBeingDragged = lineUnderMouse; + formsPlot1.Interaction.Disable(); // disable panning while dragging + } + } + + private void FormsPlot1_MouseUp(object sender, MouseEventArgs e) + { + PlottableBeingDragged = null; + formsPlot1.Interaction.Enable(); // enable panning again + formsPlot1.Refresh(); + } + AxisLine PlottableBeingDragged = null; + private void FormsPlot1_MouseMove(object sender, MouseEventArgs e) + { + + //update cross line + Pixel mousePixel = new Pixel(e.X, e.Y); + Coordinates mouseCoordinates = formsPlot1.Plot.GetCoordinates(mousePixel); + this.Text = $"X={mouseCoordinates.X:N3}, Y={mouseCoordinates.Y:N3}"; + CrossHair.Position = mouseCoordinates; + CrossHair.VerticalLine.Text = $"{mouseCoordinates.X:N3}"; + CrossHair.HorizontalLine.Text = $"{mouseCoordinates.Y:N3}"; + formsPlot1.Refresh(); + + + + // this rectangle is the area around the mouse in coordinate units + CoordinateRect rect = formsPlot1.Plot.GetCoordinateRect(e.X, e.Y, radius: 10); + + if (PlottableBeingDragged is null) + { + // set cursor based on what's beneath the plottable + var lineUnderMouse = GetLineUnderMouse(e.X, e.Y); + if (lineUnderMouse is null) Cursor = Cursors.Default; + else if (lineUnderMouse.IsDraggable && lineUnderMouse is VerticalLine) Cursor = Cursors.SizeWE; + else if (lineUnderMouse.IsDraggable && lineUnderMouse is HorizontalLine) Cursor = Cursors.SizeNS; + } + else + { + // update the position of the plottable being dragged + if (PlottableBeingDragged is HorizontalLine hl) + { + hl.Y = rect.VerticalCenter; + hl.Text = $"{hl.Y:0.00}"; + } + else if (PlottableBeingDragged is VerticalLine vl) + { + vl.X = rect.HorizontalCenter; + vl.Text = $"{vl.X:0.00}"; + } + formsPlot1.Refresh(); + } + } + private AxisLine GetLineUnderMouse(float x, float y) + { + CoordinateRect rect = formsPlot1.Plot.GetCoordinateRect(x, y, radius: 10); + + foreach (AxisLine axLine in formsPlot1.Plot.GetPlottables().Reverse()) + { + if (axLine.IsUnderMouse(rect)) + return axLine; + } + + return null; + } + private void button1_Click(object sender, EventArgs e) + { + + + } + + private void button2_Click(object sender, EventArgs e) + { + AddDataPoint(); + } + + public void AddDataPoint() + { + // 새로운 ë°ì´í„° 추가 + pointCount += 1; + Array.Resize(ref xs, pointCount); + Array.Resize(ref ys, pointCount); + xs[pointCount - 1] = xs[pointCount - 2].AddSeconds(1); + ys[pointCount - 1] = Math.Sin(pointCount * 0.1); + + // ë°ì´í„° ì—…ë°ì´íЏ + formsPlot1.Plot.Clear(); + formsPlot1.Plot.Add.Scatter(xs, ys); + + // Yì¶• ìžë™ ìŠ¤ì¼€ì¼ ì¡°ì • + //FormsPlot1.Plot.Axes.AutoScaleY(); + formsPlot1.Plot.Axes.AutoScale(); + + // 플롯 갱신 + formsPlot1.Refresh(); + } + } +} diff --git a/TEST/chart_scottplot/Form1.resx b/TEST/chart_scottplot/Form1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/TEST/chart_scottplot/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TEST/chart_scottplot/OpenTK.dll.config b/TEST/chart_scottplot/OpenTK.dll.config new file mode 100644 index 0000000..7098d39 --- /dev/null +++ b/TEST/chart_scottplot/OpenTK.dll.config @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TEST/chart_scottplot/Program.cs b/TEST/chart_scottplot/Program.cs new file mode 100644 index 0000000..fd1c132 --- /dev/null +++ b/TEST/chart_scottplot/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace chart_scottplot +{ + internal static class Program + { + /// + /// 해당 애플리케ì´ì…˜ì˜ 주 ì§„ìž…ì ìž…니다. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/TEST/chart_scottplot/Properties/AssemblyInfo.cs b/TEST/chart_scottplot/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6e4efa2 --- /dev/null +++ b/TEST/chart_scottplot/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// ì–´ì…ˆë¸”ë¦¬ì— ëŒ€í•œ ì¼ë°˜ 정보는 ë‹¤ìŒ íŠ¹ì„± ì§‘í•©ì„ í†µí•´ +// 제어ë©ë‹ˆë‹¤. 어셈블리와 ê´€ë ¨ëœ ì •ë³´ë¥¼ 수정하려면 +// ì´ëŸ¬í•œ 특성 ê°’ì„ ë³€ê²½í•˜ì„¸ìš”. +[assembly: AssemblyTitle("chart_scottplot")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("chart_scottplot")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisibleì„ false로 설정하면 ì´ ì–´ì…ˆë¸”ë¦¬ì˜ í˜•ì‹ì´ COM 구성 ìš”ì†Œì— +// 표시ë˜ì§€ 않습니다. COMì—서 ì´ ì–´ì…ˆë¸”ë¦¬ì˜ í˜•ì‹ì— 액세스하려면 +// 해당 형ì‹ì— 대해 ComVisible íŠ¹ì„±ì„ true로 설정하세요. +[assembly: ComVisible(false)] + +// ì´ í”„ë¡œì íŠ¸ê°€ COMì— ë…¸ì¶œë˜ëŠ” 경우 ë‹¤ìŒ GUID는 typelibì˜ ID를 나타냅니다. +[assembly: Guid("6ee5c99d-f0d9-4c7f-94d4-ffb52fdea3cb")] + +// ì–´ì…ˆë¸”ë¦¬ì˜ ë²„ì „ 정보는 ë‹¤ìŒ ë„¤ 가지 값으로 구성ë©ë‹ˆë‹¤. +// +// 주 버전 +// ë¶€ 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 ê°’ì„ ì§€ì •í•˜ê±°ë‚˜ 아래와 ê°™ì´ '*'를 사용하여 빌드 번호 ë° ìˆ˜ì • 번호를 +// 기본값으로 í•  수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/TEST/chart_scottplot/Properties/Resources.Designer.cs b/TEST/chart_scottplot/Properties/Resources.Designer.cs new file mode 100644 index 0000000..3d3d2ba --- /dev/null +++ b/TEST/chart_scottplot/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +// 런타임 버전:4.0.30319.42000 +// +// íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +// ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +// +//------------------------------------------------------------------------------ + +namespace chart_scottplot.Properties +{ + + + /// + /// ì§€ì—­í™”ëœ ë¬¸ìžì—´ ë“±ì„ ì°¾ê¸° 위한 강력한 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. + /// + // ì´ í´ëž˜ìŠ¤ëŠ” ResGen ë˜ëŠ” Visual Studio와 ê°™ì€ ë„구를 통해 StronglyTypedResourceBuilder + // í´ëž˜ìФì—서 ìžë™ìœ¼ë¡œ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. + // 멤버를 추가하거나 제거하려면 .ResX 파ì¼ì„ 편집한 ë‹¤ìŒ /str ì˜µì…˜ì„ ì‚¬ìš©í•˜ì—¬ + // ResGenì„ ë‹¤ì‹œ 실행하거나 VS 프로ì íŠ¸ë¥¼ 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// ì´ í´ëž˜ìФì—서 사용하는 ìºì‹œëœ ResourceManager ì¸ìŠ¤í„´ìŠ¤ë¥¼ 반환합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("chart_scottplot.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// ì´ ê°•ë ¥í•œ 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ë¥¼ 사용하여 모든 리소스 ì¡°íšŒì— ëŒ€í•´ 현재 ìŠ¤ë ˆë“œì˜ CurrentUICulture ì†ì„±ì„ + /// 재정ì˜í•©ë‹ˆë‹¤. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/TEST/chart_scottplot/Properties/Resources.resx b/TEST/chart_scottplot/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/TEST/chart_scottplot/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TEST/chart_scottplot/Properties/Settings.Designer.cs b/TEST/chart_scottplot/Properties/Settings.Designer.cs new file mode 100644 index 0000000..f37468a --- /dev/null +++ b/TEST/chart_scottplot/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace chart_scottplot.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/TEST/chart_scottplot/Properties/Settings.settings b/TEST/chart_scottplot/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/TEST/chart_scottplot/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/TEST/chart_scottplot/chart_scottplot.csproj b/TEST/chart_scottplot/chart_scottplot.csproj new file mode 100644 index 0000000..f1aebcb --- /dev/null +++ b/TEST/chart_scottplot/chart_scottplot.csproj @@ -0,0 +1,138 @@ + + + + + Debug + AnyCPU + {6EE5C99D-F0D9-4C7F-94D4-FFB52FDEA3CB} + WinExe + chart_scottplot + chart_scottplot + v4.8 + 512 + true + true + + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\packages\OpenTK.3.3.3\lib\net20\OpenTK.dll + + + ..\..\packages\OpenTK.GLControl.3.3.3\lib\net20\OpenTK.GLControl.dll + + + ..\..\packages\ScottPlot.5.0.37\lib\net462\ScottPlot.dll + + + ..\..\packages\ScottPlot.WinForms.5.0.37\lib\net462\ScottPlot.WinForms.dll + + + ..\..\packages\SkiaSharp.2.88.8\lib\net462\SkiaSharp.dll + + + ..\..\packages\SkiaSharp.Views.Desktop.Common.2.88.8\lib\net462\SkiaSharp.Views.Desktop.Common.dll + + + ..\..\packages\SkiaSharp.Views.WindowsForms.2.88.8\lib\net462\SkiaSharp.Views.WindowsForms.dll + + + + ..\..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll + + + + ..\..\packages\System.Drawing.Common.8.0.8\lib\net462\System.Drawing.Common.dll + + + ..\..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll + + + + ..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + + + ..\..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + + + ..\..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + ì´ í”„ë¡œì íŠ¸ëŠ” ì´ ì»´í“¨í„°ì— ì—†ëŠ” NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 ë³µì›ì„ 사용하십시오. ìžì„¸í•œ ë‚´ìš©ì€ http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누ë½ëœ 파ì¼ì€ {0}입니다. + + + + + + + + \ No newline at end of file diff --git a/TEST/chart_scottplot/packages.config b/TEST/chart_scottplot/packages.config new file mode 100644 index 0000000..1512f83 --- /dev/null +++ b/TEST/chart_scottplot/packages.config @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TrendCtrlII/CChinfo.cs b/TrendCtrlII/CChinfo.cs new file mode 100644 index 0000000..a440c6e --- /dev/null +++ b/TrendCtrlII/CChinfo.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.ComponentModel; +using System.Drawing.Drawing2D; +using System.Drawing; + +namespace TrendCtrlII +{ + [TypeConverterAttribute(typeof(ExpandableObjectConverter))] + public partial class CChinfo + { + public Dictionary Value; + + public String C1value { get; set; } = ""; + public String C2value { get; set; } = ""; + public UInt16 Idx { get; set; } //트렌드뷰ì—서표시ë˜ê³ ìžˆëŠ” ì¸ë±ìŠ¤ê°’ + public Boolean Show { get; set; } + public Color Color { get; set; } + public int CH { get; set; } + public String TITLE { get; set; } + public String GROUP { get; set; } + + public CChinfo() + { + CH = 0; + TITLE = ""; + GROUP = ""; + Value = new Dictionary();// List(0); + } + + public override string ToString() + { + return $"{(Show ? "[O]" : "[X]")} GRP:{GROUP},CH:{CH},{TITLE},{Value.Count}ê±´"; + } + + + + } +} diff --git a/TrendCtrlII/CMouseinfo.cs b/TrendCtrlII/CMouseinfo.cs new file mode 100644 index 0000000..4c2ba14 --- /dev/null +++ b/TrendCtrlII/CMouseinfo.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.ComponentModel; +using System.Drawing.Drawing2D; +using System.Drawing; + + +namespace TrendCtrlII +{ + [TypeConverterAttribute(typeof(ExpandableObjectConverter))] + public partial class CMouseinfo + { + private Boolean hand; + private Boolean cross; + private Boolean move; + private Boolean changepos; + private Boolean drag; + private EDRAGTYPE dragtype; + //private PointF dragstart; + private PointF position; + private PointF position0; + //private Single _time; + private Single _volt; + private Boolean _showinfo; + private int _dragindex; + + public CMouseinfo(PointF _pf) + { + position = _pf; + position0 = _pf; + _showinfo = false; + _volt = 0; + _dragindex = -1; + } + public int DragIndex + { + get { return this._dragindex; } + set { this._dragindex = value; } + + } + public Boolean Showinfo + { + get { return this._showinfo; } + set { this._showinfo = value; } + } + + public Int64 Time { get; set; } + + public Single Volt + { + get { return this._volt; } + set { this._volt = value; } + } + + public EDRAGTYPE DragType + { + get { return this.dragtype; } + set { this.dragtype = value; } + } + + public PointF DragStart { get; set; } + + public PointF Position + { + get { return this.position; } + set { + this.position0 = new PointF(this.position.X, this.position.Y); + this.position = value; + } + } + + public PointF Position0 + { + get { return this.position0; } + set { this.position0 = value; } + } + public Boolean Hand + { + get { return this.hand; } + set { this.hand = value; } + } + public Boolean Cross + { + get { return this.cross; } + set { this.cross = value; } + } + public Boolean ChangePos + { + get { return this.changepos; } + set { this.changepos = value; } + } + public Boolean Move + { + get { return this.move; } + set { this.move = value; } + } + public Boolean Drag + { + get { return this.drag; } + set { this.drag = value; } + } + + } +} diff --git a/TrendCtrlII/CStyle.cs b/TrendCtrlII/CStyle.cs new file mode 100644 index 0000000..20ce338 --- /dev/null +++ b/TrendCtrlII/CStyle.cs @@ -0,0 +1,339 @@ +using System; +using System.ComponentModel; +using System.Collections.Generic; +using System.Diagnostics; +using System.Text; +using System.Drawing; + +namespace TrendCtrlII +{ + [TypeConverterAttribute(typeof(ExpandableObjectConverter))] + public class ChartStyle + { + + //XÃàÀÇ ¿øº» °ª + private Int64 _X1; + private Int64 _X2; + + //½ÇÁ¦È­¸é¿¡ Ç¥½ÃµÇ´Â µ¥ÀÌÅÍ + private Int64 _XV1; + private Int64 _XV2; + + //½ÇÁ¦È­¸é¿¡ Ç¥½ÃµÇ´Â µ¥ÀÌÅÍÀÇ ¿øº»°ª + public Int64 XV1o; + public Int64 XV2o; + + //YÃàÀÇ ¿øº»°ª + private Single _Y1; + private Single _Y2; + + //½ÇÁ¦È­¸é¿¡ Ç¥½ÃµÇ´Â µ¥ÀÌÅÍ + private Single _YV1 = 1; + private Single _YV2 = 3; + + //½ÇÁ¦È­¸é¿¡ Ç¥½ÃµÇ´Â µ¥ÀÌÅÍÀÇ ¿øº»°ª + public Single YV1o = 1; + public Single YV2o = 3; + + // + private Boolean _datapoint = false; + + private Font _yfont = new Font("³ª´®°íµñ", 12, FontStyle.Bold); + public int _ZoneMarginX = 50; + public int _ZoneMarginY = 50; + + //public Color design_backcolor = Color.White; + public Color design_mouseinfocolor = Color.Black; + + // public int _xterm = 1800; + private Font _xfont = new Font("³ª´®°íµñ", 8, FontStyle.Bold); + + public Font _mouseinfofont = new Font("³ª´®°íµñ", 12, FontStyle.Bold); + private Boolean showdebug = false; + // private short defaultviewhour = 3; + + public event OnUpdateinfoHandler OnUpdateinfo; //UPDATE USER CURSOR + public delegate void OnUpdateinfoHandler(); + + public Boolean UseZoomX { get; set; } + public Boolean UseZoomY { get; set; } + + public UInt16 MaxZoomX { get; set; } + public Single MaxZoomY { get; set; } + + public String UnitY { get; set; } + public String UnitX { get; set; } + + public ChartStyle() + { + MaxZoomX = 10; + MaxZoomY = 0.01f; + UseZoomX = true; + UseZoomY = true; + UnitY = "Volt"; + UnitX = "Sec"; + XÇ¥½Ã¹üÀ§ = 0; //±âº»Àüüǥ½Ã¸ðµå·Î Àüȯ + XGap = 0; //±âº» XÃà Ç¥½Ã°£°ÝÀº ÀÚµ¿À¸·Î + YGap = 0; //±âº» YÃà Ç¥½Ã°£°ÝÀº ÀÚµ¿À¸·Î + } + + + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("XÃà(½Ã°£)"), Description("XÃà¿¡ Ç¥½ÃµÇ´Â ½Ã°£ÀÇ Ç¥½Ã°£°Ý (0Àº ÀÚµ¿)")] + public int XGap { get; set; } + + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("YÃà"), Description("YÃà¿¡ Ç¥½ÃµÇ´Â Ç¥½Ã°£°Ý (0Àº ÀÚµ¿)")] + public Single YGap { get; set; } + + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("YÃà(VOLT)"), Description("YÃà¿¡ Ç¥½ÃµÇ´Â VOLTÀÇ Ç¥½Ã°£°ÝÀ» ÀÔ·ÂÇϼ¼¿ä.")] + public Font FontY + { + get { return _yfont; } + set + { + _yfont = value; + if (OnUpdateinfo != null) OnUpdateinfo(); + } + } + + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("XÃà(½Ã°£)"), Description("°¡·ÎÃà¿¡ Ç¥½ÃµÇ´Â ±Û²ÃÀ» ¼±ÅÃÇϼ¼¿ä.")] + public Font FontX + { + get { return _xfont; } + set + { + _xfont = value; + if (OnUpdateinfo != null) OnUpdateinfo(); + } + } + + private Int32 _xterm = 0; + + /// + /// XÃàÀÇ Ç¥½Ã¹üÀ§°ª(ÃÊ) ÁöÁ¤µÈ ½Ã°£(ÃÊ)ÀÇ µ¥ÀÌÅ͸¸ È­¸é¿¡ Ç¥½ÃµË´Ï´Ù. ÀÌ °ªÀÌ 0ÀÏ °æ¿ì Á¦ÇÑÀÌ ¾øÀ½ÀÌ µÇ¸ç ¸¸¾à ÀÌ °ªÀÌ ¼³Á¤µÇ¾îÀÖ´Ù¸é ½Ç½Ã°£¸ðµåó·³ ÀÛµ¿ÇÏ°Ô µË´Ï´Ù. + /// + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("Á¶È¸"), Description("XÃàÀÇ Ç¥½Ã¹üÀ§°ª(ÃÊ) ÁöÁ¤µÈ ½Ã°£(ÃÊ)ÀÇ µ¥ÀÌÅ͸¸ È­¸é¿¡ Ç¥½ÃµË´Ï´Ù. ÀÌ °ªÀÌ 0ÀÏ °æ¿ì Á¦ÇÑÀÌ ¾øÀ½ÀÌ µÇ¸ç ¸¸¾à ÀÌ °ªÀÌ ¼³Á¤µÇ¾îÀÖ´Ù¸é ½Ç½Ã°£¸ðµåó·³ ÀÛµ¿ÇÏ°Ô µË´Ï´Ù.")] + public Int32 XÇ¥½Ã¹üÀ§ { + get { return _xterm; } + set { + _xterm = value; + + //ÇöÀç ¿µ¿ªÀ» È®ÀÎÇÏ°í ³Ñ´Â´Ù¸é ¾ÕºÎºÐÀ» ÀÚ¸¥´Ù. + + if(value != 0 ) + { + TimeSpan ts = DateTime.FromFileTime(X2) - DateTime.FromFileTime(X1); + if (ts.TotalSeconds > value) { + DateTime NewEd = DateTime.FromFileTime(X2); + DateTime NewSd = NewEd.AddSeconds(-1 * value); + + if (NewSd > DateTime.Now) + { + NewSd = DateTime.Now; + NewEd = NewSd.AddSeconds(value); + } + X1 = NewSd.ToFileTime(); + X2 = NewEd.ToFileTime(); + } + } + } + } + + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("±âŸ"), Description("µ¥ÀÌÅÍÆ÷ÀÎÅ͸¦ Ç¥½ÃÇÕ´Ï´Ù.")] + public Boolean Show_DataPoint { + get { return _datapoint; } + set { _datapoint = value; + if (OnUpdateinfo != null) OnUpdateinfo(); + } + } + + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("°³¹ßÀÚÁ¤º¸"), Description("Debug Message")] + public Boolean Show_DebugMsg + { + get { return this.showdebug; } + set { this.showdebug = value; + if (OnUpdateinfo != null) OnUpdateinfo(); + } + } + + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("¸¶¿ì½ºÁ¤º¸"), Description("¸¶¿ì½ºÁ¤º¸¸¦ Ç¥½ÃÇϴ âÀÇ ±ÛÀÚ»ö")] + public Color ¸¶¿ì½º±ÛÀÚ»ö + { + get { return design_mouseinfocolor; } + set { design_mouseinfocolor = value; + if (OnUpdateinfo != null) OnUpdateinfo(); + } + } + + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("¸¶¿ì½ºÁ¤º¸"), Description("¸¶¿ì½ºÁ¤º¸¸¦ Ç¥½ÃÇϴ âÀÇ ±Û²Ã")] + public Font ¸¶¿ì½º±Û²Ã + { + get { return _mouseinfofont; } + set { _mouseinfofont = value; + if (OnUpdateinfo != null) OnUpdateinfo(); + } + } + + /// + /// YÃà°ªÀ» Ç¥½Ã¿µ¿ªÀ» ÃÖÃÊÀÇ °ªÀ¸·Î º¯°æÇÕ´Ï´Ù. + /// + public void ResetYxis() + { + YV1 = Y1; + YV2 = Y2; + } + + /// + /// XÃà°ªÀÇ Ç¥½Ã¿µ¿ªÀ» ÃÖÃÊÀÇ °ªÀ¸·Î º¯°æÇÕ´Ï´Ù. + /// + public void ResetXxis() + { + XV1 = X1; + XV2 = X2; + } + + /// + /// °¡·ÎÃàÀÇ Á¾·á°ª(ÇöÀç Ç¥½ÃµÇ´Â °ªÀº XV2¸¦ Âü°íÇϼ¼¿ä) + /// + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("YÃà(VOLT)"), Description("YÃà¿¡ Ç¥½ÃµÇ´Â VOLTÀÇ ÃÖ´ë°ªÀ» ÀÔ·ÂÇϼ¼¿ä.")] + public Int64 X2 + { + get { return _X2; } + set + { + _X2 = value; + _XV2 = value; + XV2o = value; + if (OnUpdateinfo != null) OnUpdateinfo(); + } + } + + /// + /// °¡·ÎÃàÀǽÃÀÛ°ª(ÇöÀç Ç¥½ÃµÇ´Â °ªÀº XV1À» Âü°íÇϼ¼¿ä) + /// + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("YÃà(VOLT)"), Description("YÃà¿¡ Ç¥½ÃµÇ´Â VOLTÀÇ ÃÖ¼Ò°ªÀ» ÀÔ·ÂÇϼ¼¿ä.")] + public Int64 X1 + { + get { return _X1; } + set + { + _X1 = value; + _XV1 = value; + XV1o = value; + if (OnUpdateinfo != null) OnUpdateinfo(); + } + } + + /// + /// ÇöÀç Ç¥½ÃµÇ´Â °¡·ÎÃàÀÇ ½ÃÀÛ°ªÀÔ´Ï´Ù. + /// + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("YÃà(VOLT)"), Description("YÃà¿¡ Ç¥½ÃµÇ´Â VOLTÀÇ ÃÖ¼Ò°ªÀ» ÀÔ·ÂÇϼ¼¿ä.")] + public Int64 XV1 + { + get { return _XV1; } + set + { + //ºä°ªÀÇ ÇѰèÄ¡ üũ + if (value < X1) _XV1 = X1; + else if (value >= XV2 && XV2 > 0) _XV1 = DateTime.FromFileTime(XV2).AddSeconds(-1).ToFileTime(); + else _XV1 = value; + XV1o = _XV1; + } + } + + /// + /// ÇöÀç Ç¥½ÃµÇ´Â °¡·ÎÃàÀÇ Á¾·á°ªÀÔ´Ï´Ù. + /// + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("YÃà(VOLT)"), Description("YÃà¿¡ Ç¥½ÃµÇ´Â VOLTÀÇ ÃÖ¼Ò°ªÀ» ÀÔ·ÂÇϼ¼¿ä.")] + public Int64 XV2 + { + get { return _XV2; } + set + { + //ºä°ªÀÇ ÇѰèÄ¡ üũ + if (value > X2) _XV2 = X2; + else if (value <= XV1 && XV1 > 0) _XV2 = DateTime.FromFileTime(XV1).AddSeconds(1).ToFileTime(); + else _XV2 = value; + XV2o = _XV2; + } + } + + /// + /// ¼¼·ÎÃàÀÇ Á¾·á°ª(ÇöÀç Ç¥½ÃµÇ´Â °ªÀº YV2¸¦ Âü°íÇϼ¼¿ä) + /// + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("YÃà(VOLT)"), Description("YÃà¿¡ Ç¥½ÃµÇ´Â VOLTÀÇ ÃÖ´ë°ªÀ» ÀÔ·ÂÇϼ¼¿ä.")] + public Single Y2 + { + get { return _Y2; } + set { + _Y2 = value; + _YV2 = value; + YV2o = value; + if (OnUpdateinfo != null) OnUpdateinfo(); + } + } + + /// + /// ÇöÀçÇ¥½ÃµÇ´Â ¼¼·ÎÃàÀÇ Á¾·á°ªÀÔ´Ï´Ù. + /// + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("YÃà(VOLT)"), Description("YÃà¿¡ Ç¥½ÃµÇ´Â VOLTÀÇ ÃÖ´ë°ªÀ» ÀÔ·ÂÇϼ¼¿ä.")] + public Single YV2 + { + get { return _YV2; } + set + { + _YV2 = value; + YV2o = value; + } + } + + /// + /// ¼¼·ÎÃàÀÇ ½ÃÀÛ°ª(ÇöÀç Ç¥½ÃµÇ´Â °ªÀº YV1À» Âü°íÇϼ¼¿ä) + /// + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("YÃà(VOLT)"), Description("YÃà¿¡ Ç¥½ÃµÇ´Â VOLTÀÇ ÃÖ¼Ò°ªÀ» ÀÔ·ÂÇϼ¼¿ä.")] + public Single Y1 + { + get { return _Y1; } + set { + _Y1 = value; + _YV1 = value; + YV1o = value; + if (OnUpdateinfo != null) OnUpdateinfo(); + } + } + + /// + /// ¼¼·ÎÃàÀÇ ½ÃÀÛ°ª + /// + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Browsable(false), Category("YÃà(VOLT)"), Description("YÃà¿¡ Ç¥½ÃµÇ´Â VOLTÀÇ ÃÖ¼Ò°ªÀ» ÀÔ·ÂÇϼ¼¿ä.")] + public Single YV1 + { + get { return _YV1; } + set + { + _YV1 = value; + YV1o = value; + } + } + + + //[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("¿©¹é"), Description("Â÷Æ®°¡Ç¥½ÃµÇ´Â ¿µ¿ªÀÇ »ó´Ü ¿©¹é")] + //public int ¿ÞÂÊ¿©¹é + //{ + // get { return _ZoneMarginX; } + // set { _ZoneMarginX = value; + // if (OnUpdateinfo != null) OnUpdateinfo(); + // } + //} + + //[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Category("¿©¹é"), Description("Â÷Æ®°¡Ç¥½ÃµÇ´Â ¿µ¿ªÀÇ ÇÏ´Ü ¿©¹é")] + //public int À§ÂÊ¿©¹é + //{ + // get { return _ZoneMarginY; } + // set { _ZoneMarginY = value; + // if (OnUpdateinfo != null) OnUpdateinfo(); + // } + //} + + } + +} diff --git a/TrendCtrlII/CTimeinfo.cs b/TrendCtrlII/CTimeinfo.cs new file mode 100644 index 0000000..df47811 --- /dev/null +++ b/TrendCtrlII/CTimeinfo.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace TrendCtrlII +{ + public partial class CTimeinfo + { + + public Int64 Value { get; set; } + public UInt32 idx { get; set; } + + public CTimeinfo(UInt32 _idx, Int64 _val) + { + Value = _val; + idx = _idx; + } + + public DateTime DateTimeData + { + get + { + return DateTime.FromFileTime(Value); + } + } + } +} diff --git a/TrendCtrlII/CUserCursor.cs b/TrendCtrlII/CUserCursor.cs new file mode 100644 index 0000000..3e372df --- /dev/null +++ b/TrendCtrlII/CUserCursor.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace TrendCtrlII +{ + public partial class CUserCursor + { + private short _idx = 0; + private Int64 _time = 0; + private Single _value = 0; + private Single _newx = 0; + + public CUserCursor(short pidx, Int64 ptime, Single px) + { + _idx = pidx; + _time = ptime; + _newx = px; + } + public Int64 Time + { + get { return this._time; } + set { this._time = value; } + } + public short Idx + { + get { return this._idx; } + set { this._idx = value; } + } + public Single Value + { + get { return this._value; } + set { this._value = value; } + } + public Single Newx + { + get { return this._newx; } + set { this._newx = value; } + } + } +} diff --git a/TrendCtrlII/Properties/AssemblyInfo.cs b/TrendCtrlII/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..195baa3 --- /dev/null +++ b/TrendCtrlII/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// ì–´ì…ˆë¸”ë¦¬ì˜ ì¼ë°˜ 정보는 ë‹¤ìŒ íŠ¹ì„± ì§‘í•©ì„ í†µí•´ 제어ë©ë‹ˆë‹¤. +// 어셈블리와 ê´€ë ¨ëœ ì •ë³´ë¥¼ 수정하려면 +// ì´ íŠ¹ì„± ê°’ì„ ë³€ê²½í•˜ì‹­ì‹œì˜¤. +[assembly: AssemblyTitle("cVMS Trend Chart Control")] +[assembly: AssemblyDescription("Cell Voltage Monitoring System Display Control by Arin")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("JDTEK - TINDEVIL")] +[assembly: AssemblyProduct("cVMS Trend Chart")] +[assembly: AssemblyCopyright("Copyright ©JDTEK 2012")] +[assembly: AssemblyTrademark("arinware")] +[assembly: AssemblyCulture("")] + +// ComVisibleì„ false로 설정하면 ì´ ì–´ì…ˆë¸”ë¦¬ì˜ í˜•ì‹ì´ COM 구성 ìš”ì†Œì— +// 표시ë˜ì§€ 않습니다. COMì—서 ì´ ì–´ì…ˆë¸”ë¦¬ì˜ í˜•ì‹ì— 액세스하려면 +// 해당 형ì‹ì— 대해 ComVisible íŠ¹ì„±ì„ true로 설정하십시오. +[assembly: ComVisible(false)] + +// ì´ í”„ë¡œì íŠ¸ê°€ COMì— ë…¸ì¶œë˜ëŠ” 경우 ë‹¤ìŒ GUID는 typelibì˜ ID를 나타냅니다. +[assembly: Guid("b674bfe2-26c9-49c9-b80a-45aa3502e3f3")] + +// ì–´ì…ˆë¸”ë¦¬ì˜ ë²„ì „ 정보는 ë‹¤ìŒ ë„¤ 가지 값으로 구성ë©ë‹ˆë‹¤. +// +// 주 버전 +// ë¶€ 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 ê°’ì„ ì§€ì •í•˜ê±°ë‚˜ 아래와 ê°™ì´ '*'를 사용하여 빌드 번호 ë° ìˆ˜ì • ë²„ì „ì´ ìžë™ìœ¼ë¡œ +// 지정ë˜ë„ë¡ í•  수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyFileVersion("1.0.1.61")] diff --git a/TrendCtrlII/Properties/Resources.Designer.cs b/TrendCtrlII/Properties/Resources.Designer.cs new file mode 100644 index 0000000..b15fea9 --- /dev/null +++ b/TrendCtrlII/Properties/Resources.Designer.cs @@ -0,0 +1,133 @@ +//------------------------------------------------------------------------------ +// +// ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +// 런타임 버전:4.0.30319.42000 +// +// íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +// ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +// +//------------------------------------------------------------------------------ + +namespace TrendCtrlII.Properties { + using System; + + + /// + /// ì§€ì—­í™”ëœ ë¬¸ìžì—´ ë“±ì„ ì°¾ê¸° 위한 강력한 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. + /// + // ì´ í´ëž˜ìŠ¤ëŠ” ResGen ë˜ëŠ” Visual Studio와 ê°™ì€ ë„구를 통해 StronglyTypedResourceBuilder + // í´ëž˜ìФì—서 ìžë™ìœ¼ë¡œ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. + // 멤버를 추가하거나 제거하려면 .ResX 파ì¼ì„ 편집한 ë‹¤ìŒ /str ì˜µì…˜ì„ ì‚¬ìš©í•˜ì—¬ ResGenì„ + // 다시 실행하거나 VS 프로ì íŠ¸ë¥¼ 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// ì´ í´ëž˜ìФì—서 사용하는 ìºì‹œëœ ResourceManager ì¸ìŠ¤í„´ìŠ¤ë¥¼ 반환합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TrendCtrlII.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// ì´ ê°•ë ¥í•œ 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ë¥¼ 사용하여 모든 리소스 ì¡°íšŒì— ëŒ€í•´ 현재 ìŠ¤ë ˆë“œì˜ CurrentUICulture ì†ì„±ì„ + /// 재정ì˜í•©ë‹ˆë‹¤. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap alam { + get { + object obj = ResourceManager.GetObject("alam", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap Backup_Green_Button { + get { + object obj = ResourceManager.GetObject("Backup_Green_Button", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap Blue_Ball { + get { + object obj = ResourceManager.GetObject("Blue_Ball", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap Clear_Green_Button { + get { + object obj = ResourceManager.GetObject("Clear_Green_Button", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap down_16 { + get { + object obj = ResourceManager.GetObject("down_16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap down_orange { + get { + object obj = ResourceManager.GetObject("down_orange", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap Red_Ball { + get { + object obj = ResourceManager.GetObject("Red_Ball", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/TrendCtrlII/Properties/Resources.resx b/TrendCtrlII/Properties/Resources.resx new file mode 100644 index 0000000..d98a20b --- /dev/null +++ b/TrendCtrlII/Properties/Resources.resx @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\Get Info Blue Button.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Backup Green Button.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Blue Ball.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Clear Green Button.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Red Ball.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\down_16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\down_orange.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/TrendCtrlII/Resources/Backup Green Button.png b/TrendCtrlII/Resources/Backup Green Button.png new file mode 100644 index 0000000..da9ebb8 Binary files /dev/null and b/TrendCtrlII/Resources/Backup Green Button.png differ diff --git a/TrendCtrlII/Resources/Blue Ball.png b/TrendCtrlII/Resources/Blue Ball.png new file mode 100644 index 0000000..325c6b2 Binary files /dev/null and b/TrendCtrlII/Resources/Blue Ball.png differ diff --git a/TrendCtrlII/Resources/Clear Green Button.png b/TrendCtrlII/Resources/Clear Green Button.png new file mode 100644 index 0000000..b46c7f2 Binary files /dev/null and b/TrendCtrlII/Resources/Clear Green Button.png differ diff --git a/TrendCtrlII/Resources/Get Info Blue Button.png b/TrendCtrlII/Resources/Get Info Blue Button.png new file mode 100644 index 0000000..24eeec7 Binary files /dev/null and b/TrendCtrlII/Resources/Get Info Blue Button.png differ diff --git a/TrendCtrlII/Resources/Red Ball.png b/TrendCtrlII/Resources/Red Ball.png new file mode 100644 index 0000000..3909dce Binary files /dev/null and b/TrendCtrlII/Resources/Red Ball.png differ diff --git a/TrendCtrlII/Resources/down_16.png b/TrendCtrlII/Resources/down_16.png new file mode 100644 index 0000000..8175898 Binary files /dev/null and b/TrendCtrlII/Resources/down_16.png differ diff --git a/TrendCtrlII/Resources/down_orange.png b/TrendCtrlII/Resources/down_orange.png new file mode 100644 index 0000000..30a6cb7 Binary files /dev/null and b/TrendCtrlII/Resources/down_orange.png differ diff --git a/TrendCtrlII/TrendCtrlII.cs b/TrendCtrlII/TrendCtrlII.cs new file mode 100644 index 0000000..998ed2d --- /dev/null +++ b/TrendCtrlII/TrendCtrlII.cs @@ -0,0 +1,1807 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Text; +using System.Windows.Forms; +using System.Drawing.Drawing2D; +using System.Linq; +using System.Security.Authentication.ExtendedProtection; +using System.Security.Policy; + +namespace TrendCtrlII +{ + public enum EDRAGTYPE + { + SCREEN, + ZOOM, + UC, + NONE + } + + public enum ESCREENMODE + { + INIT, + TEMPDATA, + GRAPH + } + + public enum EBUTTONTYPE + { + LEFTMON, + RIGHTMON + } + + public enum EALIGN + { + LEFT, + CENTER, + RIGHT + } + + public partial class TrendCtrlII : UserControl + { + private ChartStyle _Style = new ChartStyle(); + public CMouseinfo Mouseinfo; //마우스위치정보 + + public Boolean Refresh_BackGround = true; + public Boolean Refresh_Grpah = true; + + //화면ì´ë™ëª¨ë“œ + public Boolean ScreenMove = false; + + //Boolean Make_BackT = false; + + Bitmap layer_bakT; //ì „ì²´ì˜ì—­ì˜ ë°°ê²½ + Bitmap layer_bak; + + Bitmap layer_graph; + Bitmap layer_graphT; //ì „ì²´ì˜ì—­ì˜ 그래프 + + public float MaxValueY { get; set; } = 15; + + + + public Single LineWidth = 1; + private Rectangle UserZoom; //사용ìžì¤Œì˜ì—­ + + //실값 + public Single[] values; + // public int[] times; + private CChinfo[] chinfo; + + public Boolean Key_Control = false; + + // private Rectangle Cursorrect; + + //2015-02-17 : 시간정보를 chinfo ì—서 분리 + public Dictionary Time; + + public void RemoveAt(int idx) + { + //배열갯수를 벗어나면 처리하지 않는다. + if (idx >= this.Time.Count) return; + + //삭제대ìƒì˜ 키를 확ì¸í•œë‹¤. + var timeKey = this.Time.Take(idx).First().Key; + + //시간정보삭제 + this.Time.Remove(timeKey); + + //채ë„ì •ë³´ 중 타임키를 공유하는 ìžë£Œë¥¼ 삭제한다. + this.chinfo.ToList().ForEach(t => t.Value.Remove(timeKey)); + + } + + public void AddData(long val_time, int ch, float val_volt, string ch_grp, string ch_title, Color ch_color) + { + //존재하지 않는 시간ì´ë¼ë©´ 추가한다. + var ttime = Time.Where(t => t.Value == val_time).FirstOrDefault(); + if (ttime.Key is default(UInt32) && ttime.Value is default(Int64)) // ê¸°ì¡´ì— ê°’ì´ ì¡´ìž¬í•˜ì§€ 않는경우 + { + this.Time.Add((uint)this.Time.Count + 1, val_time); + ttime = Time.Where(t => t.Value == val_time).FirstOrDefault(); + } + + //해당 채ë„ì´ ì¡´ìž¬í•˜ëŠ”ì§€ 확ì¸í•œë‹¤ + var chdata = this.CHInfo.Where(t => t.CH == ch).FirstOrDefault(); + if (chdata == null) + { + Array.Resize(ref chinfo, chinfo.Length + 1); + chdata = new CChinfo + { + CH = ch, + Idx = (ushort)ch, + GROUP = ch_grp, + TITLE = ch_title, + Color = ch_color, + Show = true, + }; + chinfo[chinfo.Length - 1] = chdata; + } + + //해당 ì‹œê°„ëŒ€ì˜ ë°ì´í„°ê°€ 없다면 추가한다. + if (chdata.Value.ContainsKey(ttime.Key) == false) + chdata.Value.Add(ttime.Key, val_volt); + } + + public void AddData(long val_time, int ch, float val_volt) + { + //존재하지 않는 시간ì´ë¼ë©´ 추가한다. + var ttime = Time.Where(t => t.Value == val_time).FirstOrDefault(); + if (ttime.Key is default(UInt32)) + { + this.Time.Add((uint)this.Time.Count + 1, val_time); + } + + //해당 채ë„ì´ ì¡´ìž¬í•˜ëŠ”ì§€ 확ì¸í•œë‹¤ + var chdata = this.CHInfo.Where(t => t.CH == ch).FirstOrDefault(); + if (chdata != null) + { + //해당 ì‹œê°„ëŒ€ì˜ ë°ì´í„°ê°€ 없다면 추가한다. + if (chdata.Value.ContainsKey(ttime.Key) == false) + chdata.Value.Add(ttime.Key, val_volt); + } + + + } + + private Boolean init; //그리드초기화완료여부 + public String initmsg = "initializing..."; + public int initpercent = 0; + + public List uc = new List(0); //사용ìžì»¤ì„œ 최대2개까지한다. + + //미정리 + + //MY EVENT + //public event OnClickProbeSensorHandlerL OnClickLEFT; //ì…€í´ë¦­ + //public delegate void OnClickProbeSensorHandlerL(); + //public event OnClickProbeSensorHandlerR OnClickRIGHT; //ì…€í´ë¦­ + //public delegate void OnClickProbeSensorHandlerR(); + public event OnUpdateUserControlHandler OnUpdateUserCursor; //UPDATE USER CURSOR + public delegate void OnUpdateUserControlHandler(int idx); + + + //화면디ìžì¸ê´€ë ¨ + private Cursor cursor = Cursors.Default; //현재커서ì˜ëª¨ì–‘ + + private StringBuilder Warn_msg = new StringBuilder(""); //경고메세지(화면 최ìƒë‹¨ì¤‘ì•™ì— í‘œì‹œë¨) + private Font Warn_Font; + + //기타설정' + public RectangleF WindowRect; //머릿부분 + public RectangleF ChartRect; + + /// + /// 현재ë°ì´í„°ì¤‘ 가장 ë§ˆì§€ë§‰ì˜ ì‹œê°„ì •ë³´ë¥¼ 반환합니다. (없는경우 1900ë…„ë„ê°€ 반화노딤) + /// + /// + public Int64 LastDate() + { + if (Time == null) return DateTime.Parse("1900-01-01").ToFileTime(); + if (Time.Count < 1) return DateTime.Parse("1900-01-01").ToFileTime(); + return Time.Last().Value;// [Time.Count - 1].Value; + } + + public Int64 FirstDate() + { + if (Time == null) return DateTime.Parse("1900-01-01").ToFileTime(); + if (Time.Count < 1) return DateTime.Parse("1900-01-01").ToFileTime(); + return Time.First().Value; + } + + public TrendCtrlII() + { + InitializeComponent(); + + // Initialize Variables + + // Set Optimized Double Buffer to reduce flickering + this.SetStyle(ControlStyles.UserPaint, true); + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); + + // Redraw when resized + this.SetStyle(ControlStyles.ResizeRedraw, true); + + this.Font = SystemInformation.MenuFont; + this.Warn_Font = new Font("나눔고딕", 20, FontStyle.Bold); + this.Warn_msg.Append("메세지가 없습니다"); + this.Mouseinfo = new CMouseinfo(new PointF(0, 0)); + Time = new Dictionary(); + } + + public ChartStyle Style + { + get { return this._Style; } + set { this._Style = value; } + } + + /// + /// Draws the background gradient and the grid into Graphics + /// + /// Graphic + public void DrawBackgroundWindow(Graphics g, RectangleF crect, RectangleF winrect) + { + //using (Brush gradientBrush = new LinearGradientBrush(this.WindowRect, Style.design_backcolor_start, Style.design_backcolor_bottom, LinearGradientMode.Vertical)) + //{ + // g.FillRectangle(gradientBrush, this.WindowRect); + //} + //g.FillRectangle(Brushes.Black, this.WindowRect); + + //ì „ì²´ì°½ì—대한 ë³´ë” + RectangleF borderrect = new RectangleF(winrect.Left, winrect.Top, winrect.Width - 1, winrect.Height - 1); + g.DrawRectangle(Pens.Gray, borderrect.Left, borderrect.Top, borderrect.Width, borderrect.Height); + + + //실제차트정보 + //g.FillRectangle(Brushes.Gray, ChartRect.Left + 2, ChartRect.Top + 2, ChartRect.Width, ChartRect.Height); + //g.FillRectangle(Brushes.Black, ChartRect); + + + //Display Collection TIME + //String Str = "Collection Time : " + GetDateTimeStr(startview, false) + " - " + GetDateTimeStr(endview, false); + //SizeF fontszie = g.MeasureString(Str, this.Font); + //// Rectangle rect = new Rectangle((int)winrect.Left, (int)winrect.Top, (int)winrect.Width, (int)(fontszie.Height * 2)); + // g.DrawString(Str, this.Font, Brushes.Black, rect.Left + 10, 3+rect.Top + (rect.Height - fontszie.Height) / 2); + // //g.DrawLine(Pens.Black, winrect.Left, fontszie.Height * 2, winrect.Left + winrect.Width, fontszie.Height * 2); + + //CHART BORDER + g.DrawRectangle(new Pen(Color.Black, 2), crect.Left, crect.Top, crect.Width, crect.Height); + + } + + public void Set_Refresh() + { + Console.WriteLine("Graph : Set_Refresh"); + Refresh_BackGround = true; + Refresh_Grpah = true; + } + + /// Override OnPaint method + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + // this.SuspendLayout(); + + // AntiAliasing + e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; + + //표시아ì´í…œì´ì—†ë‹¤ë©´ 오류를 낸다. + if (!init || chinfo == null) + { + //progress + int bw = (int)(this.Width * 0.8); + int bh = (int)(this.Height * 0.05); + Rectangle rr = new Rectangle((this.Width - bw) / 2, (this.Height - bh) / 2 + 10, bw, bh); + + //Display Initial Message + Font nf = new Font("나눔고딕", 20, FontStyle.Bold); + Rectangle FullRect = new Rectangle(0, 0, this.Width, this.Height); + SizeF initsize = e.Graphics.MeasureString(initmsg, nf); + e.Graphics.DrawString(initmsg, nf, Brushes.Black, this.Width / 2 - initsize.Width / 2, this.Height / 2 - initsize.Height / 2 - bh); + + //Display progress Bar + if (initpercent > 100) initpercent = 100; + int perc = (int)(rr.Width * initpercent / 100); + e.Graphics.FillRectangle(Brushes.Green, new Rectangle(rr.Left, rr.Top, perc, rr.Height)); + + //Display Control Border + e.Graphics.DrawRectangle(Pens.DarkGray, rr); + + //using (Brush gradientBrush = new LinearGradientBrush(FullRect, Color.Gray, Color.Gray, LinearGradientMode.Vertical)) + //{ + // + // e.Graphics.FillRectangle(gradientBrush, FullRect); + // // String initstr = "initializing..."; + // //if (initmsg != "") initstr += "\n\n" + initmsg; + //} + + //LinearGradientBrush lb = new LinearGradientBrush(rr, Color.Gray, Color.WhiteSmoke,LinearGradientMode.Vertical); + //lb.Dispose(); + //e.Graphics.DrawRectangle(Pens.DarkGoldenrod, FullRect.Left, FullRect.Top, FullRect.Width - 1, FullRect.Height - 1); + + //this.ResumeLayout(); + return; + } + + Graphics g_bak; + Graphics g_graph; + + if (Style.XV1 == Style.X1 && Style.XV2 == Style.X2) + { + //ì „ì²´ì˜ì—­ì´ë©´(ì „ì²´ìš© ë¹„íŠ¸ë§µì„ ì‚¬ìš©í•¨) + g_bak = Graphics.FromImage(this.layer_bakT); + g_graph = Graphics.FromImage(this.layer_graphT); + } + else + { + g_bak = Graphics.FromImage(this.layer_bak); + g_graph = Graphics.FromImage(this.layer_graph); + } + + // e.Graphics.CompositingMode = CompositingMode.SourceOver; + + if (Refresh_BackGround) + { + // g_bak.CompositingMode = CompositingMode.SourceOver; + g_bak.Clear(Color.White); + DrawBackgroundWindow(g_bak, ChartRect, WindowRect); + Draw_Grid(g_bak, ChartRect); //xì¶•,yì¶•ì˜ ëˆˆê¸ˆê³¼ 그리드표시 + Refresh_BackGround = false; + } + + if (Refresh_Grpah) + { + // g_graph.CompositingMode = CompositingMode.SourceOver; + g_graph.Clear(Color.Transparent); + Draw_channel(g_graph, ChartRect, WindowRect); + Refresh_Grpah = false; + } + + g_bak.Dispose(); + g_graph.Dispose(); + + //ì „ì²´ì˜ì—­ì˜ê²½ìš° ë³„ë„ í• ë‹¹ëœ ì´ë¯¸ì§€ë¥¼ 사용한ㄷ(최초 1번만 그리게ëœë‹¤) + if (Style.XV1 == Style.X1 && Style.XV2 == Style.X2) + { + e.Graphics.DrawImage(layer_bakT, 0, 0); + e.Graphics.DrawImage(layer_graphT, 0, 0); + } + else + { + e.Graphics.DrawImage(layer_bak, 0, 0); + e.Graphics.DrawImage(layer_graph, 0, 0); + } + + + + //기타정보그림 + Draw_ZoomSelect(e.Graphics); + Draw_Cursor(e.Graphics, ChartRect); + Draw_MouseInfo(e.Graphics); + Draw_Debug(e.Graphics); + if (ShowLegend) Draw_legend(e.Graphics); + g_bak.Dispose(); + g_graph.Dispose(); + + + //StringBuilder sb = new StringBuilder(); + //sb.AppendLine("Startv View : " + startview.ToString() + "/" + endview.ToString()); + //sb.AppendLine("Start Time : " + starttime.ToString() + "/" + endtime.ToString()); + //sb.AppendLine("Start View O : " + Style.XV1.ToString() + "/" + endviewo.ToString()); + //sb.AppendLine("Start Volt : " + Style.Y1.ToString() + "/" + Style.Y2.ToString()); + //sb.AppendLine("Start Volt O : " + Style.Y1o.ToString() + "/" + Style.Y2o.ToString()); + //e.Graphics.DrawString(sb.ToString(), this.Font, Brushes.Black, 100, 100); + + //e.Graphics.DrawRectangle(Pens.Red, ChartRect.Left, ChartRect.Top, ChartRect.Width, ChartRect.Height); + //e.Graphics.DrawRectangle(Pens.Blue, LegendRect.Left, LegendRect.Top, LegendRect.Width, LegendRect.Height); + //this.Update(); + //this.ResumeLayout(); + } + + public bool ShowLegend { get; set; } = false; + void Draw_legend(Graphics g) + { + if (chinfo == null || chinfo.Any() == false) return; + var maxcnt = 10; + var h = LegendRect.Height / maxcnt; + var w = LegendRect.Width; + var showitem = this.chinfo.Where(t => t.Show).ToList(); + var itemcnt = Math.Min(10, showitem.Count()); + for (int i = 0; i < itemcnt; i++) + { + var y = LegendRect.Y + i * h; + var item = showitem[i]; + var rect = new RectangleF(LegendRect.X, y, w, h); + var rectflag = new RectangleF(rect.X, rect.Y, rect.Width * 0.15f, rect.Height); + var rectttitle = new RectangleF(rectflag.Right + 3, rect.Y, rect.Width - rectflag.Width - 3, rect.Height); + using (var bgcolor = new SolidBrush(item.Color)) + g.FillRectangle(bgcolor, rectflag); + var title = $"{item.TITLE}"; + if (item.Value.Any()) + title = $"{item.TITLE} ({item.Value.Last().Value}v)"; + + g.DrawString(title, this.Font, Brushes.Black, rectttitle, new StringFormat + { + Alignment = StringAlignment.Near, + LineAlignment = StringAlignment.Center + }); ; + g.DrawRectangle(Pens.Black, rect.X, rect.Y, rect.Width, rect.Height); + } + } + public void Draw_Cursor(Graphics g, RectangleF Crect) + { + + + if (this.uc.Count == 0) return; + Font cfont = new Font("나눔고딕", 10, FontStyle.Bold); + + //커서는 기본 2개를 둔다(전체사ì´ì¦ˆë¥¼ 측정하기위해서 임시로 í¬ê¸°ë¥¼ 테스트한다.) + String cursorstr = "â–¦ C1 2012-00-00- 00:00:00 â–¦ C1 2012-00-00- 00:00:00 â–¦ C1 2012-00-00- 00:00:00"; + SizeF FontSize = g.MeasureString(cursorstr.ToString(), cfont); + + //커서가표시ë ì˜ì—­ + + //Cursorrect = new Rectangle(0, 0, 50,50); + //Cursorrect.X = (int)(Crect.Left + Crect.Width - FontSize.Width * 1.1) - 1; + //Cursorrect.Y = (int)(Crect.Top - 2 - FontSize.Height); + //Cursorrect.Width = (int)(FontSize.Width * 1.1); + //Cursorrect.Height = (int)(FontSize.Height * 1.3); + + //g.FillRectangle(Brushes.DimGray, Cursorrect); + //g.DrawRectangle(Pens.Gray, Cursorrect); + + //Single newy = Cursorrect.Top + ((Cursorrect.Height - FontSize.Height)/2) ; + //Single Maxwidth = 0; + + //String fulltext = ""; + + var qry = from CUserCursor cs in uc + orderby cs.Idx + select cs; + + + cursorstr = ""; + foreach (CUserCursor uctl in qry) + { + Single newx = GetXfromTime(uctl.Time, Crect); + uctl.Newx = newx; + + Single imgsizew = Properties.Resources.down_16.Width; + Single imgsizeh = Properties.Resources.down_16.Height; + + cursorstr += " â–¦ C" + (uctl.Idx + 1).ToString() + " " + GetTimeStr(uctl.Time, true, true, true, true); + + FontSize = g.MeasureString(cursorstr.ToString(), cfont); + // if (FontSize.Width > Maxwidth) Maxwidth = FontSize.Width; + + if (uctl.Idx < 1) + { + g.DrawImage(Properties.Resources.down_16, (newx - imgsizew / 2) - 1, Crect.Top - imgsizeh - 5); + g.DrawLine(new Pen(Color.Green, 1), newx, Crect.Top, newx, Crect.Top + Crect.Height); + + // fulltext = cursorstr; + + } + else + { + TimeSpan ts = DateTime.FromFileTime(uctl.Time) - DateTime.FromFileTime(uc[0].Time); + cursorstr += " â–³t " + ts.Days.ToString() + "d " + ts.Hours.ToString() + ":" + ts.Minutes.ToString() + ":" + ts.Seconds.ToString(); + + g.DrawImage(Properties.Resources.down_orange, (newx - imgsizew / 2) - 1, Crect.Top - imgsizeh - 5); + g.DrawLine(new Pen(Color.Orange, 1), newx, Crect.Top, newx, Crect.Top + Crect.Height); + // if (fulltext == "") fulltext = cursorstr; + // else fulltext += "\n" + cursorstr; + + } + // newy += FontSize.Height + 1; + } + + if (cursorstr != "") + { + FontSize = g.MeasureString(cursorstr, cfont); + g.DrawString(cursorstr, cfont, Brushes.Black, Crect.Right - FontSize.Width - 2, Crect.Top - FontSize.Height - 2); + } + + // + // Cursorrect = new Rectangle((int)(ChartRect.Left + ChartRect.Width - Maxwidth), (int)ChartRect.Top, (int)Maxwidth, (int)(newy - FontSize.Height)); + } + + public void Draw_MouseInfo(Graphics g) + { + if (this.Mouseinfo.Showinfo) //마웃위치정보를 í™”ë©´ì— í‘œì‹œë¥¼ 한다. + { + String tm = GetTimeStr(Mouseinfo.Time, true, true, true, true) + "\n" + Mouseinfo.Volt.ToString("#0.00") + "v"; + if (Style.Show_DebugMsg) tm += "\n" + Mouseinfo.Time.ToString(); + + SizeF tmsize = g.MeasureString(tm, Style._mouseinfofont); + + RectangleF rect = new RectangleF(Mouseinfo.Position.X + 5, Mouseinfo.Position.Y + 5, tmsize.Width + 10, tmsize.Height + 10); + if (Mouseinfo.Position.X >= (this.ChartRect.Left + ChartRect.Width / 2)) + { + //마우스위치ì—ë”°ë¼ì„œ 표시정보 위치를 좌/ìš° êµí™˜í•œë‹¤ 150223 + rect = new RectangleF(Mouseinfo.Position.X - (tmsize.Width + 10) - 5, Mouseinfo.Position.Y + 5, tmsize.Width + 10, tmsize.Height + 10); + } + //g.FillRectangle(new SolidBrush(Color.FromArgb(140,Color.Green)), rect); + g.DrawRectangle(Pens.Black, rect.Left, rect.Top, rect.Width, rect.Height); + + g.DrawString(tm, Style._mouseinfofont, new SolidBrush(Style.design_mouseinfocolor), rect.Left + (rect.Width - tmsize.Width) / 2, rect.Top + (rect.Height - tmsize.Height) / 2); + } + } + + public void Draw_Grid(Graphics g, RectangleF crect) + { + + DateTime SDVDate = DateTime.FromFileTime(Style.XV1); + DateTime SDate = DateTime.FromFileTime(Style.XV1); + DateTime EDate = DateTime.FromFileTime(Style.XV2); + + var (normalizedStart, normalizedEnd) = NormalizeTimeRangeHalfHourIntervals(SDate, EDate); + SDVDate = normalizedStart; + SDate = normalizedStart; + EDate = normalizedEnd; + + TimeSpan TS = EDate - SDate; //timespan + + if (TS.TotalSeconds > Style.MaxZoomX) + { + //표시간격 최소 10ì´ˆ + int tm = 10; + + if (Style.XGap == 0) + { + tm = (int)(TS.TotalSeconds / 5); + } + else + { + tm = Style.XGap; + } + + var termcnt = (int)(TS.TotalSeconds / tm); + if (termcnt < 10) + { + tm = (int)(TS.TotalSeconds / 10f); + } + else if (termcnt > 10) //ê°„ê²©ì´ ë„ˆë¬´ í¬ë‹¤ + { + tm = (int)(TS.TotalSeconds / 10f); + } + tm = GetClosestInterval(tm); + + for (Int64 i = 0; i <= TS.TotalSeconds; i += tm) + { + DateTime NewDate = SDVDate.AddSeconds(i); //시작시간ì—서 + if (SDate.Day != NewDate.Day) + { + //ì¼ìžê°€ 바귀엇으므로 해당 ì¼ì¦¤ ì„¸ë¡œì¶•ì„ í‘œì‹œ + DateTime LineDay = DateTime.Parse(NewDate.ToString("yyyy-MM-dd 00:00:00")); + Single newx2 = GetXfromTime(LineDay.ToFileTime(), crect); + g.DrawLine(new Pen(Color.FromArgb(50, Color.Black)), newx2, crect.Top, newx2, crect.Top + crect.Height); + SDate = NewDate; + } + + Single newx = GetXfromTime(NewDate.ToFileTime(), crect); + String timestr = ""; + + if (i == 0) timestr = GetDateTimeStr(NewDate.ToFileTime(), true); + else timestr = GetTimeStr(NewDate.ToFileTime(), i == 0 ? true : false, false); + + timestr = NewDate.ToString("yy-MM-dd") + "\n" + NewDate.ToString("HH:mm:ss"); + + DrawString(g, timestr, Style.FontX, Brushes.Black, new PointF(newx, crect.Top + crect.Height + 5), EALIGN.CENTER); + if (i > 0) g.DrawLine(new Pen(Color.Gray), newx, crect.Top, newx, crect.Top + crect.Height); + } + + } + else + { + //Yì¶• ê°’ì„ í‘œì‹œí•  ê°’ì´ ì—†ìœ¼ë©´ 오류를 표시한다. + DrawString(g, "ERRX", Style.FontX, Brushes.Black, new PointF(crect.Left - 2, crect.Bottom), EALIGN.RIGHT, EALIGN.CENTER); + } + + + + //세로(VOLT)표시 + //g.DrawString("start="+Style._startvolt.ToString(), this.Font, Brushes.Red, 100, 100); + //g.DrawString("end="+Style._endvolt.ToString(), this.Font, Brushes.Red, 100, 120); + + //g.DrawString("최소="+Style.최소값.ToString(), this.Font, Brushes.Red, 100, 140); + //g.DrawString("최대="+Style.최대값.ToString(), this.Font, Brushes.Red, 100, 160); + + if (Math.Abs(Style.YV2 - Style.YV1) >= Style.MaxZoomY) + { + Single term; + if (Style.YGap == 0) + { + term = (Style.YV2 - Style.YV1) / 10; + } + else + { + term = Style.YGap; + } + + for (Single i = Style.YV1; i <= Style.YV2; i += term) + { + // ì„¸ë¡œê¸¸ì´ = 10v : + Single newy = GetYfromVolt(i, crect); + if (Style.YV1 == 0 && i == 0) + { + + } + else g.DrawLine(new Pen(Color.Gray), crect.Left, newy, crect.Left + crect.Width, newy); + + //소수ì ì—†ëŠ”ê²½ìš°ì—눈금표시한다. + DrawString(g, i.ToString("#0.00"), Style.FontY, Brushes.Black, new PointF(crect.Left - 2, newy), EALIGN.RIGHT, EALIGN.CENTER); + } + } + else + { + //Yì¶• ê°’ì„ í‘œì‹œí•  ê°’ì´ ì—†ìœ¼ë©´ 오류를 표시한다. + DrawString(g, "ERRY", Style.FontY, Brushes.Black, new PointF(crect.Left - 2, crect.Top + 2), EALIGN.RIGHT, EALIGN.CENTER); + } + } + + public (DateTime normalizedStart, DateTime normalizedEnd) NormalizeTimeRangeHalfHourIntervals(DateTime start, DateTime end) + { + const int intervalInSeconds = 1800; // 30 minutes + + DateTime normalizedStart = NormalizeTimeToInterval(start, intervalInSeconds, roundDown: true); + DateTime normalizedEnd = NormalizeTimeToInterval(end, intervalInSeconds, roundDown: false); + + return (normalizedStart, normalizedEnd); + } + + private DateTime NormalizeTimeToInterval(DateTime time, int intervalInSeconds, bool roundDown) + { + long ticks = time.Ticks / TimeSpan.TicksPerSecond; + if (roundDown) + { + ticks = (ticks / intervalInSeconds) * intervalInSeconds; // Round down + } + else + { + ticks = ((ticks + intervalInSeconds - 1) / intervalInSeconds) * intervalInSeconds; // Round up + } + return new DateTime(ticks * TimeSpan.TicksPerSecond); + } + + + private readonly int[] TimeIntervals = new int[] + { + 1, 10, 30, 60, 300, 600, 1800, 3600, 21600, 43200, 86400, 432000, 864000, 2592000 + }; + public int GetClosestInterval(int seconds) + { + // Handle cases where seconds is less than the smallest interval or more than the largest interval + if (seconds <= TimeIntervals[0]) + return TimeIntervals[0]; + if (seconds >= TimeIntervals[TimeIntervals.Length - 1]) + return TimeIntervals[TimeIntervals.Length - 1]; + + // Find the closest interval + int closestInterval = TimeIntervals[0]; + int minDifference = Math.Abs(seconds - closestInterval); + + foreach (int interval in TimeIntervals) + { + int difference = Math.Abs(seconds - interval); + if (difference < minDifference) + { + minDifference = difference; + closestInterval = interval; + } + } + + return closestInterval; + } + + public void Draw_Debug(Graphics g) + { + if (!Style.Show_DebugMsg) return; + + //Single newy = 50; + //String newstr = ""; + SizeF fontsize; + + StringBuilder DebugMsg = new StringBuilder(); + + DebugMsg.AppendLine("Mouseinfo=" + this.Mouseinfo.Position.ToString() + " " + this.Mouseinfo.Showinfo.ToString()); + DebugMsg.AppendLine("Mouseinfo0=" + this.Mouseinfo.Position0.ToString() + " idx=" + this.Mouseinfo.DragIndex.ToString()); + DebugMsg.AppendLine("Mouse Volt =" + this.Mouseinfo.Volt.ToString() + " ,Time=" + DateTime.FromFileTime(Mouseinfo.Time).ToString()); + DebugMsg.AppendLine("Mouse Drag=" + Mouseinfo.Drag.ToString() + " " + Mouseinfo.DragType.ToString()); + DebugMsg.AppendLine("Mouse DragStart=" + Mouseinfo.DragStart.ToString()); + DebugMsg.AppendLine("TimeCount =" + Time.Count.ToString()); + + TimeSpan NowTerm = DateTime.FromFileTime(Style.X2) - DateTime.FromFileTime(Style.X1); + DebugMsg.AppendLine("XGap =" + Style.XGap.ToString() + ",YGap=" + Style.YGap.ToString() + ",Xterm=" + Style.X표시범위.ToString() + ",NowTerm=" + NowTerm.ToString()); + + foreach (String file in Files) + { + DebugMsg.AppendLine("File = " + file); + } + foreach (CUserCursor ucitem in uc) + { + DebugMsg.AppendLine("uc" + ucitem.Idx.ToString() + ",x=" + ucitem.Newx.ToString() + ",time=" + ucitem.Time.ToString()); + } + + DebugMsg.AppendLine("======================"); + DebugMsg.AppendLine("시간축=" + Style.X1.ToString() + "~" + Style.X2.ToString() + " : " + DateTime.FromFileTime(Style.X1).ToString("yy-MM-dd HH:mm:ss") + "~" + DateTime.FromFileTime(Style.X2).ToString("yy-MM-dd HH:mm:ss")); + DebugMsg.AppendLine("시간축V=" + Style.XV1.ToString() + "/" + Style.XV2.ToString() + " : " + DateTime.FromFileTime(Style.XV1).ToString("yy-MM-dd HH:mm:ss") + "~" + DateTime.FromFileTime(Style.XV2).ToString("yy-MM-dd HH:mm:ss")); + DebugMsg.AppendLine("시간축VO=" + Style.XV1o.ToString() + "/" + Style.XV2o.ToString() + " : " + DateTime.FromFileTime(Style.XV1o).ToString("yy-MM-dd HH:mm:ss") + "~" + DateTime.FromFileTime(Style.XV2o).ToString("yy-MM-dd HH:mm:ss")); + DebugMsg.AppendLine("======================"); + DebugMsg.AppendLine("ì „ì••ì¶•=" + Style.Y1.ToString() + "~" + Style.Y2.ToString()); + DebugMsg.AppendLine("ì „ì••ì¶•V=" + Style.YV1.ToString() + "~" + Style.YV2.ToString()); + DebugMsg.AppendLine("ì „ì••ì¶•VO=" + Style.YV1o.ToString() + "~" + Style.YV2o.ToString()); + DebugMsg.AppendLine("======================"); + + DebugMsg.AppendLine("UserZoom=" + UserZoom.ToString()); + + // newstr = "CHinfo=" + chinfo.GetUpperBound(0); + + foreach (CChinfo ch in chinfo) + { + DebugMsg.AppendLine("idx=" + ch.Idx.ToString() + ",visible:" + ch.Show.ToString() + ",cnt=" + ch.Value.Count.ToString() + ",Color=" + ch.Color.ToString()); + } + + fontsize = g.MeasureString(DebugMsg.ToString(), this.Font); + g.FillRectangle(new SolidBrush(Color.FromArgb(180, Color.Black)), new Rectangle(100, 100, (int)(fontsize.Width * 1.3), (int)(fontsize.Height * 1.3))); + g.DrawString(DebugMsg.ToString(), this.Font, Brushes.Tomato, 110, 110); + } + + public List Files = new List(); + + public void DataClear() + { + if (uc != null) uc.Clear(); + if (chinfo != null) Array.Clear(chinfo, 0, chinfo.Length); + if (Time != null) this.Time.Clear(); + if (Files != null) Files.Clear(); + } + + /// + /// ì§€ì •ëœ ì‹œê°„ê°’ì´ í˜„ìž¬ 존재하는가? + /// + /// int64 : time value + /// + public Boolean ExistTime(Int64 _value) + { + // if (Time.Count < 1) return false; + + return Time.Select(t => t.Value).ToList().Contains(_value); + //for (int i = 1; i <= Time.Count; i++) + //{ + // if (_value == Time[i - 1].Value) return true; + //} + //return false; + } + + public void ScaleFitX() + { + var xrange = this.RangeX; + this.Style.XV1 = xrange.min; + this.Style.XV2 = xrange.max; + this.Invalidate(); + } + public void ScaleFitY() + { + var xrange = this.RangeY; + this.Style.YV1 = xrange.min; + this.Style.YV2 = xrange.max; + this.Invalidate(); + } + public void ScaleFitXY() + { + ScaleFitX(); + ScaleFitY(); + } + + + public void Draw_channel(Graphics g, RectangleF crect, RectangleF wrect) + { + //ì§€ì •ëœ ì‹œê°„ì— ì†í•œ 타임만 취듯한다. + var rangeX = this.RangeX; + var minTime = this.Time[rangeX.min]; + var maxTime = this.Time[rangeX.max]; + + var qry = Time + .Where(t => t.Value >= Style.XV1 && t.Value <= Style.XV2) + .OrderBy(t => t.Value) + .ToDictionary(t => t.Key, t => t.Value); + + + + if (qry.Any() == false) return; + + //ì§€ì •ëœ ì‹œê°„ì˜ì—­ì˜ ìžë£Œì˜ 범위를 측정 + var time_min = qry.Min(t => t.Key); //최소시간정보 + var time_max = qry.Max(t => t.Key); //최대시간정보 + + //ê°ì±„ë„ì˜ ë°ì´í„°ë¥¼ 확ì¸í•œë‹¤(시간정보[최소~최대]ì— í¬í•¨ëœê²ƒë§Œ 표시한다) + var chlist = chinfo.Where(t => t != null && t.Show + && (t.Value.Max(s => s.Key) >= time_min && t.Value.Min(s => s.Key) <= time_max)).ToList(); + + foreach (var ch in chinfo) + { + if (ch == null || ch.Show == false) continue; + //var minX = ch.Value.Min(s => s.Key); + //var maxX = ch.Value.Max(s => s.Key); + + //해당채ë„ë‚´ì—서 ì§€ì •ëœ ì˜ì—­ì˜ ìžë£Œë§Œ 가져온다. + var valueList = ch.Value.Where(t => t.Key >= time_min && t.Key <= time_max).ToDictionary(t => t.Key, t => t.Value); + if (valueList.Any() == false) continue; + + List linearrya = new List(0); + + Single PreX = 0; + Single PreY = 0; + Boolean fc1 = false, fc2 = false; + int idx = 0; + + //ì €ìž¥ëœ ëª¨ë“  ê°’ì„ ì¶œë ¥í•œë‹¤. + foreach (var cdata in valueList) + { + //시간정보는 ë™ì¼í•˜ë‹¤ë©´ 조회하지 않게한다. + var time = qry[cdata.Key]; + var volt = cdata.Value; + + //좌표계산 + Single newx = GetXfromTime(time, crect) - 1; + Single newy = GetYfromVolt(volt, crect) - 1; + + //ì»¤ì„œê°’í™•ì¸ + foreach (CUserCursor cs in uc) + { + if (cs.Idx == 0 && time >= cs.Time && fc1 == false) + { + if (volt > 60) ch.C1value = "OVER"; + else ch.C1value = volt.ToString(); + fc1 = true; + } + else if (cs.Idx == 1 && time >= cs.Time && fc2 == false) + { + if (volt > 60) ch.C2value = "OVER"; + else ch.C2value = volt.ToString(); + fc2 = true; + } + } + + //너무가까운ë°ì´í„°ëŠ” 그리지 않는다. + //if (Math.Abs(newx - PreX) < 1 && Math.Abs(newy - PreY) < 1) + //{ + // //Console.WriteLine("SKip Pixel"); + // continue; + //} + //else + //{ + PreX = newx; + PreY = newy; + //} + + if (newx >= wrect.Left && newx <= wrect.Left + wrect.Width) //yì¶•ì€ êµ¬ë¶„ì—†ì´ ëª¨ë‘ ê·¸ë¦¬ê²Œí•œë‹¤. + linearrya.Add(new PointF(newx, newy)); + + if (Style.Show_DataPoint) + { + var size = 2; + g.FillEllipse(new SolidBrush(Color.FromArgb(180, ch.Color)), new RectangleF(newx - size, newy - size, size * 2, size * 2)); + g.DrawEllipse(Pens.Black, new RectangleF(newx - size, newy - size, size * 2, size * 2)); + } + + + idx += 1; + + } + if (linearrya.Count > 1) + g.DrawLines(new Pen(ch.Color, 10), linearrya.ToArray()); + } + } + + public void Draw_ZoomSelect(Graphics g) + { + //사용ìžì¤Œì˜ì—­í‘œì‹œ + if (this.UserZoom.Width != 0) + { + int x, y, w, h; + + w = Math.Abs(UserZoom.Width); + h = Math.Abs(UserZoom.Height); + + if (UserZoom.Width > 0) x = UserZoom.Left; + else x = UserZoom.Width + UserZoom.Left; + + if (UserZoom.Height > 0) y = UserZoom.Top; + else y = UserZoom.Height + UserZoom.Top; + + //Yì¶• ì¤Œì„ ì‚¬ìš©í•˜ì§€ 않으므로 높ì´ë¶€ë¶„ì€ ëª¨ë‘로 처리한다. + if (!Style.UseZoomY) + { + y = (int)ChartRect.Top; + h = (int)ChartRect.Height; + } + + Rectangle rect = new Rectangle(x, y, w, h); + + Int64 startx = GetTimeFromX(rect.Left - this.ChartRect.Left, ChartRect); //줌ì˜ì—­ì˜ 시작시간정보 + Int64 endx = GetTimeFromX(rect.Left + rect.Width - ChartRect.Left, ChartRect); //줌ì˜ì—­ì˜ 종료시간정보 + + Single starty = (Single)GetVoltfromY(rect.Top, ChartRect); + Single endy = (Single)GetVoltfromY(rect.Top + rect.Height, ChartRect); + + String ZommMsg = ""; + + //ì„ íƒëœ ì˜ì—­ Drawing + TimeSpan zoomts = DateTime.FromFileTime(startx) - DateTime.FromFileTime(endx); + if (Math.Abs(zoomts.TotalSeconds) >= Style.MaxZoomX && Math.Abs(starty - endy) >= Style.MaxZoomY && rect.Width > 20) //150224 줌ì˜ì—­ìžì²´ì˜ í¬ê¸°ëŠ” 10px를 넘ë„ë¡ + { + //ì‹œê°„ì€ ìµœì†Œ1ë¶„ , ì „ì••ê°’ì€ ìµœì†Œ 1v + g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Lime)), rect); + ZommMsg = Math.Abs(zoomts.TotalSeconds).ToString("N0") + Style.UnitX; + } + else + { + g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Red)), rect); + + if (rect.Width <= 20) + { + ZommMsg = "줌 ì„ íƒì˜ì—­ì„ 넓게 지정하세요"; + } + else + { + if (Math.Abs(zoomts.TotalSeconds) < Style.MaxZoomX) + { + ZommMsg = "ì¤Œì„ í™œì„±í™” 하려면 최소(" + Style.MaxZoomX.ToString() + Style.UnitX + "ì˜ êµ¬ê°„ì„ ì„ íƒí•´ì•¼í•©ë‹ˆë‹¤"; + } + else + { + ZommMsg = "ì¤Œì„ í™œì„±í™” 하려면 최소(" + Style.MaxZoomY.ToString() + Style.UnitY + "ì˜ êµ¬ê°„ì„ ì„ íƒí•´ì•¼í•©ë‹ˆë‹¤"; + } + } + + } + + g.DrawRectangle(Pens.Black, rect); + + //시간정보 Display + g.DrawString(GetTimeStr(startx, true, true) + "," + (Style.Y2 - starty).ToString("#0.00") + Style.UnitY, this.Font, Brushes.Black, rect.Left, rect.Top); + String fontstr = GetTimeStr(endx, true, true) + "," + (Style.Y2 - endy).ToString("#0.00") + Style.UnitY; + SizeF fontsize = g.MeasureString(fontstr, this.Font); + g.DrawString(fontstr, this.Font, Brushes.Black, rect.Left - 5 + rect.Width - fontsize.Width, rect.Top + rect.Height - fontsize.Height); + + if (ZommMsg != "") + DrawString(g, ZommMsg, this.Font, Brushes.Black, new PointF(rect.Left + rect.Width / 2, rect.Top + rect.Height / 2), EALIGN.CENTER, EALIGN.CENTER); + + } + } + + /// + /// í™”ë©´ì˜ ì¢Œ,ìš° ì¸¡ì— ì¡´ìž¬í•˜ëŠ” ì´ëˆë²„튼(ì›”ì„ ì›€ì§ì´ëŠ” 버튼ì´ë©° ì›” ì´ë™ì„위해서 ì´ë²¤íŠ¸ë¥¼ ë°œìƒí•œë‹¤) + /// + /// + //public void Draw_NaviLR(Graphics G, RectangleF crect) + //{ + // return; + + // //LEFT NAVI + // Single x, y, xw = 30; + // x = crect.Left - 3; + // y = crect.Top + crect.Height / 2 - xw / 2; + + // PointF[] aa = new PointF[4]; + // aa[0] = new PointF(x, y); + // aa[1] = new PointF(x - xw, y + xw); + // aa[2] = new PointF(x, y + xw + xw); + // aa[3] = new PointF(x, y); + + // PointF[] aa1 = new PointF[4]; + // aa1[0] = new PointF(x + 2, y + 2); + // aa1[1] = new PointF(x + 2 - xw, y + xw + 2); + // aa1[2] = new PointF(x + 2, y + xw + xw + 2); + // aa1[3] = new PointF(x + 2, y + 2); + // G.FillPolygon(Brushes.Black, aa1); + // G.FillPolygon(Brushes.DarkRed, aa); + // G.DrawPolygon(Pens.Black, aa); + + // Buttons.Add(new RectangleF(x - xw, y, xw, xw*2)); + // Buttonstag.Add("LBUTTON"); + // Buttonstype.Add(EBUTTONTYPE.LEFTMON); + + // //RIGHT NAVI + // x = crect.Left + crect.Width + 3; + // y = crect.Top + crect.Height / 2 - xw / 2; + + // aa = new PointF[4]; + // aa[0] = new PointF(x, y); + // aa[1] = new PointF(x + xw, y + xw); + // aa[2] = new PointF(x, y + xw + xw); + // aa[3] = new PointF(x, y); + + // aa1 = new PointF[4]; + // aa1[0] = new PointF(x + 2, y + 2); + // aa1[1] = new PointF(x + 2 + xw, y + xw + 2); + // aa1[2] = new PointF(x + 2, y + xw + xw + 2); + // aa1[3] = new PointF(x + 2, y + 2); + // G.FillPolygon(Brushes.Black, aa1); + // G.FillPolygon(Brushes.DarkRed, aa); + // G.DrawPolygon(Pens.Black, aa); + // Buttons.Add(new RectangleF(x, y, xw, xw*2)); + // Buttonstag.Add("RBUTTON"); + // Buttonstype.Add(EBUTTONTYPE.RIGHTMON); + //} + + + public String GetDateTimeStr(Int64 Filetime, Boolean linefeed) + { + DateTime TimeDate = DateTime.FromFileTime(Filetime); + String timestr = ""; + if (linefeed) timestr = TimeDate.ToShortDateString() + "\n" + TimeDate.ToShortTimeString(); //' yymm + "-" + day.ToString("00") + "\n" + hour.ToString("00") + ":" + min.ToString("00") + ":" + sec.ToString("00"); + else timestr = TimeDate.ToString();// yymm + "-" + day.ToString("00") + " " + hour.ToString("00") + ":" + min.ToString("00") + ":" + sec.ToString("00"); + + return timestr; + } + + public String GetTimeStr(Int64 Filetime, Boolean withday, Boolean withseconed, Boolean nolf = false, Boolean showyear = false) + { + if (Filetime < 0D) return "-Err-"; + + DateTime TimeDate = DateTime.FromFileTime(Filetime); + String timestr = ""; + + if (TimeDate.Second == 0 || !withseconed) + timestr = TimeDate.ToString("HH:mm");// TimeDate.Hour.ToString("00") + ":" + TimeDate.Minute.ToString("00"); + else + timestr = TimeDate.ToString("HH:mm:ss"); // hour.ToString("00") + ":" + min.ToString("00") + ":" + sec.ToString("00"); + + if (withday) + { + if (showyear) + { + timestr = TimeDate.ToString("yy-MM-dd") + " " + timestr; + } + else + { + if (nolf) timestr = TimeDate.ToString("dd") + "ì¼ " + timestr; + else timestr = timestr + "\n" + TimeDate.ToString("dd") + "ì¼"; + } + } + return timestr; + } + + /// + /// (전체시간 * 현재X) / 전체너비 + /// + /// + /// + public Int64 GetTimeFromX(Single X, RectangleF crect) + { + DateTime sd = DateTime.FromFileTime(Style.XV1); + DateTime ed = DateTime.FromFileTime(Style.XV2); + TimeSpan ts = ed - sd; + + Int64 gap = (Int64)((ts.TotalMilliseconds * X) / crect.Width); + return sd.AddMilliseconds(gap).ToFileTime(); + } + public Single GetXfromTime(Int64 t) + { + return (((this.ChartRect.Width) * (t - Style.XV1)) / (Style.XV2 - Style.XV1)) + ChartRect.Left; + } + public Single GetXfromTime(Int64 t, RectangleF crect) + { + return (((crect.Width) * (t - Style.XV1)) / (Style.XV2 - Style.XV1)) + crect.Left; + } + public Single GetVoltfromY(Single Y, RectangleF crect) + { + + return ((Style.Y2 - Style.Y1) * Y) / crect.Height; + + } + public Single GetYfromVolt(Single volt, RectangleF crect) + { + //volt = (Style._endvolt - Style._startvolt) - volt; 150223 : Yê°’ë„ X축처럼 표시변수 YV 값으로 수정함 + return (crect.Height - ((crect.Height * (volt - Style.YV1)) / (Style.YV2 - Style.YV1))) + crect.Top; + } + + private void DrawString(Graphics G, String str, Font font, Brush br, PointF ops, EALIGN XCenter = EALIGN.LEFT, EALIGN YCenter = EALIGN.LEFT) + { + SizeF fsize = G.MeasureString(str, font); + Single newx = ops.X; + Single newy = ops.Y; + + if (XCenter == EALIGN.CENTER) newx = ops.X - fsize.Width / 2; + else if (XCenter == EALIGN.RIGHT) newx = ops.X - fsize.Width; + + if (YCenter == EALIGN.CENTER) newy = ops.Y - fsize.Height / 2; + else if (YCenter == EALIGN.RIGHT) newy = ops.Y - fsize.Height; + + G.DrawString(str, font, br, newx, newy); + } + + public Boolean INIT + { + get { return this.init; } + set { this.init = value; } + } + public CChinfo[] CHInfo + { + get { return this.chinfo; } + set { this.chinfo = value; } + } + + public (uint min, uint max) RangeX + { + get + { + var min = (CHInfo.Min(t => t.Value.Where(s => s.Key > 0).Min(v => v.Key))); + var max = (CHInfo.Max(t => t.Value.Where(s => s.Key > 0).Max(v => v.Key))); + return (min, max); + } + } + public (float min, float max) RangeY + { + get + { + //100ì„ ì´ˆê³¼í•œ 범위는 제한한다 + var min = CHInfo.Min(t => t.Value.Where(s => s.Value < MaxValueY && s.Value > -MaxValueY).Min(u => u.Value)); + var max = CHInfo.Max(t => t.Value.Where(s => s.Value < MaxValueY && s.Value > -MaxValueY).Max(u => u.Value)); + return (min, max); + } + } + + + public int LegendWidth { get; set; } = 200; + public RectangleF LegendRect { get; private set; } + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + LegendWidth = 100; + this.WindowRect = new RectangleF(0, 0, this.Width, this.Height); + if (ShowLegend) + { + this.ChartRect = new RectangleF(Padding.Left, Padding.Top, + this.Width - (Padding.Left + 10) - LegendWidth - 20, + (Single)(this.Height - (Padding.Top + Padding.Bottom))); + LegendRect = new RectangleF(ChartRect.Right + 10, ChartRect.Y, LegendWidth + 10, ChartRect.Height); + } + else + { + this.ChartRect = new RectangleF(Padding.Left, Padding.Top, + this.Width - (Padding.Left + Padding.Right) - 20, + (Single)(this.Height - (Padding.Top + Padding.Bottom))); + LegendRect = RectangleF.Empty; // new RectangleF(ChartRect.Right + 20, ChartRect.Y, LegendWidth, ChartRect.Height); + + } + + int SW = this.Width; + int SH = this.Height; + if (this.Width == 0 || this.Height == 0) + { + SW = 600; + SH = 600; + } + + layer_bak = new Bitmap(SW, SH); + layer_graph = new Bitmap(SW, SH); + layer_bakT = new Bitmap(SW, SH); + layer_graphT = new Bitmap(SW, SH); + + Graphics.FromImage(layer_bak).Clear(Color.White); + Graphics.FromImage(layer_bakT).Clear(Color.White); + + Set_Refresh(); + Invalidate(); + } + + private int check_userpoint(MouseEventArgs e) + { + if (this.uc.Count == 0) return -1; + for (int i = 0; i < this.uc.Count; i++) + { + CUserCursor uuc = this.uc[i]; + + //현재위치가 해당 Rectagle 안ì´ë¼ë©´ ì†í•´ìžˆë‹¤. + if ((int)this.Mouseinfo.Position.X >= (int)uuc.Newx - 2 && (int)this.Mouseinfo.Position.X <= (int)(uuc.Newx) + 2 && this.Mouseinfo.Position.Y <= ChartRect.Top) + return i; + } + return -1; + } + + //private int check_buttons(MouseEventArgs e) + //{ + // if (this.Buttons == null) return -1; + // for (int i = 0; i < this.Buttons.Count; i++) + // { + // RectangleF rect = this.Buttons[i]; + + // //현재위치가 해당 Rectagle 안ì´ë¼ë©´ ì†í•´ìžˆë‹¤. + // if (e.X > rect.X && e.X < rect.X + rect.Width) + // { + // if (e.Y > rect.Y && e.Y < rect.Y + rect.Height) return i; + // } + // } + // return -1; + //} + + private void InitializeComponent() + { + this.SuspendLayout(); + // + // TrendCtrl + // + this.Name = "TrendCtrl"; + this.Size = new System.Drawing.Size(287, 321); + this.Load += new System.EventHandler(this.DispCtrl_Load); + this.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.TrendCtrl_MouseDoubleClick); + this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.TrendCtrl_MouseDown); + this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.TrendCtrl_MouseMove); + this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.TrendCtrl_MouseUp); + this.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.TrendCtrl_MouseWhell); + this.ResumeLayout(false); + } + + public void Graph_Reset() + { + Style.ResetXxis(); + Style.ResetYxis(); + Set_Refresh(); + Console.WriteLine("Graph : Graph_Reset"); + } + + private void TrendCtrl_MouseDown(object sender, MouseEventArgs e) + { + + + switch (e.Button) + { + case System.Windows.Forms.MouseButtons.Left: + + //드래그íŒë‹¨ì„위한 ìœ„ì¹˜ê°’ì„ ì €ìž¥í•œë‹¤. + Mouseinfo.DragStart = new PointF(e.X - this.WindowRect.Left, e.Y - WindowRect.Top); + + //화면ì´ë™ëª¨ë“œì¼ë•ŒëŠ” ì¢Œì¸¡ë²„íŠ¼ë„ ì¤‘ì•™ë²„íŠ¼ì²˜ëŸ¼ 처리해야한다. + if (ScreenMove) + { + //Xì¶• ì¤Œì„ ì‚¬ìš©í•œê²½ìš°ì—ë§Œ 가능하게 한다. + if (Style.UseZoomX) + { + //아무것ë„없는 빈공간ì´ë¼ë©´ 화면ì´ë™(=줌시작)으로 대체한다. + if (e.X >= ChartRect.Left && e.X <= ChartRect.Left + ChartRect.Width && e.Y >= ChartRect.Top && e.Y <= ChartRect.Top + ChartRect.Height) + { + if (Style.XV2 == Style.X2 && Style.XV1 == Style.X1) + { + //ë°ì´í„°ì˜ì—­ê³¼ 표시ì˜ì—­ì´ ë™ì¼í•˜ë‹¤(ì´ë™í•  ì˜ì—­ì´ 없는경우ì´ë‹¤) + Mouseinfo.DragType = EDRAGTYPE.NONE; + } + else + { + //ì´ë™í• ì˜ì—­ì´ 존재하므로 ì´ë™ì‹œí‚¨ë‹¤. + Mouseinfo.DragType = EDRAGTYPE.SCREEN; + this.UserZoom = new Rectangle(0, 0, 0, 0); + } + } + } + } + else + { + + //사용ìží¬ì¸íŠ¸ê´€ë ¨ + int idx = check_userpoint(e); + if (idx != -1) + { + Mouseinfo.DragType = EDRAGTYPE.UC; + Mouseinfo.DragIndex = idx; + return; + } + + //아무것ë„없는 빈공간ì´ë¼ë©´ 화면ì´ë™(=줌시작)으로 대체한다. + if (idx == -1 && e.X >= ChartRect.Left && e.X <= ChartRect.Left + ChartRect.Width && e.Y >= ChartRect.Top && e.Y <= ChartRect.Top + ChartRect.Height) + { + //ì¢Œì¸¡ë²„íŠ¼ì€ í•­ìƒ ì¤Œì˜ì—­ì„ 활성화한다 + if (Style.UseZoomX) + { + Mouseinfo.DragType = EDRAGTYPE.ZOOM; + this.UserZoom = new Rectangle(e.X, e.Y, 0, 0); + } + else + { + //ì¤Œì„ ì‚¬ìš©í•˜ì§€ 않기로 하여 ㅆ다면? + Mouseinfo.DragType = EDRAGTYPE.NONE; + } + } + } + + break; + + case System.Windows.Forms.MouseButtons.Middle: + + //Xì¶• ì¤Œì„ ì‚¬ìš©í•œê²½ìš°ì—ë§Œ 가능하게 한다. + if (Style.UseZoomX) + { + //아무것ë„없는 빈공간ì´ë¼ë©´ 화면ì´ë™(=줌시작)으로 대체한다. + if (e.X >= ChartRect.Left && e.X <= ChartRect.Left + ChartRect.Width && e.Y >= ChartRect.Top && e.Y <= ChartRect.Top + ChartRect.Height) + { + if (Style.XV2 == Style.X2 && Style.XV1 == Style.X1) + { + //ë°ì´í„°ì˜ì—­ê³¼ 표시ì˜ì—­ì´ ë™ì¼í•˜ë‹¤(ì´ë™í•  ì˜ì—­ì´ 없는경우ì´ë‹¤) + Mouseinfo.DragType = EDRAGTYPE.NONE; + } + else + { + //ì´ë™í• ì˜ì—­ì´ 존재하므로 ì´ë™ì‹œí‚¨ë‹¤. + Mouseinfo.DragType = EDRAGTYPE.SCREEN; + this.UserZoom = new Rectangle(0, 0, 0, 0); + } + } + } + + break; + + case System.Windows.Forms.MouseButtons.Right: // 줌 초기화 + // if (Message != null) Message("줌ì˜ì—­ì„ 초기화합니다"); + Style.XV1 = Style.XV1o; + Style.XV2 = Style.XV2o; + Style.Y1 = Style.YV1o; + Style.Y2 = Style.YV2o; + Set_Refresh(); //전체화면용 ë°ì´í„°ë¥¼ 바로 사용하면ëœë‹¤) + + Console.WriteLine("Mouse R Click : REFRESH"); + Refresh(); + //if(Message != null) Message(""); + break; + + } + } + + private void TrendCtrl_MouseMove(object sender, MouseEventArgs e) + { + //ë§ˆìš°ìŠ¤ì˜ ìœ„ì¹˜ê°€ 실시간 저장ëœë‹¤. + if (this.Mouseinfo == null) this.Mouseinfo = new CMouseinfo(new PointF(e.X - this.WindowRect.Left, e.Y - this.WindowRect.Top)); + else this.Mouseinfo.Position = new PointF(e.X - this.WindowRect.Left, e.Y - this.WindowRect.Top); + + this.Mouseinfo.Time = GetTimeFromX(Mouseinfo.Position.X - ChartRect.Left, ChartRect); // +this.startview; + this.Mouseinfo.Volt = this._Style.Y2 - GetVoltfromY(Mouseinfo.Position.Y - ChartRect.Top, ChartRect); + this.Mouseinfo.Showinfo = false; + + //MouseStatus initialize... + Mouseinfo.Hand = false; + Mouseinfo.Cross = false; + Mouseinfo.Move = false; + Mouseinfo.ChangePos = false; + + // + if (e.X >= ChartRect.X && e.X <= ChartRect.X + ChartRect.Width) + if (e.Y >= ChartRect.Top && e.Y <= ChartRect.Top + ChartRect.Height) Mouseinfo.Showinfo = true; + else Mouseinfo.Showinfo = false; + + //ì´ë™ì¤‘ì¸ë° 마우스가 눌려있다면 DRAG다 + if (e.Button == MouseButtons.Left) Mouseinfo.Drag = true; + else Mouseinfo.Drag = false; + + + if (Mouseinfo.Drag) //드래그중ì´ë‹¤ + { + Mouseinfo.Move = true; //화면ì´ë™ìœ¼ë¡œ + } + else + { + if (e.X >= ChartRect.Left && e.X <= ChartRect.Left + ChartRect.Width) + { + if (e.Y >= ChartRect.Top && e.Y <= ChartRect.Top + ChartRect.Height) + { + Mouseinfo.Cross = true; //화면내부ë¼ë©´ í¬ë¡œìФ + } + else Mouseinfo.Cross = false; + } + else Mouseinfo.Cross = false; + } + + //사용ìží¬ì¸í„°ìœ„ë¼ë©´? + int idx = this.check_userpoint(e); + if (idx != -1) + { + Mouseinfo.Cross = false; + Mouseinfo.Hand = false; + Mouseinfo.Drag = false; + Mouseinfo.ChangePos = true; + Mouseinfo.DragType = EDRAGTYPE.UC; + } + + //드래그중íŒë‹¨ + if (Mouseinfo.Drag) + { + switch (Mouseinfo.DragType) + { + case EDRAGTYPE.NONE: + break; + case EDRAGTYPE.UC: + Single newx = (e.X); + Int64 newtime = GetTimeFromX(newx - ChartRect.Left, ChartRect); + if (Mouseinfo.DragIndex < uc.Count) + { + //ë°ì´í„°ê°€ 없는경우ì´ë‹¤. + this.uc[Mouseinfo.DragIndex].Newx = newx; + this.uc[Mouseinfo.DragIndex].Time = newtime; + } + break; + case EDRAGTYPE.ZOOM: + this.UserZoom.Width = (int)(e.X - WindowRect.X - Mouseinfo.DragStart.X); + if (Key_Control || Style.UseZoomY) //ì»¨íŠ¸ë¡¤ì´ ëˆŒë ¤ì ¸ìžˆë‹¤ë©´ ì¤Œì„ ì‚¬ìš©í•œë‹¤. + { + this.UserZoom.Height = (int)(e.Y - WindowRect.Y - Mouseinfo.DragStart.Y); + } + else + { + this.UserZoom.Height = (int)ChartRect.Height;// (int)(e.Y - Mouseinfo.DragStart.Y - ChartRect.Left); + } + + if (Mouseinfo.Cross) this.Cursor = Cursors.Cross; + break; + case EDRAGTYPE.SCREEN: + + if (Mouseinfo.Move) + { + this.Cursor = Cursors.NoMove2D; + Mouseinfo.Showinfo = false; + } + + + //ì´ë™í•œpixcelì„ ì‹œê°„ì •ë³´ë¡œ 변환한다. + //현재마우스위치값 - ë“œëž˜ê·¸ì‹œìž‘ë§ˆìš°ìŠ¤ìœ„ì¹˜ê°’ì„ ëº¸ í”½ì…€ì„ ì´ˆë¡œí™˜ì‚°í•œë‹¤. + Single term = Mouseinfo.DragStart.X - Mouseinfo.Position.X; //양수ë¼ë©´ 오른쪽으로 ì´ë™í–ˆë‹¤. + TimeSpan termtime = DateTime.FromFileTime(GetTimeFromX(Mouseinfo.Position.X, ChartRect)) - DateTime.FromFileTime(GetTimeFromX(Mouseinfo.DragStart.X, ChartRect)); + + + Int64 NewSD = DateTime.FromFileTime(Style.XV1).AddSeconds(-1 * termtime.TotalSeconds).ToFileTime();// + (int)mstime; + Int64 NewED = DateTime.FromFileTime(Style.XV2o).AddSeconds(-1 * termtime.TotalSeconds).ToFileTime(); //endviewo + (int)mstime; + + //해당 시간ì˜ì—­ì˜ ì „ì²´ ë°ì´í„° ì˜ì—­ì— 들어있어야 ì´ë™ì´ 가능하다 + if ((NewSD > Style.X1 && NewED < Style.X2)) + { + Style.XV1 = NewSD; + Style.XV2 = NewED; + + //yì¶• 사용시ì—ë§Œ 설정ë˜ê²Œí•œë‹¤. + if (Key_Control || Style.UseZoomY) + { + Single termy = Mouseinfo.Position.Y - Mouseinfo.DragStart.Y - ChartRect.Top; + Single termvolt = GetVoltfromY(termy, ChartRect); + Single mvolt = termvolt; + + Single SV = Style.YV1o + mvolt; + Single EV = Style.YV2o + mvolt; + + Style.YV1 = SV; + Style.YV2 = EV; + + + } + Mouseinfo.DragStart = Mouseinfo.Position; //현재위치부터 드래그가 다시ë˜ë„ë¡ + Set_Refresh(); + } + + + break; + } + } + else + { + if (Mouseinfo.Hand) this.Cursor = Cursors.Hand; + if (Mouseinfo.Cross) this.Cursor = Cursors.Cross; + if (Mouseinfo.ChangePos) this.Cursor = Cursors.SizeWE; + } + + this.Refresh(); + } + + + public void Graph_Left(int perc) + { + DateTime newStartview = DateTime.FromFileTime(this.Style.XV1); + DateTime newEndview = DateTime.FromFileTime(this.Style.XV2); + TimeSpan term = newEndview - newStartview; + DateTime NewStart = newStartview.AddMinutes(-1 * (term.TotalMinutes / perc)); + DateTime NewEnd = newEndview.AddMinutes(-1 * (term.TotalMinutes / perc)); + if (NewStart < DateTime.FromFileTime(Style.X1)) return; + this.Style.XV1 = NewStart.ToFileTime(); + this.Style.XV2 = NewEnd.ToFileTime(); + Set_Refresh(); + Refresh(); + Console.WriteLine("Graph : Graph_Left"); + } + + public void Graph_Right(int perc) + { + DateTime newStartview = DateTime.FromFileTime(this.Style.XV1); + DateTime newEndview = DateTime.FromFileTime(this.Style.XV2); + TimeSpan term = newEndview - newStartview; + DateTime NewStart = newStartview.AddMinutes(term.TotalMinutes / perc); + DateTime NewEnd = newEndview.AddMinutes(term.TotalMinutes / perc); + if (NewEnd > DateTime.FromFileTime(Style.X2)) return; + this.Style.XV1 = NewStart.ToFileTime(); + this.Style.XV2 = NewEnd.ToFileTime(); + Set_Refresh(); + Refresh(); + Console.WriteLine("Graph : Graph_Right"); + } + + /// + /// 현재 ê·¸ëž˜í”„ì˜ Yì¶• 좌표ì˜ì—­ì„ 10% 위로 ì´ë™í•©ë‹ˆë‹¤. + /// + public void Graph_Up() + { + Single v = (Style.YV2 - Style.YV1) / 10; + Style.YV2 -= v; + Style.YV1 -= v; + Set_Refresh(); + Refresh(); + Console.WriteLine("Graph : Graph_Up"); + } + + /// + /// 현재 ê·¸ëž˜í”„ì˜ Yì¶• 좌표ì˜ì—­ì„ 10% 아래로 ì´ë™í•©ë‹ˆë‹¤. + /// + public void Graph_Down() + { + Single v = (Style.YV2 - Style.YV1) / 10; + Style.YV2 += v; + Style.YV1 += v; + Set_Refresh(); + Refresh(); + Console.WriteLine("Graph : Graph_Down"); + } + + + /// + /// 현재 ê·¸ëž˜í”„ì˜ Yì¶• 좌표ì˜ì—­ì„ 10% 확대합니다. + /// + public void Graph_ZoomInY() + { + Single v = (Style.YV2 - Style.YV1) / 10; + Style.YV2 -= v; + Style.YV1 += v; + Set_Refresh(); + Refresh(); + Console.WriteLine("Graph : Graph_ZoomInY"); + } + + /// + /// 현재 ê·¸ëž˜í”„ì˜ Yì¶• 좌표ì˜ì—­ì„ 10% 축소합니다. + /// + public void Graph_ZommOutY() + { + Single v = (Style.YV2 - Style.YV1) / 10; + Style.YV2 += v; + Style.YV1 -= v; + Set_Refresh(); + Refresh(); + Console.WriteLine("Graph : Graph_ZommOutY"); + } + + + public void ZoomIN() + { + DateTime newStartview = DateTime.FromFileTime(this.Style.XV1); + DateTime newEndview = DateTime.FromFileTime(this.Style.XV2); + TimeSpan term = newEndview - newStartview; + DateTime NewStart = newStartview.AddMinutes(term.TotalMinutes / 20); + DateTime NewEnd = newEndview.AddMinutes(-1 * (term.TotalMinutes / 20)); + if (NewStart >= DateTime.FromFileTime(Style.X2).AddMinutes(-10)) NewStart = DateTime.FromFileTime(Style.X2).AddMinutes(-10); + if (NewEnd <= DateTime.FromFileTime(Style.X1).AddMinutes(10)) NewEnd = DateTime.FromFileTime(Style.X1).AddMinutes(10); + Style.XV1 = NewStart.ToFileTime(); + this.Style.XV2 = NewEnd.ToFileTime(); + Set_Refresh(); + Refresh(); + Console.WriteLine("Graph : ZoomIN"); + } + + public void ZoomOUT() + { + DateTime newStartview = DateTime.FromFileTime(Style.XV1); + DateTime newEndview = DateTime.FromFileTime(Style.XV2); + TimeSpan term = newEndview - newStartview; + DateTime NewStart = newStartview.AddMinutes(-1 * (term.TotalMinutes / 20)); + DateTime NewEnd = newEndview.AddMinutes(term.TotalMinutes / 20); + if (newStartview < DateTime.FromFileTime(Style.X1)) NewStart = DateTime.FromFileTime(Style.X1); + if (newEndview > DateTime.FromFileTime(Style.X2)) NewEnd = DateTime.FromFileTime(Style.X2); + Style.XV1 = NewStart.ToFileTime(); + Style.XV2 = NewEnd.ToFileTime(); + Set_Refresh(); + Refresh(); + Console.WriteLine("Graph : ZoomOUT"); + } + + private void TrendCtrl_MouseWhell(object sender, MouseEventArgs e) + { + if (Key_Control) + { + //온ë„ì¶• 변경(Y) + Single news, newe; + + news = Style.Y2; + newe = Style.Y1; + + Single TimerTerm = newe - news; + + if (e.Delta > 0) + { + //확대 + news = news + (TimerTerm / 10); + newe = newe + (-1 * (TimerTerm / 10)); + } + else + { + //축소(down) + news = news + (-1 * (TimerTerm / 10)); + newe = newe + (1 * (TimerTerm / 10)); + } + + if (news > 400) news = 400; + if (news < -200) news = -200; + + + Style.Y2 = news; + Style.Y1 = newe; + } + else + { + //시간축 변경(X) + DateTime news, newe; + + news = DateTime.FromFileTime(Style.XV1); + newe = DateTime.FromFileTime(Style.XV2); + + TimeSpan TimerTerm = newe - news; + + if (e.Delta > 0) + { + //확대 + if (TimerTerm.TotalSeconds < Style.MaxZoomX) return; + news = news.AddSeconds(TimerTerm.TotalSeconds / 10); + newe = newe.AddSeconds(-1 * (TimerTerm.TotalSeconds / 10)); + } + else + { + //축소(down) + news = news.AddSeconds(-1 * (TimerTerm.TotalSeconds / 10)); + newe = newe.AddSeconds(1 * (TimerTerm.TotalSeconds / 10)); + } + + if (news > DateTime.FromFileTime(Style.X2)) news = DateTime.FromFileTime(Style.X2); + if (news < DateTime.FromFileTime(Style.X1)) news = DateTime.FromFileTime(Style.X1); + if (newe > DateTime.FromFileTime(Style.X2)) newe = DateTime.FromFileTime(Style.X2); + if (newe < DateTime.FromFileTime(Style.X1)) newe = DateTime.FromFileTime(Style.X1); + + if (news < DateTime.FromFileTime(Style.X1) || newe > DateTime.FromFileTime(Style.X2)) + { + //MessageBox.Show("ë°ì´í„°ê°€ 없으므로 ì¤Œì„ ì‚¬ìš©í•  수 없습니다"); + } + else + { + Style.XV1 = news.ToFileTime(); + Style.XV2 = newe.ToFileTime(); + Style.XV1 = news.ToFileTime(); + Style.XV2o = newe.ToFileTime(); + } + + } + + this.Set_Refresh(); + this.Refresh(); + Console.WriteLine("Graph : Mouse Wheel"); + } + + private void TrendCtrl_MouseUp(object sender, MouseEventArgs e) + { + Mouseinfo.Drag = false; + if (Mouseinfo.DragType == EDRAGTYPE.UC) + { + Refresh_Grpah = true; //ë‹¤ì‹œê°’ì„ ê³„ì‚°í•˜ë ¤ë©´ 실행해야함 + this.Refresh(); + Console.WriteLine("Graph : MouseUp1"); + + if (OnUpdateUserCursor != null) + OnUpdateUserCursor(Mouseinfo.DragIndex); + } + else + { + if (UserZoom.Width != 0 && e.Button == System.Windows.Forms.MouseButtons.Left) //줌ì˜ì—­ì´ 있다면 ì¤Œì„ í™œì„±í™”í•œë‹¤. + { + int x1, x2, y1, y2; + + x1 = UserZoom.Left; + x2 = UserZoom.Left + UserZoom.Width; + + if (!Style.UseZoomY) + { + y1 = (int)ChartRect.Top; + y2 = (int)ChartRect.Bottom; + } + else + { + y1 = UserZoom.Top; + y2 = UserZoom.Bottom; + } + + + Int64 startx = GetTimeFromX(x1 - ChartRect.Left, ChartRect); + Int64 endx = GetTimeFromX(x2 - ChartRect.Left, ChartRect); + + Single endy = Style.Y2 - GetVoltfromY(y1 - ChartRect.Top, ChartRect); + Single starty = Style.Y2 - GetVoltfromY(y2 - ChartRect.Top, ChartRect); + + if (endx < startx) //êµí™˜ + { + Int64 t = startx; + startx = endx; + endx = t; + } + + if (endy < starty) //êµí™˜ + { + Single t = starty; + starty = endy; + endy = t; + } + + TimeSpan tst = DateTime.FromFileTime(endx) - DateTime.FromFileTime(startx); + Single VoltTerm = endy - starty; + if (tst.TotalSeconds >= Style.MaxZoomX && VoltTerm >= Style.MaxZoomY && UserZoom.Width > 20) //보기ì˜ì—­ì´ 5초는 넘어야 ì¤Œì´ ê°€ëŠ¥í•œë‹¤. + { + this.Style.XV1 = startx; + this.Style.XV2 = endx; + + this.Style.YV1 = starty;// +this.Style.최소값; + this.Style.YV2 = endy;// +this.Style.최대값; + + UserZoom.Width = 0; + Set_Refresh(); + this.Refresh(); + Console.WriteLine("Graph : MouseUp2"); + } + else + { + UserZoom.Width = 0; + Set_Refresh(); + this.Refresh(); + Console.WriteLine("Graph : MouseUp3"); + } + } + } + } + + private void TrendCtrl_MouseDoubleClick(object sender, MouseEventArgs e) + { + ////마우스ë”블í´ë¦­ + //int idx = check_userpoint(e); + //if (idx != -1) + //{ + // //삭제한다. + // uc.Remove(uc[Mouseinfo.DragIndex]); + // if (uc.Count == 1) + // { + // uc[0].Idx = 0; + // foreach (CChinfo c in this.chinfo) + // { + // c.C2value = ""; + // } + // } + + // Refresh_Grpah = true; //다시갱신해야 ê°’ì´ ê³„ì‚°ë¨ + // this.Refresh(); + + // if(OnUpdateUserCursor != null) + // OnUpdateUserCursor(Mouseinfo.DragIndex); + + // return; + //} + + //if (e.Button == System.Windows.Forms.MouseButtons.Left) + //{ + // if (this.uc.Count < 2) + // { + // Single newx = GetXfromTime(Mouseinfo.Time, ChartRect); + // this.uc.Add(new CUserCursor((short)this.uc.Count, Mouseinfo.Time, newx)); + + // Refresh_Grpah = true; //다시갱신해야 ê°’ì´ ê³„ì‚°ë¨ + // this.Refresh(); + + // if (OnUpdateUserCursor != null) + // OnUpdateUserCursor(this.uc.Count); + // } + + //} + + } + + + private void DispCtrl_Load(object sender, EventArgs e) + { + + } + + + + } //end class + +} //end namespace \ No newline at end of file diff --git a/TrendCtrlII/TrendCtrlII.cs.bak b/TrendCtrlII/TrendCtrlII.cs.bak new file mode 100644 index 0000000..026ffff --- /dev/null +++ b/TrendCtrlII/TrendCtrlII.cs.bak @@ -0,0 +1,1196 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Text; +using System.Windows.Forms; +using System.Drawing.Drawing2D; + +namespace TrendCtrlII +{ + public enum EDRAGTYPE + { + SCREEN, + ZOOM, + UC + } + + public enum EBUTTONTYPE + { + LEFTMON, + RIGHTMON + } + + public enum EALIGN + { + LEFT, + CENTER, + RIGHT + } + + public partial class TrendCtrlII : UserControl + { + private ChartStyle _Style = new ChartStyle(); + public CMouseinfo Mouseinfo; //마우스위치정보 + + public string yymm; + private Int64 starttime; + private Int64 endtime; + + //zoom area + private Int64 startview; //zoom 시작시간 + private Int64 endview; //zoom 종료시간 + public Int64 startviewo; //zoom 시작시간 + public Int64 endviewo; //zoom 종료시간 + public Int64 querystart; + public Int64 queryend; + + public Single LineWidth = 1; + private Rectangle UserZoom; //사용ìžì¤Œì˜ì—­ + + //실값 + public Single[] values; + public int[] times; + private CChinfo[] chinfo; + + private Rectangle Cursorrect; + + //화면ìƒì˜ 버튼ë°ì´í„° + //private List Buttons = new List(0); + //private List Buttonstag = new List(0); + //private List Buttonstype = new List(0); + + private Boolean init; //그리드초기화완료여부 + public String initmsg = "initializing..."; + public int initpercent = 0; + + public List uc = new List(0); //사용ìžì»¤ì„œ 최대2개까지한다. + + //미정리 + + //MY EVENT + //public event OnClickProbeSensorHandlerL OnClickLEFT; //ì…€í´ë¦­ + //public delegate void OnClickProbeSensorHandlerL(); + //public event OnClickProbeSensorHandlerR OnClickRIGHT; //ì…€í´ë¦­ + //public delegate void OnClickProbeSensorHandlerR(); + public event OnUpdateUserControlHandler OnUpdateUserCursor; //UPDATE USER CURSOR + public delegate void OnUpdateUserControlHandler(int idx); + + + //화면디ìžì¸ê´€ë ¨ + private Cursor cursor = Cursors.Default; //현재커서ì˜ëª¨ì–‘ + + private StringBuilder Warn_msg = new StringBuilder(""); //경고메세지(화면 최ìƒë‹¨ì¤‘ì•™ì— í‘œì‹œë¨) + private Font Warn_Font; + + //기타설정' + public RectangleF WindowRect; //머릿부분 + public RectangleF ChartRect; + + + public TrendCtrlII() + { + InitializeComponent(); + + // Initialize Variables + + // Set Optimized Double Buffer to reduce flickering + this.SetStyle(ControlStyles.UserPaint, true); + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); + + // Redraw when resized + this.SetStyle(ControlStyles.ResizeRedraw, true); + + this.Font = SystemInformation.MenuFont; + this.Warn_Font = new Font("나눔고딕", 20, FontStyle.Bold); + this.Warn_msg.Append("메세지가 없습니다"); + this.Mouseinfo = new CMouseinfo(new PointF(0, 0)); + + } + + public ChartStyle Style + { + get { return this._Style; } + set { this._Style = value; } + } + + /// + /// Draws the background gradient and the grid into Graphics + /// + /// Graphic + public void DrawBackgroundWindow(Graphics g,RectangleF crect,RectangleF winrect) + { + //using (Brush gradientBrush = new LinearGradientBrush(this.WindowRect, Style.design_backcolor_start, Style.design_backcolor_bottom, LinearGradientMode.Vertical)) + //{ + // g.FillRectangle(gradientBrush, this.WindowRect); + //} + //g.FillRectangle(Brushes.Black, this.WindowRect); + + //ì „ì²´ì°½ì—대한 ë³´ë” + RectangleF borderrect = new RectangleF(winrect.Left, winrect.Top, winrect.Width - 1, winrect.Height - 1); + g.DrawRectangle(Pens.Gray, borderrect.Left, borderrect.Top, borderrect.Width, borderrect.Height); + + + //실제차트정보 + //g.FillRectangle(Brushes.Gray, ChartRect.Left + 2, ChartRect.Top + 2, ChartRect.Width, ChartRect.Height); + //g.FillRectangle(Brushes.Black, ChartRect); + + + //Display Collection TIME + //String Str = "Collection Time : " + GetDateTimeStr(startview, false) + " - " + GetDateTimeStr(endview, false); + //SizeF fontszie = g.MeasureString(Str, this.Font); + //// Rectangle rect = new Rectangle((int)winrect.Left, (int)winrect.Top, (int)winrect.Width, (int)(fontszie.Height * 2)); + // g.DrawString(Str, this.Font, Brushes.Black, rect.Left + 10, 3+rect.Top + (rect.Height - fontszie.Height) / 2); + // //g.DrawLine(Pens.Black, winrect.Left, fontszie.Height * 2, winrect.Left + winrect.Width, fontszie.Height * 2); + + //CHART BORDER + g.DrawRectangle(new Pen(Color.Black, 2), crect.Left, crect.Top, crect.Width, crect.Height); + + } + + /// Override OnPaint method + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + this.SuspendLayout(); + + //Buttons.Clear(); + //Buttonstag.Clear(); + //Buttonstype.Clear(); + //윈ë„ìš°í¬ê¸°ì™€ 차트ì˜ì—­ì„ 활성화한다. + + //표시아ì´í…œì´ì—†ë‹¤ë©´ 오류를 낸다. + if ( !init || chinfo == null) + { + //progress + int bw = (int)(this.Width * 0.8); + int bh = (int)(this.Height * 0.05); + Rectangle rr = new Rectangle((this.Width - bw) / 2, (this.Height - bh) / 2 + 10, bw, bh); + + //Display Initial Message + Font nf = new Font("나눔고딕", 20, FontStyle.Bold); + Rectangle FullRect = new Rectangle(0, 0, this.Width, this.Height); + SizeF initsize = e.Graphics.MeasureString(initmsg, nf); + e.Graphics.DrawString(initmsg, nf, Brushes.Black, this.Width / 2 - initsize.Width / 2, this.Height / 2 - initsize.Height / 2 - bh); + + //Display progress Bar + if (initpercent > 100) initpercent = 100; + int perc = (int)(rr.Width * initpercent / 100); + e.Graphics.FillRectangle(Brushes.Green, new Rectangle(rr.Left, rr.Top, perc, rr.Height)); + + //Display Control Border + e.Graphics.DrawRectangle(Pens.DarkGray, rr); + + //using (Brush gradientBrush = new LinearGradientBrush(FullRect, Color.Gray, Color.Gray, LinearGradientMode.Vertical)) + //{ + // + // e.Graphics.FillRectangle(gradientBrush, FullRect); + // // String initstr = "initializing..."; + // //if (initmsg != "") initstr += "\n\n" + initmsg; + //} + + //LinearGradientBrush lb = new LinearGradientBrush(rr, Color.Gray, Color.WhiteSmoke,LinearGradientMode.Vertical); + //lb.Dispose(); + //e.Graphics.DrawRectangle(Pens.DarkGoldenrod, FullRect.Left, FullRect.Top, FullRect.Width - 1, FullRect.Height - 1); + + this.ResumeLayout(); + return; + } + + + // AntiAliasing + e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; + + //e.Graphics.DrawString(this.chinfo.Length.ToString(), this.Font, Brushes.Red, 200, 200); + + try { DrawBackgroundWindow(e.Graphics, ChartRect, WindowRect); } //ì „ì²´ë°°ê²½ë° ì°¨íŠ¸ë°°ê²½ } + catch { } + + + try + { + Draw_Grid(e.Graphics, ChartRect); //xì¶•,yì¶•ì˜ ëˆˆê¸ˆê³¼ 그리드표시 + } + catch { } + //Draw_NaviLR(e.Graphics, ChartRect); + try + { + Draw_channel(e.Graphics, ChartRect, WindowRect); + } + catch { } + try + { + Draw_ZoomSelct(e.Graphics); + } + catch { } + try + { + Draw_Cursor(e.Graphics, ChartRect); + } + catch { } + try + { + Draw_MouseInfo(e.Graphics); + } + catch + { + Draw_Debug(e.Graphics); + } + + this.Update(); + this.ResumeLayout(); + } + + public void Draw_Cursor(Graphics g,RectangleF Crect ) + { + + if (this.uc.Count == 0) return; + Font cfont = new Font("나눔고딕", 10, FontStyle.Bold); + + //커서는 기본 2개를 둔다(전체사ì´ì¦ˆë¥¼ 측정하기위해서 임시로 í¬ê¸°ë¥¼ 테스트한다.) + String cursorstr = "â–¦ C1 2012-00-00- 00:00:00\nâ–¦ C1 2012-00-00- 00:00:00\nâ–¦ C1 2012-00-00- 00:00:00"; + SizeF FontSize = g.MeasureString(cursorstr.ToString(), cfont); + + //커서가표시ë ì˜ì—­ + + Cursorrect = new Rectangle(0, 0, 50,50); + Cursorrect.X = (int)(Crect.Left + Crect.Width - FontSize.Width * 1.1) - 1; + Cursorrect.Y = (int)Crect.Top + 2; + Cursorrect.Width = (int)(FontSize.Width * 1.1); + Cursorrect.Height = (int)(FontSize.Height * 1.3); + + g.FillRectangle(Brushes.Black, Cursorrect); + g.DrawRectangle(Pens.Gray, Cursorrect); + + Single newy = Cursorrect.Top + ((Cursorrect.Height - FontSize.Height)/2) ; + Single Maxwidth = 0; + + String fulltext = ""; + foreach (CUserCursor uctl in this.uc) + { + Single newx = GetXfromTime(uctl.Time, Crect); + uctl.Newx = newx; + + Single imgsizew = Properties.Resources.down_16.Width; + Single imgsizeh = Properties.Resources.down_16.Height; + + cursorstr = ("â–¦ C" + (uctl.Idx + 1).ToString() + " " + GetTimeStr((int)uctl.Time, true, true, true, true)); + + // cursorstr += uctl.Newx.ToString(); + + FontSize = g.MeasureString(cursorstr.ToString(), cfont); + if (FontSize.Width > Maxwidth) Maxwidth = FontSize.Width; + + if (uctl.Idx < 1) + { + g.DrawImage(Properties.Resources.down_16, (newx - imgsizew / 2)-1, Crect.Top - imgsizeh - 5); + //g.DrawLine(new Pen(Color.Gray, 2), newx+1, Crect.Top, newx+1, Crect.Top + Crect.Height); + g.DrawLine(new Pen(Color.Green, 1), newx, Crect.Top, newx, Crect.Top + Crect.Height); + // g.DrawString(newx.ToString() + "," + uctl.Time.ToString(), this.Font, Brushes.Red, newx, 300); + g.DrawString(cursorstr, cfont, Brushes.Lime, Cursorrect.Left + ((Cursorrect.Width - FontSize.Width) / 2), newy); + fulltext = cursorstr; + + } + else + { + cursorstr += "\n\tâ–³t " + GetTimeStr((int)Math.Abs(uctl.Time - uc[0].Time), false, true, true, false); + + g.DrawImage(Properties.Resources.down_orange, (newx - imgsizew / 2) - 1, Crect.Top - imgsizeh - 5); + //g.DrawLine(new Pen(Color.Gray, 2), newx + 1, Crect.Top, newx + 1, Crect.Top + Crect.Height); + g.DrawLine(new Pen(Color.Orange, 1), newx, Crect.Top, newx, Crect.Top + Crect.Height); + // g.DrawString(newx.ToString() + "," + uctl.Time.ToString(), this.Font, Brushes.Red, newx, 300); + g.DrawString(cursorstr, cfont, Brushes.Orange, Cursorrect.Left + ((Cursorrect.Width - FontSize.Width) / 2), newy); + if (fulltext == "") fulltext = cursorstr; + else fulltext += "\n" + cursorstr; + + } + newy += FontSize.Height + 1; + } + + FontSize = g.MeasureString(fulltext, cfont); + Cursorrect = new Rectangle((int)(ChartRect.Left + ChartRect.Width - Maxwidth), (int)ChartRect.Top, (int)Maxwidth, (int)(newy - FontSize.Height)); + } + + public void Draw_MouseInfo(Graphics g) + { + if (this.Mouseinfo.Showinfo) //마웃위치정보를 í™”ë©´ì— í‘œì‹œë¥¼ 한다. + { + String tm = GetTimeStr((int)Mouseinfo.Time, true, true,true,true) + "\n" + Mouseinfo.Volt.ToString("#0.00") + "v"; + if (Style.디버그메세지) tm += "\n" + Mouseinfo.Time.ToString(); + + SizeF tmsize = g.MeasureString(tm,Style._mouseinfofont); + + RectangleF rect = new RectangleF(Mouseinfo.Position.X + 5, Mouseinfo.Position.Y + 5, tmsize.Width+10, tmsize.Height+10); + //g.FillRectangle(new SolidBrush(Color.FromArgb(140,Color.Green)), rect); + g.DrawRectangle(Pens.Black, rect.Left, rect.Top, rect.Width, rect.Height); + + g.DrawString(tm, Style._mouseinfofont, new SolidBrush(Style.design_mouseinfocolor ), rect.Left + (rect.Width - tmsize.Width) / 2, rect.Top + (rect.Height - tmsize.Height) / 2); + } + } + + public void Draw_Grid(Graphics g,RectangleF crect) + { + + //가로(시간축)표시 + //DrawString(g, GetDateTimeStr(endview, true), Style._xfont, Brushes.Black, new PointF(crect.Left + crect.Width, crect.Top + crect.Height + 5), EALIGN.CENTER); + DateTime SDate = DateTime.FromFileTime(startview); + DateTime EDate = DateTime.FromFileTime(endview); + TimeSpan TS = EDate - SDate; //timespan + + //표시간견(10등분) + UInt32 tm = (UInt32)(TS.TotalSeconds / 10); + for (DateTime SD = SDate; SD <= EDate; SD.AddSeconds(tm) ) + { + + } + + for (Int64 i = 0; i <= (endview - startview); i += tm) + { + Int64 NewDateNumber = startview + i; + DateTime NewDate = DateTime.FromFileTime(NewDateNumber); + if (SDate.Day != NewDate.Day) + { + //ì¼ìžê°€ 바귀엇으므로 해당 ì¼ì¦¤ ì„¸ë¡œì¶•ì„ í‘œì‹œ + DateTime LineDay = DateTime.Parse(NewDate.ToString("yyyy-MM-dd 00:00:00")); + Single newx2 = GetXfromTime(LineDay.ToFileTime(), crect); + g.DrawLine(new Pen(Color.FromArgb(50, Color.Black)), newx2, crect.Top, newx2, crect.Top + crect.Height); + //Font newf = new Font("나눔고딕", 40, FontStyle.Bold); + //DrawString(g, timestr2, newf, Brushes.Black, new PointF(newx2, ChartRect.Top + ChartRect.Height - 100), EALIGN.CENTER); + SDate = NewDate; + } + + Single newx = GetXfromTime(NewDateNumber, crect); + String timestr = ""; + + if (i == 0) timestr = GetDateTimeStr(NewDateNumber, true); + else timestr = GetTimeStr(NewDateNumber, i == 0 ? true : false, false); + + timestr = NewDate.ToString("yy-MM-dd") + "\n" + NewDate.ToString("HH:mm:ss"); + + // timestr += "\n" + disptime.ToString(); + + DrawString(g, timestr, Style._xfont, Brushes.Black, new PointF(newx, crect.Top + crect.Height + 5), EALIGN.CENTER); + + if (i > 0) g.DrawLine(new Pen(Color.Gray), newx, crect.Top, newx, crect.Top + crect.Height); + } + + + //세로(VOLT)표시 + //g.DrawString("start="+Style._startvolt.ToString(), this.Font, Brushes.Red, 100, 100); + //g.DrawString("end="+Style._endvolt.ToString(), this.Font, Brushes.Red, 100, 120); + + //g.DrawString("최소="+Style.최소값.ToString(), this.Font, Brushes.Red, 100, 140); + //g.DrawString("최대="+Style.최대값.ToString(), this.Font, Brushes.Red, 100, 160); + + Single term = (Style._endvolt - Style._startvolt) / 10; + + for (Single i = Style._startvolt; i <= Style._endvolt; i += term) + { + // ì„¸ë¡œê¸¸ì´ = 10v : + Single newy = GetYfromVolt(i, crect); + if (i != 0) g.DrawLine(new Pen(Color.Gray), crect.Left, newy, crect.Left + crect.Width, newy); + + //소수ì ì—†ëŠ”ê²½ìš°ì—눈금표시한다. + DrawString(g, i.ToString("#0.00"), Style._yfont, Brushes.Black, new PointF(crect.Left - 2, newy), EALIGN.RIGHT, EALIGN.CENTER); + + + + //int disptime = i + startview; + //String timestr = GetTimeStr(disptime, i == 0 ? true : false); + + //DrawString(g, timestr, Style._xfont, Brushes.Orange, new PointF(newx, ChartRect.Top + ChartRect.Height), EALIGN.CENTER); + + //if (i > 0) g.DrawLine(new Pen(Color.FromArgb(100, Color.Red)), newx, ChartRect.Top, newx, ChartRect.Top + ChartRect.Height); + } + + } + + public void Draw_Debug(Graphics g) + { + if (!Style.디버그메세지) return; + + Single newy = 50; + String newstr = ""; + SizeF fontsize; + + newstr = "Mouseinfo=" + this.Mouseinfo.Position.ToString() + " " + this.Mouseinfo.Showinfo.ToString() ; + fontsize = g.MeasureString(newstr, this.Font); newy += fontsize.Height; + g.DrawString(newstr, this.Font, Brushes.Red, 100, newy); + + newstr = "Mouseinfo0=" + this.Mouseinfo.Position0.ToString()+ " idx=" + this.Mouseinfo.DragIndex.ToString(); + fontsize = g.MeasureString(newstr, this.Font); newy += fontsize.Height; + g.DrawString(newstr, this.Font, Brushes.Red, 100, newy); + + if (uc.Count > 0) + { + newstr = "uc1=" + uc[0].Newx.ToString() + "," + uc[0].Time.ToString(); + fontsize = g.MeasureString(newstr, this.Font); newy += fontsize.Height; + g.DrawString(newstr, this.Font, Brushes.Red, 100, newy); + } + + if (uc.Count > 1) + { + newstr = "uc2=" + uc[1].Newx.ToString() + "," + uc[1].Time.ToString(); + fontsize = g.MeasureString(newstr, this.Font); newy += fontsize.Height; + g.DrawString(newstr, this.Font, Brushes.Red, 100, newy); + } + + newstr = "Time=" + starttime.ToString() + "/" + endtime.ToString(); + fontsize = g.MeasureString(newstr, this.Font); newy += fontsize.Height; + g.DrawString(newstr, this.Font, Brushes.Red, 100, newy); + + newstr = "ViewTime=" + startview.ToString() + "/" + endview.ToString(); + fontsize = g.MeasureString(newstr, this.Font); newy += fontsize.Height; + g.DrawString(newstr, this.Font, Brushes.Red, 100, newy); + + newstr = "ViewTimeO=" + startviewo.ToString() + "/" + endviewo.ToString(); + fontsize = g.MeasureString(newstr, this.Font); newy += fontsize.Height; + g.DrawString(newstr, this.Font, Brushes.Red, 100, newy); + + newstr = "Drag=" + Mouseinfo.Drag.ToString() + " " + Mouseinfo.DragType.ToString(); + fontsize = g.MeasureString(newstr, this.Font); newy += fontsize.Height; + g.DrawString(newstr, this.Font, Brushes.Red, 100, newy); + + newstr = "DragStart=" + Mouseinfo.DragStart.ToString(); + fontsize = g.MeasureString(newstr, this.Font); newy += fontsize.Height; + g.DrawString(newstr, this.Font, Brushes.Red, 100, newy); + + newstr = "UserZoom=" + UserZoom.ToString(); + fontsize = g.MeasureString(newstr, this.Font); newy += fontsize.Height; + g.DrawString(newstr, this.Font, Brushes.Red, 100, newy); + newy += fontsize.Height; + + newstr = "CHinfo=" + chinfo.GetUpperBound(0); + for (int i =0;i<= chinfo.GetUpperBound(0);i++) + { + newstr += "\n" + i.ToString() + "," + this.chinfo[i].idx + ",visible:" + chinfo[i].Show.ToString(); + } + fontsize = g.MeasureString(newstr, this.Font); + g.DrawString(newstr, this.Font, Brushes.Red, 100, newy); + newy += fontsize.Height; + } + + public void Draw_channel(Graphics g,RectangleF crect,RectangleF wrect) + { + + //ê°ì±„ë„ì˜ ê·¸ëž˜í”„ë¥¼ 그린다. + foreach (CChinfo c in chinfo) + { + if (c == null) continue; + if (!c.Show) continue; + if (c.Value.Count < 1) continue; + + List linearrya = new List(0); + + Single PreX = 0; + Single PreY = 0; + + Boolean fc1 = false, fc2 = false; + for (int i = 0; i < c.Value.Count; i++) //가능한 ì…€ê°’ì„ ëª¨ë‘ í™•ì¸í•œë‹¤. + { + Single time = c.Time[i]; //ì´ì…€ì˜ 시간 + Single volt = c.Value[i]; //ì´ì…€ì˜ 볼트 + + //if (volt == 0) continue; + + Single newx = GetXfromTime(time, crect) - 1; + Single newy = GetYfromVolt(volt, crect) - 1; + + //너무가까운ë°ì´í„°ëŠ” 그리지 않는다. + if (Math.Abs(newx - PreX) < 0.2 || Math.Abs(newy - PreY) < 0.2) continue; + + if (!c.Show) + { + c.C1value = "--"; + c.C2value = "--"; + } else if (uc.Count > 0 && time >= uc[0].Time && fc1 == false) //ì…€ì˜ì‹œê°„ì´ ì»¤ì„œì˜ì‹œê°„ì„ ë„˜ëŠ” ìˆœê°„ì˜ ê°’ì„ ì €ìž¥ + { + + //g.DrawString(uc[0].Time.ToString() + "," + time.ToString() + " volt=" + volt.ToString(), this.Font, Brushes.Red, 200, 200); + + if (volt > 60) c.C1value = "OVER"; + else c.C1value = volt.ToString(); + + fc1 = true; + } + if (uc.Count > 1 && time >= uc[1].Time && fc2 == false) + { + //g.DrawString(uc[1].Time.ToString() + "," + time.ToString() + " volt=" + volt.ToString(), this.Font, Brushes.Red, 200, 300); + + if (volt > 60) c.C2value = "OVER"; + else c.C2value = volt.ToString(); + + fc2 = true; + } + + // e.Graphics.DrawString(time.ToString() + " v=" + volt.ToString(), this.Font, Brushes.Black, newx, newy); + if (newx >= wrect.Left && newx <= wrect.Left + wrect.Width && newy >= wrect.Top && newy <= wrect.Top + wrect.Height) + linearrya.Add(new PointF(newx, newy)); + + g.FillEllipse(new SolidBrush(c.color), new RectangleF(newx-1, newy-1, 2, 2)); + } + + try { + g.DrawLines(new Pen(c.color, LineWidth), linearrya.ToArray()); + } + catch { } + } + } + + public void Draw_ZoomSelct(Graphics g) + { + //사용ìžì¤Œì˜ì—­í‘œì‹œ + if (this.UserZoom.Width != 0) + { + int x, y, w, h; + if (UserZoom.Width > 0) + { + x = UserZoom.Left; + w = UserZoom.Width; + } + else + { + x = UserZoom.Width + UserZoom.Left; + w = Math.Abs(UserZoom.Width); + } + if (UserZoom.Height > 0) + { + y = UserZoom.Top; + h = UserZoom.Height; + } + else + { + y = UserZoom.Height + UserZoom.Top; + h = Math.Abs(UserZoom.Height); + } + + Rectangle rect = new Rectangle(x, y, w, h); + int startx = (int)Math.Round(GetTimeFromX(rect.Left - this.ChartRect.Left, ChartRect), 1); + int endx = (int)Math.Round(GetTimeFromX(rect.Left + rect.Width - ChartRect.Left, ChartRect), 1); + Single starty =(Single)(Math.Round(GetVoltfromY(rect.Top - this.ChartRect.Top, ChartRect), 1)); + Single endy = (Single)Math.Round(GetVoltfromY(rect.Top + rect.Height - ChartRect.Top, ChartRect), 1); + + //ì„ íƒëœ ì˜ì—­ Drawing + if (endx - startx >= 5) g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Lime)), rect); + else g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Red)), rect); + + g.DrawRectangle(Pens.Black, rect); + + //시간정보 Display + g.DrawString(GetTimeStr(startx + starttime, true,true) + "," + (Style.최대값 - starty).ToString("#0.0") + "v" , this.Font, Brushes.Black, rect.Left, rect.Top); + + String fontstr = GetTimeStr(endx + starttime, true, true) + "," + (Style.최대값 - endy).ToString("#0.0") + "v"; + SizeF fontsize = g.MeasureString(fontstr, this.Font); + g.DrawString(fontstr, this.Font, Brushes.Black, rect.Left - 5 + rect.Width - fontsize.Width, rect.Top + rect.Height - fontsize.Height); + } + } + + /// + /// í™”ë©´ì˜ ì¢Œ,ìš° ì¸¡ì— ì¡´ìž¬í•˜ëŠ” ì´ëˆë²„튼(ì›”ì„ ì›€ì§ì´ëŠ” 버튼ì´ë©° ì›” ì´ë™ì„위해서 ì´ë²¤íŠ¸ë¥¼ ë°œìƒí•œë‹¤) + /// + /// + //public void Draw_NaviLR(Graphics G, RectangleF crect) + //{ + // return; + + // //LEFT NAVI + // Single x, y, xw = 30; + // x = crect.Left - 3; + // y = crect.Top + crect.Height / 2 - xw / 2; + + // PointF[] aa = new PointF[4]; + // aa[0] = new PointF(x, y); + // aa[1] = new PointF(x - xw, y + xw); + // aa[2] = new PointF(x, y + xw + xw); + // aa[3] = new PointF(x, y); + + // PointF[] aa1 = new PointF[4]; + // aa1[0] = new PointF(x + 2, y + 2); + // aa1[1] = new PointF(x + 2 - xw, y + xw + 2); + // aa1[2] = new PointF(x + 2, y + xw + xw + 2); + // aa1[3] = new PointF(x + 2, y + 2); + // G.FillPolygon(Brushes.Black, aa1); + // G.FillPolygon(Brushes.DarkRed, aa); + // G.DrawPolygon(Pens.Black, aa); + + // Buttons.Add(new RectangleF(x - xw, y, xw, xw*2)); + // Buttonstag.Add("LBUTTON"); + // Buttonstype.Add(EBUTTONTYPE.LEFTMON); + + // //RIGHT NAVI + // x = crect.Left + crect.Width + 3; + // y = crect.Top + crect.Height / 2 - xw / 2; + + // aa = new PointF[4]; + // aa[0] = new PointF(x, y); + // aa[1] = new PointF(x + xw, y + xw); + // aa[2] = new PointF(x, y + xw + xw); + // aa[3] = new PointF(x, y); + + // aa1 = new PointF[4]; + // aa1[0] = new PointF(x + 2, y + 2); + // aa1[1] = new PointF(x + 2 + xw, y + xw + 2); + // aa1[2] = new PointF(x + 2, y + xw + xw + 2); + // aa1[3] = new PointF(x + 2, y + 2); + // G.FillPolygon(Brushes.Black, aa1); + // G.FillPolygon(Brushes.DarkRed, aa); + // G.DrawPolygon(Pens.Black, aa); + // Buttons.Add(new RectangleF(x, y, xw, xw*2)); + // Buttonstag.Add("RBUTTON"); + // Buttonstype.Add(EBUTTONTYPE.RIGHTMON); + //} + + + public String GetDateTimeStr(Int64 Filetime, Boolean linefeed) + { + DateTime TimeDate = DateTime.FromFileTime(Filetime); + String timestr = ""; + if (linefeed) timestr = TimeDate.ToShortDateString() + "\n" + TimeDate.ToShortTimeString(); //' yymm + "-" + day.ToString("00") + "\n" + hour.ToString("00") + ":" + min.ToString("00") + ":" + sec.ToString("00"); + else timestr = TimeDate.ToString();// yymm + "-" + day.ToString("00") + " " + hour.ToString("00") + ":" + min.ToString("00") + ":" + sec.ToString("00"); + + return timestr; + } + public String GetTimeStr(Int64 Filetime, Boolean withday, Boolean withseconed, Boolean nolf = false, Boolean showyear = false) + { + DateTime TimeDate = DateTime.FromFileTime(Filetime); + String timestr = ""; + + if (TimeDate.Second == 0 || !withseconed) + timestr = TimeDate.ToString("HH:mm");// TimeDate.Hour.ToString("00") + ":" + TimeDate.Minute.ToString("00"); + else + timestr = TimeDate.ToString("HH:mm:ss"); // hour.ToString("00") + ":" + min.ToString("00") + ":" + sec.ToString("00"); + + if (withday) + { + if (showyear) + { + timestr = TimeDate.ToString("yyMM-dd") + " " + timestr; + } + else + { + if (nolf) timestr = TimeDate.ToString("dd") + "ì¼ " + timestr; + else timestr = timestr + "\n" + TimeDate.ToString("dd") + "ì¼"; + } + } + return timestr; + } + + /// + /// (전체시간 * 현재X) / 전체너비 + /// + /// + /// + private Single GetTimeFromX(Single t, RectangleF crect) + { + return ((endview - startview) * t) / crect.Width; + } + private Single GetXfromTime(Single t,RectangleF crect) + { + return (((crect.Width) * (t - startview)) / (endview - startview)) + crect.Left; + } + private Single GetVoltfromY(Single Y, RectangleF crect) + { + + return ((Style._endvolt - Style._startvolt) * Y) / crect.Height; + + } + private Single GetYfromVolt(Single volt, RectangleF crect) + { + //volt = (Style._endvolt - Style._startvolt) - volt; + return (crect.Height - ((crect.Height * (volt - Style._startvolt)) / (Style._endvolt - Style._startvolt))) + crect.Top; + //return (((crect.Height) * volt) / (Style.최대값)) + crect.Top; + + } + + private void DrawString(Graphics G, String str, Font font, Brush br, PointF ops, EALIGN XCenter = EALIGN.LEFT, EALIGN YCenter = EALIGN.LEFT) + { + SizeF fsize = G.MeasureString(str, font); + Single newx = ops.X; + Single newy = ops.Y; + + if (XCenter == EALIGN.CENTER) newx = ops.X - fsize.Width / 2; + else if (XCenter == EALIGN.RIGHT) newx = ops.X - fsize.Width; + + if (YCenter == EALIGN.CENTER) newy = ops.Y - fsize.Height / 2; + else if (YCenter == EALIGN.RIGHT) newy = ops.Y - fsize.Height; + + G.DrawString(str, font, br, newx, newy); + } + + public Int64 Starttime + { + get { return this.starttime; } + set { this.starttime = value; startview = value; } + } + + public Int64 Endtime + { + get { return this.endtime; } + set { this.endtime = value; endview = value; } + } + + public Int64 Startview + { + get { return this.startview; } + set { this.startview = value; } + } + + public Int64 Endview + { + get { return this.endview; } + set { this.endview = value; } + } + + public Boolean INIT + { + get { return this.init; } + set { this.init = value; } + } + public CChinfo[] CHInfo + { + get { return this.chinfo; } + set { this.chinfo = value; } + } + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + this.WindowRect = new RectangleF(0, 0, this.Width, this.Height); + this.ChartRect = new RectangleF(Style.왼쪽여백, (Style.위쪽여백/2), this.Width - (Style.왼쪽여백 * 2), (Single)(this.Height - (Style.위쪽여백 * 1.5))); + Invalidate(); + } + + private int check_userpoint(MouseEventArgs e) + { + if (this.uc.Count ==0 ) return -1; + for (int i = 0; i < this.uc.Count; i++) + { + CUserCursor uuc = this.uc[i]; + + //현재위치가 해당 Rectagle 안ì´ë¼ë©´ ì†í•´ìžˆë‹¤. + if ((int)this.Mouseinfo.Position.X >= (int)uuc.Newx - 2 && (int)this.Mouseinfo.Position.X <= (int)(uuc.Newx) + 2) + + // MessageBox.Show(i.ToString()); + + return i; + } + return -1; + } + + //private int check_buttons(MouseEventArgs e) + //{ + // if (this.Buttons == null) return -1; + // for (int i = 0; i < this.Buttons.Count; i++) + // { + // RectangleF rect = this.Buttons[i]; + + // //현재위치가 해당 Rectagle 안ì´ë¼ë©´ ì†í•´ìžˆë‹¤. + // if (e.X > rect.X && e.X < rect.X + rect.Width) + // { + // if (e.Y > rect.Y && e.Y < rect.Y + rect.Height) return i; + // } + // } + // return -1; + //} + + private void InitializeComponent() + { + this.SuspendLayout(); + // + // TrendCtrl + // + this.Name = "TrendCtrl"; + this.Size = new System.Drawing.Size(287, 321); + this.Load += new System.EventHandler(this.DispCtrl_Load); + this.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.TrendCtrl_MouseDoubleClick); + this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DispCtrl_MouseDown); + this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DispCtrl_MouseMove); + this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.TrendCtrl_MouseUp); + this.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.TrendCtrl_MouseWhell); + this.ResumeLayout(false); + + } + + private void DispCtrl_MouseDown(object sender, MouseEventArgs e) + { + + //드래그íŒë‹¨ì„위한 ìœ„ì¹˜ê°’ì„ ì €ìž¥í•œë‹¤. + Mouseinfo.DragStart = new PointF(e.X - ChartRect.Left, e.Y - ChartRect.Top); + + //ìš°ì¸¡ë²„íŠ¼ì€ ì¤Œì˜ ì´ˆê¸°í™”ë¥¼ 수행한다. + if (e.Button == System.Windows.Forms.MouseButtons.Right) + { + //startview = starttime; + //endview = endtime; + //Style._startvolt = Style.최소값; + //Style._endvolt = Style.최대값; + //Refresh(); + //return; + } + else if (e.Button == System.Windows.Forms.MouseButtons.Left) + { + //í˜„ìž¬ë§ˆìš°ìŠ¤ìœ„ì¹˜ì˜ ì•„ì´í…œì„ 찾ㄴì€ë‹¤. + //int idx = check_buttons(e); + //if (idx != -1) + //{ + // Object tt = this.Buttonstag[idx]; + // EBUTTONTYPE BT = this.Buttonstype[idx]; + + // switch (BT) + // { + // case EBUTTONTYPE.LEFTMON: + // OnClickLEFT(); + // break; + // case EBUTTONTYPE.RIGHTMON: + // OnClickRIGHT(); + // break; + // } + //} + + int idx = check_userpoint(e); + if (idx != -1) + { + Mouseinfo.DragType = EDRAGTYPE.UC; + Mouseinfo.DragIndex = idx; + return; + } + + //아무것ë„없는 빈공간ì´ë¼ë©´ 화면ì´ë™(=줌시작)으로 대체한다. + //if (idx == -1 && e.X >= ChartRect.Left && e.X <= ChartRect.Left + ChartRect.Width && e.Y >= ChartRect.Top && e.Y <= ChartRect.Top + ChartRect.Height) + //{ + // if (endview - startview == (endtime - starttime)) + // { + // Mouseinfo.DragType = EDRAGTYPE.ZOOM; + // this.UserZoom = new Rectangle(e.X, e.Y, 0, 0); + // } + // else + // { + // Mouseinfo.DragType = EDRAGTYPE.SCREEN; + // this.UserZoom = new Rectangle(0, 0, 0, 0); + // } + // return; + //} + + + } + } + + private void DispCtrl_MouseMove(object sender, MouseEventArgs e) + { + //ë§ˆìš°ìŠ¤ì˜ ìœ„ì¹˜ê°€ 실시간 저장ëœë‹¤. + if (this.Mouseinfo == null) this.Mouseinfo = new CMouseinfo(new PointF(e.X - this.WindowRect.Left, e.Y - this.WindowRect.Top)); + else this.Mouseinfo.Position = new PointF(e.X - this.WindowRect.Left, e.Y - this.WindowRect.Top); + + this.Mouseinfo.Time = GetTimeFromX(e.X - ChartRect.Left,ChartRect)+ this.startview; + this.Mouseinfo.Volt = this._Style._endvolt - GetVoltfromY(e.Y - ChartRect.Top, ChartRect) ; + this.Mouseinfo.Showinfo = false; + + //MouseStatus initialize... + Mouseinfo.Hand = false; + Mouseinfo.Cross = false; + Mouseinfo.Move = false; + Mouseinfo.ChangePos = false; + + // + if (e.X >= ChartRect.X && e.X <= ChartRect.X + ChartRect.Width) + if (e.Y >= ChartRect.Top && e.Y <= ChartRect.Top + ChartRect.Height) Mouseinfo.Showinfo = true; + else Mouseinfo.Showinfo = false; + + + //ì´ë™ì¤‘ì¸ë° 마우스가 눌려있다면 DRAG다 + if (e.Button == MouseButtons.Left) Mouseinfo.Drag = true; + else Mouseinfo.Drag = false; + + if (Mouseinfo.Drag) //드래그중ì´ë‹¤ + { + Mouseinfo.Move = true; //화면ì´ë™ìœ¼ë¡œ + } + else + { + if (e.X >= ChartRect.Left && e.X <= ChartRect.Left + ChartRect.Width) + { + if (e.Y >= ChartRect.Top && e.Y <= ChartRect.Top + ChartRect.Height) + { + Mouseinfo.Cross = true; //화면내부ë¼ë©´ í¬ë¡œìФ + } + else Mouseinfo.Cross = false; + } + else Mouseinfo.Cross = false; + } + + //버튼위ë¼ë©´ HAND를 활성화한다. + //int idx = this.check_buttons(e); + //if (idx != -1) + //{ + // Mouseinfo.Cross = false; + // Mouseinfo.Hand = true; + // Mouseinfo.Drag = false; + // Mouseinfo.ChangePos = false; + //} + + //사용ìží¬ì¸í„°ìœ„ë¼ë©´? + int idx = this.check_userpoint(e); + if (idx != -1) + { + Mouseinfo.Cross = false; + Mouseinfo.Hand = false; + Mouseinfo.Drag = false; + Mouseinfo.ChangePos = true; + } + + //드래그중íŒë‹¨ + if (Mouseinfo.Drag) + { + switch (Mouseinfo.DragType) + { + case EDRAGTYPE.UC: + Single newx = ( e.X); + float newtime = GetTimeFromX(newx - ChartRect.Left, ChartRect) + startview; + this.uc[Mouseinfo.DragIndex].Newx = newx; + this.uc[Mouseinfo.DragIndex].Time = newtime; + //OnUpdateUserCursor(Mouseinfo.DragIndex); + break; + case EDRAGTYPE.ZOOM: + this.UserZoom.Width = (int)(e.X - Mouseinfo.DragStart.X - ChartRect.Left); + this.UserZoom.Height = (int)(e.Y - Mouseinfo.DragStart.Y - ChartRect.Left); + if (Mouseinfo.Cross) this.Cursor = Cursors.Cross; + break; + case EDRAGTYPE.SCREEN: + if (Mouseinfo.Move) + { + this.Cursor = Cursors.NoMove2D; + Mouseinfo.Showinfo = false; + } + + + //ì´ë™í•œpixcelì„ ì‹œê°„ì •ë³´ë¡œ 변환한다. + //현재마우스위치값 - ë“œëž˜ê·¸ì‹œìž‘ë§ˆìš°ìŠ¤ìœ„ì¹˜ê°’ì„ ëº¸ í”½ì…€ì„ ì´ˆë¡œí™˜ì‚°í•œë‹¤. + + Single term = Mouseinfo.DragStart.X-Mouseinfo.Position.X; //양수ë¼ë©´ 오른쪽으로 ì´ë™í–ˆë‹¤. + Single termtime = GetTimeFromX(term, ChartRect); + + Single termy = Mouseinfo.Position.Y- Mouseinfo.DragStart.Y- ChartRect.Top ; + Single termvolt = GetVoltfromY(termy, ChartRect); + + Single mstime = termtime ; //((endview - startview) / 50); + Single mvolt = termvolt; + //if (Mouseinfo.Position.X < Mouseinfo.Position0.X) + //{ + // mstime = -1 * mstime; + //} + Int64 SD = startviewo + (int)mstime; + Int64 ED = endviewo + (int)mstime; + + Single SV = Style._startvolto + mvolt; + Single EV = Style._endvolto + mvolt; + + if ((SD < starttime || ED > endtime)) + { + //ë”ì´ìƒ ì¤Œì„ ëª»í•œë‹¤.. + } + else + { + startview = SD; + endview = ED; + + Style._startvolt = SV; + Style._endvolt = EV; + + //startviewo = startview; + //endviewo = endview; + } + + + break; + } + } + else + { + if (Mouseinfo.Hand) this.Cursor = Cursors.Hand; + if (Mouseinfo.Cross) this.Cursor = Cursors.Cross; + if (Mouseinfo.ChangePos) this.Cursor = Cursors.SizeWE; + } + + this.Refresh(); + } + + private void TrendCtrl_MouseWhell(object sender, MouseEventArgs e) + { + //MessageBox.Show(e.Delta.ToString()); + //int news = 0, newe = 0; + + //news = startview; + //newe = endview; + + //if (e.Delta > 0) + //{ + // //up + // news += (endview-startview)/10; + // newe -= (endview - startview) / 10; + //} + //else + //{ + // //down + // news -= (endview - startview) / 10; + // newe += (endview - startview) / 10; + //} + + //if (news > endtime) news = endtime; + //if (news < starttime) news = starttime; + //if (newe > endtime) newe = endtime; + //if (newe < starttime) newe = starttime; + + //if (news < starttime || newe > endtime) + //{ + // //MessageBox.Show("ë°ì´í„°ê°€ 없으므로 ì¤Œì„ ì‚¬ìš©í•  수 없습니다"); + //} + //else + //{ + // startview = news; + // endview = newe; + // startviewo = news; + // endviewo = newe; + //} + //this.Refresh(); + + } + + private void TrendCtrl_MouseUp(object sender, MouseEventArgs e) + { + if (Mouseinfo.Drag && Mouseinfo.DragType == EDRAGTYPE.UC) + { + ////만약 화면 ë°•ì„ ë„˜ì–´ì„œë©´ 삭제한다. + //if (uc[Mouseinfo.DragIndex].Newx <= ChartRect.Left || uc[Mouseinfo.DragIndex].Newx >= ChartRect.Left + ChartRect.Width) + //{ + // uc.Remove(uc[Mouseinfo.DragIndex]); + // if (uc.Count == 1) + // { + // uc[0].Idx = 0; + // foreach (CChinfo c in this.chinfo) + // { + // c.C2value = ""; + // } + // } + //} + this.Refresh(); + OnUpdateUserCursor(Mouseinfo.DragIndex); + } + + //startviewo = startview; + //endviewo = endview; + //Style._startvolto = Style._startvolt; + //Style._endvolto = Style._endvolt; + + //Mouseinfo.Drag = false; + //if (UserZoom.Width != 0) //줌ì˜ì—­ì´ 있다면 ì¤Œì„ í™œì„±í™”í•œë‹¤. + //{ + // int x1, x2,y1,y2; + // x1 = UserZoom.Left; + // x2 = UserZoom.Left + UserZoom.Width; + // y1 = UserZoom.Top; + // y2 = UserZoom.Top + UserZoom.Height; + + // int startx = (int)Math.Round(GetTimeFromX(x1 - ChartRect.Left, ChartRect), 0); + // int endx = (int)Math.Round(GetTimeFromX(x2 - ChartRect.Left, ChartRect), 0); + + // Single starty =(Single) Math.Round(GetVoltfromY(y1 - ChartRect.Top, ChartRect), 1); + // Single endy = (Single)Math.Round(GetVoltfromY(y2 - ChartRect.Top, ChartRect), 1); + + // if (endx < startx) //êµí™˜ + // { + // int t = startx; + // startx = endx; + // endx = t; + // } + + // //if (endy < starty) //êµí™˜ + // //{ + // // Single t = starty; + // // starty = endy; + // // endy = t; + // //} + + // if (endx - startx >= 10) //보기ì˜ì—­ì´ 5초는 넘어야 ì¤Œì´ ê°€ëŠ¥í•œë‹¤. + // { + // this.startview = startx + this.starttime ; + // this.endview = endx + this.starttime; + + // this.startviewo = this.startview; + // this.endviewo = this.endview; + + + // if (starty < endy) + // { + // this.Style._endvolt = Style.최대값 - starty;// +this.Style.최소값; + // this.Style._startvolt = Style.최대값 - endy;// +this.Style.최대값; + // } + // else + // { + // this.Style._startvolt = Style.최대값 - starty;// +this.Style.최소값; + // this.Style._endvolt = Style.최대값 - endy;// +this.Style.최대값; + // } + + // //////////// + // this.Style._startvolto = this.Style._startvolt; + // this.Style._endvolto = this.Style._endvolt; + + // ////////////// + + // UserZoom.Width = 0; + // this.Refresh(); + // } + // else + // { + // UserZoom.Width = 0; + // this.Refresh(); + // } + //} + } + + private void TrendCtrl_MouseDoubleClick(object sender, MouseEventArgs e) + { + //마우스ë”블í´ë¦­ + int idx = check_userpoint(e); + if (idx != -1) + { + //삭제한다. + uc.Remove(uc[Mouseinfo.DragIndex]); + if (uc.Count == 1) + { + uc[0].Idx = 0; + foreach (CChinfo c in this.chinfo) + { + c.C2value = ""; + } + } + this.Refresh(); + OnUpdateUserCursor(Mouseinfo.DragIndex); + return; + } + + if (e.Button == System.Windows.Forms.MouseButtons.Left) + { + if (this.uc.Count < 2) + { + Single newx = GetXfromTime(Mouseinfo.Time, ChartRect); + this.uc.Add(new CUserCursor((short)this.uc.Count, Mouseinfo.Time, newx)); + this.Refresh(); + OnUpdateUserCursor(this.uc.Count); + } + + } + + } + + + private void DispCtrl_Load(object sender, EventArgs e) + { + + } + + + + } //end class + +} //end namespace \ No newline at end of file diff --git a/TrendCtrlII/TrendCtrlII.csproj b/TrendCtrlII/TrendCtrlII.csproj new file mode 100644 index 0000000..97cc6c5 --- /dev/null +++ b/TrendCtrlII/TrendCtrlII.csproj @@ -0,0 +1,103 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {A2FF254F-97C8-4AB1-8AB4-070DF48139CE} + Library + Properties + TrendCtrlII + TrendCtrlII + v4.8 + 512 + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + AnyCPU + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + x86 + false + + + + + + + + + + + + + + + UserControl + + + + True + True + Resources.resx + + + + + + TrendCtrlII.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TrendCtrlII/TrendCtrlII.resx b/TrendCtrlII/TrendCtrlII.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/TrendCtrlII/TrendCtrlII.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TrendCtrlII/TrendCtrlII.sln b/TrendCtrlII/TrendCtrlII.sln new file mode 100644 index 0000000..e49f8f1 --- /dev/null +++ b/TrendCtrlII/TrendCtrlII.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrendCtrlII", "TrendCtrlII.csproj", "{A2FF254F-97C8-4AB1-8AB4-070DF48139CE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A2FF254F-97C8-4AB1-8AB4-070DF48139CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A2FF254F-97C8-4AB1-8AB4-070DF48139CE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A2FF254F-97C8-4AB1-8AB4-070DF48139CE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A2FF254F-97C8-4AB1-8AB4-070DF48139CE}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/TrendView.pdf b/TrendView.pdf new file mode 100644 index 0000000..0dfb6b4 Binary files /dev/null and b/TrendView.pdf differ diff --git a/TrendView.pptx b/TrendView.pptx new file mode 100644 index 0000000..1f2735b Binary files /dev/null and b/TrendView.pptx differ diff --git a/VMSMonitor/App.config b/VMSMonitor/App.config new file mode 100644 index 0000000..1d32e32 --- /dev/null +++ b/VMSMonitor/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/VMSMonitor/ArinXMl.vb b/VMSMonitor/ArinXMl.vb new file mode 100644 index 0000000..9f9e950 --- /dev/null +++ b/VMSMonitor/ArinXMl.vb @@ -0,0 +1,144 @@ +Imports System.Xml + +Public Class ArinXML + Private File As String + Private vDocu As XmlDocument = Nothing + Private nsmgr As XmlNamespaceManager + Public Root As XmlElement + + Public ReadOnly Property Docu() As XmlDocument + Get + Return Me.vDocu + End Get + End Property + + Public ReadOnly Property Filename As String + Get + Return Me.File + End Get + End Property + + Public Sub New(ByVal Filename As String) + Me.File = Filename + If Exist() Then '//파ì¼ì´ 존재하면 ë„í먼트반환 + Me.vDocu = New XmlDocument + nsmgr = New XmlNamespaceManager(New Xml.NameTable) + nsmgr.AddNamespace("x", "http://tindevil.com") + Try + Me.vDocu.Load(Filename) + Root = vDocu.DocumentElement + Catch ex As Exception + Me.vDocu = Nothing + Me.Root = Nothing + End Try + End If + End Sub + + Public Sub New(ByVal docu As Xml.XmlDocument) + Me.vDocu = docu + Me.File = My.Application.Info.DirectoryPath & "\temp.xml" + nsmgr = New XmlNamespaceManager(New Xml.NameTable) + nsmgr.AddNamespace("x", "http://tindevil.com") + Root = vDocu.DocumentElement + End Sub + + ''' + ''' 파ì¼ì¡´ìž¬ì—¬ë¶€ + ''' + ''' + ''' + Public Function Exist() As Boolean + If Not vDocu Is Nothing Then Return True + Return System.IO.File.Exists(Me.File) + End Function + + + Public Sub CreateFile() + '//주어진파ì¼ëª…으로 기본파ì¼ì„ ìƒì„±í•œë‹¤. + Dim NewXml As New System.Text.StringBuilder + NewXml.AppendLine("") + NewXml.AppendLine(" ") + NewXml.AppendLine("") + If System.IO.File.Exists(Me.File) Then System.IO.File.Delete(Me.File) + My.Computer.FileSystem.WriteAllText(Me.File, NewXml.ToString.Replace("'", Chr(&H22)), False) + Me.vDocu = New XmlDocument + Me.vDocu.Load(Me.File) + nsmgr = New XmlNamespaceManager(New Xml.NameTable) + nsmgr.AddNamespace("x", "http://tindevil.com") + Root = vDocu.DocumentElement + End Sub + + Public Function Read(ByVal appkey As String, ByVal subkey As String, Optional ByVal defaltvalue As String = "", Optional ByVal Nullvalue As String = "") As String '//변수초기화 + '//파ì¼ì´ì—†ì„경우 ë¹ˆê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤. + If Exist() = False Then Return "" + Dim L As XmlElement = Me.Root.SelectSingleNode(appkey, nsmgr) '//appkey를 먼저 조회한다. + If L Is Nothing Then Return "" + Dim C As XmlElement = L.SelectSingleNode(subkey, nsmgr) + If C Is Nothing Then Return "" + Return C.InnerText + End Function + + Public Function Get_NameSpace() As XmlNamespaceManager + Return Me.nsmgr + End Function + Public Function NS() As XmlNamespaceManager + Return Me.nsmgr + End Function + + Public Function CreateElement(ByVal name As String) As XmlElement + Return Me.Docu.CreateElement(name, Me.NS.DefaultNamespace) + End Function + Public Function GetNode(ByVal appkey As String) As XmlElement + '//파ì¼ì´ì—†ì„경우 ë¹ˆê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤. + If Docu Is Nothing Then Return Nothing + Return Me.Root.SelectSingleNode(appkey, nsmgr) '//appkey를 먼저 조회한다. + End Function + Public Function GetNodes(ByVal appkey As String) As Xml.XmlNodeList + '//파ì¼ì´ì—†ì„경우 ë¹ˆê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤. + If Docu Is Nothing Then Return Nothing + Dim L As XmlNodeList = Me.Root.SelectNodes(appkey, nsmgr) '//appkey를 먼저 조회한다. + Return L + End Function + + Public Property Data(ByVal appkey As String, ByVal subkey As String, Optional ByVal defaltvalue As Object = "", Optional ByVal trim As Boolean = False) As String + Get + '//파ì¼ì´ì—†ì„경우 ë¹ˆê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤. + If Exist() = False Then Return defaltvalue + Dim L As XmlElement = Me.Root.SelectSingleNode(appkey, nsmgr) '//appkey를 먼저 조회한다. + If L Is Nothing Then Return defaltvalue + Dim C As XmlElement = L.SelectSingleNode(subkey, nsmgr) + If C Is Nothing Then Return defaltvalue + If trim Then + Return C.InnerText.Trim + Else + Return C.InnerText + End If + + End Get + Set(ByVal value As String) + '//파ì¼ì´ì—†ì„경우 ë¹ˆê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤. + + If Exist() = False Then Return + Dim L As XmlElement = Me.Root.SelectSingleNode(appkey, nsmgr) '//appkey를 먼저 조회한다. + If L Is Nothing Then '//만들어야한다. + L = Me.Docu.CreateElement(appkey) + Me.Root.AppendChild(L) + End If + Dim C As XmlElement = L.SelectSingleNode(subkey, nsmgr) + If C Is Nothing Then '//만들어야한다. + C = Me.Docu.CreateElement(subkey) + C.InnerText = value + L.AppendChild(C) + Else + C.InnerText = value + End If + Me.Docu.Save(Me.File) + 'MsgBox(value) + End Set + End Property + + Public Sub Save() + Me.Docu.Save(Me.File) + End Sub + +End Class diff --git a/VMSMonitor/Form1.Designer.vb b/VMSMonitor/Form1.Designer.vb new file mode 100644 index 0000000..9431c89 --- /dev/null +++ b/VMSMonitor/Form1.Designer.vb @@ -0,0 +1,172 @@ + _ +Partial Class Form1 + Inherits System.Windows.Forms.Form + + 'Formì€ Dispose를 재정ì˜í•˜ì—¬ 구성 요소 목ë¡ì„ 정리합니다. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Windows Form ë””ìžì´ë„ˆì— 필요합니다. + Private components As System.ComponentModel.IContainer + + '참고: ë‹¤ìŒ í”„ë¡œì‹œì €ëŠ” Windows Form ë””ìžì´ë„ˆì— 필요합니다. + '수정하려면 Windows Form ë””ìžì´ë„ˆë¥¼ 사용하십시오. + '코드 편집기를 사용하여 수정하지 마십시오. + _ + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1)) + Me.Timer1 = New System.Windows.Forms.Timer(Me.components) + Me.Timer2 = New System.Windows.Forms.Timer(Me.components) + Me.ToolStrip1 = New System.Windows.Forms.ToolStrip() + Me.bt_monitor = New System.Windows.Forms.ToolStripButton() + Me.bt_run = New System.Windows.Forms.ToolStripButton() + Me.bt_kill = New System.Windows.Forms.ToolStripButton() + Me.ToolStripButton1 = New System.Windows.Forms.ToolStripButton() + Me.ProgressBar1 = New System.Windows.Forms.ProgressBar() + Me.StatusStrip1 = New System.Windows.Forms.StatusStrip() + Me.status_monitor = New System.Windows.Forms.ToolStripStatusLabel() + Me.status_run = New System.Windows.Forms.ToolStripStatusLabel() + Me.status_create = New System.Windows.Forms.ToolStripStatusLabel() + Me.lb_msg = New System.Windows.Forms.ToolStripStatusLabel() + Me.ToolStrip1.SuspendLayout() + Me.StatusStrip1.SuspendLayout() + Me.SuspendLayout() + ' + 'Timer1 + ' + Me.Timer1.Interval = 1000 + ' + 'Timer2 + ' + Me.Timer2.Interval = 1000 + ' + 'ToolStrip1 + ' + Me.ToolStrip1.ImageScalingSize = New System.Drawing.Size(32, 32) + Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.bt_monitor, Me.bt_run, Me.bt_kill, Me.ToolStripButton1}) + Me.ToolStrip1.Location = New System.Drawing.Point(0, 0) + Me.ToolStrip1.Name = "ToolStrip1" + Me.ToolStrip1.Size = New System.Drawing.Size(496, 39) + Me.ToolStrip1.TabIndex = 4 + Me.ToolStrip1.Text = "ToolStrip1" + ' + 'bt_monitor + ' + Me.bt_monitor.Image = CType(resources.GetObject("bt_monitor.Image"), System.Drawing.Image) + Me.bt_monitor.ImageTransparentColor = System.Drawing.Color.Magenta + Me.bt_monitor.Name = "bt_monitor" + Me.bt_monitor.Size = New System.Drawing.Size(103, 36) + Me.bt_monitor.Text = "모니터시작" + ' + 'bt_run + ' + Me.bt_run.Enabled = False + Me.bt_run.Image = CType(resources.GetObject("bt_run.Image"), System.Drawing.Image) + Me.bt_run.ImageTransparentColor = System.Drawing.Color.Magenta + Me.bt_run.Name = "bt_run" + Me.bt_run.Size = New System.Drawing.Size(93, 36) + Me.bt_run.Text = "VPS 실행" + ' + 'bt_kill + ' + Me.bt_kill.Enabled = False + Me.bt_kill.Image = CType(resources.GetObject("bt_kill.Image"), System.Drawing.Image) + Me.bt_kill.ImageTransparentColor = System.Drawing.Color.Magenta + Me.bt_kill.Name = "bt_kill" + Me.bt_kill.Size = New System.Drawing.Size(117, 36) + Me.bt_kill.Text = "VPS 강제종료" + ' + 'ToolStripButton1 + ' + Me.ToolStripButton1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right + Me.ToolStripButton1.Image = CType(resources.GetObject("ToolStripButton1.Image"), System.Drawing.Image) + Me.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta + Me.ToolStripButton1.Name = "ToolStripButton1" + Me.ToolStripButton1.Size = New System.Drawing.Size(115, 36) + Me.ToolStripButton1.Text = "프로그램종료" + ' + 'ProgressBar1 + ' + Me.ProgressBar1.Dock = System.Windows.Forms.DockStyle.Fill + Me.ProgressBar1.Location = New System.Drawing.Point(0, 39) + Me.ProgressBar1.Name = "ProgressBar1" + Me.ProgressBar1.Size = New System.Drawing.Size(496, 93) + Me.ProgressBar1.TabIndex = 5 + ' + 'StatusStrip1 + ' + Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.status_monitor, Me.status_run, Me.status_create, Me.lb_msg}) + Me.StatusStrip1.Location = New System.Drawing.Point(0, 110) + Me.StatusStrip1.Name = "StatusStrip1" + Me.StatusStrip1.Size = New System.Drawing.Size(496, 22) + Me.StatusStrip1.TabIndex = 6 + Me.StatusStrip1.Text = "StatusStrip1" + ' + 'status_monitor + ' + Me.status_monitor.Name = "status_monitor" + Me.status_monitor.Size = New System.Drawing.Size(66, 17) + Me.status_monitor.Text = "â— Monitor" + ' + 'status_run + ' + Me.status_run.Name = "status_run" + Me.status_run.Size = New System.Drawing.Size(45, 17) + Me.status_run.Text = "â— VPS" + ' + 'status_create + ' + Me.status_create.Name = "status_create" + Me.status_create.Size = New System.Drawing.Size(44, 17) + Me.status_create.Text = "â— Run" + ' + 'lb_msg + ' + Me.lb_msg.Name = "lb_msg" + Me.lb_msg.Size = New System.Drawing.Size(53, 17) + Me.lb_msg.Text = "Message" + ' + 'Form1 + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(496, 132) + Me.Controls.Add(Me.StatusStrip1) + Me.Controls.Add(Me.ProgressBar1) + Me.Controls.Add(Me.ToolStrip1) + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.MaximizeBox = False + Me.Name = "Form1" + Me.Text = "VPS STARTER" + Me.ToolStrip1.ResumeLayout(False) + Me.ToolStrip1.PerformLayout() + Me.StatusStrip1.ResumeLayout(False) + Me.StatusStrip1.PerformLayout() + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents Timer1 As System.Windows.Forms.Timer + Friend WithEvents Timer2 As System.Windows.Forms.Timer + Friend WithEvents ToolStrip1 As System.Windows.Forms.ToolStrip + Friend WithEvents bt_monitor As System.Windows.Forms.ToolStripButton + Friend WithEvents bt_run As System.Windows.Forms.ToolStripButton + Friend WithEvents bt_kill As System.Windows.Forms.ToolStripButton + Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar + Friend WithEvents StatusStrip1 As System.Windows.Forms.StatusStrip + Friend WithEvents lb_msg As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents status_run As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents status_monitor As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents status_create As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents ToolStripButton1 As System.Windows.Forms.ToolStripButton + +End Class diff --git a/VMSMonitor/Form1.resx b/VMSMonitor/Form1.resx new file mode 100644 index 0000000..a3d9075 --- /dev/null +++ b/VMSMonitor/Form1.resx @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 107, 17 + + + 197, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMpSURBVFhH7ZfLS1RRHMe1rCCkqAwiqkV/hhtbutBQUHyC + gWCaZas22jg+Z8zMHNTRZBAbRB1d2aaFq9z6FoUW4trw/QZRfp3PoTOMwhmtmYEWCl/OY7738/3Onbl3 + rnFxl3+XZ+B/OgMjIyNeJYmxvNb3PDw8LMfHx3JychITwSbDWiAQCMjR0ZEcHBzI4eFhVAUTNhnWAoOD + g7K/vy87OzuSnJwsz9PToyJYMGGTYS0wMDAQLJCWliavysqkrLQ0IsGAZQqQYS3Q39+vC2xvb0t2dra8 + r6qSaocjIsGABRM2GdYCfr9f9vb2tDknJydqBWDBhE2GtUBfX582bW1tSX5+ftQKwIIJmwxrgd7eXm3a + 3NyUwsLCiE596EcHCyZsMqwFfD6f7O7uysbGhrwoKpLamppgiZWVlX8qBAMWTNhkWAv09PQECxQXF0uT + 261LGFEidH2ROQxYpgAZ1gLdXV26wPr6upSUlIinrU1cjY2nRImze+HWMGDBhE2GtYC3s1Nfr2tra/ra + /9LdLR+bm4MiPHR9kTkMWDBhk2Et0N7erk2rq6vyurxcvqpvLO8AEW7mZs3e2f1QD3MYsGDCJsNawOPx + aNPi4qK8raiQwNCQbhyJYMCCCZsMa4HPra3atLCwIFWVlTI6OirfIhQMWDBhk2Et8KmlRd+x5ufnpaG+ + /q8/b9t3AhZM2GRYCwDANDc3pw+IpmDCJsNa4ENTkzbNzMzI7OxsVAUTNhnWAm6XS9+zp6endQnU0dFx + SmY/3Oj2v5Fn7xKF0fhgwibDWqCxoUGbJicnZWpqSovnQ3O5MTf74cYK31P5+eulMBofTNhkWAvU19Vp + 08TEhC6BxsbGTsnshxsDP0rF9T1BGI0PJmwyrAXqamv1DWN8fDwmgk2GtUCN0ynLy8uytLQUE8Emw1rA + 6XB4ndXVElOpjPP+F4p3Op1X1C/YNfUwebOgoOCWeqK5k5WVdTcvLy9JPd89yMzMfKQesx6r+RMj1rm5 + uQ+V735GRsY9jlGv3VZKTE1NvaHGqyo4/rzw0Ncx6zJGQFJSUhIoh9T6uhFr5UvAE3rMn1Br8G+IV7/l + /QuMLAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAANwSURBVFhH7ZbpT1NBFMXdKNQKtCwKKgYNRgVZCm0phRYR + cQkitVoIyGYkpAqYEIIxKIggxAqiaNS4xS1YZNUqi2AgLmGVHREEBBQR/4rjTIMJRBSpgH7oS05e+/qm + 9zfn3rkzCxboLp0DOgd+44Cnp+cSFxcXYz6fb0Hv9Pu8GkaDHsk0OZmUZ9AVlW6WweVyNwmFQpN5A3F0 + dLQ+nsvsaRiMxt1aLk7kMocVZ00vkud2xBVTAqg3p444OTnZnlbroW1Egd5vqWj9fAK5DWIkqhhjCqXp + LVcPexcHB4fltra2DAKycNZhnJ2d7ZNL9NA4HEgUTEBi8H4sBe0jychv2oFTj/VxOMtEJd5uJ6J1YmNj + oz+rIBQgsVAP9UOBqB3cr1H9YBBaPinw7msSOkZTUfTWD8klLERlcYq9Zeu3kfSsInXCnBUQCnAsj4Ha + j3K8GZBNUu2AHE3DkegcTUTXaBoetwQguYiDqHPsCv9D1oE8Hs+KpIdFQBZpnRoKEPeAQQLvw+t+6dQi + vzUMRZC0JBCQVDxrC0dSgRkOKg1rpAqrcApCVo2BVo5QgNg7+iSwDC/7/KeRlDgVSgo1Hp1fUlHeHolT + BWtwMINduTNgLX+8PmZmBgVQ3NTHyw9S1PTu+WO97gvAm/4DeNUXiBs1XISksW+LRCLDmUUnb1OAQ1cN + 8KTNC0Ut4mlV3CrBs04fVPdKUdW9F0r1RkReY2KL1MZTawfCcpgoapPgUbPol8pvdkdJuxcqe/zwomcv + MtWbEXGZBVmCuYovcnQan/3M+wR1IOg8E/nNHnjYKPxJqkY3FLZIUNa1SzPj7FIuwnIM4Z9gVixwtxdO + aFIzdl8zgALIlUvxsEmE+/X8SVKRZ+qO7ajs9kdOGQ8hF4zhG2/yVOy7YQcZZzneHbUL/GMUBZCeWYoH + ja64U+esEf1c3L4VFd27calCgOAsDnbFmVaIZWv30Sak9ZKbCpUC7E5h4V4dH3freCQVEpS/88WV524I + OW8On1hOjVhurVnrs9b9JoLQzWhnEosUnwSlJM/Xqz1I4BXwjmHXi4NXR9Pd8q+73e+SRAN4x7F7rla5 + IizbEl5HjTo8DqxKJDNeR3K8TC6XL/67JE8zmh5IxBEWJyWxRl3uoSvTiSPrBQKB0bwdSP75kWxO7dX9 + uc6B/8WB7+oZG+bTszTSAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOISURBVFhH7Zb7S1NxGMatrJ1mpfPW0jSLkIooSud0ZjNT + 3HK5rXZzaqXSgki6W79JdA+ie0FFBQVBCZUlERWRlkVRkanzbOYlmJN+aX9A8PR+V0IEeb7q+dHBB3bY + e97neZ/3e7ZFRIy/xhMYT4AzgY6VynPteVE/O/RRkKI9T3mRsy1f2RcS767R4sfDq/jRdH14Hl3D1806 + yGaibYXytK98KQbP7cbAiS34tt+Cb/vM/2Xg+BYMXqhDd5UGbWNN4hOJd5UtRvDMTgSOe9C/rxT9dWsl + CRzbjOCFvfBVZeHzaE18zFOe9DoWkviO3+J1JL7XxE3gaA2C5/eQCQ0+kYk79ohJfAunKibeYUtH8NR2 + sGn695Dw7pIREzhcjeDZXRCrtfjAa+J97tQDbeY0BE9uwwCbPCxsHDWBQ5swSCv0upfgXS7H0/FWJ3z3 + b1yGwJFq9O0yom9n8ZgJHNyA7koysEIJyTW05gqhblc6+naQ8PYi2fjqXoC3uRwGXumEkN8xH321hbLC + hmrVcRhoIQM+2zz0biuQFTbUK91U6RU055CBdWno3ZovK37bXDTncBh4kS2EROsciOYUWfGvT8OLbA4D + z7VkgImbkmXFb0nFcy2HgadkoKs0CV0lalnxmZNBvaXPwOMsIeQ1qeE1JsrHmkSINNSTLB4DminfRUsS + /OYkeIvjZcFXOgs+6tekEUKSX0RNGsWBl/po9LjS4CtVo7ModkyIppnocc7Bm8JYNGUqjkoaYAWNGcLp + sAlHKnwliehcHTMqxDUJ6KUerUVxaMwULt5ZFDGFywAresBMrIr5bYIadRZEjwjRGI9eewpeF8bhPhMf + wc/xhPr6+okej2dyQ6Zw6WU+JWGfDdFIq1g1nQvREEviySSuAvW44jFlKO12O/s/MEEyASZeW1ursNls + scTcm5ro2+EkbPRoGlToyJ82LF3FqnBtC63tVnbM3UqnZSGJqysqKqL0en2kpAnmlBU7nc4Uh8Ohcblc + JVd0M582F6gQqJnPRQtNflmnfkb3WqnHSuqVzgai3uwMDJ/CvwlQg6VE9g2t6l7DcgV4YLVlZWU5brc7 + g4mPKAHmcOgMmEwmZXl5+QxqpGITUNN41sxqtc5mCdH71CHYNU2cRHUJFosljt1Dn0UT0wwGg4L7DPx1 + SFhUYTNDsCZsj+yAMlikQ7BrqotkNX/f8yfy/8b+Cyvx1MsdZ4/QAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGGSURBVFhH7ZbPKwRxGMb3ZNbuQblNbbTRZidqm1k/1yJt + 22a1mNLi6qZoIyv/hvInOEqIthRKKSlJ+4OLmcXNyV/w+j7l6jDPHqRm6mlOz+f99F6+byDgf/4G/A38 + sgHDMNpM09Qty+pT/wEmP10dLM+LxvCzVGelNhmWVgIGWJ4FYF9Vwz8P9uTr6oQKumCA5VkAK3+aCMv7 + 7oo0t4tU0AUDLErgMR2Wt51lcbeKVNAFgxZ4SIekWcbwRSrogkEL3I8rAQwv2VTQBYMWuEuFxN20xdmY + p4IuGLTA7ZgSKC2Is16ggi4YtMDNaLu4avjrWp4KumDQAteq/GL3S6MQp4IuGLTA5YgSmFPD8zEq6IJB + C1wMB+V5Nib1XA8VdMGgBSpDSmCmV+rZKBV0waAFzgeD0shFpZbpooIuGLTAaVIJZLulNh2hgi4YtMBx + UpN6JiLVKZ0KumBQAnhCjyxNnKW4fKwmqKALBvsc6/uJjsqhqUkrAYM6SP78JPN8QPgFfwP/dQPf75A9 + ouq07JEAAAAASUVORK5CYII= + + + + 306, 17 + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8AAAAAAQAAAAIAAAAEAAAABwAAAAoAAAALAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAA + AAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAACwAAAAoAAAAHAAAABAAA + AAIAAAAB////AP///wAAAAACAAAABwAAAA0AAAAWAAAAHQAAACIAAAAkAAAAJAAAACQAAAAkAAAAJAAA + ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAiAAAAHQAA + ABYAAAANAAAABwAAAAL///8A////AAAAAAQAAAANAAAAGwAAAC0AAAA6AAAAQwAAAEgAAABIAAAASAAA + AEgAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAABIAAAASAAA + AEMAAAA6AAAALQAAABsAAAANAAAABP///wD///8AAAAABwAAABZ9VjSpjWE7/41hO/+NYTv/jWE7/41h + O/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41h + O/+NYTv/jWE7/41hO/+NYTv/fVY0qQAAABYAAAAH////AP///wAAAAAKAAAAHY1hO/+0Yz3/tGM9/7Rj + Pf/p0cX/3rqq/966qv/euqr/3rqq/966qv/euqr/3rqq/966qv/euqr/3rqq/966qv/euqr/6dHF/7Rj + Pf/p0cX/3rqq/+nRxf+0Yz3/tGM9/7RjPf+NYTv/AAAAHQAAAAr///8A////AAAAAAsAAAAijWE7/7Vk + Pv+1ZD7/tWQ+/+nRxf/eu6r/3ruq/967qv/eu6r/3ruq/967qv/eu6r/3ruq/967qv/eu6r/3ruq/967 + qv/p0cX/tWQ+/+nRxf/eu6r/6dHF/7VkPv+1ZD7/tWQ+/41hO/8AAAAiAAAAC////wD///8AAAAADAAA + ACSNYTv/t2U//7dlP/+3ZT//6tHG/+rRxv/q0cb/6tHG/+rRxv/q0cb/6tHG/+rRxv/q0cb/6tHG/+rR + xv/q0cb/6tHG/+rRxv+3ZT//6tHG/+rRxv/q0cb/t2U//7dlP/+3ZT//jWE7/wAAACQAAAAM////AP// + /wAAAAAMAAAAJI1hO/+3Z0D/t2dA/7dnQP+3Z0D/t2dA/7dnQP+4aEH/uGlB/7hpQf+5aUL/uWpC/7lq + Qv+5akL/uWpC/7lqQv+5aUL/uGlB/7hpQf+4aEH/t2dA/7dnQP+3Z0D/t2dA/7dnQP+NYTv/AAAAJAAA + AAz///8A////AAAAAAwAAAAkjWE7/7lpQf+5aUH/uWlB/7lpQf+6akL/umtC/7trQ/+7bEP/vG1E/7xu + RP+9bkT/vW5E/71vRf+9bkT/vW5E/7xuRP+8bUT/u2xD/7trQ/+6a0L/umpC/7lpQf+5aUH/uWlB/41h + O/8AAAAkAAAADP///wD///8AAAAADAAAACSNYTv/umtD/7prQ/+6a0P/u2xE/7ttRP+8bkX/vW9G/75w + Rv++cUf/v3JH/79zSP+/c0j/v3NI/79zSP+/c0j/v3JH/75xR/++cEb/vW9G/7xuRf+7bUT/u2xE/7pr + Q/+6a0P/jWE7/wAAACQAAAAM////AP///wAAAAAMAAAAJI1hO/+7bUT/u21E/7xuRf+9cEb/vXFG/75y + R/+/dEj/wHVJ/8F2Sv/Bd0r/wnhL/8J4S//CeUv/wnhL/8J4S//Bd0r/wXZK/8B1Sf+/dEj/vnJH/71x + Rv+9cEb/vG5F/7ttRP+NYTv/AAAAJAAAAAz///8A////AAAAAAwAAAAkjWE7/71vRf++cEb/v3JH/79z + R//AdUn/wXZK/8J4S//DeUv/xHtN/8V8Tf/FfU7/xn1O/8Z+Tv/GfU7/xX1O/8V8Tf/Ee03/w3lL/8J4 + S//Bdkr/wHVJ/79zR/+/ckf/vnBG/41hO/8AAAAkAAAADP///wD///8AAAAADAAAACSNYTv/v3JI/79z + SP/AdUr/wXdL/8N5TP/Ee03/xX1P/8Z+T//HgFD/x4FR/8iCUv/Ig1L/yINS/8iDUv/IglL/x4FR/8eA + UP/Gfk//xX1P/8R7Tf/DeUz/wXdL/8B1Sv+/c0j/jWE7/wAAACQAAAAM////AP///wAAAAAMAAAAJI1h + O//XpYn/16aJ/9iniv/ZqYv/2aqM/9usjf/brY7/3K6O/9ywj//dsZD/3bKQ/96ykf/espH/3rKR/92y + kP/dsZD/3LCP/9yujv/brY7/26yN/9mqjP/ZqYv/2KeK/9emif+NYTv/AAAAJAAAAAz///8A////AAAA + AAwAAAAkjWE7/9eniv/YqIv/2aqM/9qsjf/brY7/3K+P/9ywkP/dspH/3rOS/960k//ftZP/37WU/9+1 + lP/ftZT/37WT/960k//es5L/3bKR/9ywkP/cr4//262O/9qsjf/Zqoz/2KiL/41hO/8AAAAkAAAADP// + /wD///8AAAAADAAAACSNYTv/2amL/9mqjP/arI3/266O/9ywkP/dspH/3rOS/961k//gt5T/4LiV/+C5 + lv/huZb/4bmW/+G5lv/guZb/4LiV/+C3lP/etZP/3rOS/92ykf/csJD/266O/9qsjf/Zqoz/jWE7/wAA + ACQAAAAM////AP///wAAAAAMAAAAJI1hO//aq4z/26yN/9yujv/csJD/3rKR/960kv/gtpT/4LiV/+G6 + lv/iu5b/4ryX/+O9l//jvZj/472X/+K8l//iu5b/4bqW/+C4lf/gtpT/3rSS/96ykf/csJD/3K6O/9us + jf+NYTv/AAAAJAAAAAz///8A////AAAAAAsAAAAijWE7/9usjv/cro//3LCQ/96ykv/etJP/4LaU/+C4 + lv/iupf/4ryY/+O+mf/kv5r/5MCb/+TAm//kwJv/5L+a/+O+mf/ivJj/4rqX/+C4lv/gtpT/3rST/96y + kv/csJD/3K6P/41hO/8AAAAiAAAAC////wD///8AAAAACgAAAB2NYTv///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////jWE7/wAAAB0AAAAK////AP///wAAAAAHAAAAFo1hO///////3qqB//// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////3qqB//////+NYTv/AAAAFgAAAAf///8A////AAAAAAQAAAANjWE7//// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////41hO/8AAAANAAAABP///wD///8AAAAAAgAA + AAeJXjmbjWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41h + O/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/iV45mwAAAAcAAAAC////AP// + /wAAAAABAAAAAgAAAAQAAAAHAAAACgAAAAsAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAA + AAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAALAAAACgAAAAcAAAAEAAAAAgAA + AAH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8AgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA + AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAH///////////// + //////////////////////////////////8= + + + \ No newline at end of file diff --git a/VMSMonitor/Form1.vb b/VMSMonitor/Form1.vb new file mode 100644 index 0000000..4ef580c --- /dev/null +++ b/VMSMonitor/Form1.vb @@ -0,0 +1,306 @@ +Public Class Form1 + + Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer + Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer + Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer) + Private Const WM_QUIT = &H12 + Private Const WM_CLOSE = &H10 + + Private ison As Boolean = False + Private ismonitor As Boolean = False + + Dim totaltime As TimeSpan + Dim ercnt As Integer = 0 + Dim starttime As Integer = 0 + + Dim Xml As ArinXML + + Dim Createfile As String = "" + Dim CreateStart As String = "" + Dim killon As Boolean = False + + Dim fclose As Boolean = False + Dim autoexit As Short = 0 + Dim runtime As String = Now.ToString + + Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing + If fclose = False Then e.Cancel = True + Me.WindowState = FormWindowState.Minimized + + End Sub + + Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + Me.ProgressBar1.Minimum = 0 + Me.ProgressBar1.Maximum = 6 + + totaltime = Nothing + ercnt = 0 + Me.bt_monitor.PerformClick() + End Sub + + Public Function RunProcess(ByVal 파ì¼ì´ë¦„ As String, Optional ByVal 실행옵션 As String = vbNullString) As Boolean + Dim RunP As Process + Dim B As System.Diagnostics.ProcessStartInfo = New System.Diagnostics.ProcessStartInfo + + If FileIO.FileSystem.FileExists(파ì¼ì´ë¦„) Then + B.FileName = 파ì¼ì´ë¦„ + B.WorkingDirectory = 파ì¼ì´ë¦„.Substring(0, 파ì¼ì´ë¦„.LastIndexOf("\")) + B.Arguments = 실행옵션 + RunP = Process.Start(B) + Return True + Else + Return False + End If + End Function + + Public Function checkmyproc() As Process + Try + Dim Prc() As Process = Process.GetProcesses '//í˜„ìž¬í”„ë¡œì„¸ìŠ¤ë°°ì—´ì„ ê°€ì ¸ì˜¨ë‹¤. + Dim MyPrc As Process + For Each MyPrc In Prc + If MyPrc.ProcessName.ToUpper.IndexOf("VPS.NET") <> -1 Then + Return MyPrc + End If + Next + Return Nothing + Catch ex As Exception + Return Nothing + End Try + + End Function + + Public Sub KillMyProc(ByVal í´ëž˜ìŠ¤ëª… As String) + Dim Np As IntPtr + Np = FindWindow(í´ëž˜ìŠ¤ëª…, vbNullString) + 'Me.lstOutput.Items.Add("WHND:" & Np.ToInt32.ToString) + If Np = 0 Then + 'Form_Standard.MDIMessage.Text = "Cannot Find :" & í´ëž˜ìŠ¤ëª… + Exit Sub + End If + PostMessage(Np.ToInt32, WM_QUIT, 0&, 0&) + Sleep(500) + End Sub + + Private Sub Msg(ByVal m As String) + Me.lb_msg.Text = m + My.Application.DoEvents() + End Sub + Public Sub oKillMyProc(ByVal 프로세스명 As String) + Dim Prc() As Process = Process.GetProcesses '//í˜„ìž¬í”„ë¡œì„¸ìŠ¤ë°°ì—´ì„ ê°€ì ¸ì˜¨ë‹¤. + Dim MyPrc As Process + Dim 파ì¼ëª… As String = 프로세스명.Substring(프로세스명.LastIndexOf("\") + 1).ToUpper + For Each MyPrc In Prc + If (MyPrc.ProcessName & ".EXE").ToUpper = 파ì¼ëª… Then + + ' MsgBox(MyPrc.StartInfo.Fileame) + MyPrc.Kill() + End If + Next + Sleep(500) + End Sub + + Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick + Dim Prc As Process = checkmyproc() + If Prc Is Nothing Then + + '//프로세스가 없다. + If Me.Timer2.Enabled = False Then + autoexit += 1 + If autoexit > 3 Then + Me.Close() + End If + End If + + ison = False + Me.bt_kill.Enabled = False + Me.bt_run.Enabled = True + 'Me.Text = "noprocee" + Me.status_run.ForeColor = Color.Gray + If Me.starttime > 0 Then + Me.status_run.ForeColor = Color.Orange + End If + + Xml = New ArinXML(My.Application.Info.DirectoryPath & "\conf.xml") + Dim File As String = Xml.Data("config", "autocreate") + Dim Filename As String = Xml.Data("config", "createfile") + Runtime = Xml.Data("config", "runtime") + + If File.Trim = "1" AndAlso Filename.Trim <> "" AndAlso Me.Timer2.Enabled = False Then + Me.ProgressBar1.ForeColor = Color.Green + Me.Timer2.Enabled = True + Me.Timer2.Start() + End If + + Else + autoexit = 0 + Me.status_run.ForeColor = Color.Blue + Me.bt_kill.Enabled = True + Me.bt_run.Enabled = False + + ison = True + Try + dispalyinfo(Prc) + Catch ex As Exception + + End Try + End If + End Sub + + Private Sub dispalyinfo(ByVal prc As Process) + Xml = New ArinXML(My.Application.Info.DirectoryPath & "\conf.xml") + Createfile = Xml.Data("config", "createfile") + CreateStart = Xml.Data("config", "createstart") + + + Dim Buf As New System.Text.StringBuilder + Buf.AppendLine("NOW TIME:" & Now.ToString) + + If CreateStart.Trim <> "" AndAlso Createfile <> "" Then + Buf.AppendLine(">> ìƒì‚°ì¤‘:" & Createfile) + Buf.AppendLine(">> íŒì •시작:" & CreateStart) + killon = True + Me.status_create.ForeColor = Color.Blue + Else + Me.status_create.ForeColor = Color.Gray + killon = False + End If + + Buf.AppendLine("PROCESS NAME:" & prc.ProcessName) + Buf.AppendLine("Start Time:" & prc.StartTime.ToString()) + Buf.AppendLine("Total time:" & prc.TotalProcessorTime.ToString()) + Buf.AppendLine("SessionID:" & prc.SessionId.ToString) + Buf.AppendLine("Response:" & prc.Responding) + Buf.AppendLine("Handle:" & prc.Handle.ToString) + Buf.AppendLine("Handle Count:" & prc.HandleCount) + Buf.AppendLine("prc.HasExited:" & prc.HasExited) + Buf.AppendLine("prc.Id:" & prc.Id) + Buf.AppendLine("prc.MainWindowTitle:" & prc.MainWindowTitle) + Buf.AppendLine("prc.PrivilegedProcessorTime.ToString:" & prc.PrivilegedProcessorTime.ToString) + Buf.AppendLine("prc.UserProcessorTime.ToString:" & prc.UserProcessorTime.ToString) + Buf.AppendLine("Error Count:" & Me.ercnt) + + If Me.totaltime = Nothing Then + Me.totaltime = prc.TotalProcessorTime + Else + Dim ts As TimeSpan = prc.TotalProcessorTime - Me.totaltime + + Buf.AppendLine("Run Status:" & ts.ToString()) + + + If (Now - CDate(Me.runtime)).Seconds = 15 And killon Then + Me.ProgressBar1.ForeColor = Color.Red + ercnt += 1 + Me.ProgressBar1.Value = ercnt + Else + Me.ProgressBar1.Value = 0 + ercnt = 0 + End If + + Me.totaltime = prc.TotalProcessorTime + + If ercnt > 5 And killon Then '//10초를 넘ë„ë¡ + bt_kill.PerformClick() + End If + End If + + + Buf.AppendLine(prc.ToString()) + + Dim runtime As String = Xml.Data("config", "runtime") + Msg("Running Time:" & runtime) + + End Sub + + Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick + + starttime += 1 + Me.ProgressBar1.Value = starttime + + If starttime > 5 Then + + Me.ProgressBar1.Value = 0 + Me.ProgressBar1.ForeColor = Color.Red + Me.bt_run.PerformClick() + starttime = 0 + Me.Timer2.Stop() + Me.Timer2.Enabled = False + End If + End Sub + + Private Sub bt_monitor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + End Sub + + Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_monitor.Click + Me.ProgressBar1.Value = 0 + + If Me.ismonitor Then + Me.Timer1.Stop() + Me.Timer1.Enabled = False + Me.ismonitor = False + Me.bt_monitor.Text = "모니터 시작" + Msg("MONITOR OFF") + Me.status_monitor.ForeColor = Color.Gray + Else + Me.Timer1.Enabled = True + Me.Timer1.Start() + Me.ismonitor = True + Me.bt_monitor.Text = "모니터 종료" + Me.status_monitor.ForeColor = Color.Blue + End If + End Sub + + Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_run.Click + If Me.ison Then + MsgBox("중복실행ì´ë¯€ë¡œ ì‹¤í–‰ì„ í•  수 없습니다", MsgBoxStyle.Information, "확ì¸") + Else + + RunProcess(My.Application.Info.DirectoryPath & "\vps.net.exe", "TINDEVIL") + End If + End Sub + + Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_kill.Click + Dim Prc As Process = checkmyproc() + If Not Prc Is Nothing Then + + Dim sta As Boolean = Prc.CloseMainWindow() + If sta Then + My.Application.DoEvents() + + While (1) + Dim P As Process = checkmyproc() + If P Is Nothing Then Exit While + My.Application.DoEvents() + End While + + Xml = New ArinXML(My.Application.Info.DirectoryPath & "\conf.xml") + Xml.Data("config", "autocreate") = "1" + Xml.Data("config", "shutdown") = "0" + + Me.ProgressBar1.ForeColor = Color.Green + starttime = 0 + Me.Timer2.Enabled = True + Me.Timer2.Start() + Else + Xml = New ArinXML(My.Application.Info.DirectoryPath & "\conf.xml") + Xml.Data("config", "autocreate") = "1" + Xml.Data("config", "shutdown") = "0" + + Prc.Kill() + Me.ProgressBar1.ForeColor = Color.Green + starttime = 0 + Me.Timer2.Enabled = True + Me.Timer2.Start() + End If + End If + End Sub + + Private Sub ToolStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ToolStrip1.ItemClicked + + End Sub + + Private Sub ToolStripButton1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click + Me.fclose = True + End + End Sub +End Class diff --git a/VMSMonitor/Frm_monitor.Designer.vb b/VMSMonitor/Frm_monitor.Designer.vb new file mode 100644 index 0000000..b9c27f2 --- /dev/null +++ b/VMSMonitor/Frm_monitor.Designer.vb @@ -0,0 +1,179 @@ + _ +Partial Class Frm_monitor + Inherits System.Windows.Forms.Form + + 'Formì€ Dispose를 재정ì˜í•˜ì—¬ 구성 요소 목ë¡ì„ 정리합니다. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Windows Form ë””ìžì´ë„ˆì— 필요합니다. + Private components As System.ComponentModel.IContainer + + '참고: ë‹¤ìŒ í”„ë¡œì‹œì €ëŠ” Windows Form ë””ìžì´ë„ˆì— 필요합니다. + '수정하려면 Windows Form ë””ìžì´ë„ˆë¥¼ 사용하십시오. + '코드 편집기를 사용하여 수정하지 마십시오. + _ + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Frm_monitor)) + Me.Timer1 = New System.Windows.Forms.Timer(Me.components) + Me.Timer2 = New System.Windows.Forms.Timer(Me.components) + Me.ToolStrip1 = New System.Windows.Forms.ToolStrip() + Me.bt_monitor = New System.Windows.Forms.ToolStripButton() + Me.bt_run = New System.Windows.Forms.ToolStripButton() + Me.bt_kill = New System.Windows.Forms.ToolStripButton() + Me.ToolStripButton1 = New System.Windows.Forms.ToolStripButton() + Me.ProgressBar1 = New System.Windows.Forms.ProgressBar() + Me.StatusStrip1 = New System.Windows.Forms.StatusStrip() + Me.status_monitor = New System.Windows.Forms.ToolStripStatusLabel() + Me.status_run = New System.Windows.Forms.ToolStripStatusLabel() + Me.lb_msg = New System.Windows.Forms.ToolStripStatusLabel() + Me.RichTextBox1 = New System.Windows.Forms.RichTextBox() + Me.ToolStrip1.SuspendLayout() + Me.StatusStrip1.SuspendLayout() + Me.SuspendLayout() + ' + 'Timer1 + ' + Me.Timer1.Interval = 1000 + ' + 'Timer2 + ' + Me.Timer2.Interval = 1000 + ' + 'ToolStrip1 + ' + Me.ToolStrip1.ImageScalingSize = New System.Drawing.Size(32, 32) + Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.bt_monitor, Me.bt_run, Me.bt_kill, Me.ToolStripButton1}) + Me.ToolStrip1.Location = New System.Drawing.Point(0, 0) + Me.ToolStrip1.Name = "ToolStrip1" + Me.ToolStrip1.Size = New System.Drawing.Size(648, 39) + Me.ToolStrip1.TabIndex = 4 + Me.ToolStrip1.Text = "ToolStrip1" + ' + 'bt_monitor + ' + Me.bt_monitor.Image = CType(resources.GetObject("bt_monitor.Image"), System.Drawing.Image) + Me.bt_monitor.ImageTransparentColor = System.Drawing.Color.Magenta + Me.bt_monitor.Name = "bt_monitor" + Me.bt_monitor.Size = New System.Drawing.Size(103, 36) + Me.bt_monitor.Text = "모니터시작" + ' + 'bt_run + ' + Me.bt_run.Enabled = False + Me.bt_run.Image = CType(resources.GetObject("bt_run.Image"), System.Drawing.Image) + Me.bt_run.ImageTransparentColor = System.Drawing.Color.Magenta + Me.bt_run.Name = "bt_run" + Me.bt_run.Size = New System.Drawing.Size(97, 36) + Me.bt_run.Text = "VMS 실행" + ' + 'bt_kill + ' + Me.bt_kill.Enabled = False + Me.bt_kill.Image = CType(resources.GetObject("bt_kill.Image"), System.Drawing.Image) + Me.bt_kill.ImageTransparentColor = System.Drawing.Color.Magenta + Me.bt_kill.Name = "bt_kill" + Me.bt_kill.Size = New System.Drawing.Size(91, 36) + Me.bt_kill.Text = "강제종료" + ' + 'ToolStripButton1 + ' + Me.ToolStripButton1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right + Me.ToolStripButton1.Image = CType(resources.GetObject("ToolStripButton1.Image"), System.Drawing.Image) + Me.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta + Me.ToolStripButton1.Name = "ToolStripButton1" + Me.ToolStripButton1.Size = New System.Drawing.Size(115, 36) + Me.ToolStripButton1.Text = "프로그램종료" + ' + 'ProgressBar1 + ' + Me.ProgressBar1.Dock = System.Windows.Forms.DockStyle.Bottom + Me.ProgressBar1.Location = New System.Drawing.Point(0, 362) + Me.ProgressBar1.Name = "ProgressBar1" + Me.ProgressBar1.Size = New System.Drawing.Size(648, 23) + Me.ProgressBar1.TabIndex = 5 + ' + 'StatusStrip1 + ' + Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.status_monitor, Me.status_run, Me.lb_msg}) + Me.StatusStrip1.Location = New System.Drawing.Point(0, 340) + Me.StatusStrip1.Name = "StatusStrip1" + Me.StatusStrip1.Size = New System.Drawing.Size(648, 22) + Me.StatusStrip1.TabIndex = 6 + Me.StatusStrip1.Text = "StatusStrip1" + ' + 'status_monitor + ' + Me.status_monitor.Name = "status_monitor" + Me.status_monitor.Size = New System.Drawing.Size(66, 17) + Me.status_monitor.Text = "â— Monitor" + ' + 'status_run + ' + Me.status_run.Name = "status_run" + Me.status_run.Size = New System.Drawing.Size(49, 17) + Me.status_run.Text = "â— VMS" + ' + 'lb_msg + ' + Me.lb_msg.Name = "lb_msg" + Me.lb_msg.Size = New System.Drawing.Size(53, 17) + Me.lb_msg.Text = "Message" + ' + 'RichTextBox1 + ' + Me.RichTextBox1.Dock = System.Windows.Forms.DockStyle.Fill + Me.RichTextBox1.Font = New System.Drawing.Font("나눔고딕", 11.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.RichTextBox1.Location = New System.Drawing.Point(0, 39) + Me.RichTextBox1.Name = "RichTextBox1" + Me.RichTextBox1.Size = New System.Drawing.Size(648, 301) + Me.RichTextBox1.TabIndex = 7 + Me.RichTextBox1.Text = "VMS 실행ê°ì§€" + ' + 'Frm_monitor + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(648, 385) + Me.Controls.Add(Me.RichTextBox1) + Me.Controls.Add(Me.StatusStrip1) + Me.Controls.Add(Me.ProgressBar1) + Me.Controls.Add(Me.ToolStrip1) + Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) + Me.MaximizeBox = False + Me.Name = "Frm_monitor" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "VMS STARTER" + Me.WindowState = System.Windows.Forms.FormWindowState.Minimized + Me.ToolStrip1.ResumeLayout(False) + Me.ToolStrip1.PerformLayout() + Me.StatusStrip1.ResumeLayout(False) + Me.StatusStrip1.PerformLayout() + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents Timer1 As System.Windows.Forms.Timer + Friend WithEvents Timer2 As System.Windows.Forms.Timer + Friend WithEvents ToolStrip1 As System.Windows.Forms.ToolStrip + Friend WithEvents bt_monitor As System.Windows.Forms.ToolStripButton + Friend WithEvents bt_run As System.Windows.Forms.ToolStripButton + Friend WithEvents bt_kill As System.Windows.Forms.ToolStripButton + Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar + Friend WithEvents StatusStrip1 As System.Windows.Forms.StatusStrip + Friend WithEvents lb_msg As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents status_run As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents status_monitor As System.Windows.Forms.ToolStripStatusLabel + Friend WithEvents ToolStripButton1 As System.Windows.Forms.ToolStripButton + Friend WithEvents RichTextBox1 As System.Windows.Forms.RichTextBox + +End Class diff --git a/VMSMonitor/Frm_monitor.resx b/VMSMonitor/Frm_monitor.resx new file mode 100644 index 0000000..e2796bc --- /dev/null +++ b/VMSMonitor/Frm_monitor.resx @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 107, 17 + + + 197, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMpSURBVFhH7ZfLS1RRHMe1rCCkqAwiqkV/hhtbutBQUHyC + gWCaZas22jg+Z8zMHNTRZBAbRB1d2aaFq9z6FoUW4trw/QZRfp3PoTOMwhmtmYEWCl/OY7738/3Onbl3 + rnFxl3+XZ+B/OgMjIyNeJYmxvNb3PDw8LMfHx3JychITwSbDWiAQCMjR0ZEcHBzI4eFhVAUTNhnWAoOD + g7K/vy87OzuSnJwsz9PToyJYMGGTYS0wMDAQLJCWliavysqkrLQ0IsGAZQqQYS3Q39+vC2xvb0t2dra8 + r6qSaocjIsGABRM2GdYCfr9f9vb2tDknJydqBWDBhE2GtUBfX582bW1tSX5+ftQKwIIJmwxrgd7eXm3a + 3NyUwsLCiE596EcHCyZsMqwFfD6f7O7uysbGhrwoKpLamppgiZWVlX8qBAMWTNhkWAv09PQECxQXF0uT + 261LGFEidH2ROQxYpgAZ1gLdXV26wPr6upSUlIinrU1cjY2nRImze+HWMGDBhE2GtYC3s1Nfr2tra/ra + /9LdLR+bm4MiPHR9kTkMWDBhk2Et0N7erk2rq6vyurxcvqpvLO8AEW7mZs3e2f1QD3MYsGDCJsNawOPx + aNPi4qK8raiQwNCQbhyJYMCCCZsMa4HPra3atLCwIFWVlTI6OirfIhQMWDBhk2Et8KmlRd+x5ufnpaG+ + /q8/b9t3AhZM2GRYCwDANDc3pw+IpmDCJsNa4ENTkzbNzMzI7OxsVAUTNhnWAm6XS9+zp6endQnU0dFx + SmY/3Oj2v5Fn7xKF0fhgwibDWqCxoUGbJicnZWpqSovnQ3O5MTf74cYK31P5+eulMBofTNhkWAvU19Vp + 08TEhC6BxsbGTsnshxsDP0rF9T1BGI0PJmwyrAXqamv1DWN8fDwmgk2GtUCN0ynLy8uytLQUE8Emw1rA + 6XB4ndXVElOpjPP+F4p3Op1X1C/YNfUwebOgoOCWeqK5k5WVdTcvLy9JPd89yMzMfKQesx6r+RMj1rm5 + uQ+V735GRsY9jlGv3VZKTE1NvaHGqyo4/rzw0Ncx6zJGQFJSUhIoh9T6uhFr5UvAE3rMn1Br8G+IV7/l + /QuMLAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAANxSURBVFhH7ZbpT1NBFMXdSqkVLJuCiAGDUUGWQltqoUVE + WYJKrRYiIkIgpCqYEIIxbCKoEUEUjRi3gBqssirKIhoal5RNdkQQEVBE/CuOMw0mEBWkAvqhLzl57eub + 3t+ce+fOLFigu3QO6ByYwgFPT88lrq6uy/l8vjm90+/zahgNejjLODnlvn539GnTM1wud6NQKDSeNxAn + Jyfr44Ws3sbBIyhQc5FUyBpWnDW5SJ7bE1dMCCBjTh1xdna2O1nBQPuIAn3f0tH2OQmFjWIkKhljikyT + m24eDq6Ojo4r7Ozs9AjIwlmHcXFxcUgtZ6BpOJgohIDE4N1YGjpGUlHU7IsTD5k4lG2sFPvYi2id2Nra + MmcVhAIkljDQMBQM9eBejRoG96H1kwJvv6agczQdpW92IrWcjehsozJv2bptJD2WpE5YswJCAY7d14P6 + oxyvB2STpB6Qo3k4Cl2jiegezcDD1iCklhoh+hynJjDSOpjH41mR9LAJyCKtU0MB4u7qkcB78OqD9Nci + vzUOhZO0JBCQdDxpP4iUYlNEZBqopAqrgxSErBp9rRyhALH5TBJYhhf9gdNISpw6QAo1Hl1f0lHdEYUT + xWsQcYZT6xdkwx+vj5mZQQEUN5h48V4KVd+uP9ar/iC8/rAfL/uDcV3FRWgG55ZIJDKYWXTyNgWIzNPH + o3YvlLaKp1VZmwRPurajrk+KZz27kVmxAVFXWdgitfXU2oGwXBZK2yV40CL6rYpa3FHe4YXa3p143rsb + WRWbEH6ZDVmCmZIvcnIen/3M+wR1YN95FopaPHCvSfiTlE2bUdIqQVW3v2bGOZVchOUaIDDBtEzg7iCc + 0KRm7L5mAAWQZy7FvWYR7jTwJ0lJnlV0+qC2JxC5VTyEXliOgHjjx+KA9b5knMV4d9Qu8I9RFEB6ainu + Nrkhv95FI/q5rGMranp24FKNACHZRvCPM6kRy2z20Cak9ZL7FSoF2JHGxu16PgrqeSQVElS/DcCVp5sR + et4M22ONVGK5tWatz1r3mwhCNyO/FDYpPgkqSZ6v1XmQwCvhHcNpEIesPkJ3y7/udlMliQbwjuP05j1z + Q1iOBbyOGnZ67LdMJDNeS3K8TC6XL/67JE8zmh5IxOHmyZJYw273A6tOE0fWCQQCw3k7kPzzI9mc2qv7 + c50D/4sD3wHeuRvlgDZ3nAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOHSURBVFhH7Zb7S1NxGMatzJ1mpVOzpWkWIRVRlM7prGam + uOVyW+3m1C5KCyLpbv0m0T2I7gUVFRQEFVSWRFRE2o2iIlPnOTMvwZz0S/sDgqf3uxIiyPNVz48OPrDD + 3vM+z/u837MtKmr0NZrAaAKcCbQtU59pzYv92WaMhRytS9XnOdvylX0h8c4aPX48uIwfjVcH5+EVfN1o + gGImWpaoT0oVC9F/Zif6jm3Ct702fNtj/S99Rzeh/1wdOjfo0DLSJD6ReEf5fIRObUfwqA+9e8rQW7dK + luCRjQid2w1pQw4+D9fEx6Xq437XXBLf9lu8jsR3W7gJHq5B6OwuMqHDJzJxyxk1jm/hVMXE2xyZCJ3Y + CjZN7y4S3lk6ZIIHqxE6vQNitR4feE28z5+wr8WagdDxLehjk0eEzcMmeGA9+mmFfu8CvMvneDre5sR8 + D6xbhOChavTsMKNne8mICe5fi84qMrBEDdk1NOcL4U5PJnq2kfDWYsX46p2Dt/k8BgxCOOCajZ7aIkVh + Q702cBqQHLPQvaVQUdhQLw0T5FfQlCeEpdUZ6N5coCgBx0w05XEYeJ4rhEX7DIjWNEUJrMnA81wOA8/0 + ZICJW1IVJWBLxzM9h4EnZKCjLAUdpVpFkaypoN7yZ+BBjhD2W7Twm5OVY2UyRBrqcQ6HgUe6mO+iLQUB + awr8JUmKIJVNg0T9GnRCWPaLqFGn2vfCGIcuTwakMi3aixNGhGiZii73DLwpSkBjtuqwrAFW0JAlnIyY + cKVDKk1G+4r4YSGunIJu6vG6OBEN2cL5W/OiYrgMsKL7zMTy+N8mqFF7YdyQEM1J6Ham4VVRIu4x8SH8 + HI+pr68f6/P5xt/JFi68KKAknNMhmmkVyydxIZoSSDyVxDWgHpd8liy10+lk/wfGyCbAxGtra1UOhyOB + mHldF3czkoSDHk2TBm0FEwelo0QTqW2mtd3Ijb9d5bbNJXFtZWVlrNFojJY1wZyyYrfbneZyuXQej6f0 + kmHqk6ZCDYI1s7lopskvGrRP6V479VhGvTLZQNSbnYHBU/g3AWqwkMi9ptfcvbNYBR5YbXl5eZ7X681i + 4kNKgDkcOAMWi0VdUVExmRpp2ATUNIk1s9vt01lC9D59AHZNE6dQ3RSbzZbI7qHP4oiJJpNJxX0G/jok + LKqImQFYE7ZHdkAZLNIB2DXVRbOav+/5E/l/Y/8Fd+zUtiElh8IAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGGSURBVFhH7ZbPKwRxGMb3ZNbuQblNbbTRZidqm1k/1yJt + 22a1mNLi6qZoIyv/hvInOEqIthRKKSlJ+4OLmcXNyV/w+j7l6jDPHqRm6mlOz+f99F6+byDgf/4G/A38 + sgHDMNpM09Qty+pT/wEmP10dLM+LxvCzVGelNhmWVgIGWJ4FYF9Vwz8P9uTr6oQKumCA5VkAK3+aCMv7 + 7oo0t4tU0AUDLErgMR2Wt51lcbeKVNAFgxZ4SIekWcbwRSrogkEL3I8rAQwv2VTQBYMWuEuFxN20xdmY + p4IuGLTA7ZgSKC2Is16ggi4YtMDNaLu4avjrWp4KumDQAteq/GL3S6MQp4IuGLTA5YgSmFPD8zEq6IJB + C1wMB+V5Nib1XA8VdMGgBSpDSmCmV+rZKBV0waAFzgeD0shFpZbpooIuGLTAaVIJZLulNh2hgi4YtMBx + UpN6JiLVKZ0KumBQAnhCjyxNnKW4fKwmqKALBvsc6/uJjsqhqUkrAYM6SP78JPN8QPgFfwP/dQPf75A9 + ouq07JEAAAAASUVORK5CYII= + + + + 306, 17 + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8AAAAAAQAAAAIAAAAEAAAABwAAAAoAAAALAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAA + AAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAACwAAAAoAAAAHAAAABAAA + AAIAAAAB////AP///wAAAAACAAAABwAAAA0AAAAWAAAAHQAAACIAAAAkAAAAJAAAACQAAAAkAAAAJAAA + ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAiAAAAHQAA + ABYAAAANAAAABwAAAAL///8A////AAAAAAQAAAANAAAAGwAAAC0AAAA6AAAAQwAAAEgAAABIAAAASAAA + AEgAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAABIAAAASAAA + AEMAAAA6AAAALQAAABsAAAANAAAABP///wD///8AAAAABwAAABZ9VjSpjWE7/41hO/+NYTv/jWE7/41h + O/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41h + O/+NYTv/jWE7/41hO/+NYTv/fVY0qQAAABYAAAAH////AP///wAAAAAKAAAAHY1hO/+0Yz3/tGM9/7Rj + Pf/p0cX/3rqq/966qv/euqr/3rqq/966qv/euqr/3rqq/966qv/euqr/3rqq/966qv/euqr/6dHF/7Rj + Pf/p0cX/3rqq/+nRxf+0Yz3/tGM9/7RjPf+NYTv/AAAAHQAAAAr///8A////AAAAAAsAAAAijWE7/7Vk + Pv+1ZD7/tWQ+/+nRxf/eu6r/3ruq/967qv/eu6r/3ruq/967qv/eu6r/3ruq/967qv/eu6r/3ruq/967 + qv/p0cX/tWQ+/+nRxf/eu6r/6dHF/7VkPv+1ZD7/tWQ+/41hO/8AAAAiAAAAC////wD///8AAAAADAAA + ACSNYTv/t2U//7dlP/+3ZT//6tHG/+rRxv/q0cb/6tHG/+rRxv/q0cb/6tHG/+rRxv/q0cb/6tHG/+rR + xv/q0cb/6tHG/+rRxv+3ZT//6tHG/+rRxv/q0cb/t2U//7dlP/+3ZT//jWE7/wAAACQAAAAM////AP// + /wAAAAAMAAAAJI1hO/+3Z0D/t2dA/7dnQP+3Z0D/t2dA/7dnQP+4aEH/uGlB/7hpQf+5aUL/uWpC/7lq + Qv+5akL/uWpC/7lqQv+5aUL/uGlB/7hpQf+4aEH/t2dA/7dnQP+3Z0D/t2dA/7dnQP+NYTv/AAAAJAAA + AAz///8A////AAAAAAwAAAAkjWE7/7lpQf+5aUH/uWlB/7lpQf+6akL/umtC/7trQ/+7bEP/vG1E/7xu + RP+9bkT/vW5E/71vRf+9bkT/vW5E/7xuRP+8bUT/u2xD/7trQ/+6a0L/umpC/7lpQf+5aUH/uWlB/41h + O/8AAAAkAAAADP///wD///8AAAAADAAAACSNYTv/umtD/7prQ/+6a0P/u2xE/7ttRP+8bkX/vW9G/75w + Rv++cUf/v3JH/79zSP+/c0j/v3NI/79zSP+/c0j/v3JH/75xR/++cEb/vW9G/7xuRf+7bUT/u2xE/7pr + Q/+6a0P/jWE7/wAAACQAAAAM////AP///wAAAAAMAAAAJI1hO/+7bUT/u21E/7xuRf+9cEb/vXFG/75y + R/+/dEj/wHVJ/8F2Sv/Bd0r/wnhL/8J4S//CeUv/wnhL/8J4S//Bd0r/wXZK/8B1Sf+/dEj/vnJH/71x + Rv+9cEb/vG5F/7ttRP+NYTv/AAAAJAAAAAz///8A////AAAAAAwAAAAkjWE7/71vRf++cEb/v3JH/79z + R//AdUn/wXZK/8J4S//DeUv/xHtN/8V8Tf/FfU7/xn1O/8Z+Tv/GfU7/xX1O/8V8Tf/Ee03/w3lL/8J4 + S//Bdkr/wHVJ/79zR/+/ckf/vnBG/41hO/8AAAAkAAAADP///wD///8AAAAADAAAACSNYTv/v3JI/79z + SP/AdUr/wXdL/8N5TP/Ee03/xX1P/8Z+T//HgFD/x4FR/8iCUv/Ig1L/yINS/8iDUv/IglL/x4FR/8eA + UP/Gfk//xX1P/8R7Tf/DeUz/wXdL/8B1Sv+/c0j/jWE7/wAAACQAAAAM////AP///wAAAAAMAAAAJI1h + O//XpYn/16aJ/9iniv/ZqYv/2aqM/9usjf/brY7/3K6O/9ywj//dsZD/3bKQ/96ykf/espH/3rKR/92y + kP/dsZD/3LCP/9yujv/brY7/26yN/9mqjP/ZqYv/2KeK/9emif+NYTv/AAAAJAAAAAz///8A////AAAA + AAwAAAAkjWE7/9eniv/YqIv/2aqM/9qsjf/brY7/3K+P/9ywkP/dspH/3rOS/960k//ftZP/37WU/9+1 + lP/ftZT/37WT/960k//es5L/3bKR/9ywkP/cr4//262O/9qsjf/Zqoz/2KiL/41hO/8AAAAkAAAADP// + /wD///8AAAAADAAAACSNYTv/2amL/9mqjP/arI3/266O/9ywkP/dspH/3rOS/961k//gt5T/4LiV/+C5 + lv/huZb/4bmW/+G5lv/guZb/4LiV/+C3lP/etZP/3rOS/92ykf/csJD/266O/9qsjf/Zqoz/jWE7/wAA + ACQAAAAM////AP///wAAAAAMAAAAJI1hO//aq4z/26yN/9yujv/csJD/3rKR/960kv/gtpT/4LiV/+G6 + lv/iu5b/4ryX/+O9l//jvZj/472X/+K8l//iu5b/4bqW/+C4lf/gtpT/3rSS/96ykf/csJD/3K6O/9us + jf+NYTv/AAAAJAAAAAz///8A////AAAAAAsAAAAijWE7/9usjv/cro//3LCQ/96ykv/etJP/4LaU/+C4 + lv/iupf/4ryY/+O+mf/kv5r/5MCb/+TAm//kwJv/5L+a/+O+mf/ivJj/4rqX/+C4lv/gtpT/3rST/96y + kv/csJD/3K6P/41hO/8AAAAiAAAAC////wD///8AAAAACgAAAB2NYTv///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////jWE7/wAAAB0AAAAK////AP///wAAAAAHAAAAFo1hO///////3qqB//// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////3qqB//////+NYTv/AAAAFgAAAAf///8A////AAAAAAQAAAANjWE7//// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////41hO/8AAAANAAAABP///wD///8AAAAAAgAA + AAeJXjmbjWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41h + O/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/jWE7/41hO/+NYTv/iV45mwAAAAcAAAAC////AP// + /wAAAAABAAAAAgAAAAQAAAAHAAAACgAAAAsAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAA + AAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAALAAAACgAAAAcAAAAEAAAAAgAA + AAH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8AgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA + AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAH///////////// + //////////////////////////////////8= + + + \ No newline at end of file diff --git a/VMSMonitor/Frm_monitor.vb b/VMSMonitor/Frm_monitor.vb new file mode 100644 index 0000000..b70f726 --- /dev/null +++ b/VMSMonitor/Frm_monitor.vb @@ -0,0 +1,337 @@ +Public Class Frm_monitor + + Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer + Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer + Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer) + Private Const WM_QUIT = &H12 + Private Const WM_CLOSE = &H10 + + Private ison As Boolean = False + Private ismonitor As Boolean = False + + Dim totaltime As TimeSpan + Dim ercnt As Integer = 0 + Dim starttime As Integer = 0 + + Dim Xml As ArinXML + + Dim Createfile As String = "" + Dim CreateStart As String = "" + Dim killon As Boolean = False + + Dim fclose As Boolean = False + Dim autoexit As Short = 0 + Dim runtime As String = Now.ToString + Dim conffile As String = My.Application.Info.DirectoryPath & "\error.xml" + Dim AutoClose As Boolean = False + + Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing + If Not AutoClose Then + If MsgBox("ì •ë§ë¡œ 종료하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확ì¸") = MsgBoxResult.Ok Then + Else + e.Cancel = True + End If + End If + End Sub + + Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + Me.ProgressBar1.Minimum = 0 + Me.ProgressBar1.Maximum = 6 + + Dim a As New System.Text.StringBuilder + a.AppendLine("ì´ í”„ë¡œê·¸ëž¨ì€ VMSì˜ ì‹¤í–‰ì„ ê°ì§€í•˜ëŠ” 프로그램입니다") + a.AppendLine("VMSí”„ë¡œê·¸ëž¨ì´ ì˜¤ë¥˜ë°œìƒìœ¼ë¡œ ìž‘ë™ì„ 멈출경우") + a.AppendLine("초기화 ë° ìž¬ì‹¤í–‰ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤.") + a.AppendLine() + Me.RichTextBox1.Text = a.ToString & vbCrLf + totaltime = Nothing + ercnt = 0 + Me.bt_monitor.PerformClick() + End Sub + + Public Function RunProcess(ByVal 파ì¼ì´ë¦„ As String, Optional ByVal 실행옵션 As String = vbNullString) As Boolean + + Try + Dim RunP As Process + Dim B As System.Diagnostics.ProcessStartInfo = New System.Diagnostics.ProcessStartInfo + + If FileIO.FileSystem.FileExists(파ì¼ì´ë¦„) Then + B.FileName = 파ì¼ì´ë¦„ + B.WorkingDirectory = 파ì¼ì´ë¦„.Substring(0, 파ì¼ì´ë¦„.LastIndexOf("\")) + B.Arguments = 실행옵션 + RunP = Process.Start(B) + Return True + Else + Return False + End If + Catch ex As Exception + Msg("ERROR_RUNPROCESS->" & ex.Message.ToString) + Return False + End Try + + + End Function + Public Function checkmyproc() As Process + Try + Dim Prc() As Process = Process.GetProcesses '//í˜„ìž¬í”„ë¡œì„¸ìŠ¤ë°°ì—´ì„ ê°€ì ¸ì˜¨ë‹¤. + Dim MyPrc As Process + For Each MyPrc In Prc + If MyPrc.ProcessName.ToUpper.IndexOf("VMS.NET") <> -1 And MyPrc.ProcessName.ToUpper.IndexOf("VSHOST") = -1 Then + Return MyPrc + End If + Next + Return Nothing + Catch ex As Exception + Msg("ERROR_CHECKMYPROC->" & ex.Message.ToString) + Return Nothing + End Try + + End Function + Public Sub KillMyProc(ByVal í´ëž˜ìŠ¤ëª… As String) + Try + Dim Np As IntPtr + Np = FindWindow(í´ëž˜ìŠ¤ëª…, vbNullString) + 'Me.lstOutput.Items.Add("WHND:" & Np.ToInt32.ToString) + If Np = 0 Then + 'Form_Standard.MDIMessage.Text = "Cannot Find :" & í´ëž˜ìŠ¤ëª… + Exit Sub + End If + PostMessage(Np.ToInt32, WM_QUIT, 0&, 0&) + Sleep(500) + Catch ex As Exception + Msg("ERROR_KIMMMYPROC->" & ex.Message.ToString) + End Try + + End Sub + Private Sub Msg(ByVal m As String) + If Me.RichTextBox1.Text.Length > 10000 Then + Try + My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\" & Now.ToString("yyyyMMdd") & ".txt", Me.RichTextBox1.Text, True) + Catch ex As Exception + + End Try + Me.RichTextBox1.Text = "" + End If + + Me.RichTextBox1.AppendText("[" & Now.ToString("yyyy-MM-dd HH:mm:ss") & "] " & m & vbCrLf) + My.Application.DoEvents() + End Sub + Public Sub oKillMyProc(ByVal 프로세스명 As String) + Try + Dim Prc() As Process = Process.GetProcesses '//í˜„ìž¬í”„ë¡œì„¸ìŠ¤ë°°ì—´ì„ ê°€ì ¸ì˜¨ë‹¤. + Dim MyPrc As Process + Dim 파ì¼ëª… As String = 프로세스명.Substring(프로세스명.LastIndexOf("\") + 1).ToUpper + For Each MyPrc In Prc + If (MyPrc.ProcessName & ".EXE").ToUpper = 파ì¼ëª… Then + + ' MsgBox(MyPrc.StartInfo.Fileame) + MyPrc.Kill() + End If + Next + Sleep(500) + Catch ex As Exception + Msg("ERROR_OKILLMYPROC->" & ex.Message.ToString) + End Try + + End Sub + + Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick + Timer1.Enabled = False + + Dim Prc As Process = checkmyproc() + If Prc Is Nothing Then + + '//프로세스가 없다. + If Me.Timer2.Enabled = False Then + autoexit += 1 + If autoexit > 3 Then + AutoClose = True + Me.Close() + End If + End If + + ison = False + Me.bt_kill.Enabled = False + Me.bt_run.Enabled = True + 'Me.Text = "noprocee" + Me.status_run.ForeColor = Color.Gray + If Me.starttime > 0 Then + Me.status_run.ForeColor = Color.Orange + End If + + + If System.IO.File.Exists(conffile) Then ''//ì—러파ì¼ì´ 존재하는지 확ì¸í•œë‹¤. + Dim buffer = My.Computer.FileSystem.ReadAllText(conffile, System.Text.Encoding.Default).Trim + If buffer <> "" Then + If buffer.Substring(0, 5) = "ERROR" Then + If Me.Timer2.Enabled = False Then '//ìž‘ë™ì¤‘ì´ì•„니ë¼ë©´ 실행한다. + Me.ProgressBar1.ForeColor = Color.Green + Me.Timer2.Enabled = True + Me.Timer2.Start() + End If + End If + End If + End If + + Else + + autoexit = 0 + Me.status_run.ForeColor = Color.Blue + Me.bt_kill.Enabled = True + Me.bt_run.Enabled = False + + ison = True + Try + dispalyinfo(Prc) + Catch ex As Exception + + End Try + End If + + Timer1.Enabled = True + + End Sub + + Private Sub dispalyinfo(ByVal prc As Process) + Try + + Dim Eron As Boolean = False + If System.IO.File.Exists(conffile) Then ''//ì—러파ì¼ì´ 존재하는지 확ì¸í•œë‹¤. + Dim buffer = My.Computer.FileSystem.ReadAllText(conffile, System.Text.Encoding.Default).Trim + If buffer <> "" Then + If buffer.Substring(0, 5) = "ERROR" Then + If Me.Timer2.Enabled = False Then '//ìž‘ë™ì¤‘ì´ì•„니ë¼ë©´ 실행한다. + Eron = True + End If + End If + End If + End If + + + + If Eron Then + Msg("VMS로부터 ì—러발ìƒì„ 확ì¸í•˜ì˜€ìŠµë‹ˆë‹¤") + killon = True + Else + killon = False + End If + + 'Buf.AppendLine("PROCESS NAME:" & prc.ProcessName) + 'Buf.AppendLine("Start Time:" & prc.StartTime.ToString()) + 'Buf.AppendLine("Total time:" & prc.TotalProcessorTime.ToString()) + 'Buf.AppendLine("SessionID:" & prc.SessionId.ToString) + 'Buf.AppendLine("Response:" & prc.Responding) + 'Buf.AppendLine("Handle:" & prc.Handle.ToString) + 'Buf.AppendLine("Handle Count:" & prc.HandleCount) + 'Buf.AppendLine("prc.HasExited:" & prc.HasExited) + 'Buf.AppendLine("prc.Id:" & prc.Id) + 'Buf.AppendLine("prc.MainWindowTitle:" & prc.MainWindowTitle) + 'Buf.AppendLine("prc.PrivilegedProcessorTime.ToString:" & prc.PrivilegedProcessorTime.ToString) + 'Buf.AppendLine("prc.UserProcessorTime.ToString:" & prc.UserProcessorTime.ToString) + 'Buf.AppendLine("Error Count:" & Me.ercnt) + + + If killon Then '//10초를 넘ë„ë¡ + + + Me.WindowState = FormWindowState.Normal + + Me.RichTextBox1.BackColor = Color.Orange + Msg("VMS ìž¬ì‹¤ìŸ ëŒ€ê¸°ì¤‘ : 잠시만 기다려주세요.") + + Me.Hide() + Me.Show() + My.Application.DoEvents() + + bt_kill.PerformClick() + + Sleep(2000) + + Try + System.IO.File.Delete(conffile) + Catch ex As Exception + + End Try + + End If + + + Catch ex As Exception + Msg("ERROR_DISPLAYINFO_->" & ex.Message.ToString) + End Try + End Sub + + Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick + starttime += 1 + Me.ProgressBar1.Value = starttime + If starttime > 5 Then + Me.ProgressBar1.Value = 0 + Me.ProgressBar1.ForeColor = Color.Red + Me.bt_run.PerformClick() + starttime = 0 + Me.Timer2.Stop() + Me.Timer2.Enabled = False + End If + End Sub + + + Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_monitor.Click + Me.ProgressBar1.Value = 0 + + If Me.ismonitor Then + Me.Timer1.Stop() + Me.Timer1.Enabled = False + Me.ismonitor = False + Me.bt_monitor.Text = "모니터 시작" + Msg("모니터ë§ì´ 종료ë˜ì—ˆìŠµë‹ˆë‹¤.") + Me.status_monitor.ForeColor = Color.Gray + Else + Me.Timer1.Enabled = True + Me.Timer1.Start() + Me.ismonitor = True + Me.bt_monitor.Text = "모니터 종료" + Msg("모니터ë§ì´ 시작ë˜ì—ˆìŠµë‹ˆë‹¤.") + Me.status_monitor.ForeColor = Color.Blue + End If + End Sub + + Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_run.Click + If Me.ison Then + MsgBox("중복실행ì´ë¯€ë¡œ ì‹¤í–‰ì„ í•  수 없습니다", MsgBoxStyle.Information, "확ì¸") + Else + RunProcess(My.Application.Info.DirectoryPath & "\cVMS.NET.exe", "") + Msg("VMSí”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•©ë‹ˆë‹¤") + Me.WindowState = FormWindowState.Minimized + Me.RichTextBox1.BackColor = Nothing + End If + End Sub + + Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_kill.Click + + Dim Prc As Process = checkmyproc() + If Not Prc Is Nothing Then + Try + + Try + System.IO.File.Delete(conffile) + Catch ex As Exception + + End Try + + Prc.Kill() + Me.ProgressBar1.ForeColor = Color.Green + starttime = 0 + Me.Timer2.Enabled = True + Me.Timer2.Start() + Catch ex As Exception + Msg("ERROR_BTKILL_->" & ex.Message.ToString) + End Try + End If + End Sub + + Private Sub ToolStripButton1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click + Me.fclose = True + End + End Sub + +End Class diff --git a/VMSMonitor/My Project/Application.Designer.vb b/VMSMonitor/My Project/Application.Designer.vb new file mode 100644 index 0000000..3c290b8 --- /dev/null +++ b/VMSMonitor/My Project/Application.Designer.vb @@ -0,0 +1,44 @@ +'------------------------------------------------------------------------------ +' +' ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +' 런타임 버전:4.0.30319.42000 +' +' íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +' ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + '참고: ìžë™ìœ¼ë¡œ ìƒì„±ë˜ë¯€ë¡œ ì§ì ‘ ì´ íŒŒì¼ì„ 수정하지 마세요. 변경할 ì‚¬í•­ì´ ìžˆê±°ë‚˜ + ' 파ì¼ì—서 빌드 오류가 ë°œìƒí•˜ëŠ” 경우 프로ì íЏ ë””ìžì´ë„ˆë¡œ + ' ì´ë™([프로ì íЏ ì†ì„±]으로 ì´ë™í•˜ê±°ë‚˜ 솔루션 íƒìƒ‰ê¸°ì—서 My Project 노드를 + 'ë‘ ë²ˆ í´ë¦­)한 ë‹¤ìŒ [애플리케ì´ì…˜] 탭ì—서 변경하세요. + ' + Partial Friend Class MyApplication + + _ + Public Sub New() + MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) + Me.IsSingleInstance = false + Me.EnableVisualStyles = true + Me.SaveMySettingsOnExit = true + Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses + End Sub + + _ + Protected Overrides Sub OnCreateMainForm() + Me.MainForm = Global.VMSMonitor.Frm_monitor + End Sub + + _ + Protected Overrides Function OnInitialize(ByVal commandLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String)) As Boolean + Me.MinimumSplashScreenDisplayTime = 0 + Return MyBase.OnInitialize(commandLineArgs) + End Function + End Class +End Namespace diff --git a/VMSMonitor/My Project/Application.myapp b/VMSMonitor/My Project/Application.myapp new file mode 100644 index 0000000..69e0db4 --- /dev/null +++ b/VMSMonitor/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + true + Frm_monitor + false + 0 + true + 0 + true + \ No newline at end of file diff --git a/VMSMonitor/My Project/AssemblyInfo.vb b/VMSMonitor/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..daae45f --- /dev/null +++ b/VMSMonitor/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' ì–´ì…ˆë¸”ë¦¬ì˜ ì¼ë°˜ 정보는 ë‹¤ìŒ íŠ¹ì„± ì§‘í•©ì„ í†µí•´ 제어ë©ë‹ˆë‹¤. +' 어셈블리와 ê´€ë ¨ëœ ì •ë³´ë¥¼ 수정하려면 +' ì´ íŠ¹ì„± ê°’ì„ ë³€ê²½í•˜ì‹­ì‹œì˜¤. + +' 어셈블리 특성 ê°’ì„ ê²€í† í•©ë‹ˆë‹¤. + + + + + + + + + + +'ì´ í”„ë¡œì íŠ¸ê°€ COMì— ë…¸ì¶œë˜ëŠ” 경우 ë‹¤ìŒ GUID는 typelibì˜ ID를 나타냅니다. + + +' ì–´ì…ˆë¸”ë¦¬ì˜ ë²„ì „ 정보는 ë‹¤ìŒ ë„¤ 가지 값으로 구성ë©ë‹ˆë‹¤. +' +' 주 버전 +' ë¶€ 버전 +' 빌드 번호 +' 수정 버전 +' +' 모든 ê°’ì„ ì§€ì •í•˜ê±°ë‚˜ 아래와 ê°™ì´ '*'를 사용하여 빌드 번호 ë° ìˆ˜ì • ë²„ì „ì´ ìžë™ìœ¼ë¡œ +' 지정ë˜ë„ë¡ í•  수 있습니다. +' + + + diff --git a/VMSMonitor/My Project/Resources.Designer.vb b/VMSMonitor/My Project/Resources.Designer.vb new file mode 100644 index 0000000..2ac3469 --- /dev/null +++ b/VMSMonitor/My Project/Resources.Designer.vb @@ -0,0 +1,63 @@ +'------------------------------------------------------------------------------ +' +' ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +' 런타임 버전:4.0.30319.42000 +' +' íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +' ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + 'ì´ í´ëž˜ìŠ¤ëŠ” ResGen ë˜ëŠ” Visual Studio와 ê°™ì€ ë„구를 통해 StronglyTypedResourceBuilder + 'í´ëž˜ìФì—서 ìžë™ìœ¼ë¡œ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. + '멤버를 추가하거나 제거하려면 .ResX 파ì¼ì„ 편집한 ë‹¤ìŒ /str ì˜µì…˜ì„ ì‚¬ìš©í•˜ì—¬ ResGenì„ + '다시 실행하거나 VS 프로ì íŠ¸ë¥¼ 다시 빌드하십시오. + ''' + ''' ì§€ì—­í™”ëœ ë¬¸ìžì—´ ë“±ì„ ì°¾ê¸° 위한 강력한 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' ì´ í´ëž˜ìФì—서 사용하는 ìºì‹œëœ ResourceManager ì¸ìŠ¤í„´ìŠ¤ë¥¼ 반환합니다. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("VMSMonitor.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' ì´ ê°•ë ¥í•œ 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ë¥¼ 사용하여 모든 리소스 ì¡°íšŒì— ëŒ€í•´ 현재 ìŠ¤ë ˆë“œì˜ CurrentUICulture ì†ì„±ì„ + ''' 재정ì˜í•©ë‹ˆë‹¤. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/VMSMonitor/My Project/Resources.resx b/VMSMonitor/My Project/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/VMSMonitor/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/VMSMonitor/My Project/Settings.Designer.vb b/VMSMonitor/My Project/Settings.Designer.vb new file mode 100644 index 0000000..c496993 --- /dev/null +++ b/VMSMonitor/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +' 런타임 버전:4.0.30319.42000 +' +' íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +' ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "My.Settings ìžë™ 저장 기능" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.VMSMonitor.My.MySettings + Get + Return Global.VMSMonitor.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/VMSMonitor/My Project/Settings.settings b/VMSMonitor/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/VMSMonitor/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/VMSMonitor/VMSMonitor.sln b/VMSMonitor/VMSMonitor.sln new file mode 100644 index 0000000..5a17a8e --- /dev/null +++ b/VMSMonitor/VMSMonitor.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "VMSMonitor", "VMSMonitor.vbproj", "{FD1E7E91-6D8F-4B42-BAFF-18C28E8DFE79}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FD1E7E91-6D8F-4B42-BAFF-18C28E8DFE79}.Debug|x86.ActiveCfg = Debug|x86 + {FD1E7E91-6D8F-4B42-BAFF-18C28E8DFE79}.Debug|x86.Build.0 = Debug|x86 + {FD1E7E91-6D8F-4B42-BAFF-18C28E8DFE79}.Release|x86.ActiveCfg = Release|x86 + {FD1E7E91-6D8F-4B42-BAFF-18C28E8DFE79}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/VMSMonitor/VMSMonitor.vbproj b/VMSMonitor/VMSMonitor.vbproj new file mode 100644 index 0000000..171c883 --- /dev/null +++ b/VMSMonitor/VMSMonitor.vbproj @@ -0,0 +1,148 @@ + + + + Debug + x86 + + + 2.0 + {FD1E7E91-6D8F-4B42-BAFF-18C28E8DFE79} + WinExe + VMSMonitor.My.MyApplication + VMSMonitor + VMSMonitor + 512 + WindowsForms + v4.8 + + + + + AnyCPU + true + full + true + true + bin\Debug\ + + + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + false + + + x86 + pdbonly + false + true + true + ..\cVMS.NET\bin\Debug\ + + + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + false + + + On + + + Binary + + + Off + + + On + + + monitor.ico + + + + + + + + + + + + + + + + + + + + + + + Form + + + Frm_monitor.vb + Form + + + + True + Application.myapp + True + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + Frm_monitor.vb + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + + + + for %25%25F in ("$(TargetDir)*.exe") do ( + + xcopy "%25%25F" "..\..\..\cVMS.NET_CS\bin\Debug" /Y /R /D + + echo Copied %25%25F to "..\..\..\cVMS.NET_CS\bin\Debug" + +) + + + + \ No newline at end of file diff --git a/VMSMonitor/monitor.ico b/VMSMonitor/monitor.ico new file mode 100644 index 0000000..a20acfe Binary files /dev/null and b/VMSMonitor/monitor.ico differ diff --git a/VMSMonitor/system.ico b/VMSMonitor/system.ico new file mode 100644 index 0000000..d05ee54 Binary files /dev/null and b/VMSMonitor/system.ico differ diff --git a/Viewer/AlarmViewer/AlarmViewer.csproj b/Viewer/AlarmViewer/AlarmViewer.csproj new file mode 100644 index 0000000..07ecc35 --- /dev/null +++ b/Viewer/AlarmViewer/AlarmViewer.csproj @@ -0,0 +1,232 @@ + + + + Debug + x86 + + + 2.0 + {310693F9-1234-442A-A3F9-343F8A0BD541} + WinExe + + + Project + AlarmViewer + 512 + WindowsForms + v4.8 + + + 게시\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + + + x64 + true + full + true + true + ..\..\cVMS.NET_CS\bin\Debug\Alarmviewer\ + + + 1591,660,661 + false + + + x86 + pdbonly + false + true + true + bin\Debug\ + + + 1591,660,661 + false + + + On + + + Binary + + + Off + + + On + + + Alert.ico + + + false + + + LocalIntranet + + + false + + + Properties\app.manifest + + + false + + + + False + ..\..\DLL\arCommUtil.dll + + + + + + + + + + + + ..\..\packages\System.Drawing.Common.8.0.8\lib\net462\System.Drawing.Common.dll + + + ..\..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + + + + + + + + + + {14e8c9a5-013e-49ba-b435-efefc77dd623} + CommData + + + + + + Form + + + fLog.cs + + + DocumentElement.xsd + + + DocumentElement.xsd + True + True + + + + + Frm_Alamlist.cs + + + Form + + + True + True + Resources.resx + + + True + True + Settings.settings + + + + + + + + fLog.cs + + + Frm_Alamlist.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + + + DocumentElement.xsd + + + MSDataSetGenerator + DocumentElement.Designer.cs + vmsnet + Designer + + + DocumentElement.xsd + + + + + + + + + + + + + + + + + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + + + + False + .NET Framework 3.5 SP1 + false + + + + + \ No newline at end of file diff --git a/Viewer/AlarmViewer/Alert.ico b/Viewer/AlarmViewer/Alert.ico new file mode 100644 index 0000000..6223315 Binary files /dev/null and b/Viewer/AlarmViewer/Alert.ico differ diff --git a/Viewer/AlarmViewer/Class/CFDBA.cs b/Viewer/AlarmViewer/Class/CFDBA.cs new file mode 100644 index 0000000..9ea9c3c --- /dev/null +++ b/Viewer/AlarmViewer/Class/CFDBA.cs @@ -0,0 +1,363 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; +using AR; +using vmsnet; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Project; +using System.IO; + + +namespace vmsnet +{ + public class CFDBA + { + string _BaseDir; + + public class ReadProgessArgs : EventArgs + { + public double value { get; set; } + public ReadProgessArgs(double value) + { + this.value = value; + } + } + public class MessageArgs : EventArgs + { + public string Message { get; set; } + public MessageArgs(string value) + { + Message = value; + } + } + + //public event EventHandler ReadingProgressValueChanged; + public event EventHandler Message; + + public CFDBA(params string[] dirarrays) + { + var dir = System.IO.Path.Combine(dirarrays); + _BaseDir = dir; + if (System.IO.Directory.Exists(_BaseDir) == false) + { + System.IO.Directory.CreateDirectory(_BaseDir); + } + } + + + /// + /// ë°ì´í„°ë¥¼ 기ë¡í•©ë‹ˆë‹¤. + /// + /// 기ë¡ì‹œê°„(파ì¼ëª…ì´ ê²°ì •ë¨) + /// 기ë¡í• í…Œì´ë¸”명(파ì¼ëª…) + /// 기ë¡í• ë°ì´í„°(ì—´ë°ì´í„°ê°€ 틀려서 ê³ ì •í•  수 없다) + /// + /// + public bool InsertData(DateTime time, int ch, COMM.EALAMRAISETYPE raiseType, float volt, COMM.EALAMTYPE almType, float maxvolt, float minvolt, string am, string am2) + { + string DayStr = time.ToString("yyyyMMdd"); + System.IO.FileInfo fi = new System.IO.FileInfo(_BaseDir + "\\" + DayStr.Substring(0, 4) + "\\" + DayStr.Substring(4, 2) + "\\" + DayStr.Substring(6) + "\\" + (time.Hour + 1).ToString("00") + ".txt"); + if (!fi.Directory.Exists) + { + try + { + fi.Directory.Create(); + } + catch + { + PUB.log.AddE($"fail:make directory value={fi.Directory.FullName}"); + return false; + } + } + + System.Text.StringBuilder StrBuf = new System.Text.StringBuilder(); + + ////파ì¼ì´ 없다면 ì œëª©ì¤„ì„ ìƒì„±í•´ì¤€ë‹¤. + if (!fi.Exists) + { + + ////í—¤ë”를 추가해야한다. + System.Text.StringBuilder Header = new System.Text.StringBuilder(); + Header.Append("\t" + "ATIME CH RTYPE VOLT ATYPE MAXVOLT MINVOLT AM AM2"); + Header.AppendLine(); ////ì œëª©ì¤„ì„ í•œì¹¸ë„운다 + StrBuf.Append(Header.ToString()); + } + + ////실제ë°ì´í„°ë¥¼ 추가 + int timeNumber = (int)(PUB.get_TimeNumber(time)); // time.Hour * 3600 + time.Minute * 60 + time.Second + StrBuf.AppendLine($"\t{timeNumber}\t{ch}\t{(int)raiseType}\t{volt}\t{(int)almType}\t{maxvolt}\t{minvolt}\t{am}\t{am2}"); + + try + { + //fi.WriteText(StrBuf.ToString(), true); // ì´ì „ì€ ë‹¨ë…모드 + /* 작성ìž: ì´ìž¬ì›…, 작성ì¼: 2024-09-23, 작성내용: 접근모드를 공유모드로 전환 */ + using (FileStream fs = new FileStream(fi.FullName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)) + using (StreamWriter writer = new StreamWriter(fs)) + { writer.Write(StrBuf.ToString()); } + + StrBuf.Clear(); + } + catch (Exception) + { + PUB.log.AddE($"fail:write aldata file={fi.FullName}"); + return false; + } + + return true; + } + + ////기간내 존재하는 파ì¼ì„ 반환합니다(í…Œì´ë¸”단위) + public List GetfileS(DateTime sd, DateTime ed) + { + + List retval = new List(); + int SttYear = sd.Year; + int EndYear = ed.Year; + if (EndYear < SttYear) + { + return retval; + } + + int SttMonth = sd.Month; + int EndMonth = ed.Month; + + int SttDay = sd.Day; + int EndDay = ed.Day; + + int si = System.Convert.ToInt32(sd.ToString("yyyyMMdd")); + int ei = System.Convert.ToInt32(ed.ToString("yyyyMMdd")); + bool SameDay = si == ei ? true : false; + + ////20140101 + for (int dayinfo = si; dayinfo <= ei; dayinfo++) + { + string DayStr = dayinfo.ToString(); + System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(_BaseDir + "\\" + DayStr.Substring(0, 4) + "\\" + DayStr.Substring(4, 2) + "\\" + DayStr.Substring(6)); + if (!dir.Exists) + { + continue; + } + ////í´ë”ê°€ 존재하므로 해당 í…Œì´ë¸”파ì¼ì´ 존재하는지 확ì¸í•œë‹¤ + + if (SameDay) + { + ////ë™ì¼ë‚ ì§œë¼ë©´ 해당 시간대만 ì¡°íšŒí•˜ë©´ë¨ + for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") + ".txt"; + if (System.IO.File.Exists(fn)) + { + retval.Add(fn); + } + } + } + else + { + if (dayinfo == si) ////시작ì¼ì´ë¼ë©´ 시작시간부터 24시까지 ì´ë‹¤. + { + for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= 23; hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") + ".txt"; + if (System.IO.File.Exists(fn)) + { + retval.Add(fn); + } + } + } + else if (dayinfo == ei) ////종료ì¼ì´ë¼ë©´ 1~ 종료시까지ì´ë‹¤. + { + for (int hourinfo = 0; hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") + ".txt"; + if (System.IO.File.Exists(fn)) + { + retval.Add(fn); + } + } + } + else + { + ////ì¤‘ê°„ì— ë¼ì–´ìžˆëŠ” ë‚ ì§œë¼ë©´ 1~24모ë‘ê°€ ì†í•œë‹¤. + for (int hourinfo = 0; hourinfo <= 23; hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") + ".txt"; + if (System.IO.File.Exists(fn)) + { + retval.Add(fn); + } + } + } + } + } + retval.Sort(); + return retval; + } + + + /// + /// ì´ë²ˆë‹¬ì´í›„ì˜ ë°ì´í„°ë¥¼ 조회합니다. + /// + /// + /// + /// + public (TimeSpan, DocumentElement.ALARMDataTable) GetAlarmData(int ch) + { + ////ì´ë²ˆë‹¬ì´í›„ì˜ ë°ì´í„°ë¥¼ 가져온다. + DateTime sd = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01 00:00:00")); + DateTime ed = DateTime.Now; + return GetAlarmData(ch, sd, ed); + } + + public (TimeSpan, DocumentElement.ALARMDataTable) GetAlarmData(DateTime sd, DateTime ed) + { + return GetAlarmData(-1, sd, ed); + } + + public (TimeSpan, DocumentElement.ALARMDataTable) GetAlarmData(DateTime sd, DateTime ed, int rtypes, int rtypee) + { + return GetAlarmData(-1, sd, ed, rtypes, rtypee); + } + + public volatile bool cancel; + private readonly object lockObject = new object(); + + /// + /// 지정ëœì‹œê°„사ì´ì˜ ë°ì´í„°ë¥¼ 조회합니다. + /// + /// 시작시간(20120319161800) + /// 종료시간(ë…„ì›”ì¼ì‹œë¶„ì´ˆ) + /// + /// + public (TimeSpan, DocumentElement.ALARMDataTable) GetAlarmData(int ch, DateTime sd, DateTime ed, int rtypes = -1, int rtypee = -1) + { + DateTime dtStart = DateTime.Now; + List files = GetfileS(sd, ed); + + //전체파ì¼ì˜ ë‚´ìš©ì„ ë²„í¼ì— 담는다 + Dictionary lines = new Dictionary(); + + foreach (var fn in files) + { + lines.Add(fn, System.IO.File.ReadAllLines(fn)); + } + var totallines = lines.Sum(t => t.Value.Length); + Message?.Invoke(this, new MessageArgs($"total : {totallines} lines")); + + var progressMax = (double)totallines; + var progressVal = 0.0; + var currentline = 0; + var alertprogress = 0.0; + + + //ReadingProgressValueChanged?.Invoke(this, new ReadProgessArgs(0)); + + var alaramDT = new DocumentElement.ALARMDataTable(); + cancel = false; + try + { + foreach (var line in lines) + { + foreach (string linedata in line.Value) + { + + lock (lockObject) + { + if (cancel) + { + //Console.WriteLine("ìž‘ì—…ì´ ì·¨ì†Œë˜ì—ˆìŠµë‹ˆë‹¤."); + //token.ThrowIfCancellationRequested(); // OperationCanceledExceptionì„ ë°œìƒì‹œì¼œ ìž‘ì—…ì„ ì¢…ë£Œí•©ë‹ˆë‹¤. + //return (new TimeSpan(0), null); + //cancel = true; + Message?.Invoke(this, new MessageArgs($"job cancel")); + break; + + } + } + + + + currentline += 1; + progressVal = currentline / progressMax; + + if (progressVal - alertprogress >= 5) + { + alertprogress = progressVal; + Message?.Invoke(this, new MessageArgs($"Progress : {progressVal} lines")); + //ReadingProgressValueChanged?.Invoke(this, new ReadProgessArgs(progressVal)); + } + + + if (linedata.Trim() == "") continue; + + string[] buf = linedata.Split(System.Convert.ToChar("\t")); + if (buf.GetUpperBound(0) < 8) continue; ////ë°ì´í„°ìˆ˜ëŸ‰ì´ 안맞다. + + string chStr = buf[2]; + if (chStr.IsNumeric() == false) continue; ////채ë„ì •ë³´ê°€ ì¼ì¹˜í•˜ì§€ 않는경우 + + if (ch > -1 && chStr != ch.ToString()) continue; + + if (rtypes != -1 && rtypee != -1) ////rtypeë„ ê²€ìƒ‰í•œë‹¤. + { + if (buf[3] != rtypes.ToString() && buf[3] != rtypee.ToString()) continue; + } + + var v_atime = buf[1]; + var v_ch = short.Parse(buf[2]); + var v_rtype = short.Parse(buf[3]); + + //존재하는 ë°ì´í„°ëŠ” 처리하지 않ëŠë‚Ÿ. + if (alaramDT.Where(t => t.ATIME == v_atime && t.CH == v_ch && t.RTYPE == v_rtype).Any() == false) + { + var newdr = alaramDT.NewALARMRow(); + newdr.ATIME = v_atime;// buf[1]; + newdr.TIME = PUB.get_TimeString(decimal.Parse(newdr.ATIME), line.Key); + newdr.CH = v_ch;// short.Parse(buf[2]); + newdr.RTYPE = v_rtype;// short.Parse(buf[3]); + newdr.VOLT = float.Parse(buf[4]); + newdr.ATYPE = short.Parse(buf[5]); + newdr.MAXVOLT = float.Parse(buf[6]); + newdr.MINVOLT = float.Parse(buf[7]); + newdr.AM = buf[8]; + newdr.AM2 = buf[9]; + alaramDT.AddALARMRow(newdr); + } + else + { + //중복ë°ì´í„° + PUB.log.AddAT($"알람중복ë°ì´í„° atime={v_atime},ch={v_ch},rtype={v_rtype}"); + } + + + } + + if (cancel) + { + //Console.WriteLine("ìž‘ì—…ì´ ì·¨ì†Œë˜ì—ˆìŠµë‹ˆë‹¤."); + //token.ThrowIfCancellationRequested(); // OperationCanceledExceptionì„ ë°œìƒì‹œì¼œ ìž‘ì—…ì„ ì¢…ë£Œí•©ë‹ˆë‹¤. + //return (new TimeSpan(0), null); + break; + } + } + } + catch (OperationCanceledException) + { + Console.WriteLine("ìž‘ì—…ì´ ì •ìƒì ìœ¼ë¡œ 취소ë˜ì—ˆìŠµë‹ˆë‹¤."); + throw; // 예외를 다시 ë˜ì ¸ ìž‘ì—…ì´ ì¤‘ì§€ë˜ë„ë¡ í•©ë‹ˆë‹¤. + } + + alaramDT.AcceptChanges(); + var ts = DateTime.Now - dtStart; + return (ts, alaramDT); + } + + + } + +} diff --git a/Viewer/AlarmViewer/Dialog/Frm_Alamlist.Designer.cs b/Viewer/AlarmViewer/Dialog/Frm_Alamlist.Designer.cs new file mode 100644 index 0000000..6e2c2c8 --- /dev/null +++ b/Viewer/AlarmViewer/Dialog/Frm_Alamlist.Designer.cs @@ -0,0 +1,480 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; + +namespace vmsnet +{ + partial class Frm_Alamlist : System.Windows.Forms.Form + { + + //Formì€ Dispose를 재정ì˜í•˜ì—¬ 구성 요소 목ë¡ì„ 정리합니다. + [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing) + { + try + { + if (disposing && components != null) + { + components.Dispose(); + } + } + finally + { + base.Dispose(disposing); + } + } + + //참고: ë‹¤ìŒ í”„ë¡œì‹œì €ëŠ” Windows Form ë””ìžì´ë„ˆì— 필요합니다. + //수정하려면 Windows Form ë””ìžì´ë„ˆë¥¼ 사용하십시오. + //코드 편집기를 사용하여 수정하지 마십시오. + [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Frm_Alamlist)); + System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem("1900-01-01 00:00:00"); + this.bn = new System.Windows.Forms.BindingNavigator(); + this.BindingNavigatorAddNewItem = new System.Windows.Forms.ToolStripButton(); + this.bs = new System.Windows.Forms.BindingSource(); + this.documentElement1 = new vmsnet.DocumentElement(); + this.BindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel(); + this.BindingNavigatorDeleteItem = new System.Windows.Forms.ToolStripButton(); + this.BindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton(); + this.BindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton(); + this.BindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator(); + this.BindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox(); + this.BindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.BindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton(); + this.BindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton(); + this.BindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.ToolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.tb_search = new System.Windows.Forms.ToolStripTextBox(); + this.ToolStripLabel5 = new System.Windows.Forms.ToolStripLabel(); + this.ToolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.prb1 = new System.Windows.Forms.ToolStripProgressBar(); + this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.cmb_gubun = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.tb_etime = new System.Windows.Forms.DateTimePicker(); + this.button1 = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.tb_stime = new System.Windows.Forms.DateTimePicker(); + this.label2 = new System.Windows.Forms.Label(); + this.listView1 = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader5 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader6 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader7 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader8 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + ((System.ComponentModel.ISupportInitialize)(this.bn)).BeginInit(); + this.bn.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.documentElement1)).BeginInit(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // bn + // + this.bn.AddNewItem = this.BindingNavigatorAddNewItem; + this.bn.BindingSource = this.bs; + this.bn.CountItem = this.BindingNavigatorCountItem; + this.bn.DeleteItem = this.BindingNavigatorDeleteItem; + this.bn.Dock = System.Windows.Forms.DockStyle.Bottom; + this.bn.ImageScalingSize = new System.Drawing.Size(24, 24); + this.bn.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.BindingNavigatorMoveFirstItem, + this.BindingNavigatorMovePreviousItem, + this.BindingNavigatorSeparator, + this.BindingNavigatorPositionItem, + this.BindingNavigatorCountItem, + this.BindingNavigatorSeparator1, + this.BindingNavigatorMoveNextItem, + this.BindingNavigatorMoveLastItem, + this.BindingNavigatorSeparator2, + this.BindingNavigatorAddNewItem, + this.BindingNavigatorDeleteItem, + this.ToolStripSeparator2, + this.tb_search, + this.ToolStripLabel5, + this.ToolStripSeparator1, + this.prb1, + this.toolStripLabel1}); + this.bn.Location = new System.Drawing.Point(0, 697); + this.bn.MoveFirstItem = this.BindingNavigatorMoveFirstItem; + this.bn.MoveLastItem = this.BindingNavigatorMoveLastItem; + this.bn.MoveNextItem = this.BindingNavigatorMoveNextItem; + this.bn.MovePreviousItem = this.BindingNavigatorMovePreviousItem; + this.bn.Name = "bn"; + this.bn.PositionItem = this.BindingNavigatorPositionItem; + this.bn.Size = new System.Drawing.Size(1193, 38); + this.bn.TabIndex = 5; + this.bn.Text = "BindingNavigator1"; + // + // BindingNavigatorAddNewItem + // + this.BindingNavigatorAddNewItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.BindingNavigatorAddNewItem.Image = ((System.Drawing.Image)(resources.GetObject("BindingNavigatorAddNewItem.Image"))); + this.BindingNavigatorAddNewItem.Name = "BindingNavigatorAddNewItem"; + this.BindingNavigatorAddNewItem.RightToLeftAutoMirrorImage = true; + this.BindingNavigatorAddNewItem.Size = new System.Drawing.Size(34, 33); + this.BindingNavigatorAddNewItem.Text = "새로 추가"; + this.BindingNavigatorAddNewItem.Visible = false; + // + // bs + // + this.bs.DataMember = "ALARM"; + this.bs.DataSource = this.documentElement1; + // + // documentElement1 + // + this.documentElement1.DataSetName = "DocumentElement"; + this.documentElement1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // BindingNavigatorCountItem + // + this.BindingNavigatorCountItem.Name = "BindingNavigatorCountItem"; + this.BindingNavigatorCountItem.Size = new System.Drawing.Size(39, 33); + this.BindingNavigatorCountItem.Text = "/{0}"; + this.BindingNavigatorCountItem.ToolTipText = "ì „ì²´ 항목 수"; + // + // BindingNavigatorDeleteItem + // + this.BindingNavigatorDeleteItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.BindingNavigatorDeleteItem.Image = ((System.Drawing.Image)(resources.GetObject("BindingNavigatorDeleteItem.Image"))); + this.BindingNavigatorDeleteItem.Name = "BindingNavigatorDeleteItem"; + this.BindingNavigatorDeleteItem.RightToLeftAutoMirrorImage = true; + this.BindingNavigatorDeleteItem.Size = new System.Drawing.Size(34, 33); + this.BindingNavigatorDeleteItem.Text = "ì‚­ì œ"; + this.BindingNavigatorDeleteItem.Visible = false; + // + // BindingNavigatorMoveFirstItem + // + this.BindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.BindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("BindingNavigatorMoveFirstItem.Image"))); + this.BindingNavigatorMoveFirstItem.Name = "BindingNavigatorMoveFirstItem"; + this.BindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true; + this.BindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(34, 33); + this.BindingNavigatorMoveFirstItem.Text = "처ìŒìœ¼ë¡œ ì´ë™"; + // + // BindingNavigatorMovePreviousItem + // + this.BindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.BindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("BindingNavigatorMovePreviousItem.Image"))); + this.BindingNavigatorMovePreviousItem.Name = "BindingNavigatorMovePreviousItem"; + this.BindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true; + this.BindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(34, 33); + this.BindingNavigatorMovePreviousItem.Text = "ì´ì „으로 ì´ë™"; + // + // BindingNavigatorSeparator + // + this.BindingNavigatorSeparator.Name = "BindingNavigatorSeparator"; + this.BindingNavigatorSeparator.Size = new System.Drawing.Size(6, 38); + // + // BindingNavigatorPositionItem + // + this.BindingNavigatorPositionItem.AccessibleName = "위치"; + this.BindingNavigatorPositionItem.AutoSize = false; + this.BindingNavigatorPositionItem.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 9F); + this.BindingNavigatorPositionItem.Name = "BindingNavigatorPositionItem"; + this.BindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 23); + this.BindingNavigatorPositionItem.Text = "0"; + this.BindingNavigatorPositionItem.ToolTipText = "현재 위치"; + // + // BindingNavigatorSeparator1 + // + this.BindingNavigatorSeparator1.Name = "BindingNavigatorSeparator1"; + this.BindingNavigatorSeparator1.Size = new System.Drawing.Size(6, 38); + // + // BindingNavigatorMoveNextItem + // + this.BindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.BindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("BindingNavigatorMoveNextItem.Image"))); + this.BindingNavigatorMoveNextItem.Name = "BindingNavigatorMoveNextItem"; + this.BindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true; + this.BindingNavigatorMoveNextItem.Size = new System.Drawing.Size(34, 33); + this.BindingNavigatorMoveNextItem.Text = "다ìŒìœ¼ë¡œ ì´ë™"; + // + // BindingNavigatorMoveLastItem + // + this.BindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.BindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("BindingNavigatorMoveLastItem.Image"))); + this.BindingNavigatorMoveLastItem.Name = "BindingNavigatorMoveLastItem"; + this.BindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true; + this.BindingNavigatorMoveLastItem.Size = new System.Drawing.Size(34, 33); + this.BindingNavigatorMoveLastItem.Text = "마지막으로 ì´ë™"; + // + // BindingNavigatorSeparator2 + // + this.BindingNavigatorSeparator2.Name = "BindingNavigatorSeparator2"; + this.BindingNavigatorSeparator2.Size = new System.Drawing.Size(6, 38); + // + // ToolStripSeparator2 + // + this.ToolStripSeparator2.Name = "ToolStripSeparator2"; + this.ToolStripSeparator2.Size = new System.Drawing.Size(6, 38); + // + // tb_search + // + this.tb_search.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.tb_search.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tb_search.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 9F); + this.tb_search.Name = "tb_search"; + this.tb_search.Size = new System.Drawing.Size(100, 38); + this.tb_search.KeyUp += new System.Windows.Forms.KeyEventHandler(this.ToolStripTextBox1_KeyUp); + // + // ToolStripLabel5 + // + this.ToolStripLabel5.Name = "ToolStripLabel5"; + this.ToolStripLabel5.Size = new System.Drawing.Size(48, 33); + this.ToolStripLabel5.Text = "검색"; + // + // ToolStripSeparator1 + // + this.ToolStripSeparator1.Name = "ToolStripSeparator1"; + this.ToolStripSeparator1.Size = new System.Drawing.Size(6, 38); + // + // prb1 + // + this.prb1.Name = "prb1"; + this.prb1.Size = new System.Drawing.Size(100, 33); + // + // toolStripLabel1 + // + this.toolStripLabel1.Name = "toolStripLabel1"; + this.toolStripLabel1.Size = new System.Drawing.Size(48, 33); + this.toolStripLabel1.Text = "path"; + // + // panel1 + // + this.panel1.Controls.Add(this.cmb_gubun); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.tb_etime); + this.panel1.Controls.Add(this.button1); + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.tb_stime); + this.panel1.Controls.Add(this.label2); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Padding = new System.Windows.Forms.Padding(5); + this.panel1.Size = new System.Drawing.Size(1193, 55); + this.panel1.TabIndex = 6; + // + // cmb_gubun + // + this.cmb_gubun.Dock = System.Windows.Forms.DockStyle.Left; + this.cmb_gubun.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmb_gubun.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.cmb_gubun.FormattingEnabled = true; + this.cmb_gubun.Items.AddRange(new object[] { + "High-Off", + "High-On", + "Low-Off", + "Low-On", + "A1-On", + "A1-Off", + "A2-On", + "A2-Off", + "Over-On", + "Over-Off"}); + this.cmb_gubun.Location = new System.Drawing.Point(756, 5); + this.cmb_gubun.Name = "cmb_gubun"; + this.cmb_gubun.Size = new System.Drawing.Size(104, 63); + this.cmb_gubun.TabIndex = 1; + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Left; + this.label1.Location = new System.Drawing.Point(695, 5); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(61, 45); + this.label1.TabIndex = 2; + this.label1.Text = "형태"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_etime + // + this.tb_etime.CalendarFont = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tb_etime.CustomFormat = "yyyy-MM-dd HH:mm:ss"; + this.tb_etime.Dock = System.Windows.Forms.DockStyle.Left; + this.tb_etime.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 20.25F); + this.tb_etime.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.tb_etime.Location = new System.Drawing.Point(396, 5); + this.tb_etime.Name = "tb_etime"; + this.tb_etime.Size = new System.Drawing.Size(299, 61); + this.tb_etime.TabIndex = 5; + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Right; + this.button1.Location = new System.Drawing.Point(1064, 5); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(124, 45); + this.button1.TabIndex = 0; + this.button1.Text = "조회"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // label3 + // + this.label3.Dock = System.Windows.Forms.DockStyle.Left; + this.label3.Location = new System.Drawing.Point(365, 5); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(31, 45); + this.label3.TabIndex = 6; + this.label3.Text = "~"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tb_stime + // + this.tb_stime.CalendarFont = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tb_stime.CustomFormat = "yyyy-MM-dd HH:mm:ss"; + this.tb_stime.Dock = System.Windows.Forms.DockStyle.Left; + this.tb_stime.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 20.25F); + this.tb_stime.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.tb_stime.Location = new System.Drawing.Point(66, 5); + this.tb_stime.Name = "tb_stime"; + this.tb_stime.Size = new System.Drawing.Size(299, 61); + this.tb_stime.TabIndex = 3; + // + // label2 + // + this.label2.Dock = System.Windows.Forms.DockStyle.Left; + this.label2.Location = new System.Drawing.Point(5, 5); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(61, 45); + this.label2.TabIndex = 4; + this.label2.Text = "기간"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // listView1 + // + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3, + this.columnHeader4, + this.columnHeader5, + this.columnHeader6, + this.columnHeader7, + this.columnHeader8}); + this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.listView1.FullRowSelect = true; + this.listView1.HideSelection = false; + this.listView1.Items.AddRange(new System.Windows.Forms.ListViewItem[] { + listViewItem1}); + this.listView1.Location = new System.Drawing.Point(0, 55); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(1193, 642); + this.listView1.TabIndex = 7; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "시간"; + this.columnHeader1.Width = 135; + // + // columnHeader2 + // + this.columnHeader2.Text = "Cell/Grp"; + this.columnHeader2.Width = 70; + // + // columnHeader3 + // + this.columnHeader3.Text = "ë°œìƒí˜•태"; + this.columnHeader3.Width = 90; + // + // columnHeader4 + // + this.columnHeader4.Text = "측정값"; + // + // columnHeader5 + // + this.columnHeader5.Text = "HIGH"; + // + // columnHeader6 + // + this.columnHeader6.Text = "LOW"; + // + // columnHeader7 + // + this.columnHeader7.Text = "알람설정"; + this.columnHeader7.Width = 110; + // + // columnHeader8 + // + this.columnHeader8.Text = "비고"; + this.columnHeader8.Width = 190; + // + // Frm_Alamlist + // + this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 22F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1193, 735); + this.Controls.Add(this.listView1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.bn); + this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "Frm_Alamlist"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "알람발ìƒëª©ë¡"; + this.Load += new System.EventHandler(this.Frm_Alam_Load); + ((System.ComponentModel.ISupportInitialize)(this.bn)).EndInit(); + this.bn.ResumeLayout(false); + this.bn.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.documentElement1)).EndInit(); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + internal System.Windows.Forms.BindingSource bs; + internal System.Windows.Forms.BindingNavigator bn; + internal System.Windows.Forms.ToolStripButton BindingNavigatorAddNewItem; + internal System.Windows.Forms.ToolStripLabel BindingNavigatorCountItem; + internal System.Windows.Forms.ToolStripButton BindingNavigatorDeleteItem; + internal System.Windows.Forms.ToolStripButton BindingNavigatorMoveFirstItem; + internal System.Windows.Forms.ToolStripButton BindingNavigatorMovePreviousItem; + internal System.Windows.Forms.ToolStripSeparator BindingNavigatorSeparator; + internal System.Windows.Forms.ToolStripTextBox BindingNavigatorPositionItem; + internal System.Windows.Forms.ToolStripSeparator BindingNavigatorSeparator1; + internal System.Windows.Forms.ToolStripButton BindingNavigatorMoveNextItem; + internal System.Windows.Forms.ToolStripButton BindingNavigatorMoveLastItem; + internal System.Windows.Forms.ToolStripSeparator BindingNavigatorSeparator2; + internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator2; + internal System.Windows.Forms.ToolStripLabel ToolStripLabel5; + internal System.Windows.Forms.ToolStripTextBox tb_search; + internal System.Windows.Forms.ToolStripSeparator ToolStripSeparator1; + internal System.Windows.Forms.ToolStripProgressBar prb1; + private System.ComponentModel.IContainer components; + private Panel panel1; + private Button button1; + private ComboBox cmb_gubun; + private Label label1; + private DateTimePicker tb_etime; + private Label label3; + private DateTimePicker tb_stime; + private Label label2; + private vmsnet.DocumentElement documentElement1; + private ListView listView1; + private ColumnHeader columnHeader1; + private ColumnHeader columnHeader2; + private ColumnHeader columnHeader3; + private ColumnHeader columnHeader4; + private ColumnHeader columnHeader5; + private ColumnHeader columnHeader6; + private ColumnHeader columnHeader7; + private ColumnHeader columnHeader8; + private ToolStripLabel toolStripLabel1; + } + +} diff --git a/Viewer/AlarmViewer/Dialog/Frm_Alamlist.cs b/Viewer/AlarmViewer/Dialog/Frm_Alamlist.cs new file mode 100644 index 0000000..04b9a36 --- /dev/null +++ b/Viewer/AlarmViewer/Dialog/Frm_Alamlist.cs @@ -0,0 +1,221 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; +using AR; +using vmsnet; +using System.Linq; +using System.Threading.Tasks; +using System.Threading; + +namespace vmsnet +{ + public partial class Frm_Alamlist + { + public Frm_Alamlist() + { + InitializeComponent(); + + ////DB초기화작업 + PUB.INIT(out List errorMessageList); + if (errorMessageList.Any()) + foreach (var err in errorMessageList) + UTIL.MsgE(err); + + this.cmb_gubun.Items.Clear(); + this.cmb_gubun.Items.AddRange(new string[] { "ALL", "HIGH", "LOW", "A1", "A2" }); + //PUB.Alarm.Message += (s1, e1) => PUB.log.AddI(e1.Message); + this.label2.Click += (s1,e1)=> { + var f = new fLog(); + f.Show(); + }; + } + + public void Frm_Alam_Load(object sender, System.EventArgs e) + { + ////알람ë°ì´í„°ë…„ë„를 변경 + this.tb_stime.Text = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 00:00:00"); + this.tb_etime.Text = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 23:59:59"); + + if (cmb_gubun.Items.Count > 0) + this.cmb_gubun.SelectedIndex = 0; + + toolStripLabel1.Text = PUB.CONFIG.GetDatabasePath(); + } + + public void ToolStripTextBox1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string str = this.tb_search.Text.Trim().Replace("'", "").ToUpper(); + if (string.IsNullOrEmpty(str)) + { + DisplayData(Dt.Item2.AsEnumerable()); + } + try + { + if (Dt.Item2 != null) + { + var dt = Dt.Item2.Where(t => t.TIME.Contains(str) || t.CHNAME.Contains(str) || t.RTYPESTR.Contains(str) || t.ATYPESTR.Contains(str)); + DisplayData(dt); + } + else UTIL.MsgE("먼저 ìžë£Œë¥¼ 조회하세요"); + + this.tb_search.SelectAll(); + } + catch (Exception) + { + this.tb_search.Text = ""; + this.bs.Filter = ""; + + } + } + } + + (TimeSpan, DocumentElement.ALARMDataTable) Dt; + private void button1_Click(object sender, EventArgs e) + { // 조회 + if (DateTime.TryParse(this.tb_stime.Text, out DateTime sdate) == false) + { + UTIL.MsgE("시작ì¼ì‹œê°€ 잘못 ìž…ë ¥ë˜ì—ˆìŠµë‹ˆë‹¤\r\n확ì¸í•˜ì„¸ìš”"); + return; + } + + if (DateTime.TryParse(this.tb_etime.Text, out DateTime edate) == false) + { + UTIL.MsgE("종료ì¼ì‹œê°€ 잘못 ìž…ë ¥ë˜ì—ˆìŠµë‹ˆë‹¤\r\n확ì¸í•˜ì„¸ìš”"); + return; + } + + + Dt.Item1 = new TimeSpan(0); + Dt.Item2 = null; + + var gubunstr = cmb_gubun.Text.Trim().ToUpper(); + this.button1.Enabled = false; + + switch (gubunstr) + { + case "HIGH": ////h + Dt = PUB.Alarm.GetAlarmData(sdate, edate, 0, 1); + break; + case "LOW": ////l; + Dt = PUB.Alarm.GetAlarmData(sdate, edate, 2, 3); + break; + case "A1": ////nullb alam1 + Dt = PUB.Alarm.GetAlarmData(sdate, edate, 4, 5); + break; + case "A2": ////nullb alam2 + Dt = PUB.Alarm.GetAlarmData(sdate, edate, 6, 7); + break; + case "OVER": ////o + Dt = PUB.Alarm.GetAlarmData(sdate, edate, 8, 9); + break; + default: //ALL + Dt = PUB.Alarm.GetAlarmData(sdate, edate); + break; + } + + PUB.log.AddI($"read time : {Dt.Item1.TotalSeconds} sec"); + Application.DoEvents(); + + + this.prb1.Value = 0; + this.prb1.Maximum = Dt.Item2.Rows.Count; + + + var dtEdit = DateTime.Now; + foreach (var Dr in Dt.Item2) + { + + this.prb1.Value += 1; + if (Dr.RTYPE == 4 || Dr.RTYPE == 5 || Dr.RTYPE == 6 || Dr.RTYPE == 7) + { + Dr.CHNAME = PUB.GetGrpName(Dr.CH); + } + else + { + /* 작성ìž: 김치균, 작성ì¼: 2024-10-16, 작성내용: Dr.CH + 1 -> Dr.CH 변경 */ + Dr.CHNAME = PUB.GetChannelName(Dr.CH); + } + + var rtype = (COMM.EALAMRAISETYPE)Dr.RTYPE; + Dr.RTYPESTR = rtype.ToString(); + switch (rtype) + { + case COMM.EALAMRAISETYPE.A1_ON: + Dr.RTYPESTR = "NB_ALARM1-ON"; + break; + case COMM.EALAMRAISETYPE.A1_OFF: + Dr.RTYPESTR = "NB_ALARM1-OFF"; + break; + case COMM.EALAMRAISETYPE.A2_ON: + Dr.RTYPESTR = "NB_ALARM2-ON"; + break; + case COMM.EALAMRAISETYPE.A2_OFF: + Dr.RTYPESTR = "NB_ALARM2-OFF"; + break; + } + + var atype = (COMM.EALAMTYPE)Dr.ATYPE; + Dr.ATYPESTR = atype.ToString(); + } + Dt.Item2.AcceptChanges(); + var tsEdit = DateTime.Now - dtEdit; + PUB.log.AddI($"edit time : {tsEdit.TotalSeconds} sec"); + Application.DoEvents(); + + + dtEdit = DateTime.Now; + DisplayData(Dt.Item2.AsEnumerable()); + tsEdit = DateTime.Now - dtEdit; + PUB.log.AddI($"DisplayData time : {tsEdit.TotalSeconds} sec"); + button1.Enabled = true; + } + + void DisplayData(EnumerableRowCollection search) + { + this.listView1.Items.Clear(); + + + this.listView1.SuspendLayout(); + foreach (var item in search) + { + var lv = this.listView1.Items.Add(item.TIME); + lv.SubItems.Add(item.CHNAME); + lv.SubItems.Add(item.RTYPESTR); + lv.SubItems.Add(item.VOLT.ToString()); + lv.SubItems.Add(item.MAXVOLT.ToString()); + lv.SubItems.Add(item.MINVOLT.ToString()); + lv.SubItems.Add(item.ATYPESTR); + lv.SubItems.Add(item.REMARK); + + switch (item.RTYPESTR.ToUpper()) + { + case "NB_ALARM1_ON": + lv.BackColor = Color.HotPink; + break; + case "NB_ALARM2_ON": + lv.BackColor = Color.OrangeRed; //Color.Red; + break; + case "HIGH_ON": + lv.BackColor = Color.Orange; + break; + case "LOW_ON": + lv.BackColor = Color.LightSkyBlue; //Color.Blue; + break; + case "OVER_ON": + lv.BackColor = Color.Violet; //Color.Magenta; + break; + default: + lv.BackColor = Color.Empty; + break; + } + } + this.listView1.ResumeLayout(); + } + } +} diff --git a/Viewer/AlarmViewer/Dialog/Frm_Alamlist.resx b/Viewer/AlarmViewer/Dialog/Frm_Alamlist.resx new file mode 100644 index 0000000..72efcce --- /dev/null +++ b/Viewer/AlarmViewer/Dialog/Frm_Alamlist.resx @@ -0,0 +1,450 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 242, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ + Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ + /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA + zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/ + IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E + rkJggg== + + + + 176, 17 + + + 17, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC + rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV + i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG + 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG + QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX + bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + + + AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA + AABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcrvQCHK70BByu + 9AYcrvQKHK70DByu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu + 9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu + 9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9AwcrvQKHK70Bxyu9AQcrvQCAAAAAByu + 9AIcrvQGHK70DByu9BUcrvQdHK70Ixyu9CYcrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu + 9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu + 9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jhyu9CMcrvQdHK70FRyu + 9AwcrvQGHK70Ahyu9AMcrvQMHK70GRyu9CocrvQ7HK70Rhyu9EwcrvROHK70Thyu9E4crvROHK70Thyu + 9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu + 9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70TRyu + 9EYcrvQ7HK70Kxyu9BkcrvQMHK70BByu9AUcrvQSHK70Jwuh7VYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ + 6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ + 6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ + 6WYAmelmAJnpZgCZ6WYAmelmCqDtWByu9CgcrvQTHK70Bhyu9AYcrvQWHK70Lgmi7nEYsvzXHLb//xy2 + //8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2 + //8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2 + //8ctv//HLb//xy2//8ctv//HLb//xy2//8Zs/3fC6PweRyu9C4crvQWHK70Bxyu9AYcrvQUHK70Kxex + +8Actv//HLb//x23//8et///ILj//yK6//8lu///Kb3//yzA//8wwv//NcT//znH//89yv//Qcv//0bN + //9Kz///TdH//1HS//9T1P//V9X//1nW//9X1f//U9T//1HS//9N0f//Ss///0bN//9By///Pcr//znH + //81xP//MML//yzA//8pvf//Jbv//yK6//8guP//Hrf//xy2//8ctv//GbP81Ryu9CwcrvQVHK70Bhyu + 9AQcrvQPHK70IBu1/tUctv//HLb//x63//8nuv//JLv//ym9//8uwP//M8P//zrH//9By///R87//0/R + //9X1f//Xdj//2Tb//9r3f//cd///3bi//974///f+X//4Dm//9/5f//e+P//3bi//9x3///a93//2Tb + //9d2P//V9X//0/R//9Hzv//Qcv//zrH//8zw///LsD//ym9//8mu///JLr//x63//8ctv//HLb/8hyu + 9CAcrvQQHK70BRyu9AIcrvQIHK70Ehy1/qIctv//HLb//za+//8juf//Irn//yW8//8rv///MML//zbF + //89yf//RM3//0rQ//9S0///Wdb//1/Z//9m3P//a97//3Hg//904v//d+L//3jk//934v//dOL//3Hg + //9r3v//Ztz//1/Z//9Z1v//UtP//0rQ//9Ezf//Pcn//zbF//8wwv//K7///yW8//8iuf//Mr7//x23 + //8ctv//HLb/xRyu9BIcrvQIHK70Ahyu9AEcrvQEHK70CBy0/C8ctv/8HLb//1PJ//8kuv//Ibn//yW7 + //8qv///MMH//zXE//87yP//Qsv//0nP//9Q0///Vtb//13Y//9j2v//ad3//23e//9x4P//c+H//3Ti + //9z4f//ceD//23e//9p3f//Y9r//13Y//9W1v//UNP//0nP//9Cy///O8j//zXE//8wwf//Kr///yW7 + //8iuf//Q8P//yO5//8ctv//HLX+TByu9AgcrvQEHK70AQAAAAAcrvQBHK70Ahyu9AMctv+bHLb//0/H + //83wP//Irn//yS7//8ovf//LsD//zTE//86yP//QMv//0bO//9N0f//VNT//1nW//9f2f//ZNv//2nd + //9r3v//bd7//27g//9t3v//a97//2nd//9k2///X9n//1nW//9U1P//TdH//0bO//9Ay///Osj//zTE + //8uwP//KL3//yS7//8lu///ac///x+4//8ctv++HK70Axyu9AIcrvQBAAAAAAAAAAAAAAAAAAAAAAAA + AAActv8bHLb/9iS4//9mz///I7r//yK6//8nvf//LL///zLC//83xf//Pcn//0PN//9K0P//UNP//1XV + //9a1///X9n//2Pa//9r3f//zvT//+37//+w7f//Ztz//2Pa//9f2f//Wtf//1XV//9Q0///StD//0PN + //89yf//N8X//zLC//8sv///J73//yS6//89wf//Usn//xy2//8ctv82AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAHLb/jRy2//9Vyv//OMD//yO5//8lvP//Kr///y7B//80xP//Osj//0DL + //9Gzf//StD//1DT//9V1f//Wdb//13Y//+f6P//////////////////dN7//13Y//9Z1v//VdX//1DT + //9K0P//Rs3//0DL//86yP//NMT//y7B//8qv///Jbz//ya7//9q0P//JLn//xy2/64AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Ehy2//Mluf//aM///yS6//8juv//J73//yy/ + //8xwv//NsX//zvI//9By///Rs7//0rQ//9Q0///VNT//1bW//+T5P/////////////7/v//adr//1bW + //9U1P//UNP//0rQ//9Gzv//Qcv//zvI//82xf//McL//yy///8nvf//JLr//z7C//9SyP//HLb//By2 + /yoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/34ctv//VMr//zrA + //8juf//Jbz//ym9//8uwP//MsL//zfF//88yf//Qcv//0bN//9K0P//TdH//1DT//9U1P//nuf//8fx + //+C4P//UtP//1DT//9N0f//StD//0bN//9By///PMn//zfF//8ywv//LsD//ym9//8lvP//Jrv//2rQ + //8kuf//HLb/ogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2 + /wwctv/tJLn//2nP//8nu///Jrv//yq9//8twP//MsL//zbE//87x///P8n//0TM//9Izf//S8///03Q + //9P0f//UdH//1HS//9R0f//T9H//03Q//9Lz///SM3//0TM//8/yf//O8f//zbE//8ywv//LcD//yq9 + //8nu///QsL//1HI//8ctv/5HLb/IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAActv9yHLb//1TJ//8/wv//J7v//yq8//8uvv//MsH//zXD//86xP//Psf//0LK + //9Fy///SMz//0rN//9Mzv//Tc///07P//9Nz///TM7//0rN//9IzP//Rcv//0LK//8+x///OsT//zXD + //8ywf//Lr7//yq8//8svP//bdH//yS5//8ctv+TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv8GHLb/5CS4//9s0f//Lbz//yy8//8vvf//Mr///zXC + //85w///PcX//0DI//9Dyf//Rsr//0nL//9Ozf//1fP///n9//+K3v//Ssz//0nL//9Gyv//Q8n//0DI + //89xf//OcP//zXC//8yv///L73//yy8//9GxP//UMj//xy2//Mctv8YAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Zhy2//9Vyf//RcP//y68 + //8wvf//Mr7//zbA//85wf//PMP//0DE//9Cx///RMf//0bJ//9w1f/////////////Q8f//R8n//0bJ + //9Ex///Qsf//0DE//88w///OcH//zbA//8yvv//ML3//zK+//9w0v//I7n//xy2/4cAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Axy2 + /9siuP//b9H//zW+//8yvv//NL///zbA//84wv//O8L//z7D//9Axf//QsX//0TH//9x1f////////// + ///U8v//Rcj//0TH//9Cxf//QMX//z7D//87wv//OML//zbA//80v///Mr7//03F//9PyP//HLb/7Ry2 + /xIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABy2/1cctv//VMn//0zF//81vv//Nr///ze///85wP//O8H//zzC//8/w///QcT//0LE + //9v0//////////////T8v//Q8X//0LE//9BxP//P8P//zzC//87wf//OcD//ze///82v///OMD//3LS + //8guP//HLb/eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/wMctv/PIrj//3TT//88wP//OsD//zvA//88wf//PsL//z/C + //9Aw///QsP//0PD//9w0//////////////T8v//RMX//0PD//9Cw///QMP//z/C//8+wv//PMH//zvA + //87wP//VMn//1DI//8ctv/nHLb/DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv9OHLb//1PJ//9Vyf//PsD//z7B + //8/wf//QMH//0HC//9Cwv//Q8P//0PD//9w0v/////////////T8f//RMP//0PD//9Dw///QsL//0HC + //9Awf//P8H//z7B//9Bwv//d9X//x+3//8ctv9sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/xiK4 + //961f//RsT//0LC//9Cwv//Q8P//0TD//9Fw///RcP//0bE//9x0//////////////U8f//RsT//0bE + //9Fw///RcP//0TD//9Dw///QsL//0PC//9dzP//Ucj//xy2/94ctv8GAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAHLb/Pxy2//9Vyf//Xs3//0nE//9IxP//SMT//0jE//9IxP//ScT//0nF//900/////////// + ///V8v//SsX//0nF//9JxP//SMT//0jE//9IxP//SMT//0zH//991f//H7f//xy2/10AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/7oiuP//ftb//1LI//9Ox///Tsf//07H//9Ox///Tsf//07H + //931P/////////////W8v//Tsf//07H//9Ox///Tsf//07H//9Ox///Tsf//2bP//9RyP//HLb/1Ry2 + /wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/zMctv//Vsn//2jP//9Uyf//U8n//1PJ + //9Tyf//U8n//1PJ//971v/////////////X8v//U8n//1PJ//9Tyf//U8n//1PJ//9Tyf//V8r//4HY + //8ft///HLb/UQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv+rIbj//4XZ + //9dzP//Wsv//1rL//9ay///Wsv//1rL//+B1//////////////Y8///Wsv//1rL//9ay///Wsv//1rL + //9ay///cdL//1LJ//8ctv/JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAActv8nHLb//FfK//900///Yc3//2DN//9gzf//YM3//2DN//+F2f/////////////a8///YM3//2DN + //9gzf//YM3//2DN//9kzv//h9n//x+3//8ctv9CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAHLb/nB+3//+L2///atD//2bP//9mz///Zs///2bP//+K2v////////// + ///b9P//Zs///2bP//9mz///Zs///2fP//981f//Usn//xy2/70AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Gxy2//lYyv//f9b//23R//9t0f//bdH//23R + //+P3P/////////////d9P//bdH//23R//9t0f//bdH//3DR//+M2v//Hrf//xy2/zYAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/40ft///ktz//3bU + //9z0///c9P//3PT//+U3f/////////////e9f//c9P//3PT//9z0///c9P//4bZ//9SyP//HLb/rgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2 + /xUctv/zWMr//4ra//961f//etX//3rV//+Z3//////////////g9f//etX//3rV//961f//fdX//5Hc + //8et//8HLb/KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAActv+BH7f//5be//+C2P//gNf//4DX//+Q3P///v/////////Q8P//gNf//4DX + //+A1///kd3//1TJ//8ctv+iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv8MHLb/7VnK//+V3f//htn//4bZ//+G2f//m+D//6/m + //+K2v//htn//4bZ//+J2f//lt3//x63//kctv8hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/ciC3//+a3///j9z//43b + //+N2///jdv//43b//+N2///jdv//43b//+b4P//VMn//xy2/5MAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Bhy2 + /+RZyv//n+H//5Pd//+T3f//k93//5Pd//+T3f//k93//5bd//+a3///Hrf/8xy2/xsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABy2/2Met///oOH//5vg//+a3///mt///5rf//+a3///mt///6bj//9Uyf//HLb/hwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/wMctv/YWcr//6rk//+f4f//n+H//5/h//+f4f//ouH//57h + //8et//tHLb/EgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv9UHrf//6Ti//+m4///peL//6Xi + //+l4v//r+X//1LI//8ctv97AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/zFrL + //+z6P//quX//6rl//+s5f//oeL//x63/+cctv8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAHLb/RR63//+p5P//tuj//7Pn//+96v//VMn//xy2/2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/71GxP//wuz//8Xt//+S3f//HLb/3hy2/wYAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/zYctv//Mr3//1HI//8iuP//HLb/YAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv+HHLb//xy2 + //8ctv+lHLb/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAHLb/Jxy2/zYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP////////z9gAAAAAAB/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAA + AAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9gAAAAAAB/P3wAAAAAA/8/fgAAAAAH/z9+AAAAAAf + /P38AAAAAD/8/fwAAAAAP/z9/gAAAAB//P3+AAAAAH/8/f8AAAAA//z9/wAAAAD//P3/gAAAAf/8/f+A + AAAB//z9/8AAAAP//P3/4AAAA//8/f/gAAAH//z9//AAAAf//P3/8AAAD//8/f/4AAAf//z9//gAAB// + /P3//AAAP//8/f/8AAA///z9//4AAH///P3//gAAf//8/f//AAD///z9//8AAP///P3//4AB///8/f// + gAH///z9///AA////P3//8AD///8/f//4Af///z9///wB////P3///AP///8/f//+A////z9///4H/// + /P3///wf///8/f///n////z9/////////P3////////8/SgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAHK70ARuu9AIcrvQEG670BByu9AQbrvQEHK70BBuu9AQcrvQEG670BByu + 9AQbrvQEHK70BBuu9AQcrvQEG670BByu9AQbrvQEHK70BBuu9AQcrvQEG670BByu9AQbrvQEHK70BBuu + 9AQcrvQEG670BByu9AMbrvQBAAAAABuu9AIbrvQIG670Ehuu9BobrvQeG670Hhuu9B4brvQeG670Hhuu + 9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu + 9B4brvQeG670Hhuu9B4brvQaG670Ehuu9AgbrvQCG670Bxyu9BgVqPE+EqfwThKn8FUSp/BWEqfwVhKn + 8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn + 8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8E4UqPE/G670GRyu9AgbrvQLG670JAuk8IARq/bDEqz3zBKs + 98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs + 98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqv3xQyk8YYbrvQkG670Cxuu9AocrvQgGbP92hy2 + //8et///Ibj//yW7//8qvv//MsP//znG//9Cy///SM7//1HS//9X1f//Xtf//2PZ//9l2///Ydn//1vW + //9W1P//TtD//0fO//8+yf//N8X//y/B//8pvf//I7r//yC4//8ctv//GrT96Ruu9CEcrvQKG670BRuu + 9BMbtf7MG7b//yq6//8juf//KL3//y/B//85x///Qsz//07R//9Y1f//Ytr//2vd//9z4f//eOL//3rk + //934v//cN///2nd//9e2P//VdT//0nP//9Ayv//NcT//y3A//8lu///Krv//xy2//8btv/iG670Exuu + 9AYbrvQBHK70BRuz+18ctv/zRMT//yS6//8mvP//Lb///zbF//8/yv//Ss///1PU//9d2P//Zdv//2ze + //9w3///ceD//2/f//9q3f//Y9r//1nW//9R0///Rc3//zzJ//8ywv//K7///yS6//9Awv//H7f/+Byz + /HAbrvQFHK70AQAAAAAbrvQBG7L6GBu2/70+wf//M7///yS7//8qvv//NMP//zvI//9Gzv//T9L//1jW + //9f2f//Z9v//5fn//+17v//eOD//2Pa//9d2P//VNT//03R//9CzP//Osf//zDB//8pvf//Kbv//03H + //8ctv/LG7L6Ihuu9AEAAAAAAAAAAAAAAAAAAAAAHLb/Qym6//xHxP//I7r//ye9//8vwf//NsX//0DK + //9Hzv//T9L//1bV//9w3P//3fb///7+//+f6P//Wdb//1TU//9M0f//Rc3//zzJ//80xP//K7///ya8 + //8/wv//Nr///hu2/1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv8EHLb/w0bE//8tvP//JLv//yu+ + //8xwv//Osf//0HL//9Iz///TtH//1nV//+h5///yfH//3Tc//9R0///TdH//0XN//8/yv//NsX//zDB + //8ovf//Jbv//07G//8juP/VG7b/CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv9HH7f/61HH + //8pu///K73//zDA//83xP//Pcf//0TL//9Jzf//TM///0/Q//9P0P//TtD//0vO//9IzP//Qcr//zzG + //80w///LsD//ym8//9Dw///Nb7/8hy2/1YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABu2 + /w4btv+sQcL//zvB//8svP//ML7//zbC//88xP//Qcn//0XK//9KzP//id7//6fm//9Y0P//SMv//0TK + //8/x///OsT//zTB//8vvv//Mb3//1DH//8dtv+6G7b/FgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABy2/y4puv/3Tsb//zC8//8yvv//NsD//zrC//9AxP//Qsb//1PM///P8f//7/r//3TW + //9Ex///Qsb//z7D//85wf//NL///zG9//9Jxf//N7//+xu2/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAG7b/ARy2/6xIxP//PsH//zS+//83v///OsH//z3C//9AxP//Ucn//8/w + ///w+v//c9T//0LE//9Aw///PML//znA//82v///Nb///1PI//8iuP+/G7b/BAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG7b/OB62/+Fcy///PsH//zzA//8+wf//QML//0HC + //9SyP//z/D///D6//9z0///QsP//0HC//8/wf//PcH//zzA//9UyP//M77/6Ry2/0UAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv8JG7b/mUbE//9Rx///QMH//0HC + //9Dwv//RML//1PI///P8P//8Pr//3TS//9Ew///RML//0LC//9Bwf//R8T//1rL//8ctv+pG7b/DQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv8cKbr/8FzL + //9Lxf//SsX//0rF//9Kxf//WMr//9Hw///x+v//edT//0rF//9Kxf//SsX//0rF//9dzP//OL//9hu2 + /yoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAActv+VTMX//1vL//9RyP//Ucj//1HI//9ezP//0vH///H6//991v//Ucj//1HI//9RyP//U8j//1/M + //8iuP+oG7b/AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABu2/yoetv/UcNL//1/M//9cy///XMv//2jP///V8f//8vv//4XY//9cy///XMv//1zL + //9v0f//NL7/3hy2/zQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAG7b/BBu2/4JMxv//cNL//2TO//9kzv//cNL//9fy///y+///i9r//2TO + //9kzv//ac///2nP//8ctv+UG7b/BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/DCm6/+Nv0f//b9H//2/R//961f//2vP///P7 + //+T3f//b9H//2/R//930///O8D/7Ru2/xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/e1HH//x/1v//d9T//4LX + ///c9P//9Pv//5rf//931P//edT//27Q//4iuP+OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv8eHbb/xIPY + //+E2P//hdj//8Ls///V8v//lN3//4LX//+N2///Nb7/0By2/ygAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABu2 + /wEbtv9pVMj//5Dc//+K2v//j9v//5Td//+L2v//jtv//3jU//8ctv98G7b/BAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABy2/wMpuv/Qgdf//5Xd//+V3f//ld3//5Xd//+T3P//P8H/3xu2/wwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/2RUyP/2ouH//53g//+d4P//nuD//3vV//siuP93AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG7b/Exy2/7GV3f//p+P//6bj//+p4///NL7/wRy2 + /x0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG7b/TFrK//+w5v//suf//4bZ + //8ctv9lG7b/AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJbn/tXTS + //+N2///Nr7/zRu2/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAbtv9GILf/5Ci6/+sctv9YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAActv8RG7b/GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAA + AAHgAAAH4AAAB/AAAA/wAAAP+AAAH/gAAB/8AAA//AAAP/4AAH//AAB//wAA//8AAP//gAH//8AD///A + A///wAP//+AH///wD///8A////gP///8H////D////5///////8oAAAAEAAAACAAAAABACAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAG670Axuu9A0brvQRG670ERuu9BEbrvQRG670ERuu9BEbrvQRG670ERuu + 9BEbrvQRG670ERuu9BEbrvQNG670Axuu9BQRp/J0Eqn0kRKp9JESqfSREqn0kRKp9JESqfSREqn0kRKp + 9JESqfSREqn0kRKp9JESqfSREafydhuu9BQbrvQQG7X+6SO5/v8qvv7/Osf+/0zQ/v9d1/7/a93+/27e + /v9j2v7/UtP+/z/K/v8uwP7/JLr+/xy1/vIbrvQRG670Ahu0/Yo2v/7/KL3+/znG/v9M0f7/Xtj+/3bg + /v+D4/7/Y9r+/1PU/v8/yv7/LsD+/zfA/v8dtf2VG670AgAAAAAbtv4SNb7+7ye7/v8wwv7/QMr+/0/S + /v+S5P7/t+3+/1PU/v9Fzf7/NsX+/yi9/v86wP70G7b+GAAAAAAAAAAAAAAAAB22/ns9wf7/Lr7+/znE + /v9Fy/7/XNL+/2fW/v9IzP7/Psf+/zHA/v87wf7/JLn+hgAAAAAAAAAAAAAAAAAAAAAbtv4MN77+6DW+ + /v84wP7/QMT+/5He/v+y5/7/QsX+/zvC/v80vv7/PcH+7hu2/hEAAAAAAAAAAAAAAAAAAAAAAAAAAB22 + /m9Mxf7/P8H+/0LC/v+R3P7/sub+/0PD/v9Awf7/TMb+/yO4/nkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAbtv4HO8D+4VDH/v9Nxv7/lt7+/7bo/v9Nxv7/Tsb+/0bE/ucbtv4LAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABy2/mFjzf7/YM3+/6Hh/v+96v7/YM3+/2fP/v8nuv5rAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAbtv4DQcL+1nXT/v+s5f7/xez+/3PT/v9Rx/7eG7b+BgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/lN71f7/mN7+/6Lh/v+F2P7/J7r+XgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv4BR8T+yprf/v+Z3/7/XMv+1Bu2/gMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/kSS3P7/ouH+/ye5/lEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOL/+uELC/sQbtv4BAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABu2/gQbtv4GAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArEEAAKxBAACsQQAArEGAAaxBwAOsQcADrEHgB6xB4AesQfAP + rEHwD6xB+B+sQfgfrEH8P6xB/j+sQf5/rEE= + + + \ No newline at end of file diff --git a/Viewer/AlarmViewer/Dialog/fLog.Designer.cs b/Viewer/AlarmViewer/Dialog/fLog.Designer.cs new file mode 100644 index 0000000..dd1e5e8 --- /dev/null +++ b/Viewer/AlarmViewer/Dialog/fLog.Designer.cs @@ -0,0 +1,60 @@ +namespace vmsnet +{ + partial class fLog + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.richTextBox1 = new System.Windows.Forms.RichTextBox(); + this.SuspendLayout(); + // + // richTextBox1 + // + this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.richTextBox1.Location = new System.Drawing.Point(0, 0); + this.richTextBox1.Name = "richTextBox1"; + this.richTextBox1.Size = new System.Drawing.Size(776, 524); + this.richTextBox1.TabIndex = 0; + this.richTextBox1.Text = ""; + // + // fLog + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(776, 524); + this.Controls.Add(this.richTextBox1); + this.Name = "fLog"; + this.Text = "fLog"; + this.Load += new System.EventHandler(this.fLog_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.RichTextBox richTextBox1; + } +} \ No newline at end of file diff --git a/Viewer/AlarmViewer/Dialog/fLog.cs b/Viewer/AlarmViewer/Dialog/fLog.cs new file mode 100644 index 0000000..01a0eeb --- /dev/null +++ b/Viewer/AlarmViewer/Dialog/fLog.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using vmsnet; + +namespace vmsnet +{ + public partial class fLog : Form + { + public fLog() + { + InitializeComponent(); + PUB.log.RaiseMsg += Log_RaiseMsg; + this.FormClosed += (s1, e1) => + { + PUB.log.RaiseMsg -= Log_RaiseMsg; + this.Dispose(); + }; + } + + + + private void Log_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + addmsg(Message); + } + void addmsg(string mbox) + { + if (this.richTextBox1.InvokeRequired) + { + this.richTextBox1.BeginInvoke(new Action(() => + { + this.richTextBox1.AppendText(mbox + "\n"); + this.richTextBox1.ScrollToCaret(); + })); + } + else + { + this.richTextBox1.AppendText(mbox + "\n"); + this.richTextBox1.ScrollToCaret(); + } + } + private void fLog_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/Viewer/AlarmViewer/Dialog/fLog.resx b/Viewer/AlarmViewer/Dialog/fLog.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Viewer/AlarmViewer/Dialog/fLog.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Viewer/AlarmViewer/DocumentElement.Designer.cs b/Viewer/AlarmViewer/DocumentElement.Designer.cs new file mode 100644 index 0000000..4dd25c3 --- /dev/null +++ b/Viewer/AlarmViewer/DocumentElement.Designer.cs @@ -0,0 +1,6743 @@ +//------------------------------------------------------------------------------ +// +// ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +// 런타임 버전:4.0.30319.42000 +// +// íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +// ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +// +//------------------------------------------------------------------------------ + +#pragma warning disable 1591 + +namespace vmsnet { + + + /// + ///Represents a strongly typed in-memory cache of data. + /// + [global::System.Serializable()] + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedDataSetSchema")] + [global::System.Xml.Serialization.XmlRootAttribute("DocumentElement")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.DataSet")] + public partial class DocumentElement : global::System.Data.DataSet { + + private CHANNELDataTable tableCHANNEL; + + private DEVICEDataTable tableDEVICE; + + private GRPDataTable tableGRP; + + private NORMALDataTable tableNORMAL; + + private VIEWGROUPDataTable tableVIEWGROUP; + + private WINDataTable tableWIN; + + private ALARMDataTable tableALARM; + + private VIEWGROUPRDataTable tableVIEWGROUPR; + + private TRENDVIEWCHLISTDataTable tableTRENDVIEWCHLIST; + + private global::System.Data.SchemaSerializationMode _schemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DocumentElement() { + this.BeginInit(); + this.InitClass(); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + base.Relations.CollectionChanged += schemaChangedHandler; + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected DocumentElement(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context, false) { + if ((this.IsBinarySerialized(info, context) == true)) { + this.InitVars(false); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + this.Tables.CollectionChanged += schemaChangedHandler1; + this.Relations.CollectionChanged += schemaChangedHandler1; + return; + } + string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); + if ((this.DetermineSchemaSerializationMode(info, context) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + if ((ds.Tables["CHANNEL"] != null)) { + base.Tables.Add(new CHANNELDataTable(ds.Tables["CHANNEL"])); + } + if ((ds.Tables["DEVICE"] != null)) { + base.Tables.Add(new DEVICEDataTable(ds.Tables["DEVICE"])); + } + if ((ds.Tables["GRP"] != null)) { + base.Tables.Add(new GRPDataTable(ds.Tables["GRP"])); + } + if ((ds.Tables["NORMAL"] != null)) { + base.Tables.Add(new NORMALDataTable(ds.Tables["NORMAL"])); + } + if ((ds.Tables["VIEWGROUP"] != null)) { + base.Tables.Add(new VIEWGROUPDataTable(ds.Tables["VIEWGROUP"])); + } + if ((ds.Tables["WIN"] != null)) { + base.Tables.Add(new WINDataTable(ds.Tables["WIN"])); + } + if ((ds.Tables["ALARM"] != null)) { + base.Tables.Add(new ALARMDataTable(ds.Tables["ALARM"])); + } + if ((ds.Tables["VIEWGROUPR"] != null)) { + base.Tables.Add(new VIEWGROUPRDataTable(ds.Tables["VIEWGROUPR"])); + } + if ((ds.Tables["TRENDVIEWCHLIST"] != null)) { + base.Tables.Add(new TRENDVIEWCHLISTDataTable(ds.Tables["TRENDVIEWCHLIST"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + } + this.GetSerializationData(info, context); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + this.Relations.CollectionChanged += schemaChangedHandler; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public CHANNELDataTable CHANNEL { + get { + return this.tableCHANNEL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public DEVICEDataTable DEVICE { + get { + return this.tableDEVICE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public GRPDataTable GRP { + get { + return this.tableGRP; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public NORMALDataTable NORMAL { + get { + return this.tableNORMAL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public VIEWGROUPDataTable VIEWGROUP { + get { + return this.tableVIEWGROUP; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public WINDataTable WIN { + get { + return this.tableWIN; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public ALARMDataTable ALARM { + get { + return this.tableALARM; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public VIEWGROUPRDataTable VIEWGROUPR { + get { + return this.tableVIEWGROUPR; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public TRENDVIEWCHLISTDataTable TRENDVIEWCHLIST { + get { + return this.tableTRENDVIEWCHLIST; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.BrowsableAttribute(true)] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Visible)] + public override global::System.Data.SchemaSerializationMode SchemaSerializationMode { + get { + return this._schemaSerializationMode; + } + set { + this._schemaSerializationMode = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataTableCollection Tables { + get { + return base.Tables; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataRelationCollection Relations { + get { + return base.Relations; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void InitializeDerivedDataSet() { + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataSet Clone() { + DocumentElement cln = ((DocumentElement)(base.Clone())); + cln.InitVars(); + cln.SchemaSerializationMode = this.SchemaSerializationMode; + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeTables() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeRelations() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void ReadXmlSerializable(global::System.Xml.XmlReader reader) { + if ((this.DetermineSchemaSerializationMode(reader) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + this.Reset(); + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXml(reader); + if ((ds.Tables["CHANNEL"] != null)) { + base.Tables.Add(new CHANNELDataTable(ds.Tables["CHANNEL"])); + } + if ((ds.Tables["DEVICE"] != null)) { + base.Tables.Add(new DEVICEDataTable(ds.Tables["DEVICE"])); + } + if ((ds.Tables["GRP"] != null)) { + base.Tables.Add(new GRPDataTable(ds.Tables["GRP"])); + } + if ((ds.Tables["NORMAL"] != null)) { + base.Tables.Add(new NORMALDataTable(ds.Tables["NORMAL"])); + } + if ((ds.Tables["VIEWGROUP"] != null)) { + base.Tables.Add(new VIEWGROUPDataTable(ds.Tables["VIEWGROUP"])); + } + if ((ds.Tables["WIN"] != null)) { + base.Tables.Add(new WINDataTable(ds.Tables["WIN"])); + } + if ((ds.Tables["ALARM"] != null)) { + base.Tables.Add(new ALARMDataTable(ds.Tables["ALARM"])); + } + if ((ds.Tables["VIEWGROUPR"] != null)) { + base.Tables.Add(new VIEWGROUPRDataTable(ds.Tables["VIEWGROUPR"])); + } + if ((ds.Tables["TRENDVIEWCHLIST"] != null)) { + base.Tables.Add(new TRENDVIEWCHLISTDataTable(ds.Tables["TRENDVIEWCHLIST"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXml(reader); + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Xml.Schema.XmlSchema GetSchemaSerializable() { + global::System.IO.MemoryStream stream = new global::System.IO.MemoryStream(); + this.WriteXmlSchema(new global::System.Xml.XmlTextWriter(stream, null)); + stream.Position = 0; + return global::System.Xml.Schema.XmlSchema.Read(new global::System.Xml.XmlTextReader(stream), null); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.InitVars(true); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars(bool initTable) { + this.tableCHANNEL = ((CHANNELDataTable)(base.Tables["CHANNEL"])); + if ((initTable == true)) { + if ((this.tableCHANNEL != null)) { + this.tableCHANNEL.InitVars(); + } + } + this.tableDEVICE = ((DEVICEDataTable)(base.Tables["DEVICE"])); + if ((initTable == true)) { + if ((this.tableDEVICE != null)) { + this.tableDEVICE.InitVars(); + } + } + this.tableGRP = ((GRPDataTable)(base.Tables["GRP"])); + if ((initTable == true)) { + if ((this.tableGRP != null)) { + this.tableGRP.InitVars(); + } + } + this.tableNORMAL = ((NORMALDataTable)(base.Tables["NORMAL"])); + if ((initTable == true)) { + if ((this.tableNORMAL != null)) { + this.tableNORMAL.InitVars(); + } + } + this.tableVIEWGROUP = ((VIEWGROUPDataTable)(base.Tables["VIEWGROUP"])); + if ((initTable == true)) { + if ((this.tableVIEWGROUP != null)) { + this.tableVIEWGROUP.InitVars(); + } + } + this.tableWIN = ((WINDataTable)(base.Tables["WIN"])); + if ((initTable == true)) { + if ((this.tableWIN != null)) { + this.tableWIN.InitVars(); + } + } + this.tableALARM = ((ALARMDataTable)(base.Tables["ALARM"])); + if ((initTable == true)) { + if ((this.tableALARM != null)) { + this.tableALARM.InitVars(); + } + } + this.tableVIEWGROUPR = ((VIEWGROUPRDataTable)(base.Tables["VIEWGROUPR"])); + if ((initTable == true)) { + if ((this.tableVIEWGROUPR != null)) { + this.tableVIEWGROUPR.InitVars(); + } + } + this.tableTRENDVIEWCHLIST = ((TRENDVIEWCHLISTDataTable)(base.Tables["TRENDVIEWCHLIST"])); + if ((initTable == true)) { + if ((this.tableTRENDVIEWCHLIST != null)) { + this.tableTRENDVIEWCHLIST.InitVars(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.DataSetName = "DocumentElement"; + this.Prefix = ""; + this.Namespace = "http://tempuri.org/DocumentElement.xsd"; + this.EnforceConstraints = true; + this.SchemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + this.tableCHANNEL = new CHANNELDataTable(); + base.Tables.Add(this.tableCHANNEL); + this.tableDEVICE = new DEVICEDataTable(); + base.Tables.Add(this.tableDEVICE); + this.tableGRP = new GRPDataTable(); + base.Tables.Add(this.tableGRP); + this.tableNORMAL = new NORMALDataTable(); + base.Tables.Add(this.tableNORMAL); + this.tableVIEWGROUP = new VIEWGROUPDataTable(); + base.Tables.Add(this.tableVIEWGROUP); + this.tableWIN = new WINDataTable(); + base.Tables.Add(this.tableWIN); + this.tableALARM = new ALARMDataTable(); + base.Tables.Add(this.tableALARM); + this.tableVIEWGROUPR = new VIEWGROUPRDataTable(); + base.Tables.Add(this.tableVIEWGROUPR); + this.tableTRENDVIEWCHLIST = new TRENDVIEWCHLISTDataTable(); + base.Tables.Add(this.tableTRENDVIEWCHLIST); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeCHANNEL() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeDEVICE() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeGRP() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeNORMAL() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeVIEWGROUP() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeWIN() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeALARM() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeVIEWGROUPR() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeTRENDVIEWCHLIST() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void SchemaChanged(object sender, global::System.ComponentModel.CollectionChangeEventArgs e) { + if ((e.Action == global::System.ComponentModel.CollectionChangeAction.Remove)) { + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); + any.Namespace = ds.Namespace; + sequence.Items.Add(any); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void CHANNELRowChangeEventHandler(object sender, CHANNELRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void DEVICERowChangeEventHandler(object sender, DEVICERowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void GRPRowChangeEventHandler(object sender, GRPRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void NORMALRowChangeEventHandler(object sender, NORMALRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void VIEWGROUPRowChangeEventHandler(object sender, VIEWGROUPRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void WINRowChangeEventHandler(object sender, WINRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void ALARMRowChangeEventHandler(object sender, ALARMRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void VIEWGROUPRRowChangeEventHandler(object sender, VIEWGROUPRRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void TRENDVIEWCHLISTRowChangeEventHandler(object sender, TRENDVIEWCHLISTRowChangeEvent e); + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class CHANNELDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnENABLE; + + private global::System.Data.DataColumn columnUSE; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnGIDX; + + private global::System.Data.DataColumn columnMACHINE; + + private global::System.Data.DataColumn columnALAMTYPE; + + private global::System.Data.DataColumn columnALAMH; + + private global::System.Data.DataColumn columnALAML; + + private global::System.Data.DataColumn columnCOLOR; + + private global::System.Data.DataColumn columnAUTOH; + + private global::System.Data.DataColumn columnAUTOL; + + private global::System.Data.DataColumn columnUNIT; + + private global::System.Data.DataColumn columnDECPOS; + + private global::System.Data.DataColumn columnGRPNAME; + + private global::System.Data.DataColumn columnIDX_M; + + private global::System.Data.DataColumn columnIDX_U; + + private global::System.Data.DataColumn columnIDX_C; + + private global::System.Data.DataColumn columnVOFFSET; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELDataTable() { + this.TableName = "CHANNEL"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal CHANNELDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected CHANNELDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ENABLEColumn { + get { + return this.columnENABLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn USEColumn { + get { + return this.columnUSE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn GIDXColumn { + get { + return this.columnGIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MACHINEColumn { + get { + return this.columnMACHINE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMTYPEColumn { + get { + return this.columnALAMTYPE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMHColumn { + get { + return this.columnALAMH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMLColumn { + get { + return this.columnALAML; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn COLORColumn { + get { + return this.columnCOLOR; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn AUTOHColumn { + get { + return this.columnAUTOH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn AUTOLColumn { + get { + return this.columnAUTOL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn UNITColumn { + get { + return this.columnUNIT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn DECPOSColumn { + get { + return this.columnDECPOS; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn GRPNAMEColumn { + get { + return this.columnGRPNAME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDX_MColumn { + get { + return this.columnIDX_M; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDX_UColumn { + get { + return this.columnIDX_U; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDX_CColumn { + get { + return this.columnIDX_C; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn VOFFSETColumn { + get { + return this.columnVOFFSET; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELRow this[int index] { + get { + return ((CHANNELRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event CHANNELRowChangeEventHandler CHANNELRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event CHANNELRowChangeEventHandler CHANNELRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event CHANNELRowChangeEventHandler CHANNELRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event CHANNELRowChangeEventHandler CHANNELRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddCHANNELRow(CHANNELRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELRow AddCHANNELRow( + int ENABLE, + int USE, + string TITLE, + int GIDX, + string MACHINE, + int ALAMTYPE, + float ALAMH, + float ALAML, + int COLOR, + float AUTOH, + float AUTOL, + string UNIT, + int DECPOS, + string GRPNAME, + int IDX_M, + int IDX_U, + int IDX_C, + float VOFFSET) { + CHANNELRow rowCHANNELRow = ((CHANNELRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + ENABLE, + USE, + TITLE, + GIDX, + MACHINE, + ALAMTYPE, + ALAMH, + ALAML, + COLOR, + AUTOH, + AUTOL, + UNIT, + DECPOS, + GRPNAME, + IDX_M, + IDX_U, + IDX_C, + VOFFSET}; + rowCHANNELRow.ItemArray = columnValuesArray; + this.Rows.Add(rowCHANNELRow); + return rowCHANNELRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELRow FindByIDX(int IDX) { + return ((CHANNELRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + CHANNELDataTable cln = ((CHANNELDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new CHANNELDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnENABLE = base.Columns["ENABLE"]; + this.columnUSE = base.Columns["USE"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnGIDX = base.Columns["GIDX"]; + this.columnMACHINE = base.Columns["MACHINE"]; + this.columnALAMTYPE = base.Columns["ALAMTYPE"]; + this.columnALAMH = base.Columns["ALAMH"]; + this.columnALAML = base.Columns["ALAML"]; + this.columnCOLOR = base.Columns["COLOR"]; + this.columnAUTOH = base.Columns["AUTOH"]; + this.columnAUTOL = base.Columns["AUTOL"]; + this.columnUNIT = base.Columns["UNIT"]; + this.columnDECPOS = base.Columns["DECPOS"]; + this.columnGRPNAME = base.Columns["GRPNAME"]; + this.columnIDX_M = base.Columns["IDX_M"]; + this.columnIDX_U = base.Columns["IDX_U"]; + this.columnIDX_C = base.Columns["IDX_C"]; + this.columnVOFFSET = base.Columns["VOFFSET"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnENABLE = new global::System.Data.DataColumn("ENABLE", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnENABLE); + this.columnUSE = new global::System.Data.DataColumn("USE", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnUSE); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnGIDX = new global::System.Data.DataColumn("GIDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnGIDX); + this.columnMACHINE = new global::System.Data.DataColumn("MACHINE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMACHINE); + this.columnALAMTYPE = new global::System.Data.DataColumn("ALAMTYPE", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAMTYPE); + this.columnALAMH = new global::System.Data.DataColumn("ALAMH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAMH); + this.columnALAML = new global::System.Data.DataColumn("ALAML", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAML); + this.columnCOLOR = new global::System.Data.DataColumn("COLOR", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCOLOR); + this.columnAUTOH = new global::System.Data.DataColumn("AUTOH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAUTOH); + this.columnAUTOL = new global::System.Data.DataColumn("AUTOL", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAUTOL); + this.columnUNIT = new global::System.Data.DataColumn("UNIT", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnUNIT); + this.columnDECPOS = new global::System.Data.DataColumn("DECPOS", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnDECPOS); + this.columnGRPNAME = new global::System.Data.DataColumn("GRPNAME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnGRPNAME); + this.columnIDX_M = new global::System.Data.DataColumn("IDX_M", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX_M); + this.columnIDX_U = new global::System.Data.DataColumn("IDX_U", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX_U); + this.columnIDX_C = new global::System.Data.DataColumn("IDX_C", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX_C); + this.columnVOFFSET = new global::System.Data.DataColumn("VOFFSET", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVOFFSET); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnENABLE.DefaultValue = ((int)(0)); + this.columnUSE.DefaultValue = ((int)(0)); + this.columnTITLE.DefaultValue = ((string)("")); + this.columnGIDX.DefaultValue = ((int)(0)); + this.columnMACHINE.DefaultValue = ((string)("")); + this.columnALAMTYPE.DefaultValue = ((int)(0)); + this.columnALAMH.DefaultValue = ((float)(0F)); + this.columnALAML.DefaultValue = ((float)(0F)); + this.columnCOLOR.DefaultValue = ((int)(0)); + this.columnAUTOH.DefaultValue = ((float)(0F)); + this.columnAUTOL.DefaultValue = ((float)(0F)); + this.columnUNIT.DefaultValue = ((string)("")); + this.columnDECPOS.DefaultValue = ((int)(0)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELRow NewCHANNELRow() { + return ((CHANNELRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new CHANNELRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(CHANNELRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.CHANNELRowChanged != null)) { + this.CHANNELRowChanged(this, new CHANNELRowChangeEvent(((CHANNELRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.CHANNELRowChanging != null)) { + this.CHANNELRowChanging(this, new CHANNELRowChangeEvent(((CHANNELRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.CHANNELRowDeleted != null)) { + this.CHANNELRowDeleted(this, new CHANNELRowChangeEvent(((CHANNELRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.CHANNELRowDeleting != null)) { + this.CHANNELRowDeleting(this, new CHANNELRowChangeEvent(((CHANNELRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveCHANNELRow(CHANNELRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "CHANNELDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class DEVICEDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnUSE; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnIP; + + private global::System.Data.DataColumn columnCHCOUNT; + + private global::System.Data.DataColumn columnKACOMMAND; + + private global::System.Data.DataColumn columnCHCOMMAND; + + private global::System.Data.DataColumn columnSNCOMMAND; + + private global::System.Data.DataColumn columnPORT; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICEDataTable() { + this.TableName = "DEVICE"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal DEVICEDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected DEVICEDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn USEColumn { + get { + return this.columnUSE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IPColumn { + get { + return this.columnIP; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn CHCOUNTColumn { + get { + return this.columnCHCOUNT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn KACOMMANDColumn { + get { + return this.columnKACOMMAND; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn CHCOMMANDColumn { + get { + return this.columnCHCOMMAND; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn SNCOMMANDColumn { + get { + return this.columnSNCOMMAND; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn PORTColumn { + get { + return this.columnPORT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICERow this[int index] { + get { + return ((DEVICERow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event DEVICERowChangeEventHandler DEVICERowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event DEVICERowChangeEventHandler DEVICERowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event DEVICERowChangeEventHandler DEVICERowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event DEVICERowChangeEventHandler DEVICERowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddDEVICERow(DEVICERow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICERow AddDEVICERow(int USE, string TITLE, string IP, string CHCOUNT, string KACOMMAND, string CHCOMMAND, string SNCOMMAND, int PORT) { + DEVICERow rowDEVICERow = ((DEVICERow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + USE, + TITLE, + IP, + CHCOUNT, + KACOMMAND, + CHCOMMAND, + SNCOMMAND, + PORT}; + rowDEVICERow.ItemArray = columnValuesArray; + this.Rows.Add(rowDEVICERow); + return rowDEVICERow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICERow FindByIDX(int IDX) { + return ((DEVICERow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + DEVICEDataTable cln = ((DEVICEDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new DEVICEDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnUSE = base.Columns["USE"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnIP = base.Columns["IP"]; + this.columnCHCOUNT = base.Columns["CHCOUNT"]; + this.columnKACOMMAND = base.Columns["KACOMMAND"]; + this.columnCHCOMMAND = base.Columns["CHCOMMAND"]; + this.columnSNCOMMAND = base.Columns["SNCOMMAND"]; + this.columnPORT = base.Columns["PORT"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnUSE = new global::System.Data.DataColumn("USE", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnUSE); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnIP = new global::System.Data.DataColumn("IP", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIP); + this.columnCHCOUNT = new global::System.Data.DataColumn("CHCOUNT", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCHCOUNT); + this.columnKACOMMAND = new global::System.Data.DataColumn("KACOMMAND", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnKACOMMAND); + this.columnCHCOMMAND = new global::System.Data.DataColumn("CHCOMMAND", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCHCOMMAND); + this.columnSNCOMMAND = new global::System.Data.DataColumn("SNCOMMAND", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSNCOMMAND); + this.columnPORT = new global::System.Data.DataColumn("PORT", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPORT); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnUSE.DefaultValue = ((int)(0)); + this.columnTITLE.DefaultValue = ((string)("")); + this.columnIP.DefaultValue = ((string)("")); + this.columnCHCOUNT.DefaultValue = ((string)("")); + this.columnKACOMMAND.DefaultValue = ((string)("")); + this.columnCHCOMMAND.DefaultValue = ((string)("")); + this.columnSNCOMMAND.DefaultValue = ((string)("")); + this.columnPORT.DefaultValue = ((int)(34150)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICERow NewDEVICERow() { + return ((DEVICERow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new DEVICERow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(DEVICERow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.DEVICERowChanged != null)) { + this.DEVICERowChanged(this, new DEVICERowChangeEvent(((DEVICERow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.DEVICERowChanging != null)) { + this.DEVICERowChanging(this, new DEVICERowChangeEvent(((DEVICERow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.DEVICERowDeleted != null)) { + this.DEVICERowDeleted(this, new DEVICERowChangeEvent(((DEVICERow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.DEVICERowDeleting != null)) { + this.DEVICERowDeleting(this, new DEVICERowChangeEvent(((DEVICERow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveDEVICERow(DEVICERow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "DEVICEDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class GRPDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnUSE; + + private global::System.Data.DataColumn columnWINDOW; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnMATRIX; + + private global::System.Data.DataColumn columnPOS; + + private global::System.Data.DataColumn columnSPAN; + + private global::System.Data.DataColumn columnFONT; + + private global::System.Data.DataColumn columnALAMH; + + private global::System.Data.DataColumn columnALAML; + + private global::System.Data.DataColumn columnKADEVICE; + + private global::System.Data.DataColumn columnALAMTYPE; + + private global::System.Data.DataColumn columnAUTOH; + + private global::System.Data.DataColumn columnAUTOL; + + private global::System.Data.DataColumn columnNBOFF; + + private global::System.Data.DataColumn columnNBSEQ; + + private global::System.Data.DataColumn columnNBHH; + + private global::System.Data.DataColumn columnNBH; + + private global::System.Data.DataColumn columnNBLL; + + private global::System.Data.DataColumn columnNBL; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPDataTable() { + this.TableName = "GRP"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal GRPDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected GRPDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn USEColumn { + get { + return this.columnUSE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn WINDOWColumn { + get { + return this.columnWINDOW; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MATRIXColumn { + get { + return this.columnMATRIX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn POSColumn { + get { + return this.columnPOS; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn SPANColumn { + get { + return this.columnSPAN; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn FONTColumn { + get { + return this.columnFONT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMHColumn { + get { + return this.columnALAMH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMLColumn { + get { + return this.columnALAML; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn KADEVICEColumn { + get { + return this.columnKADEVICE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMTYPEColumn { + get { + return this.columnALAMTYPE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn AUTOHColumn { + get { + return this.columnAUTOH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn AUTOLColumn { + get { + return this.columnAUTOL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn NBOFFColumn { + get { + return this.columnNBOFF; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn NBSEQColumn { + get { + return this.columnNBSEQ; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn NBHHColumn { + get { + return this.columnNBHH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn NBHColumn { + get { + return this.columnNBH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn NBLLColumn { + get { + return this.columnNBLL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn NBLColumn { + get { + return this.columnNBL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPRow this[int index] { + get { + return ((GRPRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event GRPRowChangeEventHandler GRPRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event GRPRowChangeEventHandler GRPRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event GRPRowChangeEventHandler GRPRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event GRPRowChangeEventHandler GRPRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddGRPRow(GRPRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPRow AddGRPRow( + int USE, + int WINDOW, + string TITLE, + string MATRIX, + string POS, + string SPAN, + string FONT, + float ALAMH, + float ALAML, + string KADEVICE, + string ALAMTYPE, + float AUTOH, + float AUTOL, + float NBOFF, + int NBSEQ, + float NBHH, + float NBH, + float NBLL, + float NBL) { + GRPRow rowGRPRow = ((GRPRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + USE, + WINDOW, + TITLE, + MATRIX, + POS, + SPAN, + FONT, + ALAMH, + ALAML, + KADEVICE, + ALAMTYPE, + AUTOH, + AUTOL, + NBOFF, + NBSEQ, + NBHH, + NBH, + NBLL, + NBL}; + rowGRPRow.ItemArray = columnValuesArray; + this.Rows.Add(rowGRPRow); + return rowGRPRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPRow FindByIDX(int IDX) { + return ((GRPRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + GRPDataTable cln = ((GRPDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new GRPDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnUSE = base.Columns["USE"]; + this.columnWINDOW = base.Columns["WINDOW"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnMATRIX = base.Columns["MATRIX"]; + this.columnPOS = base.Columns["POS"]; + this.columnSPAN = base.Columns["SPAN"]; + this.columnFONT = base.Columns["FONT"]; + this.columnALAMH = base.Columns["ALAMH"]; + this.columnALAML = base.Columns["ALAML"]; + this.columnKADEVICE = base.Columns["KADEVICE"]; + this.columnALAMTYPE = base.Columns["ALAMTYPE"]; + this.columnAUTOH = base.Columns["AUTOH"]; + this.columnAUTOL = base.Columns["AUTOL"]; + this.columnNBOFF = base.Columns["NBOFF"]; + this.columnNBSEQ = base.Columns["NBSEQ"]; + this.columnNBHH = base.Columns["NBHH"]; + this.columnNBH = base.Columns["NBH"]; + this.columnNBLL = base.Columns["NBLL"]; + this.columnNBL = base.Columns["NBL"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnUSE = new global::System.Data.DataColumn("USE", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnUSE); + this.columnWINDOW = new global::System.Data.DataColumn("WINDOW", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnWINDOW); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnMATRIX = new global::System.Data.DataColumn("MATRIX", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMATRIX); + this.columnPOS = new global::System.Data.DataColumn("POS", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPOS); + this.columnSPAN = new global::System.Data.DataColumn("SPAN", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSPAN); + this.columnFONT = new global::System.Data.DataColumn("FONT", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnFONT); + this.columnALAMH = new global::System.Data.DataColumn("ALAMH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAMH); + this.columnALAML = new global::System.Data.DataColumn("ALAML", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAML); + this.columnKADEVICE = new global::System.Data.DataColumn("KADEVICE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnKADEVICE); + this.columnALAMTYPE = new global::System.Data.DataColumn("ALAMTYPE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAMTYPE); + this.columnAUTOH = new global::System.Data.DataColumn("AUTOH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAUTOH); + this.columnAUTOL = new global::System.Data.DataColumn("AUTOL", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAUTOL); + this.columnNBOFF = new global::System.Data.DataColumn("NBOFF", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnNBOFF); + this.columnNBSEQ = new global::System.Data.DataColumn("NBSEQ", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnNBSEQ); + this.columnNBHH = new global::System.Data.DataColumn("NBHH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnNBHH); + this.columnNBH = new global::System.Data.DataColumn("NBH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnNBH); + this.columnNBLL = new global::System.Data.DataColumn("NBLL", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnNBLL); + this.columnNBL = new global::System.Data.DataColumn("NBL", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnNBL); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnUSE.Caption = "ENABLE"; + this.columnUSE.DefaultValue = ((int)(0)); + this.columnWINDOW.DefaultValue = ((int)(0)); + this.columnTITLE.DefaultValue = ((string)("")); + this.columnMATRIX.DefaultValue = ((string)("")); + this.columnPOS.DefaultValue = ((string)("")); + this.columnSPAN.DefaultValue = ((string)("")); + this.columnFONT.DefaultValue = ((string)("")); + this.columnALAMH.DefaultValue = ((float)(0F)); + this.columnALAML.DefaultValue = ((float)(0F)); + this.columnKADEVICE.DefaultValue = ((string)("")); + this.columnALAMTYPE.DefaultValue = ((string)("")); + this.columnAUTOH.DefaultValue = ((float)(0F)); + this.columnAUTOL.DefaultValue = ((float)(0F)); + this.columnNBOFF.DefaultValue = ((float)(0F)); + this.columnNBSEQ.DefaultValue = ((int)(0)); + this.columnNBHH.DefaultValue = ((float)(0F)); + this.columnNBH.DefaultValue = ((float)(0F)); + this.columnNBLL.DefaultValue = ((float)(0F)); + this.columnNBL.DefaultValue = ((float)(0F)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPRow NewGRPRow() { + return ((GRPRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new GRPRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(GRPRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.GRPRowChanged != null)) { + this.GRPRowChanged(this, new GRPRowChangeEvent(((GRPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.GRPRowChanging != null)) { + this.GRPRowChanging(this, new GRPRowChangeEvent(((GRPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.GRPRowDeleted != null)) { + this.GRPRowDeleted(this, new GRPRowChangeEvent(((GRPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.GRPRowDeleting != null)) { + this.GRPRowDeleting(this, new GRPRowChangeEvent(((GRPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveGRPRow(GRPRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "GRPDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class NORMALDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnALAMH; + + private global::System.Data.DataColumn columnALAML; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALDataTable() { + this.TableName = "NORMAL"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal NORMALDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected NORMALDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMHColumn { + get { + return this.columnALAMH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMLColumn { + get { + return this.columnALAML; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALRow this[int index] { + get { + return ((NORMALRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event NORMALRowChangeEventHandler NORMALRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event NORMALRowChangeEventHandler NORMALRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event NORMALRowChangeEventHandler NORMALRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event NORMALRowChangeEventHandler NORMALRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddNORMALRow(NORMALRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALRow AddNORMALRow(float ALAMH, float ALAML) { + NORMALRow rowNORMALRow = ((NORMALRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + ALAMH, + ALAML}; + rowNORMALRow.ItemArray = columnValuesArray; + this.Rows.Add(rowNORMALRow); + return rowNORMALRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALRow FindByIDX(int IDX) { + return ((NORMALRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + NORMALDataTable cln = ((NORMALDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new NORMALDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnALAMH = base.Columns["ALAMH"]; + this.columnALAML = base.Columns["ALAML"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnALAMH = new global::System.Data.DataColumn("ALAMH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAMH); + this.columnALAML = new global::System.Data.DataColumn("ALAML", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAML); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnALAMH.DefaultValue = ((float)(0F)); + this.columnALAML.DefaultValue = ((float)(0F)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALRow NewNORMALRow() { + return ((NORMALRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new NORMALRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(NORMALRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.NORMALRowChanged != null)) { + this.NORMALRowChanged(this, new NORMALRowChangeEvent(((NORMALRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.NORMALRowChanging != null)) { + this.NORMALRowChanging(this, new NORMALRowChangeEvent(((NORMALRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.NORMALRowDeleted != null)) { + this.NORMALRowDeleted(this, new NORMALRowChangeEvent(((NORMALRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.NORMALRowDeleting != null)) { + this.NORMALRowDeleting(this, new NORMALRowChangeEvent(((NORMALRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveNORMALRow(NORMALRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "NORMALDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class VIEWGROUPDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnGNAME; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnVAL; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPDataTable() { + this.TableName = "VIEWGROUP"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal VIEWGROUPDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected VIEWGROUPDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn GNAMEColumn { + get { + return this.columnGNAME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn VALColumn { + get { + return this.columnVAL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRow this[int index] { + get { + return ((VIEWGROUPRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRowChangeEventHandler VIEWGROUPRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRowChangeEventHandler VIEWGROUPRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRowChangeEventHandler VIEWGROUPRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRowChangeEventHandler VIEWGROUPRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddVIEWGROUPRow(VIEWGROUPRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRow AddVIEWGROUPRow(string GNAME, string TITLE, string VAL) { + VIEWGROUPRow rowVIEWGROUPRow = ((VIEWGROUPRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + GNAME, + TITLE, + VAL}; + rowVIEWGROUPRow.ItemArray = columnValuesArray; + this.Rows.Add(rowVIEWGROUPRow); + return rowVIEWGROUPRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRow FindByIDX(int IDX) { + return ((VIEWGROUPRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + VIEWGROUPDataTable cln = ((VIEWGROUPDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new VIEWGROUPDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnGNAME = base.Columns["GNAME"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnVAL = base.Columns["VAL"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnGNAME = new global::System.Data.DataColumn("GNAME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnGNAME); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnVAL = new global::System.Data.DataColumn("VAL", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVAL); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnGNAME.Caption = "SANGHO"; + this.columnGNAME.DefaultValue = ((string)("")); + this.columnTITLE.Caption = "TEL"; + this.columnTITLE.DefaultValue = ((string)("")); + this.columnVAL.DefaultValue = ((string)("")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRow NewVIEWGROUPRow() { + return ((VIEWGROUPRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new VIEWGROUPRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(VIEWGROUPRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.VIEWGROUPRowChanged != null)) { + this.VIEWGROUPRowChanged(this, new VIEWGROUPRowChangeEvent(((VIEWGROUPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.VIEWGROUPRowChanging != null)) { + this.VIEWGROUPRowChanging(this, new VIEWGROUPRowChangeEvent(((VIEWGROUPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.VIEWGROUPRowDeleted != null)) { + this.VIEWGROUPRowDeleted(this, new VIEWGROUPRowChangeEvent(((VIEWGROUPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.VIEWGROUPRowDeleting != null)) { + this.VIEWGROUPRowDeleting(this, new VIEWGROUPRowChangeEvent(((VIEWGROUPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveVIEWGROUPRow(VIEWGROUPRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "VIEWGROUPDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class WINDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnUSE; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnMATRIX; + + private global::System.Data.DataColumn columnALAMH; + + private global::System.Data.DataColumn columnALAML; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINDataTable() { + this.TableName = "WIN"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal WINDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected WINDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn USEColumn { + get { + return this.columnUSE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MATRIXColumn { + get { + return this.columnMATRIX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMHColumn { + get { + return this.columnALAMH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMLColumn { + get { + return this.columnALAML; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINRow this[int index] { + get { + return ((WINRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event WINRowChangeEventHandler WINRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event WINRowChangeEventHandler WINRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event WINRowChangeEventHandler WINRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event WINRowChangeEventHandler WINRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddWINRow(WINRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINRow AddWINRow(int USE, string TITLE, string MATRIX, float ALAMH, float ALAML) { + WINRow rowWINRow = ((WINRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + USE, + TITLE, + MATRIX, + ALAMH, + ALAML}; + rowWINRow.ItemArray = columnValuesArray; + this.Rows.Add(rowWINRow); + return rowWINRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINRow FindByIDX(int IDX) { + return ((WINRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + WINDataTable cln = ((WINDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new WINDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnUSE = base.Columns["USE"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnMATRIX = base.Columns["MATRIX"]; + this.columnALAMH = base.Columns["ALAMH"]; + this.columnALAML = base.Columns["ALAML"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnUSE = new global::System.Data.DataColumn("USE", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnUSE); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnMATRIX = new global::System.Data.DataColumn("MATRIX", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMATRIX); + this.columnALAMH = new global::System.Data.DataColumn("ALAMH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAMH); + this.columnALAML = new global::System.Data.DataColumn("ALAML", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAML); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnUSE.DefaultValue = ((int)(0)); + this.columnTITLE.DefaultValue = ((string)("")); + this.columnMATRIX.Caption = "MACHINE"; + this.columnMATRIX.DefaultValue = ((string)("")); + this.columnALAMH.DefaultValue = ((float)(0F)); + this.columnALAML.DefaultValue = ((float)(0F)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINRow NewWINRow() { + return ((WINRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new WINRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(WINRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.WINRowChanged != null)) { + this.WINRowChanged(this, new WINRowChangeEvent(((WINRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.WINRowChanging != null)) { + this.WINRowChanging(this, new WINRowChangeEvent(((WINRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.WINRowDeleted != null)) { + this.WINRowDeleted(this, new WINRowChangeEvent(((WINRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.WINRowDeleting != null)) { + this.WINRowDeleting(this, new WINRowChangeEvent(((WINRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveWINRow(WINRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "WINDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class ALARMDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnATIME; + + private global::System.Data.DataColumn columnCH; + + private global::System.Data.DataColumn columnRTYPE; + + private global::System.Data.DataColumn columnVOLT; + + private global::System.Data.DataColumn columnATYPE; + + private global::System.Data.DataColumn columnMAXVOLT; + + private global::System.Data.DataColumn columnMINVOLT; + + private global::System.Data.DataColumn columnAM; + + private global::System.Data.DataColumn columnAM2; + + private global::System.Data.DataColumn columnTIME; + + private global::System.Data.DataColumn columnRTYPESTR; + + private global::System.Data.DataColumn columnATYPESTR; + + private global::System.Data.DataColumn columnCHNAME; + + private global::System.Data.DataColumn columnREMARK; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMDataTable() { + this.TableName = "ALARM"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal ALARMDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected ALARMDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ATIMEColumn { + get { + return this.columnATIME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn CHColumn { + get { + return this.columnCH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn RTYPEColumn { + get { + return this.columnRTYPE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn VOLTColumn { + get { + return this.columnVOLT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ATYPEColumn { + get { + return this.columnATYPE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MAXVOLTColumn { + get { + return this.columnMAXVOLT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MINVOLTColumn { + get { + return this.columnMINVOLT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn AMColumn { + get { + return this.columnAM; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn AM2Column { + get { + return this.columnAM2; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TIMEColumn { + get { + return this.columnTIME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn RTYPESTRColumn { + get { + return this.columnRTYPESTR; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ATYPESTRColumn { + get { + return this.columnATYPESTR; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn CHNAMEColumn { + get { + return this.columnCHNAME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn REMARKColumn { + get { + return this.columnREMARK; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMRow this[int index] { + get { + return ((ALARMRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event ALARMRowChangeEventHandler ALARMRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event ALARMRowChangeEventHandler ALARMRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event ALARMRowChangeEventHandler ALARMRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event ALARMRowChangeEventHandler ALARMRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddALARMRow(ALARMRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMRow AddALARMRow(string ATIME, short CH, short RTYPE, float VOLT, short ATYPE, float MAXVOLT, float MINVOLT, string AM, string AM2, string TIME, string RTYPESTR, string ATYPESTR, string CHNAME, string REMARK) { + ALARMRow rowALARMRow = ((ALARMRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + ATIME, + CH, + RTYPE, + VOLT, + ATYPE, + MAXVOLT, + MINVOLT, + AM, + AM2, + TIME, + RTYPESTR, + ATYPESTR, + CHNAME, + REMARK}; + rowALARMRow.ItemArray = columnValuesArray; + this.Rows.Add(rowALARMRow); + return rowALARMRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMRow FindByATIMECHRTYPE(string ATIME, short CH, short RTYPE) { + return ((ALARMRow)(this.Rows.Find(new object[] { + ATIME, + CH, + RTYPE}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + ALARMDataTable cln = ((ALARMDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new ALARMDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnATIME = base.Columns["ATIME"]; + this.columnCH = base.Columns["CH"]; + this.columnRTYPE = base.Columns["RTYPE"]; + this.columnVOLT = base.Columns["VOLT"]; + this.columnATYPE = base.Columns["ATYPE"]; + this.columnMAXVOLT = base.Columns["MAXVOLT"]; + this.columnMINVOLT = base.Columns["MINVOLT"]; + this.columnAM = base.Columns["AM"]; + this.columnAM2 = base.Columns["AM2"]; + this.columnTIME = base.Columns["TIME"]; + this.columnRTYPESTR = base.Columns["RTYPESTR"]; + this.columnATYPESTR = base.Columns["ATYPESTR"]; + this.columnCHNAME = base.Columns["CHNAME"]; + this.columnREMARK = base.Columns["REMARK"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnATIME = new global::System.Data.DataColumn("ATIME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnATIME); + this.columnCH = new global::System.Data.DataColumn("CH", typeof(short), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCH); + this.columnRTYPE = new global::System.Data.DataColumn("RTYPE", typeof(short), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRTYPE); + this.columnVOLT = new global::System.Data.DataColumn("VOLT", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVOLT); + this.columnATYPE = new global::System.Data.DataColumn("ATYPE", typeof(short), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnATYPE); + this.columnMAXVOLT = new global::System.Data.DataColumn("MAXVOLT", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMAXVOLT); + this.columnMINVOLT = new global::System.Data.DataColumn("MINVOLT", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMINVOLT); + this.columnAM = new global::System.Data.DataColumn("AM", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAM); + this.columnAM2 = new global::System.Data.DataColumn("AM2", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAM2); + this.columnTIME = new global::System.Data.DataColumn("TIME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTIME); + this.columnRTYPESTR = new global::System.Data.DataColumn("RTYPESTR", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRTYPESTR); + this.columnATYPESTR = new global::System.Data.DataColumn("ATYPESTR", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnATYPESTR); + this.columnCHNAME = new global::System.Data.DataColumn("CHNAME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCHNAME); + this.columnREMARK = new global::System.Data.DataColumn("REMARK", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnREMARK); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnATIME, + this.columnCH, + this.columnRTYPE}, true)); + this.columnATIME.AllowDBNull = false; + this.columnATIME.DefaultValue = ((string)("")); + this.columnCH.AllowDBNull = false; + this.columnCH.DefaultValue = ((short)(0)); + this.columnRTYPE.AllowDBNull = false; + this.columnRTYPE.DefaultValue = ((short)(0)); + this.columnVOLT.DefaultValue = ((float)(0F)); + this.columnATYPE.DefaultValue = ((short)(0)); + this.columnMAXVOLT.DefaultValue = ((float)(0F)); + this.columnMINVOLT.DefaultValue = ((float)(0F)); + this.columnAM.DefaultValue = ((string)("")); + this.columnAM2.DefaultValue = ((string)("")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMRow NewALARMRow() { + return ((ALARMRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new ALARMRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(ALARMRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.ALARMRowChanged != null)) { + this.ALARMRowChanged(this, new ALARMRowChangeEvent(((ALARMRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.ALARMRowChanging != null)) { + this.ALARMRowChanging(this, new ALARMRowChangeEvent(((ALARMRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.ALARMRowDeleted != null)) { + this.ALARMRowDeleted(this, new ALARMRowChangeEvent(((ALARMRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.ALARMRowDeleting != null)) { + this.ALARMRowDeleting(this, new ALARMRowChangeEvent(((ALARMRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveALARMRow(ALARMRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "ALARMDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class VIEWGROUPRDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnGNAME; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnVAL; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRDataTable() { + this.TableName = "VIEWGROUPR"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal VIEWGROUPRDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected VIEWGROUPRDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn GNAMEColumn { + get { + return this.columnGNAME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn VALColumn { + get { + return this.columnVAL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRRow this[int index] { + get { + return ((VIEWGROUPRRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRRowChangeEventHandler VIEWGROUPRRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRRowChangeEventHandler VIEWGROUPRRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRRowChangeEventHandler VIEWGROUPRRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRRowChangeEventHandler VIEWGROUPRRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddVIEWGROUPRRow(VIEWGROUPRRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRRow AddVIEWGROUPRRow(string GNAME, string TITLE, string VAL) { + VIEWGROUPRRow rowVIEWGROUPRRow = ((VIEWGROUPRRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + GNAME, + TITLE, + VAL}; + rowVIEWGROUPRRow.ItemArray = columnValuesArray; + this.Rows.Add(rowVIEWGROUPRRow); + return rowVIEWGROUPRRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRRow FindByIDX(int IDX) { + return ((VIEWGROUPRRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + VIEWGROUPRDataTable cln = ((VIEWGROUPRDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new VIEWGROUPRDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnGNAME = base.Columns["GNAME"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnVAL = base.Columns["VAL"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnGNAME = new global::System.Data.DataColumn("GNAME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnGNAME); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnVAL = new global::System.Data.DataColumn("VAL", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVAL); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnGNAME.Caption = "SANGHO"; + this.columnGNAME.DefaultValue = ((string)("")); + this.columnTITLE.Caption = "TEL"; + this.columnTITLE.DefaultValue = ((string)("")); + this.columnVAL.DefaultValue = ((string)("")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRRow NewVIEWGROUPRRow() { + return ((VIEWGROUPRRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new VIEWGROUPRRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(VIEWGROUPRRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.VIEWGROUPRRowChanged != null)) { + this.VIEWGROUPRRowChanged(this, new VIEWGROUPRRowChangeEvent(((VIEWGROUPRRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.VIEWGROUPRRowChanging != null)) { + this.VIEWGROUPRRowChanging(this, new VIEWGROUPRRowChangeEvent(((VIEWGROUPRRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.VIEWGROUPRRowDeleted != null)) { + this.VIEWGROUPRRowDeleted(this, new VIEWGROUPRRowChangeEvent(((VIEWGROUPRRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.VIEWGROUPRRowDeleting != null)) { + this.VIEWGROUPRRowDeleting(this, new VIEWGROUPRRowChangeEvent(((VIEWGROUPRRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveVIEWGROUPRRow(VIEWGROUPRRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "VIEWGROUPRDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class TRENDVIEWCHLISTDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnSHOW; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnCOLOR; + + private global::System.Data.DataColumn columnch; + + private global::System.Data.DataColumn columndev; + + private global::System.Data.DataColumn columnunit; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTDataTable() { + this.TableName = "TRENDVIEWCHLIST"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal TRENDVIEWCHLISTDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected TRENDVIEWCHLISTDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn SHOWColumn { + get { + return this.columnSHOW; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn COLORColumn { + get { + return this.columnCOLOR; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn chColumn { + get { + return this.columnch; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn devColumn { + get { + return this.columndev; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn unitColumn { + get { + return this.columnunit; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTRow this[int index] { + get { + return ((TRENDVIEWCHLISTRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event TRENDVIEWCHLISTRowChangeEventHandler TRENDVIEWCHLISTRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event TRENDVIEWCHLISTRowChangeEventHandler TRENDVIEWCHLISTRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event TRENDVIEWCHLISTRowChangeEventHandler TRENDVIEWCHLISTRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event TRENDVIEWCHLISTRowChangeEventHandler TRENDVIEWCHLISTRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddTRENDVIEWCHLISTRow(TRENDVIEWCHLISTRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTRow AddTRENDVIEWCHLISTRow(int IDX, bool SHOW, string TITLE, int COLOR, int ch, int dev, int unit) { + TRENDVIEWCHLISTRow rowTRENDVIEWCHLISTRow = ((TRENDVIEWCHLISTRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + IDX, + SHOW, + TITLE, + COLOR, + ch, + dev, + unit}; + rowTRENDVIEWCHLISTRow.ItemArray = columnValuesArray; + this.Rows.Add(rowTRENDVIEWCHLISTRow); + return rowTRENDVIEWCHLISTRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTRow FindByIDX(int IDX) { + return ((TRENDVIEWCHLISTRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + TRENDVIEWCHLISTDataTable cln = ((TRENDVIEWCHLISTDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new TRENDVIEWCHLISTDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnSHOW = base.Columns["SHOW"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnCOLOR = base.Columns["COLOR"]; + this.columnch = base.Columns["ch"]; + this.columndev = base.Columns["dev"]; + this.columnunit = base.Columns["unit"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnSHOW = new global::System.Data.DataColumn("SHOW", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSHOW); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnCOLOR = new global::System.Data.DataColumn("COLOR", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCOLOR); + this.columnch = new global::System.Data.DataColumn("ch", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnch); + this.columndev = new global::System.Data.DataColumn("dev", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columndev); + this.columnunit = new global::System.Data.DataColumn("unit", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnunit); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTRow NewTRENDVIEWCHLISTRow() { + return ((TRENDVIEWCHLISTRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new TRENDVIEWCHLISTRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(TRENDVIEWCHLISTRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.TRENDVIEWCHLISTRowChanged != null)) { + this.TRENDVIEWCHLISTRowChanged(this, new TRENDVIEWCHLISTRowChangeEvent(((TRENDVIEWCHLISTRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.TRENDVIEWCHLISTRowChanging != null)) { + this.TRENDVIEWCHLISTRowChanging(this, new TRENDVIEWCHLISTRowChangeEvent(((TRENDVIEWCHLISTRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.TRENDVIEWCHLISTRowDeleted != null)) { + this.TRENDVIEWCHLISTRowDeleted(this, new TRENDVIEWCHLISTRowChangeEvent(((TRENDVIEWCHLISTRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.TRENDVIEWCHLISTRowDeleting != null)) { + this.TRENDVIEWCHLISTRowDeleting(this, new TRENDVIEWCHLISTRowChangeEvent(((TRENDVIEWCHLISTRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveTRENDVIEWCHLISTRow(TRENDVIEWCHLISTRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "TRENDVIEWCHLISTDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class CHANNELRow : global::System.Data.DataRow { + + private CHANNELDataTable tableCHANNEL; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal CHANNELRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableCHANNEL = ((CHANNELDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableCHANNEL.IDXColumn])); + } + set { + this[this.tableCHANNEL.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int ENABLE { + get { + if (this.IsENABLENull()) { + return 0; + } + else { + return ((int)(this[this.tableCHANNEL.ENABLEColumn])); + } + } + set { + this[this.tableCHANNEL.ENABLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int USE { + get { + if (this.IsUSENull()) { + return 0; + } + else { + return ((int)(this[this.tableCHANNEL.USEColumn])); + } + } + set { + this[this.tableCHANNEL.USEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return ""; + } + else { + return ((string)(this[this.tableCHANNEL.TITLEColumn])); + } + } + set { + this[this.tableCHANNEL.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int GIDX { + get { + if (this.IsGIDXNull()) { + return 0; + } + else { + return ((int)(this[this.tableCHANNEL.GIDXColumn])); + } + } + set { + this[this.tableCHANNEL.GIDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string MACHINE { + get { + if (this.IsMACHINENull()) { + return ""; + } + else { + return ((string)(this[this.tableCHANNEL.MACHINEColumn])); + } + } + set { + this[this.tableCHANNEL.MACHINEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int ALAMTYPE { + get { + if (this.IsALAMTYPENull()) { + return 0; + } + else { + return ((int)(this[this.tableCHANNEL.ALAMTYPEColumn])); + } + } + set { + this[this.tableCHANNEL.ALAMTYPEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAMH { + get { + if (this.IsALAMHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableCHANNEL.ALAMHColumn])); + } + } + set { + this[this.tableCHANNEL.ALAMHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAML { + get { + if (this.IsALAMLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableCHANNEL.ALAMLColumn])); + } + } + set { + this[this.tableCHANNEL.ALAMLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int COLOR { + get { + if (this.IsCOLORNull()) { + return 0; + } + else { + return ((int)(this[this.tableCHANNEL.COLORColumn])); + } + } + set { + this[this.tableCHANNEL.COLORColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float AUTOH { + get { + if (this.IsAUTOHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableCHANNEL.AUTOHColumn])); + } + } + set { + this[this.tableCHANNEL.AUTOHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float AUTOL { + get { + if (this.IsAUTOLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableCHANNEL.AUTOLColumn])); + } + } + set { + this[this.tableCHANNEL.AUTOLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string UNIT { + get { + if (this.IsUNITNull()) { + return ""; + } + else { + return ((string)(this[this.tableCHANNEL.UNITColumn])); + } + } + set { + this[this.tableCHANNEL.UNITColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int DECPOS { + get { + if (this.IsDECPOSNull()) { + return 0; + } + else { + return ((int)(this[this.tableCHANNEL.DECPOSColumn])); + } + } + set { + this[this.tableCHANNEL.DECPOSColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string GRPNAME { + get { + if (this.IsGRPNAMENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableCHANNEL.GRPNAMEColumn])); + } + } + set { + this[this.tableCHANNEL.GRPNAMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX_M { + get { + if (this.IsIDX_MNull()) { + return -1; + } + else { + return ((int)(this[this.tableCHANNEL.IDX_MColumn])); + } + } + set { + this[this.tableCHANNEL.IDX_MColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX_U { + get { + if (this.IsIDX_UNull()) { + return -1; + } + else { + return ((int)(this[this.tableCHANNEL.IDX_UColumn])); + } + } + set { + this[this.tableCHANNEL.IDX_UColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX_C { + get { + if (this.IsIDX_CNull()) { + return -1; + } + else { + return ((int)(this[this.tableCHANNEL.IDX_CColumn])); + } + } + set { + this[this.tableCHANNEL.IDX_CColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float VOFFSET { + get { + if (this.IsVOFFSETNull()) { + return 0F; + } + else { + return ((float)(this[this.tableCHANNEL.VOFFSETColumn])); + } + } + set { + this[this.tableCHANNEL.VOFFSETColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsENABLENull() { + return this.IsNull(this.tableCHANNEL.ENABLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetENABLENull() { + this[this.tableCHANNEL.ENABLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsUSENull() { + return this.IsNull(this.tableCHANNEL.USEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetUSENull() { + this[this.tableCHANNEL.USEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableCHANNEL.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableCHANNEL.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsGIDXNull() { + return this.IsNull(this.tableCHANNEL.GIDXColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetGIDXNull() { + this[this.tableCHANNEL.GIDXColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMACHINENull() { + return this.IsNull(this.tableCHANNEL.MACHINEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMACHINENull() { + this[this.tableCHANNEL.MACHINEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMTYPENull() { + return this.IsNull(this.tableCHANNEL.ALAMTYPEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMTYPENull() { + this[this.tableCHANNEL.ALAMTYPEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMHNull() { + return this.IsNull(this.tableCHANNEL.ALAMHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMHNull() { + this[this.tableCHANNEL.ALAMHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMLNull() { + return this.IsNull(this.tableCHANNEL.ALAMLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMLNull() { + this[this.tableCHANNEL.ALAMLColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsCOLORNull() { + return this.IsNull(this.tableCHANNEL.COLORColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetCOLORNull() { + this[this.tableCHANNEL.COLORColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsAUTOHNull() { + return this.IsNull(this.tableCHANNEL.AUTOHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetAUTOHNull() { + this[this.tableCHANNEL.AUTOHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsAUTOLNull() { + return this.IsNull(this.tableCHANNEL.AUTOLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetAUTOLNull() { + this[this.tableCHANNEL.AUTOLColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsUNITNull() { + return this.IsNull(this.tableCHANNEL.UNITColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetUNITNull() { + this[this.tableCHANNEL.UNITColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsDECPOSNull() { + return this.IsNull(this.tableCHANNEL.DECPOSColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetDECPOSNull() { + this[this.tableCHANNEL.DECPOSColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsGRPNAMENull() { + return this.IsNull(this.tableCHANNEL.GRPNAMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetGRPNAMENull() { + this[this.tableCHANNEL.GRPNAMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsIDX_MNull() { + return this.IsNull(this.tableCHANNEL.IDX_MColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetIDX_MNull() { + this[this.tableCHANNEL.IDX_MColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsIDX_UNull() { + return this.IsNull(this.tableCHANNEL.IDX_UColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetIDX_UNull() { + this[this.tableCHANNEL.IDX_UColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsIDX_CNull() { + return this.IsNull(this.tableCHANNEL.IDX_CColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetIDX_CNull() { + this[this.tableCHANNEL.IDX_CColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsVOFFSETNull() { + return this.IsNull(this.tableCHANNEL.VOFFSETColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetVOFFSETNull() { + this[this.tableCHANNEL.VOFFSETColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class DEVICERow : global::System.Data.DataRow { + + private DEVICEDataTable tableDEVICE; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal DEVICERow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableDEVICE = ((DEVICEDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableDEVICE.IDXColumn])); + } + set { + this[this.tableDEVICE.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int USE { + get { + if (this.IsUSENull()) { + return 0; + } + else { + return ((int)(this[this.tableDEVICE.USEColumn])); + } + } + set { + this[this.tableDEVICE.USEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return ""; + } + else { + return ((string)(this[this.tableDEVICE.TITLEColumn])); + } + } + set { + this[this.tableDEVICE.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string IP { + get { + if (this.IsIPNull()) { + return ""; + } + else { + return ((string)(this[this.tableDEVICE.IPColumn])); + } + } + set { + this[this.tableDEVICE.IPColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string CHCOUNT { + get { + if (this.IsCHCOUNTNull()) { + return ""; + } + else { + return ((string)(this[this.tableDEVICE.CHCOUNTColumn])); + } + } + set { + this[this.tableDEVICE.CHCOUNTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string KACOMMAND { + get { + if (this.IsKACOMMANDNull()) { + return ""; + } + else { + return ((string)(this[this.tableDEVICE.KACOMMANDColumn])); + } + } + set { + this[this.tableDEVICE.KACOMMANDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string CHCOMMAND { + get { + if (this.IsCHCOMMANDNull()) { + return ""; + } + else { + return ((string)(this[this.tableDEVICE.CHCOMMANDColumn])); + } + } + set { + this[this.tableDEVICE.CHCOMMANDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string SNCOMMAND { + get { + if (this.IsSNCOMMANDNull()) { + return ""; + } + else { + return ((string)(this[this.tableDEVICE.SNCOMMANDColumn])); + } + } + set { + this[this.tableDEVICE.SNCOMMANDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int PORT { + get { + if (this.IsPORTNull()) { + return 34150; + } + else { + return ((int)(this[this.tableDEVICE.PORTColumn])); + } + } + set { + this[this.tableDEVICE.PORTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsUSENull() { + return this.IsNull(this.tableDEVICE.USEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetUSENull() { + this[this.tableDEVICE.USEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableDEVICE.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableDEVICE.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsIPNull() { + return this.IsNull(this.tableDEVICE.IPColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetIPNull() { + this[this.tableDEVICE.IPColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsCHCOUNTNull() { + return this.IsNull(this.tableDEVICE.CHCOUNTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetCHCOUNTNull() { + this[this.tableDEVICE.CHCOUNTColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsKACOMMANDNull() { + return this.IsNull(this.tableDEVICE.KACOMMANDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetKACOMMANDNull() { + this[this.tableDEVICE.KACOMMANDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsCHCOMMANDNull() { + return this.IsNull(this.tableDEVICE.CHCOMMANDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetCHCOMMANDNull() { + this[this.tableDEVICE.CHCOMMANDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsSNCOMMANDNull() { + return this.IsNull(this.tableDEVICE.SNCOMMANDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetSNCOMMANDNull() { + this[this.tableDEVICE.SNCOMMANDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsPORTNull() { + return this.IsNull(this.tableDEVICE.PORTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetPORTNull() { + this[this.tableDEVICE.PORTColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class GRPRow : global::System.Data.DataRow { + + private GRPDataTable tableGRP; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal GRPRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableGRP = ((GRPDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableGRP.IDXColumn])); + } + set { + this[this.tableGRP.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int USE { + get { + if (this.IsUSENull()) { + return 0; + } + else { + return ((int)(this[this.tableGRP.USEColumn])); + } + } + set { + this[this.tableGRP.USEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int WINDOW { + get { + if (this.IsWINDOWNull()) { + return 0; + } + else { + return ((int)(this[this.tableGRP.WINDOWColumn])); + } + } + set { + this[this.tableGRP.WINDOWColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.TITLEColumn])); + } + } + set { + this[this.tableGRP.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string MATRIX { + get { + if (this.IsMATRIXNull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.MATRIXColumn])); + } + } + set { + this[this.tableGRP.MATRIXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string POS { + get { + if (this.IsPOSNull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.POSColumn])); + } + } + set { + this[this.tableGRP.POSColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string SPAN { + get { + if (this.IsSPANNull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.SPANColumn])); + } + } + set { + this[this.tableGRP.SPANColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string FONT { + get { + if (this.IsFONTNull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.FONTColumn])); + } + } + set { + this[this.tableGRP.FONTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAMH { + get { + if (this.IsALAMHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.ALAMHColumn])); + } + } + set { + this[this.tableGRP.ALAMHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAML { + get { + if (this.IsALAMLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.ALAMLColumn])); + } + } + set { + this[this.tableGRP.ALAMLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string KADEVICE { + get { + if (this.IsKADEVICENull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.KADEVICEColumn])); + } + } + set { + this[this.tableGRP.KADEVICEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string ALAMTYPE { + get { + if (this.IsALAMTYPENull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.ALAMTYPEColumn])); + } + } + set { + this[this.tableGRP.ALAMTYPEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float AUTOH { + get { + if (this.IsAUTOHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.AUTOHColumn])); + } + } + set { + this[this.tableGRP.AUTOHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float AUTOL { + get { + if (this.IsAUTOLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.AUTOLColumn])); + } + } + set { + this[this.tableGRP.AUTOLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float NBOFF { + get { + if (this.IsNBOFFNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.NBOFFColumn])); + } + } + set { + this[this.tableGRP.NBOFFColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int NBSEQ { + get { + if (this.IsNBSEQNull()) { + return 0; + } + else { + return ((int)(this[this.tableGRP.NBSEQColumn])); + } + } + set { + this[this.tableGRP.NBSEQColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float NBHH { + get { + if (this.IsNBHHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.NBHHColumn])); + } + } + set { + this[this.tableGRP.NBHHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float NBH { + get { + if (this.IsNBHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.NBHColumn])); + } + } + set { + this[this.tableGRP.NBHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float NBLL { + get { + if (this.IsNBLLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.NBLLColumn])); + } + } + set { + this[this.tableGRP.NBLLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float NBL { + get { + if (this.IsNBLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.NBLColumn])); + } + } + set { + this[this.tableGRP.NBLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsUSENull() { + return this.IsNull(this.tableGRP.USEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetUSENull() { + this[this.tableGRP.USEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsWINDOWNull() { + return this.IsNull(this.tableGRP.WINDOWColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetWINDOWNull() { + this[this.tableGRP.WINDOWColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableGRP.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableGRP.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMATRIXNull() { + return this.IsNull(this.tableGRP.MATRIXColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMATRIXNull() { + this[this.tableGRP.MATRIXColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsPOSNull() { + return this.IsNull(this.tableGRP.POSColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetPOSNull() { + this[this.tableGRP.POSColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsSPANNull() { + return this.IsNull(this.tableGRP.SPANColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetSPANNull() { + this[this.tableGRP.SPANColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsFONTNull() { + return this.IsNull(this.tableGRP.FONTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetFONTNull() { + this[this.tableGRP.FONTColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMHNull() { + return this.IsNull(this.tableGRP.ALAMHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMHNull() { + this[this.tableGRP.ALAMHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMLNull() { + return this.IsNull(this.tableGRP.ALAMLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMLNull() { + this[this.tableGRP.ALAMLColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsKADEVICENull() { + return this.IsNull(this.tableGRP.KADEVICEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetKADEVICENull() { + this[this.tableGRP.KADEVICEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMTYPENull() { + return this.IsNull(this.tableGRP.ALAMTYPEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMTYPENull() { + this[this.tableGRP.ALAMTYPEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsAUTOHNull() { + return this.IsNull(this.tableGRP.AUTOHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetAUTOHNull() { + this[this.tableGRP.AUTOHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsAUTOLNull() { + return this.IsNull(this.tableGRP.AUTOLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetAUTOLNull() { + this[this.tableGRP.AUTOLColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsNBOFFNull() { + return this.IsNull(this.tableGRP.NBOFFColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetNBOFFNull() { + this[this.tableGRP.NBOFFColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsNBSEQNull() { + return this.IsNull(this.tableGRP.NBSEQColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetNBSEQNull() { + this[this.tableGRP.NBSEQColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsNBHHNull() { + return this.IsNull(this.tableGRP.NBHHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetNBHHNull() { + this[this.tableGRP.NBHHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsNBHNull() { + return this.IsNull(this.tableGRP.NBHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetNBHNull() { + this[this.tableGRP.NBHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsNBLLNull() { + return this.IsNull(this.tableGRP.NBLLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetNBLLNull() { + this[this.tableGRP.NBLLColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsNBLNull() { + return this.IsNull(this.tableGRP.NBLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetNBLNull() { + this[this.tableGRP.NBLColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class NORMALRow : global::System.Data.DataRow { + + private NORMALDataTable tableNORMAL; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal NORMALRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableNORMAL = ((NORMALDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableNORMAL.IDXColumn])); + } + set { + this[this.tableNORMAL.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAMH { + get { + if (this.IsALAMHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableNORMAL.ALAMHColumn])); + } + } + set { + this[this.tableNORMAL.ALAMHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAML { + get { + if (this.IsALAMLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableNORMAL.ALAMLColumn])); + } + } + set { + this[this.tableNORMAL.ALAMLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMHNull() { + return this.IsNull(this.tableNORMAL.ALAMHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMHNull() { + this[this.tableNORMAL.ALAMHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMLNull() { + return this.IsNull(this.tableNORMAL.ALAMLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMLNull() { + this[this.tableNORMAL.ALAMLColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class VIEWGROUPRow : global::System.Data.DataRow { + + private VIEWGROUPDataTable tableVIEWGROUP; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal VIEWGROUPRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableVIEWGROUP = ((VIEWGROUPDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableVIEWGROUP.IDXColumn])); + } + set { + this[this.tableVIEWGROUP.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string GNAME { + get { + if (this.IsGNAMENull()) { + return ""; + } + else { + return ((string)(this[this.tableVIEWGROUP.GNAMEColumn])); + } + } + set { + this[this.tableVIEWGROUP.GNAMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return ""; + } + else { + return ((string)(this[this.tableVIEWGROUP.TITLEColumn])); + } + } + set { + this[this.tableVIEWGROUP.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string VAL { + get { + if (this.IsVALNull()) { + return ""; + } + else { + return ((string)(this[this.tableVIEWGROUP.VALColumn])); + } + } + set { + this[this.tableVIEWGROUP.VALColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsGNAMENull() { + return this.IsNull(this.tableVIEWGROUP.GNAMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetGNAMENull() { + this[this.tableVIEWGROUP.GNAMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableVIEWGROUP.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableVIEWGROUP.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsVALNull() { + return this.IsNull(this.tableVIEWGROUP.VALColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetVALNull() { + this[this.tableVIEWGROUP.VALColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class WINRow : global::System.Data.DataRow { + + private WINDataTable tableWIN; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal WINRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableWIN = ((WINDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableWIN.IDXColumn])); + } + set { + this[this.tableWIN.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int USE { + get { + if (this.IsUSENull()) { + return 0; + } + else { + return ((int)(this[this.tableWIN.USEColumn])); + } + } + set { + this[this.tableWIN.USEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return ""; + } + else { + return ((string)(this[this.tableWIN.TITLEColumn])); + } + } + set { + this[this.tableWIN.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string MATRIX { + get { + if (this.IsMATRIXNull()) { + return ""; + } + else { + return ((string)(this[this.tableWIN.MATRIXColumn])); + } + } + set { + this[this.tableWIN.MATRIXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAMH { + get { + if (this.IsALAMHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableWIN.ALAMHColumn])); + } + } + set { + this[this.tableWIN.ALAMHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAML { + get { + if (this.IsALAMLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableWIN.ALAMLColumn])); + } + } + set { + this[this.tableWIN.ALAMLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsUSENull() { + return this.IsNull(this.tableWIN.USEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetUSENull() { + this[this.tableWIN.USEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableWIN.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableWIN.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMATRIXNull() { + return this.IsNull(this.tableWIN.MATRIXColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMATRIXNull() { + this[this.tableWIN.MATRIXColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMHNull() { + return this.IsNull(this.tableWIN.ALAMHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMHNull() { + this[this.tableWIN.ALAMHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMLNull() { + return this.IsNull(this.tableWIN.ALAMLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMLNull() { + this[this.tableWIN.ALAMLColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class ALARMRow : global::System.Data.DataRow { + + private ALARMDataTable tableALARM; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal ALARMRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableALARM = ((ALARMDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string ATIME { + get { + return ((string)(this[this.tableALARM.ATIMEColumn])); + } + set { + this[this.tableALARM.ATIMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public short CH { + get { + return ((short)(this[this.tableALARM.CHColumn])); + } + set { + this[this.tableALARM.CHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public short RTYPE { + get { + return ((short)(this[this.tableALARM.RTYPEColumn])); + } + set { + this[this.tableALARM.RTYPEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float VOLT { + get { + if (this.IsVOLTNull()) { + return 0F; + } + else { + return ((float)(this[this.tableALARM.VOLTColumn])); + } + } + set { + this[this.tableALARM.VOLTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public short ATYPE { + get { + if (this.IsATYPENull()) { + return 0; + } + else { + return ((short)(this[this.tableALARM.ATYPEColumn])); + } + } + set { + this[this.tableALARM.ATYPEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float MAXVOLT { + get { + if (this.IsMAXVOLTNull()) { + return 0F; + } + else { + return ((float)(this[this.tableALARM.MAXVOLTColumn])); + } + } + set { + this[this.tableALARM.MAXVOLTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float MINVOLT { + get { + if (this.IsMINVOLTNull()) { + return 0F; + } + else { + return ((float)(this[this.tableALARM.MINVOLTColumn])); + } + } + set { + this[this.tableALARM.MINVOLTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string AM { + get { + if (this.IsAMNull()) { + return ""; + } + else { + return ((string)(this[this.tableALARM.AMColumn])); + } + } + set { + this[this.tableALARM.AMColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string AM2 { + get { + if (this.IsAM2Null()) { + return ""; + } + else { + return ((string)(this[this.tableALARM.AM2Column])); + } + } + set { + this[this.tableALARM.AM2Column] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TIME { + get { + if (this.IsTIMENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableALARM.TIMEColumn])); + } + } + set { + this[this.tableALARM.TIMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string RTYPESTR { + get { + if (this.IsRTYPESTRNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableALARM.RTYPESTRColumn])); + } + } + set { + this[this.tableALARM.RTYPESTRColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string ATYPESTR { + get { + if (this.IsATYPESTRNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableALARM.ATYPESTRColumn])); + } + } + set { + this[this.tableALARM.ATYPESTRColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string CHNAME { + get { + if (this.IsCHNAMENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableALARM.CHNAMEColumn])); + } + } + set { + this[this.tableALARM.CHNAMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string REMARK { + get { + if (this.IsREMARKNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableALARM.REMARKColumn])); + } + } + set { + this[this.tableALARM.REMARKColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsVOLTNull() { + return this.IsNull(this.tableALARM.VOLTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetVOLTNull() { + this[this.tableALARM.VOLTColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsATYPENull() { + return this.IsNull(this.tableALARM.ATYPEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetATYPENull() { + this[this.tableALARM.ATYPEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMAXVOLTNull() { + return this.IsNull(this.tableALARM.MAXVOLTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMAXVOLTNull() { + this[this.tableALARM.MAXVOLTColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMINVOLTNull() { + return this.IsNull(this.tableALARM.MINVOLTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMINVOLTNull() { + this[this.tableALARM.MINVOLTColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsAMNull() { + return this.IsNull(this.tableALARM.AMColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetAMNull() { + this[this.tableALARM.AMColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsAM2Null() { + return this.IsNull(this.tableALARM.AM2Column); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetAM2Null() { + this[this.tableALARM.AM2Column] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTIMENull() { + return this.IsNull(this.tableALARM.TIMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTIMENull() { + this[this.tableALARM.TIMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsRTYPESTRNull() { + return this.IsNull(this.tableALARM.RTYPESTRColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetRTYPESTRNull() { + this[this.tableALARM.RTYPESTRColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsATYPESTRNull() { + return this.IsNull(this.tableALARM.ATYPESTRColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetATYPESTRNull() { + this[this.tableALARM.ATYPESTRColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsCHNAMENull() { + return this.IsNull(this.tableALARM.CHNAMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetCHNAMENull() { + this[this.tableALARM.CHNAMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsREMARKNull() { + return this.IsNull(this.tableALARM.REMARKColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetREMARKNull() { + this[this.tableALARM.REMARKColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class VIEWGROUPRRow : global::System.Data.DataRow { + + private VIEWGROUPRDataTable tableVIEWGROUPR; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal VIEWGROUPRRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableVIEWGROUPR = ((VIEWGROUPRDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableVIEWGROUPR.IDXColumn])); + } + set { + this[this.tableVIEWGROUPR.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string GNAME { + get { + if (this.IsGNAMENull()) { + return ""; + } + else { + return ((string)(this[this.tableVIEWGROUPR.GNAMEColumn])); + } + } + set { + this[this.tableVIEWGROUPR.GNAMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return ""; + } + else { + return ((string)(this[this.tableVIEWGROUPR.TITLEColumn])); + } + } + set { + this[this.tableVIEWGROUPR.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string VAL { + get { + if (this.IsVALNull()) { + return ""; + } + else { + return ((string)(this[this.tableVIEWGROUPR.VALColumn])); + } + } + set { + this[this.tableVIEWGROUPR.VALColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsGNAMENull() { + return this.IsNull(this.tableVIEWGROUPR.GNAMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetGNAMENull() { + this[this.tableVIEWGROUPR.GNAMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableVIEWGROUPR.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableVIEWGROUPR.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsVALNull() { + return this.IsNull(this.tableVIEWGROUPR.VALColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetVALNull() { + this[this.tableVIEWGROUPR.VALColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class TRENDVIEWCHLISTRow : global::System.Data.DataRow { + + private TRENDVIEWCHLISTDataTable tableTRENDVIEWCHLIST; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal TRENDVIEWCHLISTRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableTRENDVIEWCHLIST = ((TRENDVIEWCHLISTDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableTRENDVIEWCHLIST.IDXColumn])); + } + set { + this[this.tableTRENDVIEWCHLIST.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool SHOW { + get { + if (this.IsSHOWNull()) { + return false; + } + else { + return ((bool)(this[this.tableTRENDVIEWCHLIST.SHOWColumn])); + } + } + set { + this[this.tableTRENDVIEWCHLIST.SHOWColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableTRENDVIEWCHLIST.TITLEColumn])); + } + } + set { + this[this.tableTRENDVIEWCHLIST.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int COLOR { + get { + if (this.IsCOLORNull()) { + return 0; + } + else { + return ((int)(this[this.tableTRENDVIEWCHLIST.COLORColumn])); + } + } + set { + this[this.tableTRENDVIEWCHLIST.COLORColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int ch { + get { + if (this.IschNull()) { + return -1; + } + else { + return ((int)(this[this.tableTRENDVIEWCHLIST.chColumn])); + } + } + set { + this[this.tableTRENDVIEWCHLIST.chColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int dev { + get { + if (this.IsdevNull()) { + return -1; + } + else { + return ((int)(this[this.tableTRENDVIEWCHLIST.devColumn])); + } + } + set { + this[this.tableTRENDVIEWCHLIST.devColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int unit { + get { + if (this.IsunitNull()) { + return -1; + } + else { + return ((int)(this[this.tableTRENDVIEWCHLIST.unitColumn])); + } + } + set { + this[this.tableTRENDVIEWCHLIST.unitColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsSHOWNull() { + return this.IsNull(this.tableTRENDVIEWCHLIST.SHOWColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetSHOWNull() { + this[this.tableTRENDVIEWCHLIST.SHOWColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableTRENDVIEWCHLIST.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableTRENDVIEWCHLIST.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsCOLORNull() { + return this.IsNull(this.tableTRENDVIEWCHLIST.COLORColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetCOLORNull() { + this[this.tableTRENDVIEWCHLIST.COLORColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IschNull() { + return this.IsNull(this.tableTRENDVIEWCHLIST.chColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetchNull() { + this[this.tableTRENDVIEWCHLIST.chColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsdevNull() { + return this.IsNull(this.tableTRENDVIEWCHLIST.devColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetdevNull() { + this[this.tableTRENDVIEWCHLIST.devColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsunitNull() { + return this.IsNull(this.tableTRENDVIEWCHLIST.unitColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetunitNull() { + this[this.tableTRENDVIEWCHLIST.unitColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class CHANNELRowChangeEvent : global::System.EventArgs { + + private CHANNELRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELRowChangeEvent(CHANNELRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class DEVICERowChangeEvent : global::System.EventArgs { + + private DEVICERow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICERowChangeEvent(DEVICERow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICERow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class GRPRowChangeEvent : global::System.EventArgs { + + private GRPRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPRowChangeEvent(GRPRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class NORMALRowChangeEvent : global::System.EventArgs { + + private NORMALRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALRowChangeEvent(NORMALRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class VIEWGROUPRowChangeEvent : global::System.EventArgs { + + private VIEWGROUPRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRowChangeEvent(VIEWGROUPRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class WINRowChangeEvent : global::System.EventArgs { + + private WINRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINRowChangeEvent(WINRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class ALARMRowChangeEvent : global::System.EventArgs { + + private ALARMRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMRowChangeEvent(ALARMRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class VIEWGROUPRRowChangeEvent : global::System.EventArgs { + + private VIEWGROUPRRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRRowChangeEvent(VIEWGROUPRRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class TRENDVIEWCHLISTRowChangeEvent : global::System.EventArgs { + + private TRENDVIEWCHLISTRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTRowChangeEvent(TRENDVIEWCHLISTRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + } +} + +#pragma warning restore 1591 \ No newline at end of file diff --git a/Viewer/AlarmViewer/DocumentElement.cs b/Viewer/AlarmViewer/DocumentElement.cs new file mode 100644 index 0000000..28c8e1f --- /dev/null +++ b/Viewer/AlarmViewer/DocumentElement.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; + +namespace vmsnet +{ + public partial class DocumentElement + { + } + +} diff --git a/Viewer/AlarmViewer/DocumentElement.xsc b/Viewer/AlarmViewer/DocumentElement.xsc new file mode 100644 index 0000000..05b0199 --- /dev/null +++ b/Viewer/AlarmViewer/DocumentElement.xsc @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/Viewer/AlarmViewer/DocumentElement.xsd b/Viewer/AlarmViewer/DocumentElement.xsd new file mode 100644 index 0000000..bbef828 --- /dev/null +++ b/Viewer/AlarmViewer/DocumentElement.xsd @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Viewer/AlarmViewer/DocumentElement.xss b/Viewer/AlarmViewer/DocumentElement.xss new file mode 100644 index 0000000..1a54c51 --- /dev/null +++ b/Viewer/AlarmViewer/DocumentElement.xss @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Viewer/AlarmViewer/MethodExts.cs b/Viewer/AlarmViewer/MethodExts.cs new file mode 100644 index 0000000..a0f6dbc --- /dev/null +++ b/Viewer/AlarmViewer/MethodExts.cs @@ -0,0 +1,39 @@ +using System; +using System.Xml; +using System.Linq; +using System.Xml.Linq; +using System.ComponentModel; +using System.Runtime.CompilerServices; +using AR; +using System.IO; +using System.Text; + + +namespace Project +{ + public static class MethodExts + { + /// + /// ì§€ì •ëœ íŒŒì¼ ëì— ë‚´ìš©ì„ ì¶”ê°€í•©ë‹ˆë‹¤. + /// + /// + /// + public static void AppendText(this System.IO.FileInfo filename, string data) + { + if (filename.Directory.Exists == false) filename.Directory.Create(); + using (var writer = new StreamWriter(filename.FullName, true, System.Text.Encoding.Default)) + writer.Write(data);// + } + + public static void WriteText(this System.IO.FileInfo filename, string data, bool append = false) + { + if (filename.Directory.Exists == false) filename.Directory.Create(); + if (append == false) + System.IO.File.WriteAllText(filename.FullName, data); + else + AppendText(filename, data); + } + + } + +} diff --git a/Viewer/AlarmViewer/My Project/Application.myapp b/Viewer/AlarmViewer/My Project/Application.myapp new file mode 100644 index 0000000..572da45 --- /dev/null +++ b/Viewer/AlarmViewer/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + true + Frm_Main + false + 0 + true + 0 + true + \ No newline at end of file diff --git a/Viewer/AlarmViewer/My Project/DataSources/ChartData.datasource b/Viewer/AlarmViewer/My Project/DataSources/ChartData.datasource new file mode 100644 index 0000000..7d410a3 --- /dev/null +++ b/Viewer/AlarmViewer/My Project/DataSources/ChartData.datasource @@ -0,0 +1,10 @@ + + + + vmsnet.ChartData, cVMS.NET, Version=16.3.15.1530, Culture=neutral, PublicKeyToken=null + \ No newline at end of file diff --git a/Viewer/AlarmViewer/My Project/Resources.resx b/Viewer/AlarmViewer/My Project/Resources.resx new file mode 100644 index 0000000..66f85e1 --- /dev/null +++ b/Viewer/AlarmViewer/My Project/Resources.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\Blue Ball.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Green Ball.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Purple Ball.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Red Ball.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Viewer/AlarmViewer/My Project/Settings.settings b/Viewer/AlarmViewer/My Project/Settings.settings new file mode 100644 index 0000000..006bdaa --- /dev/null +++ b/Viewer/AlarmViewer/My Project/Settings.settings @@ -0,0 +1,9 @@ + + + + + + 2 + + + \ No newline at end of file diff --git a/Viewer/AlarmViewer/My Project/licenses.licx b/Viewer/AlarmViewer/My Project/licenses.licx new file mode 100644 index 0000000..e69de29 diff --git a/Viewer/AlarmViewer/OpenTK.dll.config b/Viewer/AlarmViewer/OpenTK.dll.config new file mode 100644 index 0000000..7098d39 --- /dev/null +++ b/Viewer/AlarmViewer/OpenTK.dll.config @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Viewer/AlarmViewer/Program.cs b/Viewer/AlarmViewer/Program.cs new file mode 100644 index 0000000..0a4995c --- /dev/null +++ b/Viewer/AlarmViewer/Program.cs @@ -0,0 +1,42 @@ +using System; +using System.Linq; +using System.Runtime.InteropServices; +using System.Windows.Forms; +using vmsnet; + +namespace vmsnet +{ + + internal static class Program + { + [DllImport("user32.dll")] + private static extern bool SetProcessDPIAware(); + + /// + /// 해당 애플리케ì´ì…˜ì˜ 주 ì§„ìž…ì ìž…니다. + /// + [STAThread] + static void Main(string[] args) + { + if (Environment.OSVersion.Version.Major >= 6) SetProcessDPIAware(); + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + if (System.Diagnostics.Debugger.IsAttached == false) + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + if (args != null && args.Any()) PUB.ExtCommand = args[0]; + Application.Run(new Frm_Alamlist()); + } + + private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + PUB.NotExitMonitor = true; + string fn = System.IO.Path.Combine("Bugreport", DateTime.Now.ToString("yyMMddHHmmss") + "_error.xml"); + var fi = new System.IO.FileInfo(fn); + if (fi.Directory.Exists == false) fi.Directory.Create(); + System.IO.File.WriteAllText(fi.FullName, e.ExceptionObject.ToString(), System.Text.Encoding.Default); + } + } + + + +} diff --git a/Viewer/AlarmViewer/Properties/AssemblyInfo.cs b/Viewer/AlarmViewer/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..4ebecf1 --- /dev/null +++ b/Viewer/AlarmViewer/Properties/AssemblyInfo.cs @@ -0,0 +1,43 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; +using System.Reflection; +using System.Runtime.InteropServices; + + +// ì–´ì…ˆë¸”ë¦¬ì˜ ì¼ë°˜ 정보는 ë‹¤ìŒ íŠ¹ì„± ì§‘í•©ì„ í†µí•´ 제어ë©ë‹ˆë‹¤. +// 어셈블리와 ê´€ë ¨ëœ ì •ë³´ë¥¼ 수정하려면 +// ì´ íŠ¹ì„± ê°’ì„ ë³€ê²½í•˜ì‹­ì‹œì˜¤. + +// 어셈블리 특성 ê°’ì„ ê²€í† í•©ë‹ˆë‹¤. + +[assembly:AssemblyTitle("cell Voltage Monitoring System - (For GM10) - 2016")] +[assembly:AssemblyDescription("VMS")] +[assembly:AssemblyCompany("JDTEK")] +[assembly: AssemblyProduct("cVMS.NET")] +[assembly:AssemblyCopyright("Copyright ©JDTEK 2012")] +[assembly:AssemblyTrademark("Arinware")] + +[assembly:ComVisible(false)] + +//ì´ í”„ë¡œì íŠ¸ê°€ COMì— ë…¸ì¶œë˜ëŠ” 경우 ë‹¤ìŒ GUID는 typelibì˜ ID를 나타냅니다. +[assembly:Guid("b998cd4f-ec54-4613-b634-71682953653e")] + +// ì–´ì…ˆë¸”ë¦¬ì˜ ë²„ì „ 정보는 ë‹¤ìŒ ë„¤ 가지 값으로 구성ë©ë‹ˆë‹¤. +// +// 주 버전 +// ë¶€ 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 ê°’ì„ ì§€ì •í•˜ê±°ë‚˜ 아래와 ê°™ì´ '*'를 사용하여 빌드 번호 ë° ìˆ˜ì • ë²„ì „ì´ ìžë™ìœ¼ë¡œ +// 지정ë˜ë„ë¡ í•  수 있습니다. +// + +[assembly: AssemblyVersion("24.09.03.1200")] +[assembly: AssemblyFileVersion("24.09.03.1200")] + diff --git a/Viewer/AlarmViewer/Properties/Resources.Designer.cs b/Viewer/AlarmViewer/Properties/Resources.Designer.cs new file mode 100644 index 0000000..d8c66bc --- /dev/null +++ b/Viewer/AlarmViewer/Properties/Resources.Designer.cs @@ -0,0 +1,173 @@ +//------------------------------------------------------------------------------ +// +// ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +// 런타임 버전:4.0.30319.42000 +// +// íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +// ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +// +//------------------------------------------------------------------------------ + +namespace Project.Properties { + using System; + + + /// + /// ì§€ì—­í™”ëœ ë¬¸ìžì—´ ë“±ì„ ì°¾ê¸° 위한 강력한 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ìž…ë‹ˆë‹¤. + /// + // ì´ í´ëž˜ìŠ¤ëŠ” ResGen ë˜ëŠ” Visual Studio와 ê°™ì€ ë„구를 통해 StronglyTypedResourceBuilder + // í´ëž˜ìФì—서 ìžë™ìœ¼ë¡œ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. + // 멤버를 추가하거나 제거하려면 .ResX 파ì¼ì„ 편집한 ë‹¤ìŒ /str ì˜µì…˜ì„ ì‚¬ìš©í•˜ì—¬ ResGenì„ + // 다시 실행하거나 VS 프로ì íŠ¸ë¥¼ 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// ì´ í´ëž˜ìФì—서 사용하는 ìºì‹œëœ ResourceManager ì¸ìŠ¤í„´ìŠ¤ë¥¼ 반환합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Project.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// ì´ ê°•ë ¥í•œ 형ì‹ì˜ 리소스 í´ëž˜ìŠ¤ë¥¼ 사용하여 모든 리소스 ì¡°íšŒì— ëŒ€í•´ 현재 ìŠ¤ë ˆë“œì˜ CurrentUICulture ì†ì„±ì„ + /// 재정ì˜í•©ë‹ˆë‹¤. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap Backup_Green_Button { + get { + object obj = ResourceManager.GetObject("Backup_Green_Button", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap Blue_Ball { + get { + object obj = ResourceManager.GetObject("Blue_Ball", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap Clear_Green_Button { + get { + object obj = ResourceManager.GetObject("Clear_Green_Button", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap down_16 { + get { + object obj = ResourceManager.GetObject("down_16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap down_orange { + get { + object obj = ResourceManager.GetObject("down_orange", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap Get_Info_Blue_Button { + get { + object obj = ResourceManager.GetObject("Get_Info_Blue_Button", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap Green_Ball { + get { + object obj = ResourceManager.GetObject("Green_Ball", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap Orange_Ball { + get { + object obj = ResourceManager.GetObject("Orange_Ball", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap Purple_Ball { + get { + object obj = ResourceManager.GetObject("Purple_Ball", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap Red_Ball { + get { + object obj = ResourceManager.GetObject("Red_Ball", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형ì‹ì˜ ì§€ì—­í™”ëœ ë¦¬ì†ŒìŠ¤ë¥¼ 찾습니다. + /// + internal static System.Drawing.Bitmap up_16 { + get { + object obj = ResourceManager.GetObject("up_16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Viewer/AlarmViewer/Properties/Resources.resx b/Viewer/AlarmViewer/Properties/Resources.resx new file mode 100644 index 0000000..3260559 --- /dev/null +++ b/Viewer/AlarmViewer/Properties/Resources.resx @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\Backup Green Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Blue Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Clear Green Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\down_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\down_orange.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Get Info Blue Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Green Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Orange Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Purple Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Red Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\up_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Viewer/AlarmViewer/Properties/Settings.Designer.cs b/Viewer/AlarmViewer/Properties/Settings.Designer.cs new file mode 100644 index 0000000..766203c --- /dev/null +++ b/Viewer/AlarmViewer/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +// 런타임 버전:4.0.30319.42000 +// +// íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +// ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +// +//------------------------------------------------------------------------------ + +namespace Project.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Viewer/AlarmViewer/Properties/Settings.settings b/Viewer/AlarmViewer/Properties/Settings.settings new file mode 100644 index 0000000..049245f --- /dev/null +++ b/Viewer/AlarmViewer/Properties/Settings.settings @@ -0,0 +1,6 @@ + + + + + + diff --git a/Viewer/AlarmViewer/Properties/app.manifest b/Viewer/AlarmViewer/Properties/app.manifest new file mode 100644 index 0000000..e1f90c3 --- /dev/null +++ b/Viewer/AlarmViewer/Properties/app.manifest @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + true + + + + + + + \ No newline at end of file diff --git a/Viewer/AlarmViewer/Properties/licenses.licx b/Viewer/AlarmViewer/Properties/licenses.licx new file mode 100644 index 0000000..e69de29 diff --git a/Viewer/AlarmViewer/Properties/licenses.licx.bak b/Viewer/AlarmViewer/Properties/licenses.licx.bak new file mode 100644 index 0000000..edf9012 --- /dev/null +++ b/Viewer/AlarmViewer/Properties/licenses.licx.bak @@ -0,0 +1 @@ +DevExpress.XtraGauges.Win.GaugeControl, DevExpress.XtraGauges.v10.1.Win, Version=10.1.5.0, Culture=neutral, PublicKeyToken=940cfcde86f32efd diff --git a/Viewer/AlarmViewer/ReadMe.txt b/Viewer/AlarmViewer/ReadMe.txt new file mode 100644 index 0000000..d942282 --- /dev/null +++ b/Viewer/AlarmViewer/ReadMe.txt @@ -0,0 +1 @@ +20240827 ë©”ì¸í”„로ì íЏì—서 분리 \ No newline at end of file diff --git a/Viewer/AlarmViewer/Resources/Backup Green Button.png b/Viewer/AlarmViewer/Resources/Backup Green Button.png new file mode 100644 index 0000000..da9ebb8 Binary files /dev/null and b/Viewer/AlarmViewer/Resources/Backup Green Button.png differ diff --git a/Viewer/AlarmViewer/Resources/Blue Ball.png b/Viewer/AlarmViewer/Resources/Blue Ball.png new file mode 100644 index 0000000..325c6b2 Binary files /dev/null and b/Viewer/AlarmViewer/Resources/Blue Ball.png differ diff --git a/Viewer/AlarmViewer/Resources/Clear Green Button.png b/Viewer/AlarmViewer/Resources/Clear Green Button.png new file mode 100644 index 0000000..b46c7f2 Binary files /dev/null and b/Viewer/AlarmViewer/Resources/Clear Green Button.png differ diff --git a/Viewer/AlarmViewer/Resources/Get Info Blue Button.png b/Viewer/AlarmViewer/Resources/Get Info Blue Button.png new file mode 100644 index 0000000..24eeec7 Binary files /dev/null and b/Viewer/AlarmViewer/Resources/Get Info Blue Button.png differ diff --git a/Viewer/AlarmViewer/Resources/Green Ball.png b/Viewer/AlarmViewer/Resources/Green Ball.png new file mode 100644 index 0000000..c2b9772 Binary files /dev/null and b/Viewer/AlarmViewer/Resources/Green Ball.png differ diff --git a/Viewer/AlarmViewer/Resources/Orange Ball.png b/Viewer/AlarmViewer/Resources/Orange Ball.png new file mode 100644 index 0000000..3f83cc6 Binary files /dev/null and b/Viewer/AlarmViewer/Resources/Orange Ball.png differ diff --git a/Viewer/AlarmViewer/Resources/Purple Ball.png b/Viewer/AlarmViewer/Resources/Purple Ball.png new file mode 100644 index 0000000..7d744b9 Binary files /dev/null and b/Viewer/AlarmViewer/Resources/Purple Ball.png differ diff --git a/Viewer/AlarmViewer/Resources/Red Ball.png b/Viewer/AlarmViewer/Resources/Red Ball.png new file mode 100644 index 0000000..3909dce Binary files /dev/null and b/Viewer/AlarmViewer/Resources/Red Ball.png differ diff --git a/Viewer/AlarmViewer/Resources/down_16.png b/Viewer/AlarmViewer/Resources/down_16.png new file mode 100644 index 0000000..8175898 Binary files /dev/null and b/Viewer/AlarmViewer/Resources/down_16.png differ diff --git a/Viewer/AlarmViewer/Resources/down_orange.png b/Viewer/AlarmViewer/Resources/down_orange.png new file mode 100644 index 0000000..30a6cb7 Binary files /dev/null and b/Viewer/AlarmViewer/Resources/down_orange.png differ diff --git a/Viewer/AlarmViewer/Resources/up_16.png b/Viewer/AlarmViewer/Resources/up_16.png new file mode 100644 index 0000000..4387c3c Binary files /dev/null and b/Viewer/AlarmViewer/Resources/up_16.png differ diff --git a/Viewer/AlarmViewer/Setting/CSetting.cs b/Viewer/AlarmViewer/Setting/CSetting.cs new file mode 100644 index 0000000..034b4fe --- /dev/null +++ b/Viewer/AlarmViewer/Setting/CSetting.cs @@ -0,0 +1,162 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; +using AR; +using System.Windows.Media; + +namespace vmsnet +{ + + public class CSetting : AR.Setting + { + public int Startup_DelayTime_Alam { get; set; } + public int Startup_DelayTime_Save { get; set; } + + public int MaxChCount { get; set; } + + public string bugreport { get; set; } + + + + public string databasefolder { get; set; } + + + + + public int threadlimit { get; set; } + + public int graph_time_day { get; set; } + public int graph_time_hour { get; set; } + public int graph_time_min { get; set; } + public int graph_line_width { get; set; } + public int graph_starty { get; set; } + public int graph_endy { get; set; } + + public string win1pos { get; set; } + public string win2pos { get; set; } + + + public int tvr_selectgroup0 { get; set; } + public int tvr_selectgroup { get; set; } + + + ////150319 + public int maintv_xgap { get; set; } ////개별전해조보기ì—서 X ì¶• 표시간격 + public float maintv_ygap { get; set; } ////개별전해조보기ì—서 Y ì¶• 표시간격 + public int maintv_xterm { get; set; } ////개별전해조보기ì—서 X ì¶• 표시범위 + public int maintv_winsize { get; set; } ////ê°œë³„ì „í•´ì¡°ë³´ê¸°ì˜ ì°½ í¬ê¸° + + public int meas_pri1 { get; set; } ////1번째 ìˆ˜ì§‘ëª…ë ¹ì˜ ì‹œìž‘ê°’ + public int meas_pri2 { get; set; } ////1번째 ìˆ˜ì§‘ëª…ë ¹ì˜ ì¢…ë£Œê°’ + public int meas_sec1 { get; set; } ////2번째 ìˆ˜ì§‘ëª…ë ¹ì˜ ì‹œìž‘ê°’ + public int meas_sec2 { get; set; } ////2번째 ìˆ˜ì§‘ëª…ë ¹ì˜ ì¢…ë£Œê°’ + public int meas_3rd1 { get; set; } ////2번째 ìˆ˜ì§‘ëª…ë ¹ì˜ ì‹œìž‘ê°’ + public int meas_3rd2 { get; set; } ////2번째 ìˆ˜ì§‘ëª…ë ¹ì˜ ì¢…ë£Œê°’ + public int meas_4th1 { get; set; } ////2번째 ìˆ˜ì§‘ëª…ë ¹ì˜ ì‹œìž‘ê°’ + public int meas_4th2 { get; set; } ////2번째 ìˆ˜ì§‘ëª…ë ¹ì˜ ì¢…ë£Œê°’ + + public string grp0chlist { get; set; } + public string grp1chlist { get; set; } + public string grp2chlist { get; set; } + public string grp3chlist { get; set; } + public string grp4chlist { get; set; } + public string grp5chlist { get; set; } + public string grp6chlist { get; set; } + public string grp7chlist { get; set; } + public string grp8chlist { get; set; } + public string grp9chlist { get; set; } + + + ////íŠ¸ë Œë“œë·°ì˜ ê°ì¢… 설정값 + public CSetting() + { + bugreport = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Bugreport"); + } + + public override void AfterLoad() + { + ////버그리í¬íЏ í´ë”ê°€ 없다면 ìƒì„±í•œë‹¤. + if (bugreport.isEmpty() == false && System.IO.Directory.Exists(bugreport) == false) + System.IO.Directory.CreateDirectory(bugreport); + + //시작지연시간 + if (Startup_DelayTime_Alam < 1) Startup_DelayTime_Alam = 10; + if (Startup_DelayTime_Save < 1) Startup_DelayTime_Save = 5; + + if (threadlimit < 500) threadlimit = 500; + + if (MaxChCount < 1) MaxChCount = 10; + if (meas_pri1 == 0 && meas_pri2 == 0) + { + //0번유닛 1ë²ˆì±„ë„ ë¶€í„°~1번유닛 60ë²ˆì±„ë„ + meas_pri1 = 001; + meas_pri2 = 160; + } + if (meas_sec1 == 0 && meas_sec2 == 0) + { + //2번유닛 1ë²ˆì±„ë„ ë¶€í„°~3번유닛 60ë²ˆì±„ë„ + meas_sec1 = 201; + meas_sec2 = 360; + } + + if (meas_3rd1 == 0 && meas_3rd1 == 0) + { + //4번유닛 1ë²ˆì±„ë„ ë¶€í„°~5번유닛 60ë²ˆì±„ë„ + meas_3rd1 = 401; + meas_3rd1 = 560; + } + + if (meas_4th1 == 0 && meas_4th2 == 0) + { + //4번유닛 1ë²ˆì±„ë„ ë¶€í„°~5번유닛 60ë²ˆì±„ë„ + meas_4th1 = 601; + meas_4th2 = 560; + } + + //if (viewSize.IsNumeric() == false) viewSize = "300"; //240622 + + ////트렌드뷰용 ë°ì´í„°ì •ë³´ + if (maintv_xgap == 0) maintv_xgap = 300; + if (maintv_xterm == 0) maintv_xterm = 3600; + if (maintv_ygap == 0) maintv_ygap = 0.5f; + if (maintv_winsize == 0) maintv_winsize = 50; + + ////ì¼ë°˜ì„¤ì • + if (tvr_selectgroup0 == 0) tvr_selectgroup0 = 0; + if (tvr_selectgroup == 0) tvr_selectgroup = 0; + + ////그래프설정 + if (win1pos.isEmpty()) win1pos = "10,10"; + if (win2pos.isEmpty()) win2pos = "10,10"; + + try + { + ////백업한다. + System.IO.File.Copy("setting.xml", "setting~.xml", true); + } + catch { } + } + + public string GetDatabasePath() + { + if (databasefolder.isEmpty()) + { + //트렌드와 ì•ŒëžŒì€ ìƒìœ„í´ë”를 반환해야한다 + var di = new System.IO.DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); + return di.Parent.FullName; + } + else return databasefolder; + } + + + public override void AfterSave() + { + //throw new NotImplementedException(); + } + } + +} diff --git a/Viewer/AlarmViewer/app.config b/Viewer/AlarmViewer/app.config new file mode 100644 index 0000000..76d32f8 --- /dev/null +++ b/Viewer/AlarmViewer/app.config @@ -0,0 +1,35 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + 2 + + + + diff --git a/Viewer/AlarmViewer/packages.config b/Viewer/AlarmViewer/packages.config new file mode 100644 index 0000000..455cc2f --- /dev/null +++ b/Viewer/AlarmViewer/packages.config @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Viewer/AlarmViewer/pub.cs b/Viewer/AlarmViewer/pub.cs new file mode 100644 index 0000000..0408737 --- /dev/null +++ b/Viewer/AlarmViewer/pub.cs @@ -0,0 +1,145 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; +using System.Xml.Linq; +using AR; +using System.Windows.Media; +using System.Media; +using System.IO; +using System.Runtime.CompilerServices; +using System.Linq; +using System.Threading.Tasks; +using vmsnet; + +namespace vmsnet +{ + + sealed class PUB + { + public static AR.Log log; + public static bool NotExitMonitor = false; + public static CFDBA Alarm; + public static CSetting CONFIG; + public static string lasttime = ""; + public static DocumentElement DS = new DocumentElement(); + public static bool runerror = false; ////실행오류 + public static string lastStatueMessage = ""; + public static System.Text.StringBuilder StartErrmsg = new System.Text.StringBuilder(); + public static int WindowCount = 0; + public static DateTime StartupTime = DateTime.Now; + public static string ExtCommand = ""; + + public static string GetGrpName(int idx) + { + var dr = PUB.DS.GRP.Select("IDX=" + System.Convert.ToString(idx)) as DocumentElement.GRPRow[]; + if (dr.Length != 1) + { + return ""; + } + return dr[0].TITLE; + } + + public static string GetChannelName(int idx) + { + var dr = PUB.DS.CHANNEL.Select("IDX=" + System.Convert.ToString(idx)) as DocumentElement.CHANNELRow[]; + if (dr.Length != 1) + { + return ""; + } + return dr[0].TITLE; + } + ////타임정보를 숫ìžë¡œ 반환함 + public static decimal get_TimeNumber(DateTime time) + { + return time.Hour * 3600 + time.Minute * 60 + time.Second; + } + + public static string get_TimeString(decimal timenumber, string fn) + { + ////파ì¼ëª…ì— ë…„/ì›”/ì¼ì´ ìžˆìŒ + string[] fnb = fn.Split("\\".ToCharArray()); + string Filename = fnb[fnb.Length - 1]; + string daystr = fnb[fnb.Length - 2]; + string monstr = fnb[fnb.Length - 3]; + string yearstr = fnb[fnb.Length - 4]; + + ////timenumber를 다시 시,ë¶„,ì´ˆ 로 변환한다. + decimal namugy = timenumber; + int hour = (int)(Math.Floor(namugy / 3600)); + namugy = namugy - (hour * 3600); + int min = (int)(Math.Floor(namugy / 60)); + namugy = namugy - (min * 60); + int sec = (int)namugy; + + return yearstr + "-" + monstr + "-" + daystr + " " + hour.ToString("00") + ":" + min.ToString("00") + ":" + sec.ToString("00"); + } + + public static void INIT(out List errormessages) + { + errormessages = new List(); + var errorlist = new List(); + log = new AR.Log();//.ArinLog(); + + + CONFIG = new CSetting(); ////ì„¤ì •íŒŒì¼ ì´ˆê¸°í™” 150319 + CONFIG.filename = new System.IO.FileInfo("..\\Setting.xml").FullName; + CONFIG.Load(); + + + if (UTIL.IsDriveValid(CONFIG.GetDatabasePath()) == false) + { + errorlist.Add($"ì €ìž¥ê²½ë¡œì˜ ë“œë¼ì´ë¸Œê°€ 유효하지 않아 임시경로로 변경 ë©ë‹ˆë‹¤\n" + + $"ì „:{CONFIG.GetDatabasePath()}\n" + + $"후:{UTIL.CurrentPath}"); + CONFIG.databasefolder = UTIL.CurrentPath; + } + if (System.IO.Directory.Exists(CONFIG.GetDatabasePath()) == false) + { + try + { + System.IO.Directory.CreateDirectory(CONFIG.GetDatabasePath()); + errorlist.Add($"저장경로 ì‹ ê·œìƒì„±\n{CONFIG.GetDatabasePath()}"); + } + catch (Exception ex) + { + //CONFIG.GetDatabasePath() = UTIL.CurrentPath; + errorlist.Add($"저장경로 ìƒì„±ì‹¤íŒ¨\n{CONFIG.GetDatabasePath()}\n{ex.Message}"); + } + } + + Alarm = new CFDBA(CONFIG.GetDatabasePath(), "Database", "Alarm"); + + + ////설정정보를 가져온다. + //List errorlist = new List(); + System.Threading.Tasks.Task task = Task.Factory.StartNew(() => + { + string[] BackTables = new string[] { "DEVICE", "GRP", "NORMAL", "WIN", "VIEWGROUP", "CHANNEL", "VIEWGROUPR" }; + foreach (string tabname in BackTables) + { + var fname = System.IO.Path.Combine(CONFIG.GetDatabasePath(), "Database", "Config", $"{tabname}.xml"); + var fn = new System.IO.FileInfo(fname); + if (fn.Exists) + { + PUB.DS.Tables[tabname].ReadXml(fn.FullName); + PUB.log.Add($"Load File({tabname}) : {fn.FullName}"); + } + } + }); + task.Wait(); + + + + + log.Add(AR.Log.ETYPE.NORMAL, "설정ì½ì–´ì˜¤ê¸°ì™„료"); + + if (errorlist.Any()) errormessages.AddRange(errorlist); + } + + + } +} diff --git a/Viewer/TrendViewer/Alert.ico b/Viewer/TrendViewer/Alert.ico new file mode 100644 index 0000000..6223315 Binary files /dev/null and b/Viewer/TrendViewer/Alert.ico differ diff --git a/Viewer/TrendViewer/Class/CFDB.cs b/Viewer/TrendViewer/Class/CFDB.cs new file mode 100644 index 0000000..70bc96a --- /dev/null +++ b/Viewer/TrendViewer/Class/CFDB.cs @@ -0,0 +1,346 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; +using System.IO; +using System.Text; +using AR; + +namespace vmsnet +{ + public class CFDB + { + string _BaseDir; + + System.Text.StringBuilder[] StrBuf; ////ë°ì´í„°ë²„í¼ + DateTime[] LastTime; ////ë°ì´í„°ì‹œê°„ + System.IO.FileInfo[] File; ////ë°ì´í„°íŒŒì¼ì •ë³´ + int MaxCount = 10; + public bool IsReady { get; private set; } + + public CFDB(params string[] dirarrays) + { + var dir = System.IO.Path.Combine(dirarrays); + _BaseDir = dir; + + StrBuf = new System.Text.StringBuilder[MaxCount]; + LastTime = new DateTime[MaxCount]; + File = new System.IO.FileInfo[MaxCount]; + + if (System.IO.Directory.Exists(_BaseDir) == false) + { + + try + { + + System.IO.Directory.CreateDirectory(_BaseDir); + IsReady = true; + } + catch + { + IsReady = false; + } + + } + else IsReady = true; + + + ////Data Initialize + for (int i = 0; i < MaxCount; i++) + { + StrBuf[i] = new System.Text.StringBuilder(); + LastTime[i] = DateTime.Now; + File[i] = null; + } + } + + ////지정한 기간내 파ì¼ì˜ 존재여부를 확ì¸í•©ë‹ˆë‹¤. + //public int GetfileCount(string table, DateTime sd, DateTime ed) + //{ + // return GetfileS(table, sd, ed).Count; + //} + + + /// + /// ë°ì´í„°ë¥¼ 기ë¡í•©ë‹ˆë‹¤. + /// + /// 기ë¡ì‹œê°„(파ì¼ëª…ì´ ê²°ì •ë¨) + /// 기ë¡í• í…Œì´ë¸”명(파ì¼ëª…) + /// 기ë¡í• ë°ì´í„°(ì—´ë°ì´í„°ê°€ 틀려서 ê³ ì •í•  수 없다) + /// + /// + public bool InsertData(DateTime time, string table, StringBuilder buffers) + { + string DayStr = time.ToString("yyyyMMdd"); + byte TableIndex = byte.Parse(table.Substring(5)); + + ////해당ë°ì´í„°ì˜ 시간과 파ì¼ì •보를 ê¸°ë¡ + LastTime[TableIndex - 1] = time; + File[TableIndex - 1] = new System.IO.FileInfo(_BaseDir + "\\" + DayStr.Substring(0, 4) + "\\" + DayStr.Substring(4, 2) + "\\" + DayStr.Substring(6) + "\\" + (time.Hour ).ToString("00") + "_" + table + ".txt"); + if (!File[TableIndex - 1].Directory.Exists) + File[TableIndex - 1].Directory.Create(); + + ////ê°í…Œì´ë¸”별로 시작 열번호를 넣는다. + int si = 1 + 160 * (TableIndex - 1); + int ei = si + (160 - 1); + + ////파ì¼ì´ 없다면 ì œëª©ì¤„ì„ ìƒì„±í•´ì¤€ë‹¤. + if (!File[TableIndex - 1].Exists) + { + ////í—¤ë”를 추가해야한다. + var Header = new System.Text.StringBuilder(); + Header.Append("\t" + "TIME"); + for (int j = si; j <= ei; j++) + { + Header.Append("\t" + "C" + j.ToString("000")); + } + //Header.Append(vbTab + "KA") + Header.AppendLine(); ////ì œëª©ì¤„ì„ í•œì¹¸ë„운다 + + //File[TableIndex - 1].WriteText(Header); // ì´ì „ 단ë…모드 + /* 작성ìž: ì´ìž¬ì›…, 작성ì¼: 2024-09-23, 작성내용: 접근모드를 공유모드로 전환 */ + using (FileStream fs = new FileStream(File[TableIndex - 1].FullName, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)) + using (StreamWriter writer = new StreamWriter(fs)) + { writer.Write(Header.ToString()); } + } + + StrBuf[TableIndex - 1].AppendLine("\t" + time.ToFileTime().ToString() + buffers.ToString()); + + ////4kb 단위로 파ì¼ì„ 기ë¡í•œë‹¤. + if (StrBuf[TableIndex - 1].Length > 4096) ////ì‹¤ì œíŒŒì¼ ê¸°ë¡ì€ 5초마다 한다. + { + //File[TableIndex - 1].AppendText(StrBuf[TableIndex - 1]); // ì´ì „ì€ ë‹¨ë…모드 + /* 작성ìž: ì´ìž¬ì›…, 작성ì¼: 2024-09-23, 작성내용: 접근모드를 공유모드로 전환 */ + using (FileStream fs = new FileStream(File[TableIndex - 1].FullName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)) + using (StreamWriter writer = new StreamWriter(fs)) + { writer.Write(StrBuf[TableIndex - 1].ToString()); } + + StrBuf[TableIndex - 1].Clear(); + } + return true; + } + + ~CFDB() + { + ////버í¼ì— 남아잇는 ë°ì´í„°ë¥¼ 기ë¡í•œë‹¤. + for (int i = 0; i < MaxCount; i++) + { + if (StrBuf[i].Length > 0) + { + try + { + using (var writer = new StreamWriter(File[i].FullName, true, System.Text.Encoding.Default)) + writer.Write(StrBuf[i].ToString());// + } + catch { } + } + StrBuf[i].Clear(); + } + } + + /// + /// 저장í´ë”ë‚´ì— ì¡´ìž¬í•˜ëŠ” 날짜정보를 반환합니다. + /// + /// + /// + //public List GetDateList() + //{ + // List REtval = new List(); + + // System.IO.DirectoryInfo BDI = new System.IO.DirectoryInfo(_BaseDir); + // foreach (System.IO.DirectoryInfo Fd_Year in BDI.GetDirectories()) + // { + // foreach (System.IO.DirectoryInfo FD_Mon in Fd_Year.GetDirectories()) + // { + // foreach (System.IO.DirectoryInfo Fd_Day in FD_Mon.GetDirectories()) + // { + // if (Fd_Day.GetFiles().Length > 0) + // { + // REtval.Add(Fd_Year.Name + FD_Mon.Name + Fd_Day.Name); + // } + // } + // } + // } + // REtval.Sort(); + // return REtval; + //} + + //public enum eTableList + //{ + // DATAB1 = 1, + // DATAB2 = 2, + // DATAB3 = 3, + // DATAB4 = 4, + // DATAB5 = 5 + //} + + /// + /// 저장í´ë”ë‚´ì— ì¡´ìž¬í•˜ëŠ” 날짜정보를 반환합니다. + /// + /// 찾고ìží•˜ëŠ”í…Œì´ë¸”명(파ì¼ì€ 시_í…Œì´ë¸”명.txt로 ë˜ì–´ìžˆë‹¤. + /// + /// + //public List GetDateList(eTableList tablename) + //{ + // List REtval = new List(); + + // System.IO.DirectoryInfo BDI = new System.IO.DirectoryInfo(_BaseDir); + // foreach (System.IO.DirectoryInfo Fd_Year in BDI.GetDirectories()) + // { + // foreach (System.IO.DirectoryInfo FD_Mon in Fd_Year.GetDirectories()) + // { + // foreach (System.IO.DirectoryInfo Fd_Day in FD_Mon.GetDirectories()) + // { + // if (Fd_Day.GetFiles("*_" + tablename.ToString() +".txt").Length > 0) + // { + // REtval.Add(Fd_Year.Name + FD_Mon.Name + Fd_Day.Name); + // } + // } + // } + // } + // REtval.Sort(); + // return REtval; + //} + + public List<(int Year, int Month)> GetAvailableDates() + { + var availableDates = new List<(int Year, int Month)>(); + + if (!Directory.Exists(_BaseDir)) + return availableDates; + + // Get all year directories + foreach (var yearDir in Directory.GetDirectories(_BaseDir)) + { + if (int.TryParse(Path.GetFileName(yearDir), out int year)) + { + // Get all month directories within the year directory + foreach (var monthDir in Directory.GetDirectories(yearDir)) + { + if (int.TryParse(Path.GetFileName(monthDir), out int month)) + { + availableDates.Add((year, month)); + } + } + } + } + + return availableDates; + } + + ////기간내 존재하는 파ì¼ì„ 반환합니다(í…Œì´ë¸”단위) + public List GetfileS(string table, DateTime sd, DateTime ed) + { + List REtval = new List(); + int SttYear = sd.Year; + int EndYear = ed.Year; + if (EndYear < SttYear) return REtval; + + int SttMonth = sd.Month; + int EndMonth = ed.Month; + + int SttDay = sd.Day; + int EndDay = ed.Day; + + int si = int.Parse(sd.ToString("yyyyMMdd")); + int ei = int.Parse(ed.ToString("yyyyMMdd")); + bool SameDay = si == ei ? true : false; + + //for (int dayinfo = si; dayinfo <= ei; dayinfo++) + //{ + // string dayStr = dayinfo.ToString(); + // string dirname = Path.Combine(_BaseDir, dayStr.Substring(0, 4), dayStr.Substring(4, 2), dayStr.Substring(6)); + // var dir = new DirectoryInfo(dirname); + // if (!dir.Exists) continue; + + // int startHour = (dayinfo == si) ? int.Parse(sd.ToString("HH")) : 0; + // int endHour = (dayinfo == ei) ? int.Parse(ed.ToString("HH")) : 23; + + // // ë™ì¼ ë‚ ì§œì¸ ê²½ìš° + // if (SameDay) + // { + // startHour = int.Parse(sd.ToString("HH")); + // endHour = int.Parse(ed.ToString("HH")); + // } + + // for (int hourinfo = startHour; hourinfo <= endHour; hourinfo++) + // { + // string filename = Path.Combine(dir.FullName, $"{hourinfo:00}_{table}.txt"); + // if (System.IO.File.Exists(filename)) + // { + // REtval.Add(filename); + // } + // } + //} + + + ////20140101 + for (int dayinfo = si; dayinfo <= ei; dayinfo++) + { + string DayStr = dayinfo.ToString(); + + // Ex) dirname = ..\bin\Debug\Database\volt\2024\09\01 + var dirname = Path.Combine(_BaseDir, DayStr.Substring(0, 4), DayStr.Substring(4, 2), DayStr.Substring(6)); + var dir = new System.IO.DirectoryInfo(dirname); + if (!dir.Exists) continue; + + ////í´ë”ê°€ 존재하므로 해당 í…Œì´ë¸”파ì¼ì´ 존재하는지 확ì¸í•œë‹¤ + if (SameDay) + { + ////ë™ì¼ë‚ ì§œë¼ë©´ 해당 시간대만 ì¡°íšŒí•˜ë©´ë¨ + for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo).ToString("00") + "_" + table + ".txt"; + if (System.IO.File.Exists(fn)) + REtval.Add(fn); + } + } + else + { + if (dayinfo == si) ////시작ì¼ì´ë¼ë©´ 시작시간부터 24시까지 ì´ë‹¤. + { + for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= 23; hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo).ToString("00") + "_" + table + ".txt"; + if (System.IO.File.Exists(fn)) + REtval.Add(fn); + } + } + else if (dayinfo == ei) ////종료ì¼ì´ë¼ë©´ 1~ 종료시까지ì´ë‹¤. + { + for (int hourinfo = 0; hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo).ToString("00") + "_" + table + ".txt"; + if (System.IO.File.Exists(fn)) + REtval.Add(fn); + } + } + else + { + ////ì¤‘ê°„ì— ë¼ì–´ìžˆëŠ” ë‚ ì§œë¼ë©´ 1~24모ë‘ê°€ ì†í•œë‹¤. + for (int hourinfo = 0; hourinfo <= 23; hourinfo++) + { + /* 주ì„ì¼: 2024-09-20 | 주ì„ë‚´ìš©: 파ì¼ëª… 설명 | 주ì„ìž: ì´ìž¬ì›… + * + * 파ì¼ëª…ì´ '08_DATAB1.txt'ë¼ë©´ + * 08 : 시간 + * _DATAB : ê³ ì •ê°’ + * 1 : ì±„ë„ + */ + string fn = dir.FullName + "\\" + (hourinfo).ToString("00") + "_" + table + ".txt"; + if (System.IO.File.Exists(fn)) + REtval.Add(fn); + } + } + } + } + REtval.Sort(); + return REtval; + } + + } + +} diff --git a/Viewer/TrendViewer/Class/CFDBA.cs b/Viewer/TrendViewer/Class/CFDBA.cs new file mode 100644 index 0000000..f88550d --- /dev/null +++ b/Viewer/TrendViewer/Class/CFDBA.cs @@ -0,0 +1,195 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; +using AR; + +namespace vmsnet +{ + public class CFDBA + { + string _BaseDir; + + public CFDBA(params string[] dirarrays) + { + var dir = System.IO.Path.Combine(dirarrays); + _BaseDir = dir; + if (System.IO.Directory.Exists(_BaseDir) == false) + { + System.IO.Directory.CreateDirectory(_BaseDir); + } + } + + ////지정한 기간내 파ì¼ì˜ 존재여부를 확ì¸í•©ë‹ˆë‹¤. + public int GetfileCount(DateTime sd, DateTime ed) + { + return GetfileS(sd, ed).Count; + } + + + ////기간내 존재하는 파ì¼ì„ 반환합니다(í…Œì´ë¸”단위) + public List GetfileS(DateTime sd, DateTime ed) + { + List REtval = new List(); + int SttYear = sd.Year; + int EndYear = ed.Year; + if (EndYear < SttYear) + { + return REtval; + } + + int SttMonth = sd.Month; + int EndMonth = ed.Month; + + int SttDay = sd.Day; + int EndDay = ed.Day; + + int si = System.Convert.ToInt32(sd.ToString("yyyyMMdd")); + int ei = System.Convert.ToInt32(ed.ToString("yyyyMMdd")); + bool SameDay = si == ei ? true : false; + + ////20140101 + for (int dayinfo = si; dayinfo <= ei; dayinfo++) + { + string DayStr = dayinfo.ToString(); + System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(_BaseDir + "\\" + DayStr.Substring(0, 4) + "\\" + DayStr.Substring(4, 2) + "\\" + DayStr.Substring(6)); + if (!dir.Exists) + { + continue; + } + ////í´ë”ê°€ 존재하므로 해당 í…Œì´ë¸”파ì¼ì´ 존재하는지 확ì¸í•œë‹¤ + + if (SameDay) + { + ////ë™ì¼ë‚ ì§œë¼ë©´ 해당 시간대만 ì¡°íšŒí•˜ë©´ë¨ + for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") + ".txt"; + if (System.IO.File.Exists(fn)) + { + REtval.Add(fn); + } + } + } + else + { + if (dayinfo == si) ////시작ì¼ì´ë¼ë©´ 시작시간부터 24시까지 ì´ë‹¤. + { + for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= 23; hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") + ".txt"; + if (System.IO.File.Exists(fn)) + { + REtval.Add(fn); + } + } + } + else if (dayinfo == ei) ////종료ì¼ì´ë¼ë©´ 1~ 종료시까지ì´ë‹¤. + { + for (int hourinfo = 0; hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") + ".txt"; + if (System.IO.File.Exists(fn)) + { + REtval.Add(fn); + } + } + } + else + { + ////ì¤‘ê°„ì— ë¼ì–´ìžˆëŠ” ë‚ ì§œë¼ë©´ 1~24모ë‘ê°€ ì†í•œë‹¤. + for (int hourinfo = 0; hourinfo <= 23; hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") + ".txt"; + if (System.IO.File.Exists(fn)) + { + REtval.Add(fn); + } + } + } + } + } + REtval.Sort(); + return REtval; + } + + + /// + /// ì´ë²ˆë‹¬ì´í›„ì˜ ë°ì´í„°ë¥¼ 조회합니다. + /// + /// + /// + /// + public DocumentElement.ALARMDataTable GetAlarmData(int ch) + { + ////ì´ë²ˆë‹¬ì´í›„ì˜ ë°ì´í„°ë¥¼ 가져온다. + DateTime sd = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01 00:00:00")); + DateTime ed = DateTime.Now; + return GetAlarmData(ch, sd, ed); + } + + public DocumentElement.ALARMDataTable GetAlarmData(DateTime sd, DateTime ed) + { + return GetAlarmData(-1, sd, ed); + } + + public DocumentElement.ALARMDataTable GetAlarmData(DateTime sd, DateTime ed, int rtypes, int rtypee) + { + return GetAlarmData(-1, sd, ed, rtypes, rtypee); + } + + /// + /// 지정ëœì‹œê°„사ì´ì˜ ë°ì´í„°ë¥¼ 조회합니다. + /// + /// 시작시간(20120319161800) + /// 종료시간(ë…„ì›”ì¼ì‹œë¶„ì´ˆ) + /// + /// + public DocumentElement.ALARMDataTable GetAlarmData(int ch, DateTime sd, DateTime ed, int rtypes = -1, int rtypee = -1) + { + List files = GetfileS(sd, ed); + + DocumentElement.ALARMDataTable alaramDT = new DocumentElement.ALARMDataTable(); + foreach (string fn in files) + { + foreach (string line in System.IO.File.ReadAllLines(fn)) + { + if (line.Trim() == "") continue; + + string[] buf = line.Split(System.Convert.ToChar("\t")); + if (buf.GetUpperBound(0) < 8) continue; ////ë°ì´í„°ìˆ˜ëŸ‰ì´ 안맞다. + + string chStr = buf[1]; + if (chStr.IsNumeric() == false) continue; ////채ë„ì •ë³´ê°€ ì¼ì¹˜í•˜ì§€ 않는경우 + + if (ch > -1 && chStr != ch.ToString()) continue; + + if (rtypes != -1 && rtypee != -1) ////rtypeë„ ê²€ìƒ‰í•œë‹¤. + { + if (buf[2] != rtypes.ToString() && buf[2] != rtypee.ToString()) continue; + } + + var newdr = alaramDT.NewALARMRow(); + newdr.ATIME = buf[1]; + newdr.CH = short.Parse(buf[2]); + newdr.RTYPE = short.Parse(buf[3]); + newdr.VOLT = float.Parse(buf[4]); + newdr.ATYPE = short.Parse(buf[5]); + newdr.MAXVOLT = float.Parse(buf[6]); + newdr.MINVOLT = float.Parse(buf[7]); + newdr.AM = buf[8]; + newdr.AM2 = buf[9]; + alaramDT.AddALARMRow(newdr); + } + } + alaramDT.AcceptChanges(); + return alaramDT; + } + + + } + +} diff --git a/Viewer/TrendViewer/Class/CFDBK.cs b/Viewer/TrendViewer/Class/CFDBK.cs new file mode 100644 index 0000000..79081d8 --- /dev/null +++ b/Viewer/TrendViewer/Class/CFDBK.cs @@ -0,0 +1,215 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; +using System.Text; +using System.IO; + +namespace vmsnet +{ + public class CFDBK + { + string _BaseDir; + + System.Text.StringBuilder StrBuf; ////ë°ì´í„°ë²„í¼ + DateTime LastTime; ////ë°ì´í„°ì‹œê°„ + System.IO.FileInfo File; ////ë°ì´í„°íŒŒì¼ì •ë³´ + + public CFDBK(params string[] dirarrays) + { + var dir = System.IO.Path.Combine(dirarrays); + _BaseDir = dir; + if (System.IO.Directory.Exists(_BaseDir) == false) + { + System.IO.Directory.CreateDirectory(_BaseDir); + } + + StrBuf = new System.Text.StringBuilder(); + LastTime = DateTime.Now; + File = null; + } + + ////지정한 기간내 파ì¼ì˜ 존재여부를 확ì¸í•©ë‹ˆë‹¤. + public int GetfileCount(DateTime sd, DateTime ed) + { + return GetfileS(sd, ed).Count; + } + + /// + /// ë°ì´í„°ë¥¼ 기ë¡í•©ë‹ˆë‹¤. + /// + /// 기ë¡ì‹œê°„(파ì¼ëª…ì´ ê²°ì •ë¨) + /// 기ë¡ëœë°ì´í„° + /// ë°ì´í„°ì˜í—¤ë”(신규파ì¼ìƒì„±ì‹œ) + /// + /// + public bool InsertData(DateTime time, string buffer, StringBuilder Header) + { + string DayStr = time.ToString("yyyyMMdd"); + //Dim TableIndex As Byte = table.Substring(5, 1) + + ////해당ë°ì´í„°ì˜ 시간과 파ì¼ì •보를 ê¸°ë¡ + LastTime = time; + File = new System.IO.FileInfo(_BaseDir + "\\" + DayStr.Substring(0, 4) + "\\" + DayStr.Substring(4, 2) + "\\" + DayStr.Substring(6) + "\\" + + (time.Hour + 1).ToString("00") +".txt"); + if (!File.Directory.Exists) + { + File.Directory.Create(); + } + + ////파ì¼ì´ 없다면 ì œëª©ì¤„ì„ ìƒì„±í•´ì¤€ë‹¤. + if (!File.Exists) + { + //File.WriteText(Header, true); // ì´ì „ì€ ë‹¨ë…모드 + /* 작성ìž: ì´ìž¬ì›…, 작성ì¼: 2024-09-23, 작성내용: 접근모드를 공유모드로 전환 */ + using (FileStream fs = new FileStream(File.FullName, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)) + using (StreamWriter writer = new StreamWriter(fs)) + { writer.WriteLine(Header); } + } + + StrBuf.AppendLine(System.Convert.ToString("\t" + time.ToFileTime().ToString() + buffer)); + + ////4kb 단위로 파ì¼ì„ 기ë¡í•œë‹¤. + if (StrBuf.Length > 500) ////ì‹¤ì œíŒŒì¼ ê¸°ë¡ì€ 5초마다 한다. + { + //File.WriteText(StrBuf, true); // ì´ì „ì€ ë‹¨ë…모드 + /* 작성ìž: ì´ìž¬ì›…, 작성ì¼: 2024-09-23, 작성내용: 접근모드를 공유모드로 전환 */ + using (FileStream fs = new FileStream(File.FullName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)) + using (StreamWriter writer = new StreamWriter(fs)) + { writer.Write(StrBuf.ToString()); } + + StrBuf.Clear(); + } + + return true; + } + + ~CFDBK() + { + if (StrBuf.Length > 0) File.WriteText(StrBuf, true); + StrBuf.Clear(); + + } + + /// + /// 저장í´ë”ë‚´ì— ì¡´ìž¬í•˜ëŠ” 날짜정보를 반환합니다. + /// + /// + /// + public List GetDateList() + { + List REtval = new List(); + + System.IO.DirectoryInfo BDI = new System.IO.DirectoryInfo(_BaseDir); + foreach (System.IO.DirectoryInfo Fd_Year in BDI.GetDirectories()) + { + foreach (System.IO.DirectoryInfo FD_Mon in Fd_Year.GetDirectories()) + { + foreach (System.IO.DirectoryInfo Fd_Day in FD_Mon.GetDirectories()) + { + if (Fd_Day.GetFiles().Length > 0) + { + REtval.Add(Fd_Year.Name + FD_Mon.Name + Fd_Day.Name); + } + } + } + } + + REtval.Sort(); + return REtval; + } + + + + ////기간내 존재하는 파ì¼ì„ 반환합니다(í…Œì´ë¸”단위) + public List GetfileS(DateTime sd, DateTime ed) + { + List REtval = new List(); + int SttYear = sd.Year; + int EndYear = ed.Year; + if (EndYear < SttYear) + { + return REtval; + } + + int SttMonth = sd.Month; + int EndMonth = ed.Month; + + int SttDay = sd.Day; + int EndDay = ed.Day; + + int si = System.Convert.ToInt32(sd.ToString("yyyyMMdd")); + int ei = System.Convert.ToInt32(ed.ToString("yyyyMMdd")); + bool SameDay = si == ei ? true : false; + + ////20140101 + for (int dayinfo = si; dayinfo <= ei; dayinfo++) + { + string DayStr = dayinfo.ToString(); + System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(_BaseDir + "\\" + DayStr.Substring(0, 4) + "\\" + DayStr.Substring(4, 2) + "\\" + DayStr.Substring(6)); + if (!dir.Exists) + { + continue; + } + ////í´ë”ê°€ 존재하므로 해당 í…Œì´ë¸”파ì¼ì´ 존재하는지 확ì¸í•œë‹¤ + + if (SameDay) + { + ////ë™ì¼ë‚ ì§œë¼ë©´ 해당 시간대만 ì¡°íšŒí•˜ë©´ë¨ + for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") +".txt"; + if (System.IO.File.Exists(fn)) + { + REtval.Add(fn); + } + } + } + else + { + if (dayinfo == si) ////시작ì¼ì´ë¼ë©´ 시작시간부터 24시까지 ì´ë‹¤. + { + for (int hourinfo = int.Parse(sd.ToString("HH")); hourinfo <= 23; hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") +".txt"; + if (System.IO.File.Exists(fn)) + { + REtval.Add(fn); + } + } + } + else if (dayinfo == ei) ////종료ì¼ì´ë¼ë©´ 1~ 종료시까지ì´ë‹¤. + { + for (int hourinfo = 0; hourinfo <= int.Parse(ed.ToString("HH")); hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") +".txt"; + if (System.IO.File.Exists(fn)) + { + REtval.Add(fn); + } + } + } + else + { + ////ì¤‘ê°„ì— ë¼ì–´ìžˆëŠ” ë‚ ì§œë¼ë©´ 1~24모ë‘ê°€ ì†í•œë‹¤. + for (int hourinfo = 0; hourinfo <= 23; hourinfo++) + { + string fn = dir.FullName + "\\" + (hourinfo + 1).ToString("00") +".txt"; + if (System.IO.File.Exists(fn)) + { + REtval.Add(fn); + } + } + } + } + } + REtval.Sort(); + return REtval; + } + + } + +} diff --git a/Viewer/TrendViewer/Class/ChartData.cs b/Viewer/TrendViewer/Class/ChartData.cs new file mode 100644 index 0000000..1d851ce --- /dev/null +++ b/Viewer/TrendViewer/Class/ChartData.cs @@ -0,0 +1,40 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; + +namespace vmsnet +{ + public class ChartData + { + public double Volt { get; set; } + public DateTime Time { get; set; } + } + public class ChartListData + { + public List ChannelList; //µ¥ÀÌÅÍ ±×·ìº° ä³Î ¸ñ·Ï + public List FileList; //µ¥ÀÌÅÍ ±×·ìº° ÆÄÀϸñ·Ï + public ChartListData() + { + ChannelList = new List(); //µ¥ÀÌÅÍ ±×·ìº° ä³Î ¸ñ·Ï + FileList = new List(); //µ¥ÀÌÅÍ ±×·ìº° ÆÄÀϸñ·Ï + + } + /// + /// ä³Î ¹× ÆÄÀϸñ·ÏÀ» ÃʱâÈ­ + /// + public void Clear() + { + ChannelList.Clear(); + FileList.Clear(); + } + + public override string ToString() + { + return $"{this.ChannelList.Count}Ch,{this.FileList.Count}Files"; + } + } +} diff --git a/Viewer/TrendViewer/Class/EventArgs.cs b/Viewer/TrendViewer/Class/EventArgs.cs new file mode 100644 index 0000000..5fcd5df --- /dev/null +++ b/Viewer/TrendViewer/Class/EventArgs.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace vmsnet +{ + class RemoteCommand : EventArgs + { + public rCommand Command; + public object Data; + public RemoteCommand(rCommand cmd, object data) + { + Command = cmd; + Data = data; + } + } +} diff --git a/Viewer/TrendViewer/Class/StructAndEnum.cs b/Viewer/TrendViewer/Class/StructAndEnum.cs new file mode 100644 index 0000000..cfcdc3d --- /dev/null +++ b/Viewer/TrendViewer/Class/StructAndEnum.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace vmsnet +{ + + // struct SCell + //{ + // public string name; + // public Color backcolor; + // public short idx; + // public string group; + //} + + enum rCommand + { + ValueUpdate, + DisableUIItems, + EnableUIItems, + StateMessage, + UpdateAlarmSetting, + SaveGroupClass, + DAQConnected, + DAQDisconnected, + DAQTryConnect, + RefreshChart, + } + enum ConnState + { + Disconnected, + Connected, + TryConnect, + } +} diff --git a/Viewer/TrendViewer/DS1.Designer.cs b/Viewer/TrendViewer/DS1.Designer.cs new file mode 100644 index 0000000..0a8f32f --- /dev/null +++ b/Viewer/TrendViewer/DS1.Designer.cs @@ -0,0 +1,1380 @@ +//------------------------------------------------------------------------------ +// +// ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +// 런타임 버전:4.0.30319.42000 +// +// íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +// ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +// +//------------------------------------------------------------------------------ + +#pragma warning disable 1591 + +namespace vmsnet { + + + /// + ///Represents a strongly typed in-memory cache of data. + /// + [global::System.Serializable()] + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedDataSetSchema")] + [global::System.Xml.Serialization.XmlRootAttribute("DS1")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.DataSet")] + public partial class DS1 : global::System.Data.DataSet { + + private channelDataTable tablechannel; + + private groupDataTable tablegroup; + + private global::System.Data.SchemaSerializationMode _schemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DS1() { + this.BeginInit(); + this.InitClass(); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + base.Relations.CollectionChanged += schemaChangedHandler; + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected DS1(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context, false) { + if ((this.IsBinarySerialized(info, context) == true)) { + this.InitVars(false); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + this.Tables.CollectionChanged += schemaChangedHandler1; + this.Relations.CollectionChanged += schemaChangedHandler1; + return; + } + string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); + if ((this.DetermineSchemaSerializationMode(info, context) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + if ((ds.Tables["channel"] != null)) { + base.Tables.Add(new channelDataTable(ds.Tables["channel"])); + } + if ((ds.Tables["group"] != null)) { + base.Tables.Add(new groupDataTable(ds.Tables["group"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + } + this.GetSerializationData(info, context); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + this.Relations.CollectionChanged += schemaChangedHandler; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public channelDataTable channel { + get { + return this.tablechannel; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public groupDataTable group { + get { + return this.tablegroup; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.BrowsableAttribute(true)] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Visible)] + public override global::System.Data.SchemaSerializationMode SchemaSerializationMode { + get { + return this._schemaSerializationMode; + } + set { + this._schemaSerializationMode = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataTableCollection Tables { + get { + return base.Tables; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataRelationCollection Relations { + get { + return base.Relations; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void InitializeDerivedDataSet() { + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataSet Clone() { + DS1 cln = ((DS1)(base.Clone())); + cln.InitVars(); + cln.SchemaSerializationMode = this.SchemaSerializationMode; + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeTables() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeRelations() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void ReadXmlSerializable(global::System.Xml.XmlReader reader) { + if ((this.DetermineSchemaSerializationMode(reader) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + this.Reset(); + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXml(reader); + if ((ds.Tables["channel"] != null)) { + base.Tables.Add(new channelDataTable(ds.Tables["channel"])); + } + if ((ds.Tables["group"] != null)) { + base.Tables.Add(new groupDataTable(ds.Tables["group"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXml(reader); + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Xml.Schema.XmlSchema GetSchemaSerializable() { + global::System.IO.MemoryStream stream = new global::System.IO.MemoryStream(); + this.WriteXmlSchema(new global::System.Xml.XmlTextWriter(stream, null)); + stream.Position = 0; + return global::System.Xml.Schema.XmlSchema.Read(new global::System.Xml.XmlTextReader(stream), null); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.InitVars(true); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars(bool initTable) { + this.tablechannel = ((channelDataTable)(base.Tables["channel"])); + if ((initTable == true)) { + if ((this.tablechannel != null)) { + this.tablechannel.InitVars(); + } + } + this.tablegroup = ((groupDataTable)(base.Tables["group"])); + if ((initTable == true)) { + if ((this.tablegroup != null)) { + this.tablegroup.InitVars(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.DataSetName = "DS1"; + this.Prefix = ""; + this.Namespace = "http://tempuri.org/DS1.xsd"; + this.EnforceConstraints = true; + this.SchemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + this.tablechannel = new channelDataTable(); + base.Tables.Add(this.tablechannel); + this.tablegroup = new groupDataTable(); + base.Tables.Add(this.tablegroup); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializechannel() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializegroup() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void SchemaChanged(object sender, global::System.ComponentModel.CollectionChangeEventArgs e) { + if ((e.Action == global::System.ComponentModel.CollectionChangeAction.Remove)) { + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + DS1 ds = new DS1(); + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); + any.Namespace = ds.Namespace; + sequence.Items.Add(any); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void channelRowChangeEventHandler(object sender, channelRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void groupRowChangeEventHandler(object sender, groupRowChangeEvent e); + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class channelDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnuse; + + private global::System.Data.DataColumn columncname; + + private global::System.Data.DataColumn columnc1; + + private global::System.Data.DataColumn columnc2; + + private global::System.Data.DataColumn columncc; + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columntidx; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public channelDataTable() { + this.TableName = "channel"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal channelDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected channelDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn useColumn { + get { + return this.columnuse; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn cnameColumn { + get { + return this.columncname; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn c1Column { + get { + return this.columnc1; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn c2Column { + get { + return this.columnc2; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ccColumn { + get { + return this.columncc; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn tidxColumn { + get { + return this.columntidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public channelRow this[int index] { + get { + return ((channelRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event channelRowChangeEventHandler channelRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event channelRowChangeEventHandler channelRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event channelRowChangeEventHandler channelRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event channelRowChangeEventHandler channelRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddchannelRow(channelRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public channelRow AddchannelRow(bool use, string cname, string c1, string c2, int cc, int idx, int tidx) { + channelRow rowchannelRow = ((channelRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + use, + cname, + c1, + c2, + cc, + idx, + tidx}; + rowchannelRow.ItemArray = columnValuesArray; + this.Rows.Add(rowchannelRow); + return rowchannelRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + channelDataTable cln = ((channelDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new channelDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnuse = base.Columns["use"]; + this.columncname = base.Columns["cname"]; + this.columnc1 = base.Columns["c1"]; + this.columnc2 = base.Columns["c2"]; + this.columncc = base.Columns["cc"]; + this.columnidx = base.Columns["idx"]; + this.columntidx = base.Columns["tidx"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnuse = new global::System.Data.DataColumn("use", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnuse); + this.columncname = new global::System.Data.DataColumn("cname", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columncname); + this.columnc1 = new global::System.Data.DataColumn("c1", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnc1); + this.columnc2 = new global::System.Data.DataColumn("c2", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnc2); + this.columncc = new global::System.Data.DataColumn("cc", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columncc); + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columntidx = new global::System.Data.DataColumn("tidx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columntidx); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public channelRow NewchannelRow() { + return ((channelRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new channelRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(channelRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.channelRowChanged != null)) { + this.channelRowChanged(this, new channelRowChangeEvent(((channelRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.channelRowChanging != null)) { + this.channelRowChanging(this, new channelRowChangeEvent(((channelRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.channelRowDeleted != null)) { + this.channelRowDeleted(this, new channelRowChangeEvent(((channelRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.channelRowDeleting != null)) { + this.channelRowDeleting(this, new channelRowChangeEvent(((channelRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemovechannelRow(channelRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DS1 ds = new DS1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "channelDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class groupDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columncname; + + private global::System.Data.DataColumn columnvalue; + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columngname; + + private global::System.Data.DataColumn columnrname; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public groupDataTable() { + this.TableName = "group"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal groupDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected groupDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn cnameColumn { + get { + return this.columncname; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn valueColumn { + get { + return this.columnvalue; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn gnameColumn { + get { + return this.columngname; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn rnameColumn { + get { + return this.columnrname; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public groupRow this[int index] { + get { + return ((groupRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event groupRowChangeEventHandler groupRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event groupRowChangeEventHandler groupRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event groupRowChangeEventHandler groupRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event groupRowChangeEventHandler groupRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddgroupRow(groupRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public groupRow AddgroupRow(string cname, string value, int idx, string gname, string rname) { + groupRow rowgroupRow = ((groupRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + cname, + value, + idx, + gname, + rname}; + rowgroupRow.ItemArray = columnValuesArray; + this.Rows.Add(rowgroupRow); + return rowgroupRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + groupDataTable cln = ((groupDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new groupDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columncname = base.Columns["cname"]; + this.columnvalue = base.Columns["value"]; + this.columnidx = base.Columns["idx"]; + this.columngname = base.Columns["gname"]; + this.columnrname = base.Columns["rname"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columncname = new global::System.Data.DataColumn("cname", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columncname); + this.columnvalue = new global::System.Data.DataColumn("value", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnvalue); + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columngname = new global::System.Data.DataColumn("gname", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columngname); + this.columnrname = new global::System.Data.DataColumn("rname", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnrname); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public groupRow NewgroupRow() { + return ((groupRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new groupRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(groupRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.groupRowChanged != null)) { + this.groupRowChanged(this, new groupRowChangeEvent(((groupRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.groupRowChanging != null)) { + this.groupRowChanging(this, new groupRowChangeEvent(((groupRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.groupRowDeleted != null)) { + this.groupRowDeleted(this, new groupRowChangeEvent(((groupRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.groupRowDeleting != null)) { + this.groupRowDeleting(this, new groupRowChangeEvent(((groupRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemovegroupRow(groupRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DS1 ds = new DS1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "groupDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class channelRow : global::System.Data.DataRow { + + private channelDataTable tablechannel; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal channelRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tablechannel = ((channelDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool use { + get { + if (this.IsuseNull()) { + return false; + } + else { + return ((bool)(this[this.tablechannel.useColumn])); + } + } + set { + this[this.tablechannel.useColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string cname { + get { + try { + return ((string)(this[this.tablechannel.cnameColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'channel\' í…Œì´ë¸”ì˜ \'cname\' ì—´ì˜ ê°’ì´ DBNull입니다.", e); + } + } + set { + this[this.tablechannel.cnameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string c1 { + get { + if (this.Isc1Null()) { + return string.Empty; + } + else { + return ((string)(this[this.tablechannel.c1Column])); + } + } + set { + this[this.tablechannel.c1Column] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string c2 { + get { + if (this.Isc2Null()) { + return string.Empty; + } + else { + return ((string)(this[this.tablechannel.c2Column])); + } + } + set { + this[this.tablechannel.c2Column] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int cc { + get { + if (this.IsccNull()) { + return 0; + } + else { + return ((int)(this[this.tablechannel.ccColumn])); + } + } + set { + this[this.tablechannel.ccColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int idx { + get { + try { + return ((int)(this[this.tablechannel.idxColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'channel\' í…Œì´ë¸”ì˜ \'idx\' ì—´ì˜ ê°’ì´ DBNull입니다.", e); + } + } + set { + this[this.tablechannel.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int tidx { + get { + try { + return ((int)(this[this.tablechannel.tidxColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'channel\' í…Œì´ë¸”ì˜ \'tidx\' ì—´ì˜ ê°’ì´ DBNull입니다.", e); + } + } + set { + this[this.tablechannel.tidxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsuseNull() { + return this.IsNull(this.tablechannel.useColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetuseNull() { + this[this.tablechannel.useColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IscnameNull() { + return this.IsNull(this.tablechannel.cnameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetcnameNull() { + this[this.tablechannel.cnameColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool Isc1Null() { + return this.IsNull(this.tablechannel.c1Column); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void Setc1Null() { + this[this.tablechannel.c1Column] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool Isc2Null() { + return this.IsNull(this.tablechannel.c2Column); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void Setc2Null() { + this[this.tablechannel.c2Column] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsccNull() { + return this.IsNull(this.tablechannel.ccColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetccNull() { + this[this.tablechannel.ccColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsidxNull() { + return this.IsNull(this.tablechannel.idxColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetidxNull() { + this[this.tablechannel.idxColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IstidxNull() { + return this.IsNull(this.tablechannel.tidxColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SettidxNull() { + this[this.tablechannel.tidxColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class groupRow : global::System.Data.DataRow { + + private groupDataTable tablegroup; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal groupRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tablegroup = ((groupDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string cname { + get { + if (this.IscnameNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tablegroup.cnameColumn])); + } + } + set { + this[this.tablegroup.cnameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string value { + get { + if (this.IsvalueNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tablegroup.valueColumn])); + } + } + set { + this[this.tablegroup.valueColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int idx { + get { + try { + return ((int)(this[this.tablegroup.idxColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'group\' í…Œì´ë¸”ì˜ \'idx\' ì—´ì˜ ê°’ì´ DBNull입니다.", e); + } + } + set { + this[this.tablegroup.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string gname { + get { + if (this.IsgnameNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tablegroup.gnameColumn])); + } + } + set { + this[this.tablegroup.gnameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string rname { + get { + if (this.IsrnameNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tablegroup.rnameColumn])); + } + } + set { + this[this.tablegroup.rnameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IscnameNull() { + return this.IsNull(this.tablegroup.cnameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetcnameNull() { + this[this.tablegroup.cnameColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsvalueNull() { + return this.IsNull(this.tablegroup.valueColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetvalueNull() { + this[this.tablegroup.valueColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsidxNull() { + return this.IsNull(this.tablegroup.idxColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetidxNull() { + this[this.tablegroup.idxColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsgnameNull() { + return this.IsNull(this.tablegroup.gnameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetgnameNull() { + this[this.tablegroup.gnameColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsrnameNull() { + return this.IsNull(this.tablegroup.rnameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetrnameNull() { + this[this.tablegroup.rnameColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class channelRowChangeEvent : global::System.EventArgs { + + private channelRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public channelRowChangeEvent(channelRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public channelRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class groupRowChangeEvent : global::System.EventArgs { + + private groupRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public groupRowChangeEvent(groupRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public groupRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + } +} + +#pragma warning restore 1591 \ No newline at end of file diff --git a/Viewer/TrendViewer/DS1.xsc b/Viewer/TrendViewer/DS1.xsc new file mode 100644 index 0000000..05b0199 --- /dev/null +++ b/Viewer/TrendViewer/DS1.xsc @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/Viewer/TrendViewer/DS1.xsd b/Viewer/TrendViewer/DS1.xsd new file mode 100644 index 0000000..565c7c9 --- /dev/null +++ b/Viewer/TrendViewer/DS1.xsd @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Viewer/TrendViewer/DS1.xss b/Viewer/TrendViewer/DS1.xss new file mode 100644 index 0000000..375a452 --- /dev/null +++ b/Viewer/TrendViewer/DS1.xss @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/Viewer/TrendViewer/Dialog/Frm_SMsg.Designer.cs b/Viewer/TrendViewer/Dialog/Frm_SMsg.Designer.cs new file mode 100644 index 0000000..697ca23 --- /dev/null +++ b/Viewer/TrendViewer/Dialog/Frm_SMsg.Designer.cs @@ -0,0 +1,68 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; + + +namespace vmsnet +{ + partial class Frm_SMsg : System.Windows.Forms.Form + { + + //Formì€ Dispose를 재정ì˜í•˜ì—¬ 구성 요소 목ë¡ì„ 정리합니다. + [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing) + { + try + { + if (disposing && components != null) + { + components.Dispose(); + } + } + finally + { + base.Dispose(disposing); + } + } + + //Windows Form ë””ìžì´ë„ˆì— 필요합니다. + private System.ComponentModel.Container components = null; + + //참고: ë‹¤ìŒ í”„ë¡œì‹œì €ëŠ” Windows Form ë””ìžì´ë„ˆì— 필요합니다. + //수정하려면 Windows Form ë””ìžì´ë„ˆë¥¼ 사용하십시오. + //코드 편집기를 사용하여 수정하지 마십시오. + [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent() + { + this.Label1 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + //Label1 + // + this.Label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.Label1.Location = new System.Drawing.Point(0, 0); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(516, 56); + this.Label1.TabIndex = 0; + this.Label1.Text = "..."; + this.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + //Frm_SMsg + // + this.AutoScaleDimensions = new System.Drawing.SizeF((float) (7.0F), (float) (12.0F)); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(516, 56); + this.Controls.Add(this.Label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "Frm_SMsg"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "잠시만 기다려주세요"; + this.ResumeLayout(false); + + } + internal System.Windows.Forms.Label Label1; + } + +} diff --git a/Viewer/TrendViewer/Dialog/Frm_SMsg.cs b/Viewer/TrendViewer/Dialog/Frm_SMsg.cs new file mode 100644 index 0000000..15cf326 --- /dev/null +++ b/Viewer/TrendViewer/Dialog/Frm_SMsg.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; + +namespace vmsnet +{ + public partial class Frm_SMsg + { + public Frm_SMsg() + { + InitializeComponent(); + } + } +} diff --git a/Viewer/TrendViewer/Dialog/Frm_SMsg.resx b/Viewer/TrendViewer/Dialog/Frm_SMsg.resx new file mode 100644 index 0000000..d58980a --- /dev/null +++ b/Viewer/TrendViewer/Dialog/Frm_SMsg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Viewer/TrendViewer/Dialog/Frm_SelectCH.Designer.cs b/Viewer/TrendViewer/Dialog/Frm_SelectCH.Designer.cs new file mode 100644 index 0000000..37a992c --- /dev/null +++ b/Viewer/TrendViewer/Dialog/Frm_SelectCH.Designer.cs @@ -0,0 +1,168 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; + +namespace vmsnet +{ + partial class Frm_SelectCH : System.Windows.Forms.Form + { + + //Formì€ Dispose를 재정ì˜í•˜ì—¬ 구성 요소 목ë¡ì„ 정리합니다. + [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing) + { + try + { + if (disposing && components != null) + { + components.Dispose(); + } + } + finally + { + base.Dispose(disposing); + } + } + + //Windows Form ë””ìžì´ë„ˆì— 필요합니다. + private System.ComponentModel.Container components = null; + + //참고: ë‹¤ìŒ í”„ë¡œì‹œì €ëŠ” Windows Form ë””ìžì´ë„ˆì— 필요합니다. + //수정하려면 Windows Form ë””ìžì´ë„ˆë¥¼ 사용하십시오. + //코드 편집기ì—서는 수정하지 마세요. + [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Frm_SelectCH)); + this.Button1 = new System.Windows.Forms.Button(); + this.Panel1 = new System.Windows.Forms.Panel(); + this.Button4 = new System.Windows.Forms.Button(); + this.Button3 = new System.Windows.Forms.Button(); + this.Button2 = new System.Windows.Forms.Button(); + this.CheckedListBox1 = new System.Windows.Forms.ListView(); + this.ColumnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.Panel1.SuspendLayout(); + this.SuspendLayout(); + // + // Button1 + // + this.Button1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.Button1.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Button1.Location = new System.Drawing.Point(0, 624); + this.Button1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.Button1.Name = "Button1"; + this.Button1.Size = new System.Drawing.Size(388, 101); + this.Button1.TabIndex = 1; + this.Button1.Text = "확ì¸"; + this.Button1.UseVisualStyleBackColor = true; + this.Button1.Click += new System.EventHandler(this.Button1_Click); + // + // Panel1 + // + this.Panel1.Controls.Add(this.Button4); + this.Panel1.Controls.Add(this.Button3); + this.Panel1.Controls.Add(this.Button2); + this.Panel1.Dock = System.Windows.Forms.DockStyle.Right; + this.Panel1.Location = new System.Drawing.Point(219, 0); + this.Panel1.Name = "Panel1"; + this.Panel1.Size = new System.Drawing.Size(169, 624); + this.Panel1.TabIndex = 2; + // + // Button4 + // + this.Button4.Dock = System.Windows.Forms.DockStyle.Top; + this.Button4.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Button4.Location = new System.Drawing.Point(0, 166); + this.Button4.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.Button4.Name = "Button4"; + this.Button4.Size = new System.Drawing.Size(169, 83); + this.Button4.TabIndex = 4; + this.Button4.Text = "ì„ íƒ ë°˜ì „"; + this.Button4.UseVisualStyleBackColor = true; + this.Button4.Visible = false; + this.Button4.Click += new System.EventHandler(this.Button4_Click); + // + // Button3 + // + this.Button3.Dock = System.Windows.Forms.DockStyle.Top; + this.Button3.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Button3.Location = new System.Drawing.Point(0, 83); + this.Button3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.Button3.Name = "Button3"; + this.Button3.Size = new System.Drawing.Size(169, 83); + this.Button3.TabIndex = 3; + this.Button3.Text = "ì „ì²´ í•´ì œ"; + this.Button3.UseVisualStyleBackColor = true; + this.Button3.Click += new System.EventHandler(this.Button3_Click); + // + // Button2 + // + this.Button2.Dock = System.Windows.Forms.DockStyle.Top; + this.Button2.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Button2.Location = new System.Drawing.Point(0, 0); + this.Button2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.Button2.Name = "Button2"; + this.Button2.Size = new System.Drawing.Size(169, 83); + this.Button2.TabIndex = 2; + this.Button2.Text = "ì „ì²´ ì„ íƒ"; + this.Button2.UseVisualStyleBackColor = true; + this.Button2.Visible = false; + this.Button2.Click += new System.EventHandler(this.Button2_Click); + // + // CheckedListBox1 + // + this.CheckedListBox1.CheckBoxes = true; + this.CheckedListBox1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.ColumnHeader2}); + this.CheckedListBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.CheckedListBox1.FullRowSelect = true; + this.CheckedListBox1.GridLines = true; + this.CheckedListBox1.HideSelection = false; + this.CheckedListBox1.Location = new System.Drawing.Point(0, 0); + this.CheckedListBox1.MultiSelect = false; + this.CheckedListBox1.Name = "CheckedListBox1"; + this.CheckedListBox1.Size = new System.Drawing.Size(219, 624); + this.CheckedListBox1.TabIndex = 3; + this.CheckedListBox1.UseCompatibleStateImageBehavior = false; + this.CheckedListBox1.View = System.Windows.Forms.View.Details; + // + // ColumnHeader2 + // + this.ColumnHeader2.Text = "Title"; + this.ColumnHeader2.Width = 214; + // + // Frm_SelectCH + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(388, 725); + this.Controls.Add(this.CheckedListBox1); + this.Controls.Add(this.Panel1); + this.Controls.Add(this.Button1); + this.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "Frm_SelectCH"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "ì±„ë„ ì„ íƒ"; + this.Load += new System.EventHandler(this.Frm_SelectCH_Load); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Frm_SelectCH_KeyDown); + this.Panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + internal Button Button1; + internal Panel Panel1; + internal Button Button2; + internal Button Button4; + internal Button Button3; + internal ColumnHeader ColumnHeader2; + public ListView CheckedListBox1; + } + +} diff --git a/Viewer/TrendViewer/Dialog/Frm_SelectCH.cs b/Viewer/TrendViewer/Dialog/Frm_SelectCH.cs new file mode 100644 index 0000000..7585c29 --- /dev/null +++ b/Viewer/TrendViewer/Dialog/Frm_SelectCH.cs @@ -0,0 +1,92 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; +using AR; + +namespace vmsnet +{ + public partial class Frm_SelectCH + { + + public Frm_SelectCH(TrendCtrlII.CChinfo[] lst) + { + + // ë””ìžì´ë„ˆì—서 ì´ í˜¸ì¶œì´ í•„ìš”í•©ë‹ˆë‹¤. + InitializeComponent(); + + // InitializeComponent() 호출 ë’¤ì— ì´ˆê¸°í™” 코드를 추가하세요. + this.CheckedListBox1.Items.Clear(); + + foreach (var item in lst) + { + ListViewItem lv = this.CheckedListBox1.Items.Add(System.Convert.ToString(item.TITLE)); + lv.SubItems.Add(item.TITLE.ToString()); + //lv.SubItems.Add(item.CH) + lv.Checked = item.Show; + lv.Tag = item.Idx; + lv.BackColor = item.Show ? Color.Lime : Color.White; + } + + CheckedListBox1.ItemChecked += CheckedListBox1_ItemChecked; + } + + private void CheckedListBox1_ItemChecked(object sender, ItemCheckedEventArgs e) + { + e.Item.BackColor = e.Item.Checked ? Color.Lime : Color.White; + } + + public void Frm_SelectCH_Load(object sender, EventArgs e) + { + + } + + public void Frm_SelectCH_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) + { + this.Close(); + } + } + + public void Button2_Click(object sender, EventArgs e) + { + foreach (ListViewItem item in CheckedListBox1.Items) + { + item.Checked = true; + item.BackColor = item.Checked ? Color.Lime : Color.White; + } + } + + public void Button3_Click(object sender, EventArgs e) + { + foreach (ListViewItem item in CheckedListBox1.Items) + { + item.Checked = false; + item.BackColor = item.Checked ? Color.Lime : Color.White; + } + } + + public void Button4_Click(object sender, EventArgs e) + { + foreach (ListViewItem item in CheckedListBox1.Items) + { + item.Checked = !item.Checked; + item.BackColor = item.Checked ? Color.Lime : Color.White; + } + } + + public void Button1_Click(object sender, EventArgs e) + { + if (CheckedListBox1.CheckedItems.Count > 10) + { + UTIL.MsgE("최대 10개까지 ì„ íƒ ê°€ëŠ¥ 합니다"); + return ; + } + DialogResult = DialogResult.OK; + } + } +} diff --git a/Viewer/TrendViewer/Dialog/Frm_SelectCH.resx b/Viewer/TrendViewer/Dialog/Frm_SelectCH.resx new file mode 100644 index 0000000..06ea6a8 --- /dev/null +++ b/Viewer/TrendViewer/Dialog/Frm_SelectCH.resx @@ -0,0 +1,377 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA + AABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcrvQCHK70BByu + 9AYcrvQKHK70DByu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu + 9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu + 9A0crvQNHK70DRyu9A0crvQNHK70DRyu9A0crvQNHK70DRyu9AwcrvQKHK70Bxyu9AQcrvQCAAAAAByu + 9AIcrvQGHK70DByu9BUcrvQdHK70Ixyu9CYcrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu + 9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu + 9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jxyu9CccrvQnHK70Jhyu9CMcrvQdHK70FRyu + 9AwcrvQGHK70Ahyu9AMcrvQMHK70GRyu9CocrvQ7HK70Rhyu9EwcrvROHK70Thyu9E4crvROHK70Thyu + 9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu + 9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70Thyu9E4crvROHK70TRyu + 9EYcrvQ7HK70Kxyu9BkcrvQMHK70BByu9AUcrvQSHK70Jwuh7VYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ + 6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ + 6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ6WYAmelmAJnpZgCZ + 6WYAmelmAJnpZgCZ6WYAmelmCqDtWByu9CgcrvQTHK70Bhyu9AYcrvQWHK70Lgmi7nEYsvzXHLb//xy2 + //8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2 + //8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2//8ctv//HLb//xy2 + //8ctv//HLb//xy2//8ctv//HLb//xy2//8Zs/3fC6PweRyu9C4crvQWHK70Bxyu9AYcrvQUHK70Kxex + +8Actv//HLb//x23//8et///ILj//yK6//8lu///Kb3//yzA//8wwv//NcT//znH//89yv//Qcv//0bN + //9Kz///TdH//1HS//9T1P//V9X//1nW//9X1f//U9T//1HS//9N0f//Ss///0bN//9By///Pcr//znH + //81xP//MML//yzA//8pvf//Jbv//yK6//8guP//Hrf//xy2//8ctv//GbP81Ryu9CwcrvQVHK70Bhyu + 9AQcrvQPHK70IBu1/tUctv//HLb//x63//8nuv//JLv//ym9//8uwP//M8P//zrH//9By///R87//0/R + //9X1f//Xdj//2Tb//9r3f//cd///3bi//974///f+X//4Dm//9/5f//e+P//3bi//9x3///a93//2Tb + //9d2P//V9X//0/R//9Hzv//Qcv//zrH//8zw///LsD//ym9//8mu///JLr//x63//8ctv//HLb/8hyu + 9CAcrvQQHK70BRyu9AIcrvQIHK70Ehy1/qIctv//HLb//za+//8juf//Irn//yW8//8rv///MML//zbF + //89yf//RM3//0rQ//9S0///Wdb//1/Z//9m3P//a97//3Hg//904v//d+L//3jk//934v//dOL//3Hg + //9r3v//Ztz//1/Z//9Z1v//UtP//0rQ//9Ezf//Pcn//zbF//8wwv//K7///yW8//8iuf//Mr7//x23 + //8ctv//HLb/xRyu9BIcrvQIHK70Ahyu9AEcrvQEHK70CBy0/C8ctv/8HLb//1PJ//8kuv//Ibn//yW7 + //8qv///MMH//zXE//87yP//Qsv//0nP//9Q0///Vtb//13Y//9j2v//ad3//23e//9x4P//c+H//3Ti + //9z4f//ceD//23e//9p3f//Y9r//13Y//9W1v//UNP//0nP//9Cy///O8j//zXE//8wwf//Kr///yW7 + //8iuf//Q8P//yO5//8ctv//HLX+TByu9AgcrvQEHK70AQAAAAAcrvQBHK70Ahyu9AMctv+bHLb//0/H + //83wP//Irn//yS7//8ovf//LsD//zTE//86yP//QMv//0bO//9N0f//VNT//1nW//9f2f//ZNv//2nd + //9r3v//bd7//27g//9t3v//a97//2nd//9k2///X9n//1nW//9U1P//TdH//0bO//9Ay///Osj//zTE + //8uwP//KL3//yS7//8lu///ac///x+4//8ctv++HK70Axyu9AIcrvQBAAAAAAAAAAAAAAAAAAAAAAAA + AAActv8bHLb/9iS4//9mz///I7r//yK6//8nvf//LL///zLC//83xf//Pcn//0PN//9K0P//UNP//1XV + //9a1///X9n//2Pa//9r3f//zvT//+37//+w7f//Ztz//2Pa//9f2f//Wtf//1XV//9Q0///StD//0PN + //89yf//N8X//zLC//8sv///J73//yS6//89wf//Usn//xy2//8ctv82AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAHLb/jRy2//9Vyv//OMD//yO5//8lvP//Kr///y7B//80xP//Osj//0DL + //9Gzf//StD//1DT//9V1f//Wdb//13Y//+f6P//////////////////dN7//13Y//9Z1v//VdX//1DT + //9K0P//Rs3//0DL//86yP//NMT//y7B//8qv///Jbz//ya7//9q0P//JLn//xy2/64AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Ehy2//Mluf//aM///yS6//8juv//J73//yy/ + //8xwv//NsX//zvI//9By///Rs7//0rQ//9Q0///VNT//1bW//+T5P/////////////7/v//adr//1bW + //9U1P//UNP//0rQ//9Gzv//Qcv//zvI//82xf//McL//yy///8nvf//JLr//z7C//9SyP//HLb//By2 + /yoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/34ctv//VMr//zrA + //8juf//Jbz//ym9//8uwP//MsL//zfF//88yf//Qcv//0bN//9K0P//TdH//1DT//9U1P//nuf//8fx + //+C4P//UtP//1DT//9N0f//StD//0bN//9By///PMn//zfF//8ywv//LsD//ym9//8lvP//Jrv//2rQ + //8kuf//HLb/ogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2 + /wwctv/tJLn//2nP//8nu///Jrv//yq9//8twP//MsL//zbE//87x///P8n//0TM//9Izf//S8///03Q + //9P0f//UdH//1HS//9R0f//T9H//03Q//9Lz///SM3//0TM//8/yf//O8f//zbE//8ywv//LcD//yq9 + //8nu///QsL//1HI//8ctv/5HLb/IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAActv9yHLb//1TJ//8/wv//J7v//yq8//8uvv//MsH//zXD//86xP//Psf//0LK + //9Fy///SMz//0rN//9Mzv//Tc///07P//9Nz///TM7//0rN//9IzP//Rcv//0LK//8+x///OsT//zXD + //8ywf//Lr7//yq8//8svP//bdH//yS5//8ctv+TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv8GHLb/5CS4//9s0f//Lbz//yy8//8vvf//Mr///zXC + //85w///PcX//0DI//9Dyf//Rsr//0nL//9Ozf//1fP///n9//+K3v//Ssz//0nL//9Gyv//Q8n//0DI + //89xf//OcP//zXC//8yv///L73//yy8//9GxP//UMj//xy2//Mctv8YAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Zhy2//9Vyf//RcP//y68 + //8wvf//Mr7//zbA//85wf//PMP//0DE//9Cx///RMf//0bJ//9w1f/////////////Q8f//R8n//0bJ + //9Ex///Qsf//0DE//88w///OcH//zbA//8yvv//ML3//zK+//9w0v//I7n//xy2/4cAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Axy2 + /9siuP//b9H//zW+//8yvv//NL///zbA//84wv//O8L//z7D//9Axf//QsX//0TH//9x1f////////// + ///U8v//Rcj//0TH//9Cxf//QMX//z7D//87wv//OML//zbA//80v///Mr7//03F//9PyP//HLb/7Ry2 + /xIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABy2/1cctv//VMn//0zF//81vv//Nr///ze///85wP//O8H//zzC//8/w///QcT//0LE + //9v0//////////////T8v//Q8X//0LE//9BxP//P8P//zzC//87wf//OcD//ze///82v///OMD//3LS + //8guP//HLb/eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/wMctv/PIrj//3TT//88wP//OsD//zvA//88wf//PsL//z/C + //9Aw///QsP//0PD//9w0//////////////T8v//RMX//0PD//9Cw///QMP//z/C//8+wv//PMH//zvA + //87wP//VMn//1DI//8ctv/nHLb/DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv9OHLb//1PJ//9Vyf//PsD//z7B + //8/wf//QMH//0HC//9Cwv//Q8P//0PD//9w0v/////////////T8f//RMP//0PD//9Dw///QsL//0HC + //9Awf//P8H//z7B//9Bwv//d9X//x+3//8ctv9sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/xiK4 + //961f//RsT//0LC//9Cwv//Q8P//0TD//9Fw///RcP//0bE//9x0//////////////U8f//RsT//0bE + //9Fw///RcP//0TD//9Dw///QsL//0PC//9dzP//Ucj//xy2/94ctv8GAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAHLb/Pxy2//9Vyf//Xs3//0nE//9IxP//SMT//0jE//9IxP//ScT//0nF//900/////////// + ///V8v//SsX//0nF//9JxP//SMT//0jE//9IxP//SMT//0zH//991f//H7f//xy2/10AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/7oiuP//ftb//1LI//9Ox///Tsf//07H//9Ox///Tsf//07H + //931P/////////////W8v//Tsf//07H//9Ox///Tsf//07H//9Ox///Tsf//2bP//9RyP//HLb/1Ry2 + /wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/zMctv//Vsn//2jP//9Uyf//U8n//1PJ + //9Tyf//U8n//1PJ//971v/////////////X8v//U8n//1PJ//9Tyf//U8n//1PJ//9Tyf//V8r//4HY + //8ft///HLb/UQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv+rIbj//4XZ + //9dzP//Wsv//1rL//9ay///Wsv//1rL//+B1//////////////Y8///Wsv//1rL//9ay///Wsv//1rL + //9ay///cdL//1LJ//8ctv/JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAActv8nHLb//FfK//900///Yc3//2DN//9gzf//YM3//2DN//+F2f/////////////a8///YM3//2DN + //9gzf//YM3//2DN//9kzv//h9n//x+3//8ctv9CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAHLb/nB+3//+L2///atD//2bP//9mz///Zs///2bP//+K2v////////// + ///b9P//Zs///2bP//9mz///Zs///2fP//981f//Usn//xy2/70AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Gxy2//lYyv//f9b//23R//9t0f//bdH//23R + //+P3P/////////////d9P//bdH//23R//9t0f//bdH//3DR//+M2v//Hrf//xy2/zYAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/40ft///ktz//3bU + //9z0///c9P//3PT//+U3f/////////////e9f//c9P//3PT//9z0///c9P//4bZ//9SyP//HLb/rgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2 + /xUctv/zWMr//4ra//961f//etX//3rV//+Z3//////////////g9f//etX//3rV//961f//fdX//5Hc + //8et//8HLb/KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAActv+BH7f//5be//+C2P//gNf//4DX//+Q3P///v/////////Q8P//gNf//4DX + //+A1///kd3//1TJ//8ctv+iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv8MHLb/7VnK//+V3f//htn//4bZ//+G2f//m+D//6/m + //+K2v//htn//4bZ//+J2f//lt3//x63//kctv8hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/ciC3//+a3///j9z//43b + //+N2///jdv//43b//+N2///jdv//43b//+b4P//VMn//xy2/5MAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/Bhy2 + /+RZyv//n+H//5Pd//+T3f//k93//5Pd//+T3f//k93//5bd//+a3///Hrf/8xy2/xsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABy2/2Met///oOH//5vg//+a3///mt///5rf//+a3///mt///6bj//9Uyf//HLb/hwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/wMctv/YWcr//6rk//+f4f//n+H//5/h//+f4f//ouH//57h + //8et//tHLb/EgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv9UHrf//6Ti//+m4///peL//6Xi + //+l4v//r+X//1LI//8ctv97AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/zFrL + //+z6P//quX//6rl//+s5f//oeL//x63/+cctv8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAHLb/RR63//+p5P//tuj//7Pn//+96v//VMn//xy2/2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/71GxP//wuz//8Xt//+S3f//HLb/3hy2/wYAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/zYctv//Mr3//1HI//8iuP//HLb/YAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv+HHLb//xy2 + //8ctv+lHLb/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAHLb/Jxy2/zYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP////////z9gAAAAAAB/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAA + AAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9gAAAAAAB/P3wAAAAAA/8/fgAAAAAH/z9+AAAAAAf + /P38AAAAAD/8/fwAAAAAP/z9/gAAAAB//P3+AAAAAH/8/f8AAAAA//z9/wAAAAD//P3/gAAAAf/8/f+A + AAAB//z9/8AAAAP//P3/4AAAA//8/f/gAAAH//z9//AAAAf//P3/8AAAD//8/f/4AAAf//z9//gAAB// + /P3//AAAP//8/f/8AAA///z9//4AAH///P3//gAAf//8/f//AAD///z9//8AAP///P3//4AB///8/f// + gAH///z9///AA////P3//8AD///8/f//4Af///z9///wB////P3///AP///8/f//+A////z9///4H/// + /P3///wf///8/f///n////z9/////////P3////////8/SgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAHK70ARuu9AIcrvQEG670BByu9AQbrvQEHK70BBuu9AQcrvQEG670BByu + 9AQbrvQEHK70BBuu9AQcrvQEG670BByu9AQbrvQEHK70BBuu9AQcrvQEG670BByu9AQbrvQEHK70BBuu + 9AQcrvQEG670BByu9AMbrvQBAAAAABuu9AIbrvQIG670Ehuu9BobrvQeG670Hhuu9B4brvQeG670Hhuu + 9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu9B4brvQeG670Hhuu + 9B4brvQeG670Hhuu9B4brvQaG670Ehuu9AgbrvQCG670Bxyu9BgVqPE+EqfwThKn8FUSp/BWEqfwVhKn + 8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn + 8FYSp/BWEqfwVhKn8FYSp/BWEqfwVhKn8E4UqPE/G670GRyu9AgbrvQLG670JAuk8IARq/bDEqz3zBKs + 98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs + 98wSrPfMEqz3zBKs98wSrPfMEqz3zBKs98wSrPfMEqv3xQyk8YYbrvQkG670Cxuu9AocrvQgGbP92hy2 + //8et///Ibj//yW7//8qvv//MsP//znG//9Cy///SM7//1HS//9X1f//Xtf//2PZ//9l2///Ydn//1vW + //9W1P//TtD//0fO//8+yf//N8X//y/B//8pvf//I7r//yC4//8ctv//GrT96Ruu9CEcrvQKG670BRuu + 9BMbtf7MG7b//yq6//8juf//KL3//y/B//85x///Qsz//07R//9Y1f//Ytr//2vd//9z4f//eOL//3rk + //934v//cN///2nd//9e2P//VdT//0nP//9Ayv//NcT//y3A//8lu///Krv//xy2//8btv/iG670Exuu + 9AYbrvQBHK70BRuz+18ctv/zRMT//yS6//8mvP//Lb///zbF//8/yv//Ss///1PU//9d2P//Zdv//2ze + //9w3///ceD//2/f//9q3f//Y9r//1nW//9R0///Rc3//zzJ//8ywv//K7///yS6//9Awv//H7f/+Byz + /HAbrvQFHK70AQAAAAAbrvQBG7L6GBu2/70+wf//M7///yS7//8qvv//NMP//zvI//9Gzv//T9L//1jW + //9f2f//Z9v//5fn//+17v//eOD//2Pa//9d2P//VNT//03R//9CzP//Osf//zDB//8pvf//Kbv//03H + //8ctv/LG7L6Ihuu9AEAAAAAAAAAAAAAAAAAAAAAHLb/Qym6//xHxP//I7r//ye9//8vwf//NsX//0DK + //9Hzv//T9L//1bV//9w3P//3fb///7+//+f6P//Wdb//1TU//9M0f//Rc3//zzJ//80xP//K7///ya8 + //8/wv//Nr///hu2/1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv8EHLb/w0bE//8tvP//JLv//yu+ + //8xwv//Osf//0HL//9Iz///TtH//1nV//+h5///yfH//3Tc//9R0///TdH//0XN//8/yv//NsX//zDB + //8ovf//Jbv//07G//8juP/VG7b/CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv9HH7f/61HH + //8pu///K73//zDA//83xP//Pcf//0TL//9Jzf//TM///0/Q//9P0P//TtD//0vO//9IzP//Qcr//zzG + //80w///LsD//ym8//9Dw///Nb7/8hy2/1YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABu2 + /w4btv+sQcL//zvB//8svP//ML7//zbC//88xP//Qcn//0XK//9KzP//id7//6fm//9Y0P//SMv//0TK + //8/x///OsT//zTB//8vvv//Mb3//1DH//8dtv+6G7b/FgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABy2/y4puv/3Tsb//zC8//8yvv//NsD//zrC//9AxP//Qsb//1PM///P8f//7/r//3TW + //9Ex///Qsb//z7D//85wf//NL///zG9//9Jxf//N7//+xu2/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAG7b/ARy2/6xIxP//PsH//zS+//83v///OsH//z3C//9AxP//Ucn//8/w + ///w+v//c9T//0LE//9Aw///PML//znA//82v///Nb///1PI//8iuP+/G7b/BAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG7b/OB62/+Fcy///PsH//zzA//8+wf//QML//0HC + //9SyP//z/D///D6//9z0///QsP//0HC//8/wf//PcH//zzA//9UyP//M77/6Ry2/0UAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv8JG7b/mUbE//9Rx///QMH//0HC + //9Dwv//RML//1PI///P8P//8Pr//3TS//9Ew///RML//0LC//9Bwf//R8T//1rL//8ctv+pG7b/DQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAActv8cKbr/8FzL + //9Lxf//SsX//0rF//9Kxf//WMr//9Hw///x+v//edT//0rF//9Kxf//SsX//0rF//9dzP//OL//9hu2 + /yoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAActv+VTMX//1vL//9RyP//Ucj//1HI//9ezP//0vH///H6//991v//Ucj//1HI//9RyP//U8j//1/M + //8iuP+oG7b/AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABu2/yoetv/UcNL//1/M//9cy///XMv//2jP///V8f//8vv//4XY//9cy///XMv//1zL + //9v0f//NL7/3hy2/zQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAG7b/BBu2/4JMxv//cNL//2TO//9kzv//cNL//9fy///y+///i9r//2TO + //9kzv//ac///2nP//8ctv+UG7b/BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/DCm6/+Nv0f//b9H//2/R//961f//2vP///P7 + //+T3f//b9H//2/R//930///O8D/7Ru2/xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLb/e1HH//x/1v//d9T//4LX + ///c9P//9Pv//5rf//931P//edT//27Q//4iuP+OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv8eHbb/xIPY + //+E2P//hdj//8Ls///V8v//lN3//4LX//+N2///Nb7/0By2/ygAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABu2 + /wEbtv9pVMj//5Dc//+K2v//j9v//5Td//+L2v//jtv//3jU//8ctv98G7b/BAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABy2/wMpuv/Qgdf//5Xd//+V3f//ld3//5Xd//+T3P//P8H/3xu2/wwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/2RUyP/2ouH//53g//+d4P//nuD//3vV//siuP93AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG7b/Exy2/7GV3f//p+P//6bj//+p4///NL7/wRy2 + /x0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG7b/TFrK//+w5v//suf//4bZ + //8ctv9lG7b/AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJbn/tXTS + //+N2///Nr7/zRu2/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAbtv9GILf/5Ci6/+sctv9YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAActv8RG7b/GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAA + AAHgAAAH4AAAB/AAAA/wAAAP+AAAH/gAAB/8AAA//AAAP/4AAH//AAB//wAA//8AAP//gAH//8AD///A + A///wAP//+AH///wD///8A////gP///8H////D////5///////8oAAAAEAAAACAAAAABACAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAG670Axuu9A0brvQRG670ERuu9BEbrvQRG670ERuu9BEbrvQRG670ERuu + 9BEbrvQRG670ERuu9BEbrvQNG670Axuu9BQRp/J0Eqn0kRKp9JESqfSREqn0kRKp9JESqfSREqn0kRKp + 9JESqfSREqn0kRKp9JESqfSREafydhuu9BQbrvQQG7X+6SO5/v8qvv7/Osf+/0zQ/v9d1/7/a93+/27e + /v9j2v7/UtP+/z/K/v8uwP7/JLr+/xy1/vIbrvQRG670Ahu0/Yo2v/7/KL3+/znG/v9M0f7/Xtj+/3bg + /v+D4/7/Y9r+/1PU/v8/yv7/LsD+/zfA/v8dtf2VG670AgAAAAAbtv4SNb7+7ye7/v8wwv7/QMr+/0/S + /v+S5P7/t+3+/1PU/v9Fzf7/NsX+/yi9/v86wP70G7b+GAAAAAAAAAAAAAAAAB22/ns9wf7/Lr7+/znE + /v9Fy/7/XNL+/2fW/v9IzP7/Psf+/zHA/v87wf7/JLn+hgAAAAAAAAAAAAAAAAAAAAAbtv4MN77+6DW+ + /v84wP7/QMT+/5He/v+y5/7/QsX+/zvC/v80vv7/PcH+7hu2/hEAAAAAAAAAAAAAAAAAAAAAAAAAAB22 + /m9Mxf7/P8H+/0LC/v+R3P7/sub+/0PD/v9Awf7/TMb+/yO4/nkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAbtv4HO8D+4VDH/v9Nxv7/lt7+/7bo/v9Nxv7/Tsb+/0bE/ucbtv4LAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABy2/mFjzf7/YM3+/6Hh/v+96v7/YM3+/2fP/v8nuv5rAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAbtv4DQcL+1nXT/v+s5f7/xez+/3PT/v9Rx/7eG7b+BgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/lN71f7/mN7+/6Lh/v+F2P7/J7r+XgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbtv4BR8T+yprf/v+Z3/7/XMv+1Bu2/gMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy2/kSS3P7/ouH+/ye5/lEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOL/+uELC/sQbtv4BAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABu2/gQbtv4GAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArEEAAKxBAACsQQAArEGAAaxBwAOsQcADrEHgB6xB4AesQfAP + rEHwD6xB+B+sQfgfrEH8P6xB/j+sQf5/rEE= + + + \ No newline at end of file diff --git a/Viewer/TrendViewer/Dialog/fPleaseWait.Designer.cs b/Viewer/TrendViewer/Dialog/fPleaseWait.Designer.cs new file mode 100644 index 0000000..08f0f85 --- /dev/null +++ b/Viewer/TrendViewer/Dialog/fPleaseWait.Designer.cs @@ -0,0 +1,64 @@ +namespace vmsnet +{ + partial class fPleaseWait + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.White; + this.label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.label1.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 30F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(800, 450); + this.label1.TabIndex = 0; + this.label1.Text = "잠시만 기다려 주세요"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // fPleaseWait + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.label1); + this.DoubleBuffered = true; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "fPleaseWait"; + this.Text = "f"; + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label label1; + } +} \ No newline at end of file diff --git a/Viewer/TrendViewer/Dialog/fPleaseWait.cs b/Viewer/TrendViewer/Dialog/fPleaseWait.cs new file mode 100644 index 0000000..6f2ff52 --- /dev/null +++ b/Viewer/TrendViewer/Dialog/fPleaseWait.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace vmsnet +{ + public partial class fPleaseWait : Form + { + public fPleaseWait() + { + InitializeComponent(); + } + } +} diff --git a/Viewer/TrendViewer/Dialog/fPleaseWait.resx b/Viewer/TrendViewer/Dialog/fPleaseWait.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Viewer/TrendViewer/Dialog/fPleaseWait.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Viewer/TrendViewer/DocumentElement.Designer.cs b/Viewer/TrendViewer/DocumentElement.Designer.cs new file mode 100644 index 0000000..4dd25c3 --- /dev/null +++ b/Viewer/TrendViewer/DocumentElement.Designer.cs @@ -0,0 +1,6743 @@ +//------------------------------------------------------------------------------ +// +// ì´ ì½”ë“œëŠ” ë„구를 사용하여 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. +// 런타임 버전:4.0.30319.42000 +// +// íŒŒì¼ ë‚´ìš©ì„ ë³€ê²½í•˜ë©´ ìž˜ëª»ëœ ë™ìž‘ì´ ë°œìƒí•  수 있으며, 코드를 다시 ìƒì„±í•˜ë©´ +// ì´ëŸ¬í•œ 변경 ë‚´ìš©ì´ ì†ì‹¤ë©ë‹ˆë‹¤. +// +//------------------------------------------------------------------------------ + +#pragma warning disable 1591 + +namespace vmsnet { + + + /// + ///Represents a strongly typed in-memory cache of data. + /// + [global::System.Serializable()] + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedDataSetSchema")] + [global::System.Xml.Serialization.XmlRootAttribute("DocumentElement")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.DataSet")] + public partial class DocumentElement : global::System.Data.DataSet { + + private CHANNELDataTable tableCHANNEL; + + private DEVICEDataTable tableDEVICE; + + private GRPDataTable tableGRP; + + private NORMALDataTable tableNORMAL; + + private VIEWGROUPDataTable tableVIEWGROUP; + + private WINDataTable tableWIN; + + private ALARMDataTable tableALARM; + + private VIEWGROUPRDataTable tableVIEWGROUPR; + + private TRENDVIEWCHLISTDataTable tableTRENDVIEWCHLIST; + + private global::System.Data.SchemaSerializationMode _schemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DocumentElement() { + this.BeginInit(); + this.InitClass(); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + base.Relations.CollectionChanged += schemaChangedHandler; + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected DocumentElement(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context, false) { + if ((this.IsBinarySerialized(info, context) == true)) { + this.InitVars(false); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + this.Tables.CollectionChanged += schemaChangedHandler1; + this.Relations.CollectionChanged += schemaChangedHandler1; + return; + } + string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); + if ((this.DetermineSchemaSerializationMode(info, context) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + if ((ds.Tables["CHANNEL"] != null)) { + base.Tables.Add(new CHANNELDataTable(ds.Tables["CHANNEL"])); + } + if ((ds.Tables["DEVICE"] != null)) { + base.Tables.Add(new DEVICEDataTable(ds.Tables["DEVICE"])); + } + if ((ds.Tables["GRP"] != null)) { + base.Tables.Add(new GRPDataTable(ds.Tables["GRP"])); + } + if ((ds.Tables["NORMAL"] != null)) { + base.Tables.Add(new NORMALDataTable(ds.Tables["NORMAL"])); + } + if ((ds.Tables["VIEWGROUP"] != null)) { + base.Tables.Add(new VIEWGROUPDataTable(ds.Tables["VIEWGROUP"])); + } + if ((ds.Tables["WIN"] != null)) { + base.Tables.Add(new WINDataTable(ds.Tables["WIN"])); + } + if ((ds.Tables["ALARM"] != null)) { + base.Tables.Add(new ALARMDataTable(ds.Tables["ALARM"])); + } + if ((ds.Tables["VIEWGROUPR"] != null)) { + base.Tables.Add(new VIEWGROUPRDataTable(ds.Tables["VIEWGROUPR"])); + } + if ((ds.Tables["TRENDVIEWCHLIST"] != null)) { + base.Tables.Add(new TRENDVIEWCHLISTDataTable(ds.Tables["TRENDVIEWCHLIST"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + } + this.GetSerializationData(info, context); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + this.Relations.CollectionChanged += schemaChangedHandler; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public CHANNELDataTable CHANNEL { + get { + return this.tableCHANNEL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public DEVICEDataTable DEVICE { + get { + return this.tableDEVICE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public GRPDataTable GRP { + get { + return this.tableGRP; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public NORMALDataTable NORMAL { + get { + return this.tableNORMAL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public VIEWGROUPDataTable VIEWGROUP { + get { + return this.tableVIEWGROUP; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public WINDataTable WIN { + get { + return this.tableWIN; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public ALARMDataTable ALARM { + get { + return this.tableALARM; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public VIEWGROUPRDataTable VIEWGROUPR { + get { + return this.tableVIEWGROUPR; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public TRENDVIEWCHLISTDataTable TRENDVIEWCHLIST { + get { + return this.tableTRENDVIEWCHLIST; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.BrowsableAttribute(true)] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Visible)] + public override global::System.Data.SchemaSerializationMode SchemaSerializationMode { + get { + return this._schemaSerializationMode; + } + set { + this._schemaSerializationMode = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataTableCollection Tables { + get { + return base.Tables; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataRelationCollection Relations { + get { + return base.Relations; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void InitializeDerivedDataSet() { + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataSet Clone() { + DocumentElement cln = ((DocumentElement)(base.Clone())); + cln.InitVars(); + cln.SchemaSerializationMode = this.SchemaSerializationMode; + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeTables() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeRelations() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void ReadXmlSerializable(global::System.Xml.XmlReader reader) { + if ((this.DetermineSchemaSerializationMode(reader) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + this.Reset(); + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXml(reader); + if ((ds.Tables["CHANNEL"] != null)) { + base.Tables.Add(new CHANNELDataTable(ds.Tables["CHANNEL"])); + } + if ((ds.Tables["DEVICE"] != null)) { + base.Tables.Add(new DEVICEDataTable(ds.Tables["DEVICE"])); + } + if ((ds.Tables["GRP"] != null)) { + base.Tables.Add(new GRPDataTable(ds.Tables["GRP"])); + } + if ((ds.Tables["NORMAL"] != null)) { + base.Tables.Add(new NORMALDataTable(ds.Tables["NORMAL"])); + } + if ((ds.Tables["VIEWGROUP"] != null)) { + base.Tables.Add(new VIEWGROUPDataTable(ds.Tables["VIEWGROUP"])); + } + if ((ds.Tables["WIN"] != null)) { + base.Tables.Add(new WINDataTable(ds.Tables["WIN"])); + } + if ((ds.Tables["ALARM"] != null)) { + base.Tables.Add(new ALARMDataTable(ds.Tables["ALARM"])); + } + if ((ds.Tables["VIEWGROUPR"] != null)) { + base.Tables.Add(new VIEWGROUPRDataTable(ds.Tables["VIEWGROUPR"])); + } + if ((ds.Tables["TRENDVIEWCHLIST"] != null)) { + base.Tables.Add(new TRENDVIEWCHLISTDataTable(ds.Tables["TRENDVIEWCHLIST"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXml(reader); + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Xml.Schema.XmlSchema GetSchemaSerializable() { + global::System.IO.MemoryStream stream = new global::System.IO.MemoryStream(); + this.WriteXmlSchema(new global::System.Xml.XmlTextWriter(stream, null)); + stream.Position = 0; + return global::System.Xml.Schema.XmlSchema.Read(new global::System.Xml.XmlTextReader(stream), null); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.InitVars(true); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars(bool initTable) { + this.tableCHANNEL = ((CHANNELDataTable)(base.Tables["CHANNEL"])); + if ((initTable == true)) { + if ((this.tableCHANNEL != null)) { + this.tableCHANNEL.InitVars(); + } + } + this.tableDEVICE = ((DEVICEDataTable)(base.Tables["DEVICE"])); + if ((initTable == true)) { + if ((this.tableDEVICE != null)) { + this.tableDEVICE.InitVars(); + } + } + this.tableGRP = ((GRPDataTable)(base.Tables["GRP"])); + if ((initTable == true)) { + if ((this.tableGRP != null)) { + this.tableGRP.InitVars(); + } + } + this.tableNORMAL = ((NORMALDataTable)(base.Tables["NORMAL"])); + if ((initTable == true)) { + if ((this.tableNORMAL != null)) { + this.tableNORMAL.InitVars(); + } + } + this.tableVIEWGROUP = ((VIEWGROUPDataTable)(base.Tables["VIEWGROUP"])); + if ((initTable == true)) { + if ((this.tableVIEWGROUP != null)) { + this.tableVIEWGROUP.InitVars(); + } + } + this.tableWIN = ((WINDataTable)(base.Tables["WIN"])); + if ((initTable == true)) { + if ((this.tableWIN != null)) { + this.tableWIN.InitVars(); + } + } + this.tableALARM = ((ALARMDataTable)(base.Tables["ALARM"])); + if ((initTable == true)) { + if ((this.tableALARM != null)) { + this.tableALARM.InitVars(); + } + } + this.tableVIEWGROUPR = ((VIEWGROUPRDataTable)(base.Tables["VIEWGROUPR"])); + if ((initTable == true)) { + if ((this.tableVIEWGROUPR != null)) { + this.tableVIEWGROUPR.InitVars(); + } + } + this.tableTRENDVIEWCHLIST = ((TRENDVIEWCHLISTDataTable)(base.Tables["TRENDVIEWCHLIST"])); + if ((initTable == true)) { + if ((this.tableTRENDVIEWCHLIST != null)) { + this.tableTRENDVIEWCHLIST.InitVars(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.DataSetName = "DocumentElement"; + this.Prefix = ""; + this.Namespace = "http://tempuri.org/DocumentElement.xsd"; + this.EnforceConstraints = true; + this.SchemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + this.tableCHANNEL = new CHANNELDataTable(); + base.Tables.Add(this.tableCHANNEL); + this.tableDEVICE = new DEVICEDataTable(); + base.Tables.Add(this.tableDEVICE); + this.tableGRP = new GRPDataTable(); + base.Tables.Add(this.tableGRP); + this.tableNORMAL = new NORMALDataTable(); + base.Tables.Add(this.tableNORMAL); + this.tableVIEWGROUP = new VIEWGROUPDataTable(); + base.Tables.Add(this.tableVIEWGROUP); + this.tableWIN = new WINDataTable(); + base.Tables.Add(this.tableWIN); + this.tableALARM = new ALARMDataTable(); + base.Tables.Add(this.tableALARM); + this.tableVIEWGROUPR = new VIEWGROUPRDataTable(); + base.Tables.Add(this.tableVIEWGROUPR); + this.tableTRENDVIEWCHLIST = new TRENDVIEWCHLISTDataTable(); + base.Tables.Add(this.tableTRENDVIEWCHLIST); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeCHANNEL() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeDEVICE() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeGRP() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeNORMAL() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeVIEWGROUP() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeWIN() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeALARM() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeVIEWGROUPR() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeTRENDVIEWCHLIST() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void SchemaChanged(object sender, global::System.ComponentModel.CollectionChangeEventArgs e) { + if ((e.Action == global::System.ComponentModel.CollectionChangeAction.Remove)) { + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); + any.Namespace = ds.Namespace; + sequence.Items.Add(any); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void CHANNELRowChangeEventHandler(object sender, CHANNELRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void DEVICERowChangeEventHandler(object sender, DEVICERowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void GRPRowChangeEventHandler(object sender, GRPRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void NORMALRowChangeEventHandler(object sender, NORMALRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void VIEWGROUPRowChangeEventHandler(object sender, VIEWGROUPRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void WINRowChangeEventHandler(object sender, WINRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void ALARMRowChangeEventHandler(object sender, ALARMRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void VIEWGROUPRRowChangeEventHandler(object sender, VIEWGROUPRRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void TRENDVIEWCHLISTRowChangeEventHandler(object sender, TRENDVIEWCHLISTRowChangeEvent e); + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class CHANNELDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnENABLE; + + private global::System.Data.DataColumn columnUSE; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnGIDX; + + private global::System.Data.DataColumn columnMACHINE; + + private global::System.Data.DataColumn columnALAMTYPE; + + private global::System.Data.DataColumn columnALAMH; + + private global::System.Data.DataColumn columnALAML; + + private global::System.Data.DataColumn columnCOLOR; + + private global::System.Data.DataColumn columnAUTOH; + + private global::System.Data.DataColumn columnAUTOL; + + private global::System.Data.DataColumn columnUNIT; + + private global::System.Data.DataColumn columnDECPOS; + + private global::System.Data.DataColumn columnGRPNAME; + + private global::System.Data.DataColumn columnIDX_M; + + private global::System.Data.DataColumn columnIDX_U; + + private global::System.Data.DataColumn columnIDX_C; + + private global::System.Data.DataColumn columnVOFFSET; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELDataTable() { + this.TableName = "CHANNEL"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal CHANNELDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected CHANNELDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ENABLEColumn { + get { + return this.columnENABLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn USEColumn { + get { + return this.columnUSE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn GIDXColumn { + get { + return this.columnGIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MACHINEColumn { + get { + return this.columnMACHINE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMTYPEColumn { + get { + return this.columnALAMTYPE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMHColumn { + get { + return this.columnALAMH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMLColumn { + get { + return this.columnALAML; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn COLORColumn { + get { + return this.columnCOLOR; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn AUTOHColumn { + get { + return this.columnAUTOH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn AUTOLColumn { + get { + return this.columnAUTOL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn UNITColumn { + get { + return this.columnUNIT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn DECPOSColumn { + get { + return this.columnDECPOS; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn GRPNAMEColumn { + get { + return this.columnGRPNAME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDX_MColumn { + get { + return this.columnIDX_M; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDX_UColumn { + get { + return this.columnIDX_U; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDX_CColumn { + get { + return this.columnIDX_C; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn VOFFSETColumn { + get { + return this.columnVOFFSET; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELRow this[int index] { + get { + return ((CHANNELRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event CHANNELRowChangeEventHandler CHANNELRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event CHANNELRowChangeEventHandler CHANNELRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event CHANNELRowChangeEventHandler CHANNELRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event CHANNELRowChangeEventHandler CHANNELRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddCHANNELRow(CHANNELRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELRow AddCHANNELRow( + int ENABLE, + int USE, + string TITLE, + int GIDX, + string MACHINE, + int ALAMTYPE, + float ALAMH, + float ALAML, + int COLOR, + float AUTOH, + float AUTOL, + string UNIT, + int DECPOS, + string GRPNAME, + int IDX_M, + int IDX_U, + int IDX_C, + float VOFFSET) { + CHANNELRow rowCHANNELRow = ((CHANNELRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + ENABLE, + USE, + TITLE, + GIDX, + MACHINE, + ALAMTYPE, + ALAMH, + ALAML, + COLOR, + AUTOH, + AUTOL, + UNIT, + DECPOS, + GRPNAME, + IDX_M, + IDX_U, + IDX_C, + VOFFSET}; + rowCHANNELRow.ItemArray = columnValuesArray; + this.Rows.Add(rowCHANNELRow); + return rowCHANNELRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELRow FindByIDX(int IDX) { + return ((CHANNELRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + CHANNELDataTable cln = ((CHANNELDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new CHANNELDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnENABLE = base.Columns["ENABLE"]; + this.columnUSE = base.Columns["USE"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnGIDX = base.Columns["GIDX"]; + this.columnMACHINE = base.Columns["MACHINE"]; + this.columnALAMTYPE = base.Columns["ALAMTYPE"]; + this.columnALAMH = base.Columns["ALAMH"]; + this.columnALAML = base.Columns["ALAML"]; + this.columnCOLOR = base.Columns["COLOR"]; + this.columnAUTOH = base.Columns["AUTOH"]; + this.columnAUTOL = base.Columns["AUTOL"]; + this.columnUNIT = base.Columns["UNIT"]; + this.columnDECPOS = base.Columns["DECPOS"]; + this.columnGRPNAME = base.Columns["GRPNAME"]; + this.columnIDX_M = base.Columns["IDX_M"]; + this.columnIDX_U = base.Columns["IDX_U"]; + this.columnIDX_C = base.Columns["IDX_C"]; + this.columnVOFFSET = base.Columns["VOFFSET"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnENABLE = new global::System.Data.DataColumn("ENABLE", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnENABLE); + this.columnUSE = new global::System.Data.DataColumn("USE", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnUSE); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnGIDX = new global::System.Data.DataColumn("GIDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnGIDX); + this.columnMACHINE = new global::System.Data.DataColumn("MACHINE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMACHINE); + this.columnALAMTYPE = new global::System.Data.DataColumn("ALAMTYPE", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAMTYPE); + this.columnALAMH = new global::System.Data.DataColumn("ALAMH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAMH); + this.columnALAML = new global::System.Data.DataColumn("ALAML", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAML); + this.columnCOLOR = new global::System.Data.DataColumn("COLOR", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCOLOR); + this.columnAUTOH = new global::System.Data.DataColumn("AUTOH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAUTOH); + this.columnAUTOL = new global::System.Data.DataColumn("AUTOL", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAUTOL); + this.columnUNIT = new global::System.Data.DataColumn("UNIT", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnUNIT); + this.columnDECPOS = new global::System.Data.DataColumn("DECPOS", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnDECPOS); + this.columnGRPNAME = new global::System.Data.DataColumn("GRPNAME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnGRPNAME); + this.columnIDX_M = new global::System.Data.DataColumn("IDX_M", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX_M); + this.columnIDX_U = new global::System.Data.DataColumn("IDX_U", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX_U); + this.columnIDX_C = new global::System.Data.DataColumn("IDX_C", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX_C); + this.columnVOFFSET = new global::System.Data.DataColumn("VOFFSET", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVOFFSET); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnENABLE.DefaultValue = ((int)(0)); + this.columnUSE.DefaultValue = ((int)(0)); + this.columnTITLE.DefaultValue = ((string)("")); + this.columnGIDX.DefaultValue = ((int)(0)); + this.columnMACHINE.DefaultValue = ((string)("")); + this.columnALAMTYPE.DefaultValue = ((int)(0)); + this.columnALAMH.DefaultValue = ((float)(0F)); + this.columnALAML.DefaultValue = ((float)(0F)); + this.columnCOLOR.DefaultValue = ((int)(0)); + this.columnAUTOH.DefaultValue = ((float)(0F)); + this.columnAUTOL.DefaultValue = ((float)(0F)); + this.columnUNIT.DefaultValue = ((string)("")); + this.columnDECPOS.DefaultValue = ((int)(0)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELRow NewCHANNELRow() { + return ((CHANNELRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new CHANNELRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(CHANNELRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.CHANNELRowChanged != null)) { + this.CHANNELRowChanged(this, new CHANNELRowChangeEvent(((CHANNELRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.CHANNELRowChanging != null)) { + this.CHANNELRowChanging(this, new CHANNELRowChangeEvent(((CHANNELRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.CHANNELRowDeleted != null)) { + this.CHANNELRowDeleted(this, new CHANNELRowChangeEvent(((CHANNELRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.CHANNELRowDeleting != null)) { + this.CHANNELRowDeleting(this, new CHANNELRowChangeEvent(((CHANNELRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveCHANNELRow(CHANNELRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "CHANNELDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class DEVICEDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnUSE; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnIP; + + private global::System.Data.DataColumn columnCHCOUNT; + + private global::System.Data.DataColumn columnKACOMMAND; + + private global::System.Data.DataColumn columnCHCOMMAND; + + private global::System.Data.DataColumn columnSNCOMMAND; + + private global::System.Data.DataColumn columnPORT; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICEDataTable() { + this.TableName = "DEVICE"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal DEVICEDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected DEVICEDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn USEColumn { + get { + return this.columnUSE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IPColumn { + get { + return this.columnIP; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn CHCOUNTColumn { + get { + return this.columnCHCOUNT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn KACOMMANDColumn { + get { + return this.columnKACOMMAND; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn CHCOMMANDColumn { + get { + return this.columnCHCOMMAND; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn SNCOMMANDColumn { + get { + return this.columnSNCOMMAND; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn PORTColumn { + get { + return this.columnPORT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICERow this[int index] { + get { + return ((DEVICERow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event DEVICERowChangeEventHandler DEVICERowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event DEVICERowChangeEventHandler DEVICERowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event DEVICERowChangeEventHandler DEVICERowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event DEVICERowChangeEventHandler DEVICERowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddDEVICERow(DEVICERow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICERow AddDEVICERow(int USE, string TITLE, string IP, string CHCOUNT, string KACOMMAND, string CHCOMMAND, string SNCOMMAND, int PORT) { + DEVICERow rowDEVICERow = ((DEVICERow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + USE, + TITLE, + IP, + CHCOUNT, + KACOMMAND, + CHCOMMAND, + SNCOMMAND, + PORT}; + rowDEVICERow.ItemArray = columnValuesArray; + this.Rows.Add(rowDEVICERow); + return rowDEVICERow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICERow FindByIDX(int IDX) { + return ((DEVICERow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + DEVICEDataTable cln = ((DEVICEDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new DEVICEDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnUSE = base.Columns["USE"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnIP = base.Columns["IP"]; + this.columnCHCOUNT = base.Columns["CHCOUNT"]; + this.columnKACOMMAND = base.Columns["KACOMMAND"]; + this.columnCHCOMMAND = base.Columns["CHCOMMAND"]; + this.columnSNCOMMAND = base.Columns["SNCOMMAND"]; + this.columnPORT = base.Columns["PORT"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnUSE = new global::System.Data.DataColumn("USE", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnUSE); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnIP = new global::System.Data.DataColumn("IP", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIP); + this.columnCHCOUNT = new global::System.Data.DataColumn("CHCOUNT", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCHCOUNT); + this.columnKACOMMAND = new global::System.Data.DataColumn("KACOMMAND", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnKACOMMAND); + this.columnCHCOMMAND = new global::System.Data.DataColumn("CHCOMMAND", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCHCOMMAND); + this.columnSNCOMMAND = new global::System.Data.DataColumn("SNCOMMAND", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSNCOMMAND); + this.columnPORT = new global::System.Data.DataColumn("PORT", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPORT); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnUSE.DefaultValue = ((int)(0)); + this.columnTITLE.DefaultValue = ((string)("")); + this.columnIP.DefaultValue = ((string)("")); + this.columnCHCOUNT.DefaultValue = ((string)("")); + this.columnKACOMMAND.DefaultValue = ((string)("")); + this.columnCHCOMMAND.DefaultValue = ((string)("")); + this.columnSNCOMMAND.DefaultValue = ((string)("")); + this.columnPORT.DefaultValue = ((int)(34150)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICERow NewDEVICERow() { + return ((DEVICERow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new DEVICERow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(DEVICERow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.DEVICERowChanged != null)) { + this.DEVICERowChanged(this, new DEVICERowChangeEvent(((DEVICERow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.DEVICERowChanging != null)) { + this.DEVICERowChanging(this, new DEVICERowChangeEvent(((DEVICERow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.DEVICERowDeleted != null)) { + this.DEVICERowDeleted(this, new DEVICERowChangeEvent(((DEVICERow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.DEVICERowDeleting != null)) { + this.DEVICERowDeleting(this, new DEVICERowChangeEvent(((DEVICERow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveDEVICERow(DEVICERow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "DEVICEDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class GRPDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnUSE; + + private global::System.Data.DataColumn columnWINDOW; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnMATRIX; + + private global::System.Data.DataColumn columnPOS; + + private global::System.Data.DataColumn columnSPAN; + + private global::System.Data.DataColumn columnFONT; + + private global::System.Data.DataColumn columnALAMH; + + private global::System.Data.DataColumn columnALAML; + + private global::System.Data.DataColumn columnKADEVICE; + + private global::System.Data.DataColumn columnALAMTYPE; + + private global::System.Data.DataColumn columnAUTOH; + + private global::System.Data.DataColumn columnAUTOL; + + private global::System.Data.DataColumn columnNBOFF; + + private global::System.Data.DataColumn columnNBSEQ; + + private global::System.Data.DataColumn columnNBHH; + + private global::System.Data.DataColumn columnNBH; + + private global::System.Data.DataColumn columnNBLL; + + private global::System.Data.DataColumn columnNBL; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPDataTable() { + this.TableName = "GRP"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal GRPDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected GRPDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn USEColumn { + get { + return this.columnUSE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn WINDOWColumn { + get { + return this.columnWINDOW; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MATRIXColumn { + get { + return this.columnMATRIX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn POSColumn { + get { + return this.columnPOS; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn SPANColumn { + get { + return this.columnSPAN; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn FONTColumn { + get { + return this.columnFONT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMHColumn { + get { + return this.columnALAMH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMLColumn { + get { + return this.columnALAML; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn KADEVICEColumn { + get { + return this.columnKADEVICE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMTYPEColumn { + get { + return this.columnALAMTYPE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn AUTOHColumn { + get { + return this.columnAUTOH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn AUTOLColumn { + get { + return this.columnAUTOL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn NBOFFColumn { + get { + return this.columnNBOFF; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn NBSEQColumn { + get { + return this.columnNBSEQ; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn NBHHColumn { + get { + return this.columnNBHH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn NBHColumn { + get { + return this.columnNBH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn NBLLColumn { + get { + return this.columnNBLL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn NBLColumn { + get { + return this.columnNBL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPRow this[int index] { + get { + return ((GRPRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event GRPRowChangeEventHandler GRPRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event GRPRowChangeEventHandler GRPRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event GRPRowChangeEventHandler GRPRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event GRPRowChangeEventHandler GRPRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddGRPRow(GRPRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPRow AddGRPRow( + int USE, + int WINDOW, + string TITLE, + string MATRIX, + string POS, + string SPAN, + string FONT, + float ALAMH, + float ALAML, + string KADEVICE, + string ALAMTYPE, + float AUTOH, + float AUTOL, + float NBOFF, + int NBSEQ, + float NBHH, + float NBH, + float NBLL, + float NBL) { + GRPRow rowGRPRow = ((GRPRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + USE, + WINDOW, + TITLE, + MATRIX, + POS, + SPAN, + FONT, + ALAMH, + ALAML, + KADEVICE, + ALAMTYPE, + AUTOH, + AUTOL, + NBOFF, + NBSEQ, + NBHH, + NBH, + NBLL, + NBL}; + rowGRPRow.ItemArray = columnValuesArray; + this.Rows.Add(rowGRPRow); + return rowGRPRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPRow FindByIDX(int IDX) { + return ((GRPRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + GRPDataTable cln = ((GRPDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new GRPDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnUSE = base.Columns["USE"]; + this.columnWINDOW = base.Columns["WINDOW"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnMATRIX = base.Columns["MATRIX"]; + this.columnPOS = base.Columns["POS"]; + this.columnSPAN = base.Columns["SPAN"]; + this.columnFONT = base.Columns["FONT"]; + this.columnALAMH = base.Columns["ALAMH"]; + this.columnALAML = base.Columns["ALAML"]; + this.columnKADEVICE = base.Columns["KADEVICE"]; + this.columnALAMTYPE = base.Columns["ALAMTYPE"]; + this.columnAUTOH = base.Columns["AUTOH"]; + this.columnAUTOL = base.Columns["AUTOL"]; + this.columnNBOFF = base.Columns["NBOFF"]; + this.columnNBSEQ = base.Columns["NBSEQ"]; + this.columnNBHH = base.Columns["NBHH"]; + this.columnNBH = base.Columns["NBH"]; + this.columnNBLL = base.Columns["NBLL"]; + this.columnNBL = base.Columns["NBL"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnUSE = new global::System.Data.DataColumn("USE", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnUSE); + this.columnWINDOW = new global::System.Data.DataColumn("WINDOW", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnWINDOW); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnMATRIX = new global::System.Data.DataColumn("MATRIX", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMATRIX); + this.columnPOS = new global::System.Data.DataColumn("POS", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPOS); + this.columnSPAN = new global::System.Data.DataColumn("SPAN", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSPAN); + this.columnFONT = new global::System.Data.DataColumn("FONT", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnFONT); + this.columnALAMH = new global::System.Data.DataColumn("ALAMH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAMH); + this.columnALAML = new global::System.Data.DataColumn("ALAML", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAML); + this.columnKADEVICE = new global::System.Data.DataColumn("KADEVICE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnKADEVICE); + this.columnALAMTYPE = new global::System.Data.DataColumn("ALAMTYPE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAMTYPE); + this.columnAUTOH = new global::System.Data.DataColumn("AUTOH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAUTOH); + this.columnAUTOL = new global::System.Data.DataColumn("AUTOL", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAUTOL); + this.columnNBOFF = new global::System.Data.DataColumn("NBOFF", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnNBOFF); + this.columnNBSEQ = new global::System.Data.DataColumn("NBSEQ", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnNBSEQ); + this.columnNBHH = new global::System.Data.DataColumn("NBHH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnNBHH); + this.columnNBH = new global::System.Data.DataColumn("NBH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnNBH); + this.columnNBLL = new global::System.Data.DataColumn("NBLL", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnNBLL); + this.columnNBL = new global::System.Data.DataColumn("NBL", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnNBL); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnUSE.Caption = "ENABLE"; + this.columnUSE.DefaultValue = ((int)(0)); + this.columnWINDOW.DefaultValue = ((int)(0)); + this.columnTITLE.DefaultValue = ((string)("")); + this.columnMATRIX.DefaultValue = ((string)("")); + this.columnPOS.DefaultValue = ((string)("")); + this.columnSPAN.DefaultValue = ((string)("")); + this.columnFONT.DefaultValue = ((string)("")); + this.columnALAMH.DefaultValue = ((float)(0F)); + this.columnALAML.DefaultValue = ((float)(0F)); + this.columnKADEVICE.DefaultValue = ((string)("")); + this.columnALAMTYPE.DefaultValue = ((string)("")); + this.columnAUTOH.DefaultValue = ((float)(0F)); + this.columnAUTOL.DefaultValue = ((float)(0F)); + this.columnNBOFF.DefaultValue = ((float)(0F)); + this.columnNBSEQ.DefaultValue = ((int)(0)); + this.columnNBHH.DefaultValue = ((float)(0F)); + this.columnNBH.DefaultValue = ((float)(0F)); + this.columnNBLL.DefaultValue = ((float)(0F)); + this.columnNBL.DefaultValue = ((float)(0F)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPRow NewGRPRow() { + return ((GRPRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new GRPRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(GRPRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.GRPRowChanged != null)) { + this.GRPRowChanged(this, new GRPRowChangeEvent(((GRPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.GRPRowChanging != null)) { + this.GRPRowChanging(this, new GRPRowChangeEvent(((GRPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.GRPRowDeleted != null)) { + this.GRPRowDeleted(this, new GRPRowChangeEvent(((GRPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.GRPRowDeleting != null)) { + this.GRPRowDeleting(this, new GRPRowChangeEvent(((GRPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveGRPRow(GRPRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "GRPDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class NORMALDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnALAMH; + + private global::System.Data.DataColumn columnALAML; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALDataTable() { + this.TableName = "NORMAL"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal NORMALDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected NORMALDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMHColumn { + get { + return this.columnALAMH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMLColumn { + get { + return this.columnALAML; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALRow this[int index] { + get { + return ((NORMALRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event NORMALRowChangeEventHandler NORMALRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event NORMALRowChangeEventHandler NORMALRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event NORMALRowChangeEventHandler NORMALRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event NORMALRowChangeEventHandler NORMALRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddNORMALRow(NORMALRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALRow AddNORMALRow(float ALAMH, float ALAML) { + NORMALRow rowNORMALRow = ((NORMALRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + ALAMH, + ALAML}; + rowNORMALRow.ItemArray = columnValuesArray; + this.Rows.Add(rowNORMALRow); + return rowNORMALRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALRow FindByIDX(int IDX) { + return ((NORMALRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + NORMALDataTable cln = ((NORMALDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new NORMALDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnALAMH = base.Columns["ALAMH"]; + this.columnALAML = base.Columns["ALAML"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnALAMH = new global::System.Data.DataColumn("ALAMH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAMH); + this.columnALAML = new global::System.Data.DataColumn("ALAML", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAML); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnALAMH.DefaultValue = ((float)(0F)); + this.columnALAML.DefaultValue = ((float)(0F)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALRow NewNORMALRow() { + return ((NORMALRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new NORMALRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(NORMALRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.NORMALRowChanged != null)) { + this.NORMALRowChanged(this, new NORMALRowChangeEvent(((NORMALRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.NORMALRowChanging != null)) { + this.NORMALRowChanging(this, new NORMALRowChangeEvent(((NORMALRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.NORMALRowDeleted != null)) { + this.NORMALRowDeleted(this, new NORMALRowChangeEvent(((NORMALRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.NORMALRowDeleting != null)) { + this.NORMALRowDeleting(this, new NORMALRowChangeEvent(((NORMALRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveNORMALRow(NORMALRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "NORMALDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class VIEWGROUPDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnGNAME; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnVAL; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPDataTable() { + this.TableName = "VIEWGROUP"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal VIEWGROUPDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected VIEWGROUPDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn GNAMEColumn { + get { + return this.columnGNAME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn VALColumn { + get { + return this.columnVAL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRow this[int index] { + get { + return ((VIEWGROUPRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRowChangeEventHandler VIEWGROUPRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRowChangeEventHandler VIEWGROUPRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRowChangeEventHandler VIEWGROUPRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRowChangeEventHandler VIEWGROUPRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddVIEWGROUPRow(VIEWGROUPRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRow AddVIEWGROUPRow(string GNAME, string TITLE, string VAL) { + VIEWGROUPRow rowVIEWGROUPRow = ((VIEWGROUPRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + GNAME, + TITLE, + VAL}; + rowVIEWGROUPRow.ItemArray = columnValuesArray; + this.Rows.Add(rowVIEWGROUPRow); + return rowVIEWGROUPRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRow FindByIDX(int IDX) { + return ((VIEWGROUPRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + VIEWGROUPDataTable cln = ((VIEWGROUPDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new VIEWGROUPDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnGNAME = base.Columns["GNAME"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnVAL = base.Columns["VAL"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnGNAME = new global::System.Data.DataColumn("GNAME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnGNAME); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnVAL = new global::System.Data.DataColumn("VAL", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVAL); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnGNAME.Caption = "SANGHO"; + this.columnGNAME.DefaultValue = ((string)("")); + this.columnTITLE.Caption = "TEL"; + this.columnTITLE.DefaultValue = ((string)("")); + this.columnVAL.DefaultValue = ((string)("")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRow NewVIEWGROUPRow() { + return ((VIEWGROUPRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new VIEWGROUPRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(VIEWGROUPRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.VIEWGROUPRowChanged != null)) { + this.VIEWGROUPRowChanged(this, new VIEWGROUPRowChangeEvent(((VIEWGROUPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.VIEWGROUPRowChanging != null)) { + this.VIEWGROUPRowChanging(this, new VIEWGROUPRowChangeEvent(((VIEWGROUPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.VIEWGROUPRowDeleted != null)) { + this.VIEWGROUPRowDeleted(this, new VIEWGROUPRowChangeEvent(((VIEWGROUPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.VIEWGROUPRowDeleting != null)) { + this.VIEWGROUPRowDeleting(this, new VIEWGROUPRowChangeEvent(((VIEWGROUPRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveVIEWGROUPRow(VIEWGROUPRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "VIEWGROUPDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class WINDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnUSE; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnMATRIX; + + private global::System.Data.DataColumn columnALAMH; + + private global::System.Data.DataColumn columnALAML; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINDataTable() { + this.TableName = "WIN"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal WINDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected WINDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn USEColumn { + get { + return this.columnUSE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MATRIXColumn { + get { + return this.columnMATRIX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMHColumn { + get { + return this.columnALAMH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ALAMLColumn { + get { + return this.columnALAML; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINRow this[int index] { + get { + return ((WINRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event WINRowChangeEventHandler WINRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event WINRowChangeEventHandler WINRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event WINRowChangeEventHandler WINRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event WINRowChangeEventHandler WINRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddWINRow(WINRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINRow AddWINRow(int USE, string TITLE, string MATRIX, float ALAMH, float ALAML) { + WINRow rowWINRow = ((WINRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + USE, + TITLE, + MATRIX, + ALAMH, + ALAML}; + rowWINRow.ItemArray = columnValuesArray; + this.Rows.Add(rowWINRow); + return rowWINRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINRow FindByIDX(int IDX) { + return ((WINRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + WINDataTable cln = ((WINDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new WINDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnUSE = base.Columns["USE"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnMATRIX = base.Columns["MATRIX"]; + this.columnALAMH = base.Columns["ALAMH"]; + this.columnALAML = base.Columns["ALAML"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnUSE = new global::System.Data.DataColumn("USE", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnUSE); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnMATRIX = new global::System.Data.DataColumn("MATRIX", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMATRIX); + this.columnALAMH = new global::System.Data.DataColumn("ALAMH", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAMH); + this.columnALAML = new global::System.Data.DataColumn("ALAML", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnALAML); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnUSE.DefaultValue = ((int)(0)); + this.columnTITLE.DefaultValue = ((string)("")); + this.columnMATRIX.Caption = "MACHINE"; + this.columnMATRIX.DefaultValue = ((string)("")); + this.columnALAMH.DefaultValue = ((float)(0F)); + this.columnALAML.DefaultValue = ((float)(0F)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINRow NewWINRow() { + return ((WINRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new WINRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(WINRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.WINRowChanged != null)) { + this.WINRowChanged(this, new WINRowChangeEvent(((WINRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.WINRowChanging != null)) { + this.WINRowChanging(this, new WINRowChangeEvent(((WINRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.WINRowDeleted != null)) { + this.WINRowDeleted(this, new WINRowChangeEvent(((WINRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.WINRowDeleting != null)) { + this.WINRowDeleting(this, new WINRowChangeEvent(((WINRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveWINRow(WINRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "WINDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class ALARMDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnATIME; + + private global::System.Data.DataColumn columnCH; + + private global::System.Data.DataColumn columnRTYPE; + + private global::System.Data.DataColumn columnVOLT; + + private global::System.Data.DataColumn columnATYPE; + + private global::System.Data.DataColumn columnMAXVOLT; + + private global::System.Data.DataColumn columnMINVOLT; + + private global::System.Data.DataColumn columnAM; + + private global::System.Data.DataColumn columnAM2; + + private global::System.Data.DataColumn columnTIME; + + private global::System.Data.DataColumn columnRTYPESTR; + + private global::System.Data.DataColumn columnATYPESTR; + + private global::System.Data.DataColumn columnCHNAME; + + private global::System.Data.DataColumn columnREMARK; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMDataTable() { + this.TableName = "ALARM"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal ALARMDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected ALARMDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ATIMEColumn { + get { + return this.columnATIME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn CHColumn { + get { + return this.columnCH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn RTYPEColumn { + get { + return this.columnRTYPE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn VOLTColumn { + get { + return this.columnVOLT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ATYPEColumn { + get { + return this.columnATYPE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MAXVOLTColumn { + get { + return this.columnMAXVOLT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MINVOLTColumn { + get { + return this.columnMINVOLT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn AMColumn { + get { + return this.columnAM; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn AM2Column { + get { + return this.columnAM2; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TIMEColumn { + get { + return this.columnTIME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn RTYPESTRColumn { + get { + return this.columnRTYPESTR; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ATYPESTRColumn { + get { + return this.columnATYPESTR; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn CHNAMEColumn { + get { + return this.columnCHNAME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn REMARKColumn { + get { + return this.columnREMARK; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMRow this[int index] { + get { + return ((ALARMRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event ALARMRowChangeEventHandler ALARMRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event ALARMRowChangeEventHandler ALARMRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event ALARMRowChangeEventHandler ALARMRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event ALARMRowChangeEventHandler ALARMRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddALARMRow(ALARMRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMRow AddALARMRow(string ATIME, short CH, short RTYPE, float VOLT, short ATYPE, float MAXVOLT, float MINVOLT, string AM, string AM2, string TIME, string RTYPESTR, string ATYPESTR, string CHNAME, string REMARK) { + ALARMRow rowALARMRow = ((ALARMRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + ATIME, + CH, + RTYPE, + VOLT, + ATYPE, + MAXVOLT, + MINVOLT, + AM, + AM2, + TIME, + RTYPESTR, + ATYPESTR, + CHNAME, + REMARK}; + rowALARMRow.ItemArray = columnValuesArray; + this.Rows.Add(rowALARMRow); + return rowALARMRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMRow FindByATIMECHRTYPE(string ATIME, short CH, short RTYPE) { + return ((ALARMRow)(this.Rows.Find(new object[] { + ATIME, + CH, + RTYPE}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + ALARMDataTable cln = ((ALARMDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new ALARMDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnATIME = base.Columns["ATIME"]; + this.columnCH = base.Columns["CH"]; + this.columnRTYPE = base.Columns["RTYPE"]; + this.columnVOLT = base.Columns["VOLT"]; + this.columnATYPE = base.Columns["ATYPE"]; + this.columnMAXVOLT = base.Columns["MAXVOLT"]; + this.columnMINVOLT = base.Columns["MINVOLT"]; + this.columnAM = base.Columns["AM"]; + this.columnAM2 = base.Columns["AM2"]; + this.columnTIME = base.Columns["TIME"]; + this.columnRTYPESTR = base.Columns["RTYPESTR"]; + this.columnATYPESTR = base.Columns["ATYPESTR"]; + this.columnCHNAME = base.Columns["CHNAME"]; + this.columnREMARK = base.Columns["REMARK"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnATIME = new global::System.Data.DataColumn("ATIME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnATIME); + this.columnCH = new global::System.Data.DataColumn("CH", typeof(short), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCH); + this.columnRTYPE = new global::System.Data.DataColumn("RTYPE", typeof(short), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRTYPE); + this.columnVOLT = new global::System.Data.DataColumn("VOLT", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVOLT); + this.columnATYPE = new global::System.Data.DataColumn("ATYPE", typeof(short), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnATYPE); + this.columnMAXVOLT = new global::System.Data.DataColumn("MAXVOLT", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMAXVOLT); + this.columnMINVOLT = new global::System.Data.DataColumn("MINVOLT", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMINVOLT); + this.columnAM = new global::System.Data.DataColumn("AM", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAM); + this.columnAM2 = new global::System.Data.DataColumn("AM2", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAM2); + this.columnTIME = new global::System.Data.DataColumn("TIME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTIME); + this.columnRTYPESTR = new global::System.Data.DataColumn("RTYPESTR", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRTYPESTR); + this.columnATYPESTR = new global::System.Data.DataColumn("ATYPESTR", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnATYPESTR); + this.columnCHNAME = new global::System.Data.DataColumn("CHNAME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCHNAME); + this.columnREMARK = new global::System.Data.DataColumn("REMARK", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnREMARK); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnATIME, + this.columnCH, + this.columnRTYPE}, true)); + this.columnATIME.AllowDBNull = false; + this.columnATIME.DefaultValue = ((string)("")); + this.columnCH.AllowDBNull = false; + this.columnCH.DefaultValue = ((short)(0)); + this.columnRTYPE.AllowDBNull = false; + this.columnRTYPE.DefaultValue = ((short)(0)); + this.columnVOLT.DefaultValue = ((float)(0F)); + this.columnATYPE.DefaultValue = ((short)(0)); + this.columnMAXVOLT.DefaultValue = ((float)(0F)); + this.columnMINVOLT.DefaultValue = ((float)(0F)); + this.columnAM.DefaultValue = ((string)("")); + this.columnAM2.DefaultValue = ((string)("")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMRow NewALARMRow() { + return ((ALARMRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new ALARMRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(ALARMRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.ALARMRowChanged != null)) { + this.ALARMRowChanged(this, new ALARMRowChangeEvent(((ALARMRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.ALARMRowChanging != null)) { + this.ALARMRowChanging(this, new ALARMRowChangeEvent(((ALARMRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.ALARMRowDeleted != null)) { + this.ALARMRowDeleted(this, new ALARMRowChangeEvent(((ALARMRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.ALARMRowDeleting != null)) { + this.ALARMRowDeleting(this, new ALARMRowChangeEvent(((ALARMRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveALARMRow(ALARMRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "ALARMDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class VIEWGROUPRDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnGNAME; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnVAL; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRDataTable() { + this.TableName = "VIEWGROUPR"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal VIEWGROUPRDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected VIEWGROUPRDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn GNAMEColumn { + get { + return this.columnGNAME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn VALColumn { + get { + return this.columnVAL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRRow this[int index] { + get { + return ((VIEWGROUPRRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRRowChangeEventHandler VIEWGROUPRRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRRowChangeEventHandler VIEWGROUPRRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRRowChangeEventHandler VIEWGROUPRRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VIEWGROUPRRowChangeEventHandler VIEWGROUPRRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddVIEWGROUPRRow(VIEWGROUPRRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRRow AddVIEWGROUPRRow(string GNAME, string TITLE, string VAL) { + VIEWGROUPRRow rowVIEWGROUPRRow = ((VIEWGROUPRRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + GNAME, + TITLE, + VAL}; + rowVIEWGROUPRRow.ItemArray = columnValuesArray; + this.Rows.Add(rowVIEWGROUPRRow); + return rowVIEWGROUPRRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRRow FindByIDX(int IDX) { + return ((VIEWGROUPRRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + VIEWGROUPRDataTable cln = ((VIEWGROUPRDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new VIEWGROUPRDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnGNAME = base.Columns["GNAME"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnVAL = base.Columns["VAL"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnGNAME = new global::System.Data.DataColumn("GNAME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnGNAME); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnVAL = new global::System.Data.DataColumn("VAL", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVAL); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AutoIncrement = true; + this.columnIDX.AutoIncrementSeed = 1; + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + this.columnGNAME.Caption = "SANGHO"; + this.columnGNAME.DefaultValue = ((string)("")); + this.columnTITLE.Caption = "TEL"; + this.columnTITLE.DefaultValue = ((string)("")); + this.columnVAL.DefaultValue = ((string)("")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRRow NewVIEWGROUPRRow() { + return ((VIEWGROUPRRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new VIEWGROUPRRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(VIEWGROUPRRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.VIEWGROUPRRowChanged != null)) { + this.VIEWGROUPRRowChanged(this, new VIEWGROUPRRowChangeEvent(((VIEWGROUPRRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.VIEWGROUPRRowChanging != null)) { + this.VIEWGROUPRRowChanging(this, new VIEWGROUPRRowChangeEvent(((VIEWGROUPRRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.VIEWGROUPRRowDeleted != null)) { + this.VIEWGROUPRRowDeleted(this, new VIEWGROUPRRowChangeEvent(((VIEWGROUPRRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.VIEWGROUPRRowDeleting != null)) { + this.VIEWGROUPRRowDeleting(this, new VIEWGROUPRRowChangeEvent(((VIEWGROUPRRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveVIEWGROUPRRow(VIEWGROUPRRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "VIEWGROUPRDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class TRENDVIEWCHLISTDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIDX; + + private global::System.Data.DataColumn columnSHOW; + + private global::System.Data.DataColumn columnTITLE; + + private global::System.Data.DataColumn columnCOLOR; + + private global::System.Data.DataColumn columnch; + + private global::System.Data.DataColumn columndev; + + private global::System.Data.DataColumn columnunit; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTDataTable() { + this.TableName = "TRENDVIEWCHLIST"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal TRENDVIEWCHLISTDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected TRENDVIEWCHLISTDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDXColumn { + get { + return this.columnIDX; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn SHOWColumn { + get { + return this.columnSHOW; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn COLORColumn { + get { + return this.columnCOLOR; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn chColumn { + get { + return this.columnch; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn devColumn { + get { + return this.columndev; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn unitColumn { + get { + return this.columnunit; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTRow this[int index] { + get { + return ((TRENDVIEWCHLISTRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event TRENDVIEWCHLISTRowChangeEventHandler TRENDVIEWCHLISTRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event TRENDVIEWCHLISTRowChangeEventHandler TRENDVIEWCHLISTRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event TRENDVIEWCHLISTRowChangeEventHandler TRENDVIEWCHLISTRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event TRENDVIEWCHLISTRowChangeEventHandler TRENDVIEWCHLISTRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddTRENDVIEWCHLISTRow(TRENDVIEWCHLISTRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTRow AddTRENDVIEWCHLISTRow(int IDX, bool SHOW, string TITLE, int COLOR, int ch, int dev, int unit) { + TRENDVIEWCHLISTRow rowTRENDVIEWCHLISTRow = ((TRENDVIEWCHLISTRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + IDX, + SHOW, + TITLE, + COLOR, + ch, + dev, + unit}; + rowTRENDVIEWCHLISTRow.ItemArray = columnValuesArray; + this.Rows.Add(rowTRENDVIEWCHLISTRow); + return rowTRENDVIEWCHLISTRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTRow FindByIDX(int IDX) { + return ((TRENDVIEWCHLISTRow)(this.Rows.Find(new object[] { + IDX}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + TRENDVIEWCHLISTDataTable cln = ((TRENDVIEWCHLISTDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new TRENDVIEWCHLISTDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnIDX = base.Columns["IDX"]; + this.columnSHOW = base.Columns["SHOW"]; + this.columnTITLE = base.Columns["TITLE"]; + this.columnCOLOR = base.Columns["COLOR"]; + this.columnch = base.Columns["ch"]; + this.columndev = base.Columns["dev"]; + this.columnunit = base.Columns["unit"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnIDX = new global::System.Data.DataColumn("IDX", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIDX); + this.columnSHOW = new global::System.Data.DataColumn("SHOW", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSHOW); + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.columnCOLOR = new global::System.Data.DataColumn("COLOR", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCOLOR); + this.columnch = new global::System.Data.DataColumn("ch", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnch); + this.columndev = new global::System.Data.DataColumn("dev", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columndev); + this.columnunit = new global::System.Data.DataColumn("unit", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnunit); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIDX}, true)); + this.columnIDX.AllowDBNull = false; + this.columnIDX.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTRow NewTRENDVIEWCHLISTRow() { + return ((TRENDVIEWCHLISTRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new TRENDVIEWCHLISTRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(TRENDVIEWCHLISTRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.TRENDVIEWCHLISTRowChanged != null)) { + this.TRENDVIEWCHLISTRowChanged(this, new TRENDVIEWCHLISTRowChangeEvent(((TRENDVIEWCHLISTRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.TRENDVIEWCHLISTRowChanging != null)) { + this.TRENDVIEWCHLISTRowChanging(this, new TRENDVIEWCHLISTRowChangeEvent(((TRENDVIEWCHLISTRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.TRENDVIEWCHLISTRowDeleted != null)) { + this.TRENDVIEWCHLISTRowDeleted(this, new TRENDVIEWCHLISTRowChangeEvent(((TRENDVIEWCHLISTRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.TRENDVIEWCHLISTRowDeleting != null)) { + this.TRENDVIEWCHLISTRowDeleting(this, new TRENDVIEWCHLISTRowChangeEvent(((TRENDVIEWCHLISTRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveTRENDVIEWCHLISTRow(TRENDVIEWCHLISTRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DocumentElement ds = new DocumentElement(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "TRENDVIEWCHLISTDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class CHANNELRow : global::System.Data.DataRow { + + private CHANNELDataTable tableCHANNEL; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal CHANNELRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableCHANNEL = ((CHANNELDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableCHANNEL.IDXColumn])); + } + set { + this[this.tableCHANNEL.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int ENABLE { + get { + if (this.IsENABLENull()) { + return 0; + } + else { + return ((int)(this[this.tableCHANNEL.ENABLEColumn])); + } + } + set { + this[this.tableCHANNEL.ENABLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int USE { + get { + if (this.IsUSENull()) { + return 0; + } + else { + return ((int)(this[this.tableCHANNEL.USEColumn])); + } + } + set { + this[this.tableCHANNEL.USEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return ""; + } + else { + return ((string)(this[this.tableCHANNEL.TITLEColumn])); + } + } + set { + this[this.tableCHANNEL.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int GIDX { + get { + if (this.IsGIDXNull()) { + return 0; + } + else { + return ((int)(this[this.tableCHANNEL.GIDXColumn])); + } + } + set { + this[this.tableCHANNEL.GIDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string MACHINE { + get { + if (this.IsMACHINENull()) { + return ""; + } + else { + return ((string)(this[this.tableCHANNEL.MACHINEColumn])); + } + } + set { + this[this.tableCHANNEL.MACHINEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int ALAMTYPE { + get { + if (this.IsALAMTYPENull()) { + return 0; + } + else { + return ((int)(this[this.tableCHANNEL.ALAMTYPEColumn])); + } + } + set { + this[this.tableCHANNEL.ALAMTYPEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAMH { + get { + if (this.IsALAMHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableCHANNEL.ALAMHColumn])); + } + } + set { + this[this.tableCHANNEL.ALAMHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAML { + get { + if (this.IsALAMLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableCHANNEL.ALAMLColumn])); + } + } + set { + this[this.tableCHANNEL.ALAMLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int COLOR { + get { + if (this.IsCOLORNull()) { + return 0; + } + else { + return ((int)(this[this.tableCHANNEL.COLORColumn])); + } + } + set { + this[this.tableCHANNEL.COLORColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float AUTOH { + get { + if (this.IsAUTOHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableCHANNEL.AUTOHColumn])); + } + } + set { + this[this.tableCHANNEL.AUTOHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float AUTOL { + get { + if (this.IsAUTOLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableCHANNEL.AUTOLColumn])); + } + } + set { + this[this.tableCHANNEL.AUTOLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string UNIT { + get { + if (this.IsUNITNull()) { + return ""; + } + else { + return ((string)(this[this.tableCHANNEL.UNITColumn])); + } + } + set { + this[this.tableCHANNEL.UNITColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int DECPOS { + get { + if (this.IsDECPOSNull()) { + return 0; + } + else { + return ((int)(this[this.tableCHANNEL.DECPOSColumn])); + } + } + set { + this[this.tableCHANNEL.DECPOSColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string GRPNAME { + get { + if (this.IsGRPNAMENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableCHANNEL.GRPNAMEColumn])); + } + } + set { + this[this.tableCHANNEL.GRPNAMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX_M { + get { + if (this.IsIDX_MNull()) { + return -1; + } + else { + return ((int)(this[this.tableCHANNEL.IDX_MColumn])); + } + } + set { + this[this.tableCHANNEL.IDX_MColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX_U { + get { + if (this.IsIDX_UNull()) { + return -1; + } + else { + return ((int)(this[this.tableCHANNEL.IDX_UColumn])); + } + } + set { + this[this.tableCHANNEL.IDX_UColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX_C { + get { + if (this.IsIDX_CNull()) { + return -1; + } + else { + return ((int)(this[this.tableCHANNEL.IDX_CColumn])); + } + } + set { + this[this.tableCHANNEL.IDX_CColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float VOFFSET { + get { + if (this.IsVOFFSETNull()) { + return 0F; + } + else { + return ((float)(this[this.tableCHANNEL.VOFFSETColumn])); + } + } + set { + this[this.tableCHANNEL.VOFFSETColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsENABLENull() { + return this.IsNull(this.tableCHANNEL.ENABLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetENABLENull() { + this[this.tableCHANNEL.ENABLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsUSENull() { + return this.IsNull(this.tableCHANNEL.USEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetUSENull() { + this[this.tableCHANNEL.USEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableCHANNEL.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableCHANNEL.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsGIDXNull() { + return this.IsNull(this.tableCHANNEL.GIDXColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetGIDXNull() { + this[this.tableCHANNEL.GIDXColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMACHINENull() { + return this.IsNull(this.tableCHANNEL.MACHINEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMACHINENull() { + this[this.tableCHANNEL.MACHINEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMTYPENull() { + return this.IsNull(this.tableCHANNEL.ALAMTYPEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMTYPENull() { + this[this.tableCHANNEL.ALAMTYPEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMHNull() { + return this.IsNull(this.tableCHANNEL.ALAMHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMHNull() { + this[this.tableCHANNEL.ALAMHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMLNull() { + return this.IsNull(this.tableCHANNEL.ALAMLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMLNull() { + this[this.tableCHANNEL.ALAMLColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsCOLORNull() { + return this.IsNull(this.tableCHANNEL.COLORColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetCOLORNull() { + this[this.tableCHANNEL.COLORColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsAUTOHNull() { + return this.IsNull(this.tableCHANNEL.AUTOHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetAUTOHNull() { + this[this.tableCHANNEL.AUTOHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsAUTOLNull() { + return this.IsNull(this.tableCHANNEL.AUTOLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetAUTOLNull() { + this[this.tableCHANNEL.AUTOLColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsUNITNull() { + return this.IsNull(this.tableCHANNEL.UNITColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetUNITNull() { + this[this.tableCHANNEL.UNITColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsDECPOSNull() { + return this.IsNull(this.tableCHANNEL.DECPOSColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetDECPOSNull() { + this[this.tableCHANNEL.DECPOSColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsGRPNAMENull() { + return this.IsNull(this.tableCHANNEL.GRPNAMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetGRPNAMENull() { + this[this.tableCHANNEL.GRPNAMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsIDX_MNull() { + return this.IsNull(this.tableCHANNEL.IDX_MColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetIDX_MNull() { + this[this.tableCHANNEL.IDX_MColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsIDX_UNull() { + return this.IsNull(this.tableCHANNEL.IDX_UColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetIDX_UNull() { + this[this.tableCHANNEL.IDX_UColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsIDX_CNull() { + return this.IsNull(this.tableCHANNEL.IDX_CColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetIDX_CNull() { + this[this.tableCHANNEL.IDX_CColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsVOFFSETNull() { + return this.IsNull(this.tableCHANNEL.VOFFSETColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetVOFFSETNull() { + this[this.tableCHANNEL.VOFFSETColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class DEVICERow : global::System.Data.DataRow { + + private DEVICEDataTable tableDEVICE; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal DEVICERow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableDEVICE = ((DEVICEDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableDEVICE.IDXColumn])); + } + set { + this[this.tableDEVICE.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int USE { + get { + if (this.IsUSENull()) { + return 0; + } + else { + return ((int)(this[this.tableDEVICE.USEColumn])); + } + } + set { + this[this.tableDEVICE.USEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return ""; + } + else { + return ((string)(this[this.tableDEVICE.TITLEColumn])); + } + } + set { + this[this.tableDEVICE.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string IP { + get { + if (this.IsIPNull()) { + return ""; + } + else { + return ((string)(this[this.tableDEVICE.IPColumn])); + } + } + set { + this[this.tableDEVICE.IPColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string CHCOUNT { + get { + if (this.IsCHCOUNTNull()) { + return ""; + } + else { + return ((string)(this[this.tableDEVICE.CHCOUNTColumn])); + } + } + set { + this[this.tableDEVICE.CHCOUNTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string KACOMMAND { + get { + if (this.IsKACOMMANDNull()) { + return ""; + } + else { + return ((string)(this[this.tableDEVICE.KACOMMANDColumn])); + } + } + set { + this[this.tableDEVICE.KACOMMANDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string CHCOMMAND { + get { + if (this.IsCHCOMMANDNull()) { + return ""; + } + else { + return ((string)(this[this.tableDEVICE.CHCOMMANDColumn])); + } + } + set { + this[this.tableDEVICE.CHCOMMANDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string SNCOMMAND { + get { + if (this.IsSNCOMMANDNull()) { + return ""; + } + else { + return ((string)(this[this.tableDEVICE.SNCOMMANDColumn])); + } + } + set { + this[this.tableDEVICE.SNCOMMANDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int PORT { + get { + if (this.IsPORTNull()) { + return 34150; + } + else { + return ((int)(this[this.tableDEVICE.PORTColumn])); + } + } + set { + this[this.tableDEVICE.PORTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsUSENull() { + return this.IsNull(this.tableDEVICE.USEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetUSENull() { + this[this.tableDEVICE.USEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableDEVICE.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableDEVICE.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsIPNull() { + return this.IsNull(this.tableDEVICE.IPColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetIPNull() { + this[this.tableDEVICE.IPColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsCHCOUNTNull() { + return this.IsNull(this.tableDEVICE.CHCOUNTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetCHCOUNTNull() { + this[this.tableDEVICE.CHCOUNTColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsKACOMMANDNull() { + return this.IsNull(this.tableDEVICE.KACOMMANDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetKACOMMANDNull() { + this[this.tableDEVICE.KACOMMANDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsCHCOMMANDNull() { + return this.IsNull(this.tableDEVICE.CHCOMMANDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetCHCOMMANDNull() { + this[this.tableDEVICE.CHCOMMANDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsSNCOMMANDNull() { + return this.IsNull(this.tableDEVICE.SNCOMMANDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetSNCOMMANDNull() { + this[this.tableDEVICE.SNCOMMANDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsPORTNull() { + return this.IsNull(this.tableDEVICE.PORTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetPORTNull() { + this[this.tableDEVICE.PORTColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class GRPRow : global::System.Data.DataRow { + + private GRPDataTable tableGRP; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal GRPRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableGRP = ((GRPDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableGRP.IDXColumn])); + } + set { + this[this.tableGRP.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int USE { + get { + if (this.IsUSENull()) { + return 0; + } + else { + return ((int)(this[this.tableGRP.USEColumn])); + } + } + set { + this[this.tableGRP.USEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int WINDOW { + get { + if (this.IsWINDOWNull()) { + return 0; + } + else { + return ((int)(this[this.tableGRP.WINDOWColumn])); + } + } + set { + this[this.tableGRP.WINDOWColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.TITLEColumn])); + } + } + set { + this[this.tableGRP.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string MATRIX { + get { + if (this.IsMATRIXNull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.MATRIXColumn])); + } + } + set { + this[this.tableGRP.MATRIXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string POS { + get { + if (this.IsPOSNull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.POSColumn])); + } + } + set { + this[this.tableGRP.POSColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string SPAN { + get { + if (this.IsSPANNull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.SPANColumn])); + } + } + set { + this[this.tableGRP.SPANColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string FONT { + get { + if (this.IsFONTNull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.FONTColumn])); + } + } + set { + this[this.tableGRP.FONTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAMH { + get { + if (this.IsALAMHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.ALAMHColumn])); + } + } + set { + this[this.tableGRP.ALAMHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAML { + get { + if (this.IsALAMLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.ALAMLColumn])); + } + } + set { + this[this.tableGRP.ALAMLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string KADEVICE { + get { + if (this.IsKADEVICENull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.KADEVICEColumn])); + } + } + set { + this[this.tableGRP.KADEVICEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string ALAMTYPE { + get { + if (this.IsALAMTYPENull()) { + return ""; + } + else { + return ((string)(this[this.tableGRP.ALAMTYPEColumn])); + } + } + set { + this[this.tableGRP.ALAMTYPEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float AUTOH { + get { + if (this.IsAUTOHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.AUTOHColumn])); + } + } + set { + this[this.tableGRP.AUTOHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float AUTOL { + get { + if (this.IsAUTOLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.AUTOLColumn])); + } + } + set { + this[this.tableGRP.AUTOLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float NBOFF { + get { + if (this.IsNBOFFNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.NBOFFColumn])); + } + } + set { + this[this.tableGRP.NBOFFColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int NBSEQ { + get { + if (this.IsNBSEQNull()) { + return 0; + } + else { + return ((int)(this[this.tableGRP.NBSEQColumn])); + } + } + set { + this[this.tableGRP.NBSEQColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float NBHH { + get { + if (this.IsNBHHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.NBHHColumn])); + } + } + set { + this[this.tableGRP.NBHHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float NBH { + get { + if (this.IsNBHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.NBHColumn])); + } + } + set { + this[this.tableGRP.NBHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float NBLL { + get { + if (this.IsNBLLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.NBLLColumn])); + } + } + set { + this[this.tableGRP.NBLLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float NBL { + get { + if (this.IsNBLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableGRP.NBLColumn])); + } + } + set { + this[this.tableGRP.NBLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsUSENull() { + return this.IsNull(this.tableGRP.USEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetUSENull() { + this[this.tableGRP.USEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsWINDOWNull() { + return this.IsNull(this.tableGRP.WINDOWColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetWINDOWNull() { + this[this.tableGRP.WINDOWColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableGRP.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableGRP.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMATRIXNull() { + return this.IsNull(this.tableGRP.MATRIXColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMATRIXNull() { + this[this.tableGRP.MATRIXColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsPOSNull() { + return this.IsNull(this.tableGRP.POSColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetPOSNull() { + this[this.tableGRP.POSColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsSPANNull() { + return this.IsNull(this.tableGRP.SPANColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetSPANNull() { + this[this.tableGRP.SPANColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsFONTNull() { + return this.IsNull(this.tableGRP.FONTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetFONTNull() { + this[this.tableGRP.FONTColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMHNull() { + return this.IsNull(this.tableGRP.ALAMHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMHNull() { + this[this.tableGRP.ALAMHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMLNull() { + return this.IsNull(this.tableGRP.ALAMLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMLNull() { + this[this.tableGRP.ALAMLColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsKADEVICENull() { + return this.IsNull(this.tableGRP.KADEVICEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetKADEVICENull() { + this[this.tableGRP.KADEVICEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMTYPENull() { + return this.IsNull(this.tableGRP.ALAMTYPEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMTYPENull() { + this[this.tableGRP.ALAMTYPEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsAUTOHNull() { + return this.IsNull(this.tableGRP.AUTOHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetAUTOHNull() { + this[this.tableGRP.AUTOHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsAUTOLNull() { + return this.IsNull(this.tableGRP.AUTOLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetAUTOLNull() { + this[this.tableGRP.AUTOLColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsNBOFFNull() { + return this.IsNull(this.tableGRP.NBOFFColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetNBOFFNull() { + this[this.tableGRP.NBOFFColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsNBSEQNull() { + return this.IsNull(this.tableGRP.NBSEQColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetNBSEQNull() { + this[this.tableGRP.NBSEQColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsNBHHNull() { + return this.IsNull(this.tableGRP.NBHHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetNBHHNull() { + this[this.tableGRP.NBHHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsNBHNull() { + return this.IsNull(this.tableGRP.NBHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetNBHNull() { + this[this.tableGRP.NBHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsNBLLNull() { + return this.IsNull(this.tableGRP.NBLLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetNBLLNull() { + this[this.tableGRP.NBLLColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsNBLNull() { + return this.IsNull(this.tableGRP.NBLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetNBLNull() { + this[this.tableGRP.NBLColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class NORMALRow : global::System.Data.DataRow { + + private NORMALDataTable tableNORMAL; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal NORMALRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableNORMAL = ((NORMALDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableNORMAL.IDXColumn])); + } + set { + this[this.tableNORMAL.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAMH { + get { + if (this.IsALAMHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableNORMAL.ALAMHColumn])); + } + } + set { + this[this.tableNORMAL.ALAMHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAML { + get { + if (this.IsALAMLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableNORMAL.ALAMLColumn])); + } + } + set { + this[this.tableNORMAL.ALAMLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMHNull() { + return this.IsNull(this.tableNORMAL.ALAMHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMHNull() { + this[this.tableNORMAL.ALAMHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMLNull() { + return this.IsNull(this.tableNORMAL.ALAMLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMLNull() { + this[this.tableNORMAL.ALAMLColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class VIEWGROUPRow : global::System.Data.DataRow { + + private VIEWGROUPDataTable tableVIEWGROUP; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal VIEWGROUPRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableVIEWGROUP = ((VIEWGROUPDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableVIEWGROUP.IDXColumn])); + } + set { + this[this.tableVIEWGROUP.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string GNAME { + get { + if (this.IsGNAMENull()) { + return ""; + } + else { + return ((string)(this[this.tableVIEWGROUP.GNAMEColumn])); + } + } + set { + this[this.tableVIEWGROUP.GNAMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return ""; + } + else { + return ((string)(this[this.tableVIEWGROUP.TITLEColumn])); + } + } + set { + this[this.tableVIEWGROUP.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string VAL { + get { + if (this.IsVALNull()) { + return ""; + } + else { + return ((string)(this[this.tableVIEWGROUP.VALColumn])); + } + } + set { + this[this.tableVIEWGROUP.VALColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsGNAMENull() { + return this.IsNull(this.tableVIEWGROUP.GNAMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetGNAMENull() { + this[this.tableVIEWGROUP.GNAMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableVIEWGROUP.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableVIEWGROUP.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsVALNull() { + return this.IsNull(this.tableVIEWGROUP.VALColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetVALNull() { + this[this.tableVIEWGROUP.VALColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class WINRow : global::System.Data.DataRow { + + private WINDataTable tableWIN; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal WINRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableWIN = ((WINDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableWIN.IDXColumn])); + } + set { + this[this.tableWIN.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int USE { + get { + if (this.IsUSENull()) { + return 0; + } + else { + return ((int)(this[this.tableWIN.USEColumn])); + } + } + set { + this[this.tableWIN.USEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return ""; + } + else { + return ((string)(this[this.tableWIN.TITLEColumn])); + } + } + set { + this[this.tableWIN.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string MATRIX { + get { + if (this.IsMATRIXNull()) { + return ""; + } + else { + return ((string)(this[this.tableWIN.MATRIXColumn])); + } + } + set { + this[this.tableWIN.MATRIXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAMH { + get { + if (this.IsALAMHNull()) { + return 0F; + } + else { + return ((float)(this[this.tableWIN.ALAMHColumn])); + } + } + set { + this[this.tableWIN.ALAMHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float ALAML { + get { + if (this.IsALAMLNull()) { + return 0F; + } + else { + return ((float)(this[this.tableWIN.ALAMLColumn])); + } + } + set { + this[this.tableWIN.ALAMLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsUSENull() { + return this.IsNull(this.tableWIN.USEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetUSENull() { + this[this.tableWIN.USEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableWIN.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableWIN.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMATRIXNull() { + return this.IsNull(this.tableWIN.MATRIXColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMATRIXNull() { + this[this.tableWIN.MATRIXColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMHNull() { + return this.IsNull(this.tableWIN.ALAMHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMHNull() { + this[this.tableWIN.ALAMHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsALAMLNull() { + return this.IsNull(this.tableWIN.ALAMLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetALAMLNull() { + this[this.tableWIN.ALAMLColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class ALARMRow : global::System.Data.DataRow { + + private ALARMDataTable tableALARM; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal ALARMRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableALARM = ((ALARMDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string ATIME { + get { + return ((string)(this[this.tableALARM.ATIMEColumn])); + } + set { + this[this.tableALARM.ATIMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public short CH { + get { + return ((short)(this[this.tableALARM.CHColumn])); + } + set { + this[this.tableALARM.CHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public short RTYPE { + get { + return ((short)(this[this.tableALARM.RTYPEColumn])); + } + set { + this[this.tableALARM.RTYPEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float VOLT { + get { + if (this.IsVOLTNull()) { + return 0F; + } + else { + return ((float)(this[this.tableALARM.VOLTColumn])); + } + } + set { + this[this.tableALARM.VOLTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public short ATYPE { + get { + if (this.IsATYPENull()) { + return 0; + } + else { + return ((short)(this[this.tableALARM.ATYPEColumn])); + } + } + set { + this[this.tableALARM.ATYPEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float MAXVOLT { + get { + if (this.IsMAXVOLTNull()) { + return 0F; + } + else { + return ((float)(this[this.tableALARM.MAXVOLTColumn])); + } + } + set { + this[this.tableALARM.MAXVOLTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float MINVOLT { + get { + if (this.IsMINVOLTNull()) { + return 0F; + } + else { + return ((float)(this[this.tableALARM.MINVOLTColumn])); + } + } + set { + this[this.tableALARM.MINVOLTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string AM { + get { + if (this.IsAMNull()) { + return ""; + } + else { + return ((string)(this[this.tableALARM.AMColumn])); + } + } + set { + this[this.tableALARM.AMColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string AM2 { + get { + if (this.IsAM2Null()) { + return ""; + } + else { + return ((string)(this[this.tableALARM.AM2Column])); + } + } + set { + this[this.tableALARM.AM2Column] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TIME { + get { + if (this.IsTIMENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableALARM.TIMEColumn])); + } + } + set { + this[this.tableALARM.TIMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string RTYPESTR { + get { + if (this.IsRTYPESTRNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableALARM.RTYPESTRColumn])); + } + } + set { + this[this.tableALARM.RTYPESTRColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string ATYPESTR { + get { + if (this.IsATYPESTRNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableALARM.ATYPESTRColumn])); + } + } + set { + this[this.tableALARM.ATYPESTRColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string CHNAME { + get { + if (this.IsCHNAMENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableALARM.CHNAMEColumn])); + } + } + set { + this[this.tableALARM.CHNAMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string REMARK { + get { + if (this.IsREMARKNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableALARM.REMARKColumn])); + } + } + set { + this[this.tableALARM.REMARKColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsVOLTNull() { + return this.IsNull(this.tableALARM.VOLTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetVOLTNull() { + this[this.tableALARM.VOLTColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsATYPENull() { + return this.IsNull(this.tableALARM.ATYPEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetATYPENull() { + this[this.tableALARM.ATYPEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMAXVOLTNull() { + return this.IsNull(this.tableALARM.MAXVOLTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMAXVOLTNull() { + this[this.tableALARM.MAXVOLTColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMINVOLTNull() { + return this.IsNull(this.tableALARM.MINVOLTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMINVOLTNull() { + this[this.tableALARM.MINVOLTColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsAMNull() { + return this.IsNull(this.tableALARM.AMColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetAMNull() { + this[this.tableALARM.AMColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsAM2Null() { + return this.IsNull(this.tableALARM.AM2Column); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetAM2Null() { + this[this.tableALARM.AM2Column] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTIMENull() { + return this.IsNull(this.tableALARM.TIMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTIMENull() { + this[this.tableALARM.TIMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsRTYPESTRNull() { + return this.IsNull(this.tableALARM.RTYPESTRColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetRTYPESTRNull() { + this[this.tableALARM.RTYPESTRColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsATYPESTRNull() { + return this.IsNull(this.tableALARM.ATYPESTRColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetATYPESTRNull() { + this[this.tableALARM.ATYPESTRColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsCHNAMENull() { + return this.IsNull(this.tableALARM.CHNAMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetCHNAMENull() { + this[this.tableALARM.CHNAMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsREMARKNull() { + return this.IsNull(this.tableALARM.REMARKColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetREMARKNull() { + this[this.tableALARM.REMARKColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class VIEWGROUPRRow : global::System.Data.DataRow { + + private VIEWGROUPRDataTable tableVIEWGROUPR; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal VIEWGROUPRRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableVIEWGROUPR = ((VIEWGROUPRDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableVIEWGROUPR.IDXColumn])); + } + set { + this[this.tableVIEWGROUPR.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string GNAME { + get { + if (this.IsGNAMENull()) { + return ""; + } + else { + return ((string)(this[this.tableVIEWGROUPR.GNAMEColumn])); + } + } + set { + this[this.tableVIEWGROUPR.GNAMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return ""; + } + else { + return ((string)(this[this.tableVIEWGROUPR.TITLEColumn])); + } + } + set { + this[this.tableVIEWGROUPR.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string VAL { + get { + if (this.IsVALNull()) { + return ""; + } + else { + return ((string)(this[this.tableVIEWGROUPR.VALColumn])); + } + } + set { + this[this.tableVIEWGROUPR.VALColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsGNAMENull() { + return this.IsNull(this.tableVIEWGROUPR.GNAMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetGNAMENull() { + this[this.tableVIEWGROUPR.GNAMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableVIEWGROUPR.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableVIEWGROUPR.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsVALNull() { + return this.IsNull(this.tableVIEWGROUPR.VALColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetVALNull() { + this[this.tableVIEWGROUPR.VALColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class TRENDVIEWCHLISTRow : global::System.Data.DataRow { + + private TRENDVIEWCHLISTDataTable tableTRENDVIEWCHLIST; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal TRENDVIEWCHLISTRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableTRENDVIEWCHLIST = ((TRENDVIEWCHLISTDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int IDX { + get { + return ((int)(this[this.tableTRENDVIEWCHLIST.IDXColumn])); + } + set { + this[this.tableTRENDVIEWCHLIST.IDXColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool SHOW { + get { + if (this.IsSHOWNull()) { + return false; + } + else { + return ((bool)(this[this.tableTRENDVIEWCHLIST.SHOWColumn])); + } + } + set { + this[this.tableTRENDVIEWCHLIST.SHOWColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + if (this.IsTITLENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableTRENDVIEWCHLIST.TITLEColumn])); + } + } + set { + this[this.tableTRENDVIEWCHLIST.TITLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int COLOR { + get { + if (this.IsCOLORNull()) { + return 0; + } + else { + return ((int)(this[this.tableTRENDVIEWCHLIST.COLORColumn])); + } + } + set { + this[this.tableTRENDVIEWCHLIST.COLORColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int ch { + get { + if (this.IschNull()) { + return -1; + } + else { + return ((int)(this[this.tableTRENDVIEWCHLIST.chColumn])); + } + } + set { + this[this.tableTRENDVIEWCHLIST.chColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int dev { + get { + if (this.IsdevNull()) { + return -1; + } + else { + return ((int)(this[this.tableTRENDVIEWCHLIST.devColumn])); + } + } + set { + this[this.tableTRENDVIEWCHLIST.devColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int unit { + get { + if (this.IsunitNull()) { + return -1; + } + else { + return ((int)(this[this.tableTRENDVIEWCHLIST.unitColumn])); + } + } + set { + this[this.tableTRENDVIEWCHLIST.unitColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsSHOWNull() { + return this.IsNull(this.tableTRENDVIEWCHLIST.SHOWColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetSHOWNull() { + this[this.tableTRENDVIEWCHLIST.SHOWColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTITLENull() { + return this.IsNull(this.tableTRENDVIEWCHLIST.TITLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTITLENull() { + this[this.tableTRENDVIEWCHLIST.TITLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsCOLORNull() { + return this.IsNull(this.tableTRENDVIEWCHLIST.COLORColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetCOLORNull() { + this[this.tableTRENDVIEWCHLIST.COLORColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IschNull() { + return this.IsNull(this.tableTRENDVIEWCHLIST.chColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetchNull() { + this[this.tableTRENDVIEWCHLIST.chColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsdevNull() { + return this.IsNull(this.tableTRENDVIEWCHLIST.devColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetdevNull() { + this[this.tableTRENDVIEWCHLIST.devColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsunitNull() { + return this.IsNull(this.tableTRENDVIEWCHLIST.unitColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetunitNull() { + this[this.tableTRENDVIEWCHLIST.unitColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class CHANNELRowChangeEvent : global::System.EventArgs { + + private CHANNELRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELRowChangeEvent(CHANNELRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public CHANNELRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class DEVICERowChangeEvent : global::System.EventArgs { + + private DEVICERow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICERowChangeEvent(DEVICERow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DEVICERow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class GRPRowChangeEvent : global::System.EventArgs { + + private GRPRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPRowChangeEvent(GRPRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public GRPRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class NORMALRowChangeEvent : global::System.EventArgs { + + private NORMALRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALRowChangeEvent(NORMALRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public NORMALRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class VIEWGROUPRowChangeEvent : global::System.EventArgs { + + private VIEWGROUPRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRowChangeEvent(VIEWGROUPRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class WINRowChangeEvent : global::System.EventArgs { + + private WINRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINRowChangeEvent(WINRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public WINRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class ALARMRowChangeEvent : global::System.EventArgs { + + private ALARMRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMRowChangeEvent(ALARMRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ALARMRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class VIEWGROUPRRowChangeEvent : global::System.EventArgs { + + private VIEWGROUPRRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRRowChangeEvent(VIEWGROUPRRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VIEWGROUPRRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class TRENDVIEWCHLISTRowChangeEvent : global::System.EventArgs { + + private TRENDVIEWCHLISTRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTRowChangeEvent(TRENDVIEWCHLISTRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public TRENDVIEWCHLISTRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + } +} + +#pragma warning restore 1591 \ No newline at end of file diff --git a/Viewer/TrendViewer/DocumentElement.cs b/Viewer/TrendViewer/DocumentElement.cs new file mode 100644 index 0000000..28c8e1f --- /dev/null +++ b/Viewer/TrendViewer/DocumentElement.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; + +namespace vmsnet +{ + public partial class DocumentElement + { + } + +} diff --git a/Viewer/TrendViewer/DocumentElement.xsc b/Viewer/TrendViewer/DocumentElement.xsc new file mode 100644 index 0000000..05b0199 --- /dev/null +++ b/Viewer/TrendViewer/DocumentElement.xsc @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/Viewer/TrendViewer/DocumentElement.xsd b/Viewer/TrendViewer/DocumentElement.xsd new file mode 100644 index 0000000..bbef828 --- /dev/null +++ b/Viewer/TrendViewer/DocumentElement.xsd @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Viewer/TrendViewer/DocumentElement.xss b/Viewer/TrendViewer/DocumentElement.xss new file mode 100644 index 0000000..1a54c51 --- /dev/null +++ b/Viewer/TrendViewer/DocumentElement.xss @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Viewer/TrendViewer/Frm_GraphSetup.Designer.cs b/Viewer/TrendViewer/Frm_GraphSetup.Designer.cs new file mode 100644 index 0000000..1433c00 --- /dev/null +++ b/Viewer/TrendViewer/Frm_GraphSetup.Designer.cs @@ -0,0 +1,219 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; + +namespace vmsnet +{ + partial class Frm_GraphSetup : System.Windows.Forms.Form + { + + //Formì€ Dispose를 재정ì˜í•˜ì—¬ 구성 요소 목ë¡ì„ 정리합니다. + [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing) + { + try + { + if (disposing && components != null) + { + components.Dispose(); + } + } + finally + { + base.Dispose(disposing); + } + } + + //Windows Form ë””ìžì´ë„ˆì— 필요합니다. + private System.ComponentModel.Container components = null; + + //참고: ë‹¤ìŒ í”„ë¡œì‹œì €ëŠ” Windows Form ë””ìžì´ë„ˆì— 필요합니다. + //수정하려면 Windows Form ë””ìžì´ë„ˆë¥¼ 사용하십시오. + //코드 편집기를 사용하여 수정하지 마십시오. + [System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent() + { + this.GroupBox1 = new System.Windows.Forms.GroupBox(); + this.dte = new System.Windows.Forms.DateTimePicker(); + this.dts = new System.Windows.Forms.DateTimePicker(); + this.label11 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.bt_cancel = new System.Windows.Forms.Button(); + this.bt_ok = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.GroupBox1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // GroupBox1 + // + this.GroupBox1.Controls.Add(this.dte); + this.GroupBox1.Controls.Add(this.dts); + this.GroupBox1.Controls.Add(this.label11); + this.GroupBox1.Controls.Add(this.label10); + this.GroupBox1.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.GroupBox1.Location = new System.Drawing.Point(14, 15); + this.GroupBox1.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.GroupBox1.Name = "GroupBox1"; + this.GroupBox1.Padding = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.GroupBox1.Size = new System.Drawing.Size(747, 155); + this.GroupBox1.TabIndex = 0; + this.GroupBox1.TabStop = false; + this.GroupBox1.Text = "조회기간"; + // + // dte + // + this.dte.CustomFormat = "yyyyë…„ MMì›” ddì¼ HH시 mmë¶„ ssì´ˆ"; + this.dte.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.dte.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dte.Location = new System.Drawing.Point(103, 93); + this.dte.Name = "dte"; + this.dte.Size = new System.Drawing.Size(629, 50); + this.dte.TabIndex = 30; + // + // dts + // + this.dts.CustomFormat = "yyyyë…„ MMì›” ddì¼ HH시 mmë¶„ ssì´ˆ"; + this.dts.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.dts.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dts.Location = new System.Drawing.Point(103, 37); + this.dts.Name = "dts"; + this.dts.Size = new System.Drawing.Size(629, 50); + this.dts.TabIndex = 29; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(31, 106); + this.label11.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(50, 25); + this.label11.TabIndex = 25; + this.label11.Text = "종료"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(31, 49); + this.label10.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(50, 25); + this.label10.TabIndex = 12; + this.label10.Text = "시작"; + // + // bt_cancel + // + this.bt_cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.bt_cancel.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.bt_cancel.Location = new System.Drawing.Point(632, 8); + this.bt_cancel.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.bt_cancel.Name = "bt_cancel"; + this.bt_cancel.Size = new System.Drawing.Size(137, 79); + this.bt_cancel.TabIndex = 2; + this.bt_cancel.Text = "취소"; + this.bt_cancel.UseVisualStyleBackColor = true; + this.bt_cancel.Click += new System.EventHandler(this.Button1_Click); + // + // bt_ok + // + this.bt_ok.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.bt_ok.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.bt_ok.Location = new System.Drawing.Point(486, 8); + this.bt_ok.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.bt_ok.Name = "bt_ok"; + this.bt_ok.Size = new System.Drawing.Size(137, 79); + this.bt_ok.TabIndex = 1; + this.bt_ok.Text = "확ì¸"; + this.bt_ok.UseVisualStyleBackColor = true; + this.bt_ok.Click += new System.EventHandler(this.Button2_Click); + // + // panel1 + // + this.panel1.Controls.Add(this.button3); + this.panel1.Controls.Add(this.button2); + this.panel1.Controls.Add(this.button1); + this.panel1.Controls.Add(this.bt_ok); + this.panel1.Controls.Add(this.bt_cancel); + this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel1.Location = new System.Drawing.Point(0, 181); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(777, 92); + this.panel1.TabIndex = 3; + // + // button3 + // + this.button3.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button3.Location = new System.Drawing.Point(296, 7); + this.button3.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(137, 79); + this.button3.TabIndex = 5; + this.button3.Text = "ì´ë²ˆë‹¬"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // button2 + // + this.button2.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button2.Location = new System.Drawing.Point(149, 6); + this.button2.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(137, 79); + this.button2.TabIndex = 4; + this.button2.Text = "-7ì¼"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click_1); + // + // button1 + // + this.button1.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button1.Location = new System.Drawing.Point(5, 6); + this.button1.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(137, 79); + this.button1.TabIndex = 3; + this.button1.Text = "최근 1달"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click_1); + // + // Frm_GraphSetup + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(777, 273); + this.Controls.Add(this.panel1); + this.Controls.Add(this.GroupBox1); + this.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.KeyPreview = true; + this.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "Frm_GraphSetup"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "ë°ì´í„° 조회 환경"; + this.Load += new System.EventHandler(this.Frm_GraphSetup_Load); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Frm_GraphSetup_KeyDown); + this.GroupBox1.ResumeLayout(false); + this.GroupBox1.PerformLayout(); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + internal System.Windows.Forms.Button bt_cancel; + internal System.Windows.Forms.Button bt_ok; + internal System.Windows.Forms.GroupBox GroupBox1; + private Panel panel1; + internal Button button1; + internal Label label11; + internal Button button2; + internal Button button3; + private DateTimePicker dts; + internal Label label10; + private DateTimePicker dte; + } + +} diff --git a/Viewer/TrendViewer/Frm_GraphSetup.cs b/Viewer/TrendViewer/Frm_GraphSetup.cs new file mode 100644 index 0000000..214f29d --- /dev/null +++ b/Viewer/TrendViewer/Frm_GraphSetup.cs @@ -0,0 +1,83 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; +using AR; +using System.Linq; + +namespace vmsnet +{ + public partial class Frm_GraphSetup + { + + public Frm_GraphSetup() + { + + // ì´ í˜¸ì¶œì€ ë””ìžì´ë„ˆì— 필요합니다. + InitializeComponent(); + } + public void Button1_Click(object sender, EventArgs e) + { + this.Close(); + } + public void Frm_GraphSetup_Load(object sender, EventArgs e) + { + dts.Value = PUB.TREND.graph_time_start; + dte.Value = PUB.TREND.graph_time_end; + } + + public void Button2_Click(object sender, EventArgs e) + { + PUB.TREND.graph_time_start = dts.Value; + PUB.TREND.graph_time_end = dte.Value; + PUB.CONFIG.Save(); + DialogResult = System.Windows.Forms.DialogResult.OK; + } + + + public void Frm_GraphSetup_KeyDown(object sender, KeyEventArgs e) + { + switch (e.KeyCode) + { + case Keys.Escape: + bt_cancel.PerformClick(); + break; + case Keys.Enter: + bt_ok.PerformClick(); + break; + } + } + + + private void button1_Click_1(object sender, EventArgs e) + { + var dates = PUB.DB.GetAvailableDates(); + if (dates.Any() == false) + { + UTIL.MsgE("가능한 날짜가 없습니다"); + return; + } + var lastmon = dates.Last(); + dte.Value = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd 23:59:59")); + dts.Value = dte.Value.AddMonths(-1).AddSeconds(1); + } + + + + + private void button2_Click_1(object sender, EventArgs e) + { + dte.Value = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd 23:59:59")); + dts.Value = dte.Value.AddDays(-7).AddSeconds(1); + } + + private void button3_Click(object sender, EventArgs e) + { + dts.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01 00:00:00")); + dte.Value = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd 23:59:59")); + } + } +} diff --git a/Viewer/TrendViewer/Frm_GraphSetup.resx b/Viewer/TrendViewer/Frm_GraphSetup.resx new file mode 100644 index 0000000..d58980a --- /dev/null +++ b/Viewer/TrendViewer/Frm_GraphSetup.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Viewer/TrendViewer/Frm_trend.Designer.cs b/Viewer/TrendViewer/Frm_trend.Designer.cs new file mode 100644 index 0000000..d60bc4a --- /dev/null +++ b/Viewer/TrendViewer/Frm_trend.Designer.cs @@ -0,0 +1,895 @@ +using System.Collections.Generic; +using System; +using System.Drawing; +using System.Diagnostics; +using System.Data; +using System.Collections; +using System.Windows.Forms; + +namespace vmsnet +{ + partial class Frm_trend : System.Windows.Forms.Form + { + + //Formì€ Dispose를 재정ì˜í•˜ì—¬ 구성 요소 목ë¡ì„ 정리합니다. + [System.Diagnostics.DebuggerNonUserCode()]protected override void Dispose(bool disposing) + { + try + { + if (disposing && components != null) + { + components.Dispose(); + } + } + finally + { + base.Dispose(disposing); + } + } + + //참고: ë‹¤ìŒ í”„ë¡œì‹œì €ëŠ” Windows Form ë””ìžì´ë„ˆì— 필요합니다. + //수정하려면 Windows Form ë””ìžì´ë„ˆë¥¼ 사용하십시오. + //코드 편집기를 사용하여 수정하지 마십시오. + [System.Diagnostics.DebuggerStepThrough()] + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Frm_trend)); + this.TabControl1 = new System.Windows.Forms.TabControl(); + this.TabPage1 = new System.Windows.Forms.TabPage(); + this.dv_chlist = new System.Windows.Forms.DataGridView(); + this.useDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.cnameDataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.c1DataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.c2DataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.ccDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.idxDataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.tidxDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.bs_Channel = new System.Windows.Forms.BindingSource(this.components); + this.dS1 = new vmsnet.DS1(); + this.TabPage2 = new System.Windows.Forms.TabPage(); + this.PropertyGrid1 = new System.Windows.Forms.PropertyGrid(); + this.ToolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.bt_cursor2 = new System.Windows.Forms.Button(); + this.bt_cursor1 = new System.Windows.Forms.Button(); + this.bt_clear = new System.Windows.Forms.Button(); + this.cm_grpmenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.ToolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem(); + this.bs_grp = new System.Windows.Forms.BindingSource(this.components); + this.Panel1 = new System.Windows.Forms.Panel(); + this.dv_grp = new System.Windows.Forms.DataGridView(); + this.cnameDataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.valueDataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.idxDataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.gnameDataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.rnameDataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.panel7 = new System.Windows.Forms.Panel(); + this.bt_delgroup = new System.Windows.Forms.LinkLabel(); + this.LinkLabel5 = new System.Windows.Forms.LinkLabel(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.bt_run = new System.Windows.Forms.Button(); + this.Button2 = new System.Windows.Forms.Button(); + this.Button1 = new System.Windows.Forms.Button(); + this.bt_print = new System.Windows.Forms.Button(); + this.panel6 = new System.Windows.Forms.Panel(); + this.cmb_group = new System.Windows.Forms.ComboBox(); + this.Label4 = new System.Windows.Forms.Label(); + this.ContextMenuStrip2 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.ToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); + this.PrintDocument1 = new System.Drawing.Printing.PrintDocument(); + this.PrintPreviewDialog1 = new System.Windows.Forms.PrintPreviewDialog(); + this.ToolStrip1 = new System.Windows.Forms.ToolStrip(); + this.lb_datatcnt = new System.Windows.Forms.ToolStripLabel(); + this.lb_Area = new System.Windows.Forms.ToolStripLabel(); + this.lb_selgroup = new System.Windows.Forms.ToolStripLabel(); + this.lb_filesearchtime = new System.Windows.Forms.ToolStripLabel(); + this.lb_querytime = new System.Windows.Forms.ToolStripLabel(); + this.ToolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.lb_charttime = new System.Windows.Forms.ToolStripLabel(); + this.lb_totaltime = new System.Windows.Forms.ToolStripLabel(); + this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel(); + this.toolStripLabel2 = new System.Windows.Forms.ToolStripLabel(); + this.toolStripLabel3 = new System.Windows.Forms.ToolStripLabel(); + this.btConfig = new System.Windows.Forms.ToolStripButton(); + this.TableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.Panel2 = new System.Windows.Forms.Panel(); + this.panel8 = new System.Windows.Forms.Panel(); + this.Panel4 = new System.Windows.Forms.Panel(); + this.TabControl1.SuspendLayout(); + this.TabPage1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dv_chlist)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bs_Channel)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dS1)).BeginInit(); + this.TabPage2.SuspendLayout(); + this.cm_grpmenu.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bs_grp)).BeginInit(); + this.Panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dv_grp)).BeginInit(); + this.panel7.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + this.panel6.SuspendLayout(); + this.ContextMenuStrip2.SuspendLayout(); + this.ToolStrip1.SuspendLayout(); + this.TableLayoutPanel1.SuspendLayout(); + this.Panel2.SuspendLayout(); + this.Panel4.SuspendLayout(); + this.SuspendLayout(); + // + // TabControl1 + // + this.TabControl1.Controls.Add(this.TabPage1); + this.TabControl1.Controls.Add(this.TabPage2); + this.TabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.TabControl1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.TabControl1.Location = new System.Drawing.Point(987, 3); + this.TabControl1.Name = "TabControl1"; + this.TabControl1.SelectedIndex = 0; + this.TabControl1.Size = new System.Drawing.Size(194, 762); + this.TabControl1.TabIndex = 5; + // + // TabPage1 + // + this.TabPage1.Controls.Add(this.dv_chlist); + this.TabPage1.Location = new System.Drawing.Point(4, 34); + this.TabPage1.Name = "TabPage1"; + this.TabPage1.Padding = new System.Windows.Forms.Padding(3); + this.TabPage1.Size = new System.Drawing.Size(186, 724); + this.TabPage1.TabIndex = 0; + this.TabPage1.Text = "ì…€"; + this.TabPage1.UseVisualStyleBackColor = true; + // + // dv_chlist + // + this.dv_chlist.AllowUserToAddRows = false; + this.dv_chlist.AllowUserToDeleteRows = false; + this.dv_chlist.AllowUserToResizeColumns = false; + this.dv_chlist.AllowUserToResizeRows = false; + this.dv_chlist.AutoGenerateColumns = false; + this.dv_chlist.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.dv_chlist.BackgroundColor = System.Drawing.Color.White; + this.dv_chlist.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.dv_chlist.ColumnHeadersHeight = 34; + this.dv_chlist.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dv_chlist.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.useDataGridViewCheckBoxColumn, + this.cnameDataGridViewTextBoxColumn1, + this.c1DataGridViewTextBoxColumn, + this.c2DataGridViewTextBoxColumn, + this.ccDataGridViewTextBoxColumn, + this.idxDataGridViewTextBoxColumn1, + this.tidxDataGridViewTextBoxColumn}); + this.dv_chlist.DataSource = this.bs_Channel; + this.dv_chlist.Dock = System.Windows.Forms.DockStyle.Fill; + this.dv_chlist.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.dv_chlist.Location = new System.Drawing.Point(3, 3); + this.dv_chlist.Name = "dv_chlist"; + this.dv_chlist.RowHeadersVisible = false; + this.dv_chlist.RowHeadersWidth = 62; + this.dv_chlist.RowTemplate.Height = 23; + this.dv_chlist.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dv_chlist.Size = new System.Drawing.Size(180, 718); + this.dv_chlist.TabIndex = 6; + this.dv_chlist.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dv_chlist_CellContentClick); + this.dv_chlist.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.DataGridView1_CellFormatting); + this.dv_chlist.MouseLeave += new System.EventHandler(this.dv_chlist_MouseLeave); + this.dv_chlist.MouseMove += new System.Windows.Forms.MouseEventHandler(this.dv_chlist_MouseMove); + // + // useDataGridViewCheckBoxColumn + // + this.useDataGridViewCheckBoxColumn.DataPropertyName = "use"; + this.useDataGridViewCheckBoxColumn.HeaderText = "√"; + this.useDataGridViewCheckBoxColumn.MinimumWidth = 10; + this.useDataGridViewCheckBoxColumn.Name = "useDataGridViewCheckBoxColumn"; + this.useDataGridViewCheckBoxColumn.ReadOnly = true; + this.useDataGridViewCheckBoxColumn.Width = 29; + // + // cnameDataGridViewTextBoxColumn1 + // + this.cnameDataGridViewTextBoxColumn1.DataPropertyName = "cname"; + this.cnameDataGridViewTextBoxColumn1.HeaderText = "채ë„"; + this.cnameDataGridViewTextBoxColumn1.MinimumWidth = 8; + this.cnameDataGridViewTextBoxColumn1.Name = "cnameDataGridViewTextBoxColumn1"; + this.cnameDataGridViewTextBoxColumn1.Width = 78; + // + // c1DataGridViewTextBoxColumn + // + this.c1DataGridViewTextBoxColumn.DataPropertyName = "c1"; + this.c1DataGridViewTextBoxColumn.HeaderText = "C1"; + this.c1DataGridViewTextBoxColumn.MinimumWidth = 8; + this.c1DataGridViewTextBoxColumn.Name = "c1DataGridViewTextBoxColumn"; + this.c1DataGridViewTextBoxColumn.Width = 74; + // + // c2DataGridViewTextBoxColumn + // + this.c2DataGridViewTextBoxColumn.DataPropertyName = "c2"; + this.c2DataGridViewTextBoxColumn.HeaderText = "C2"; + this.c2DataGridViewTextBoxColumn.MinimumWidth = 8; + this.c2DataGridViewTextBoxColumn.Name = "c2DataGridViewTextBoxColumn"; + this.c2DataGridViewTextBoxColumn.Width = 74; + // + // ccDataGridViewTextBoxColumn + // + this.ccDataGridViewTextBoxColumn.DataPropertyName = "cc"; + this.ccDataGridViewTextBoxColumn.HeaderText = "cc"; + this.ccDataGridViewTextBoxColumn.MinimumWidth = 8; + this.ccDataGridViewTextBoxColumn.Name = "ccDataGridViewTextBoxColumn"; + this.ccDataGridViewTextBoxColumn.Visible = false; + this.ccDataGridViewTextBoxColumn.Width = 68; + // + // idxDataGridViewTextBoxColumn1 + // + this.idxDataGridViewTextBoxColumn1.DataPropertyName = "idx"; + this.idxDataGridViewTextBoxColumn1.HeaderText = "idx"; + this.idxDataGridViewTextBoxColumn1.MinimumWidth = 8; + this.idxDataGridViewTextBoxColumn1.Name = "idxDataGridViewTextBoxColumn1"; + this.idxDataGridViewTextBoxColumn1.Visible = false; + this.idxDataGridViewTextBoxColumn1.Width = 73; + // + // tidxDataGridViewTextBoxColumn + // + this.tidxDataGridViewTextBoxColumn.DataPropertyName = "tidx"; + this.tidxDataGridViewTextBoxColumn.HeaderText = "tidx"; + this.tidxDataGridViewTextBoxColumn.MinimumWidth = 8; + this.tidxDataGridViewTextBoxColumn.Name = "tidxDataGridViewTextBoxColumn"; + this.tidxDataGridViewTextBoxColumn.Visible = false; + this.tidxDataGridViewTextBoxColumn.Width = 78; + // + // bs_Channel + // + this.bs_Channel.DataMember = "channel"; + this.bs_Channel.DataSource = this.dS1; + // + // dS1 + // + this.dS1.DataSetName = "DS1"; + this.dS1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // TabPage2 + // + this.TabPage2.Controls.Add(this.PropertyGrid1); + this.TabPage2.Location = new System.Drawing.Point(4, 34); + this.TabPage2.Name = "TabPage2"; + this.TabPage2.Padding = new System.Windows.Forms.Padding(3); + this.TabPage2.Size = new System.Drawing.Size(186, 724); + this.TabPage2.TabIndex = 1; + this.TabPage2.Text = "기타"; + this.TabPage2.UseVisualStyleBackColor = true; + // + // PropertyGrid1 + // + this.PropertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill; + this.PropertyGrid1.Location = new System.Drawing.Point(3, 3); + this.PropertyGrid1.Name = "PropertyGrid1"; + this.PropertyGrid1.Size = new System.Drawing.Size(180, 718); + this.PropertyGrid1.TabIndex = 0; + // + // bt_cursor2 + // + this.bt_cursor2.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.bt_cursor2.Location = new System.Drawing.Point(75, 4); + this.bt_cursor2.Name = "bt_cursor2"; + this.bt_cursor2.Size = new System.Drawing.Size(66, 48); + this.bt_cursor2.TabIndex = 12; + this.bt_cursor2.Tag = "1"; + this.bt_cursor2.Text = "C2\r\nï¼»F11ï¼½"; + this.ToolTip1.SetToolTip(this.bt_cursor2, "커서를 설정합니다."); + this.bt_cursor2.UseVisualStyleBackColor = true; + this.bt_cursor2.Click += new System.EventHandler(this.bt_cursor_Click); + // + // bt_cursor1 + // + this.bt_cursor1.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.bt_cursor1.Location = new System.Drawing.Point(8, 4); + this.bt_cursor1.Name = "bt_cursor1"; + this.bt_cursor1.Size = new System.Drawing.Size(66, 48); + this.bt_cursor1.TabIndex = 11; + this.bt_cursor1.Tag = "0"; + this.bt_cursor1.Text = "C1\r\nï¼»F10ï¼½"; + this.ToolTip1.SetToolTip(this.bt_cursor1, "커서를 설정합니다."); + this.bt_cursor1.UseVisualStyleBackColor = true; + this.bt_cursor1.Click += new System.EventHandler(this.bt_cursor_Click); + // + // bt_clear + // + this.bt_clear.Font = new System.Drawing.Font("ë§‘ì€ ê³ ë”•", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.bt_clear.Location = new System.Drawing.Point(142, 4); + this.bt_clear.Name = "bt_clear"; + this.bt_clear.Size = new System.Drawing.Size(96, 48); + this.bt_clear.TabIndex = 14; + this.bt_clear.Text = "C1, C2\r\nHide"; + this.ToolTip1.SetToolTip(this.bt_clear, "커서를 설정합니다."); + this.bt_clear.UseVisualStyleBackColor = true; + this.bt_clear.Click += new System.EventHandler(this.bt_Hide_Click); + // + // cm_grpmenu + // + this.cm_grpmenu.ImageScalingSize = new System.Drawing.Size(24, 24); + this.cm_grpmenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.ToolStripMenuItem3}); + this.cm_grpmenu.Name = "ContextMenuStrip1"; + this.cm_grpmenu.Size = new System.Drawing.Size(248, 36); + // + // ToolStripMenuItem3 + // + this.ToolStripMenuItem3.Name = "ToolStripMenuItem3"; + this.ToolStripMenuItem3.Size = new System.Drawing.Size(247, 32); + this.ToolStripMenuItem3.Text = "Channel Index(TEST)"; + this.ToolStripMenuItem3.Click += new System.EventHandler(this.ToolStripMenuItem3_Click); + // + // bs_grp + // + this.bs_grp.DataMember = "group"; + this.bs_grp.DataSource = this.dS1; + // + // Panel1 + // + this.Panel1.BackColor = System.Drawing.Color.WhiteSmoke; + this.Panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.Panel1.Controls.Add(this.dv_grp); + this.Panel1.Controls.Add(this.label1); + this.Panel1.Controls.Add(this.textBox1); + this.Panel1.Controls.Add(this.panel7); + this.Panel1.Controls.Add(this.tableLayoutPanel2); + this.Panel1.Controls.Add(this.panel6); + this.Panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.Panel1.Location = new System.Drawing.Point(3, 3); + this.Panel1.Name = "Panel1"; + this.Panel1.Size = new System.Drawing.Size(215, 762); + this.Panel1.TabIndex = 7; + // + // dv_grp + // + this.dv_grp.AllowUserToAddRows = false; + this.dv_grp.AllowUserToDeleteRows = false; + this.dv_grp.AllowUserToResizeColumns = false; + this.dv_grp.AllowUserToResizeRows = false; + this.dv_grp.AutoGenerateColumns = false; + this.dv_grp.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.dv_grp.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells; + this.dv_grp.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.dv_grp.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dv_grp.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.cnameDataGridViewTextBoxColumn2, + this.valueDataGridViewTextBoxColumn1, + this.idxDataGridViewTextBoxColumn2, + this.gnameDataGridViewTextBoxColumn1, + this.rnameDataGridViewTextBoxColumn1}); + this.dv_grp.ContextMenuStrip = this.cm_grpmenu; + this.dv_grp.DataSource = this.bs_grp; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle1.Padding = new System.Windows.Forms.Padding(0, 9, 0, 9); + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dv_grp.DefaultCellStyle = dataGridViewCellStyle1; + this.dv_grp.Dock = System.Windows.Forms.DockStyle.Fill; + this.dv_grp.Location = new System.Drawing.Point(0, 33); + this.dv_grp.Name = "dv_grp"; + this.dv_grp.ReadOnly = true; + this.dv_grp.RowHeadersVisible = false; + this.dv_grp.RowHeadersWidth = 62; + this.dv_grp.RowTemplate.Height = 23; + this.dv_grp.Size = new System.Drawing.Size(213, 533); + this.dv_grp.TabIndex = 0; + this.dv_grp.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.DataGridView2_CellDoubleClick); + // + // cnameDataGridViewTextBoxColumn2 + // + this.cnameDataGridViewTextBoxColumn2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.cnameDataGridViewTextBoxColumn2.DataPropertyName = "cname"; + this.cnameDataGridViewTextBoxColumn2.HeaderText = "Group List"; + this.cnameDataGridViewTextBoxColumn2.MinimumWidth = 8; + this.cnameDataGridViewTextBoxColumn2.Name = "cnameDataGridViewTextBoxColumn2"; + this.cnameDataGridViewTextBoxColumn2.ReadOnly = true; + // + // valueDataGridViewTextBoxColumn1 + // + this.valueDataGridViewTextBoxColumn1.DataPropertyName = "value"; + this.valueDataGridViewTextBoxColumn1.HeaderText = "value"; + this.valueDataGridViewTextBoxColumn1.MinimumWidth = 8; + this.valueDataGridViewTextBoxColumn1.Name = "valueDataGridViewTextBoxColumn1"; + this.valueDataGridViewTextBoxColumn1.ReadOnly = true; + this.valueDataGridViewTextBoxColumn1.Visible = false; + this.valueDataGridViewTextBoxColumn1.Width = 60; + // + // idxDataGridViewTextBoxColumn2 + // + this.idxDataGridViewTextBoxColumn2.DataPropertyName = "idx"; + this.idxDataGridViewTextBoxColumn2.HeaderText = "idx"; + this.idxDataGridViewTextBoxColumn2.MinimumWidth = 8; + this.idxDataGridViewTextBoxColumn2.Name = "idxDataGridViewTextBoxColumn2"; + this.idxDataGridViewTextBoxColumn2.ReadOnly = true; + this.idxDataGridViewTextBoxColumn2.Visible = false; + this.idxDataGridViewTextBoxColumn2.Width = 47; + // + // gnameDataGridViewTextBoxColumn1 + // + this.gnameDataGridViewTextBoxColumn1.DataPropertyName = "gname"; + this.gnameDataGridViewTextBoxColumn1.HeaderText = "gname"; + this.gnameDataGridViewTextBoxColumn1.MinimumWidth = 8; + this.gnameDataGridViewTextBoxColumn1.Name = "gnameDataGridViewTextBoxColumn1"; + this.gnameDataGridViewTextBoxColumn1.ReadOnly = true; + this.gnameDataGridViewTextBoxColumn1.Visible = false; + this.gnameDataGridViewTextBoxColumn1.Width = 69; + // + // rnameDataGridViewTextBoxColumn1 + // + this.rnameDataGridViewTextBoxColumn1.DataPropertyName = "rname"; + this.rnameDataGridViewTextBoxColumn1.HeaderText = "rname"; + this.rnameDataGridViewTextBoxColumn1.MinimumWidth = 8; + this.rnameDataGridViewTextBoxColumn1.Name = "rnameDataGridViewTextBoxColumn1"; + this.rnameDataGridViewTextBoxColumn1.ReadOnly = true; + this.rnameDataGridViewTextBoxColumn1.Visible = false; + this.rnameDataGridViewTextBoxColumn1.Width = 66; + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.label1.Location = new System.Drawing.Point(0, 566); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(213, 30); + this.label1.TabIndex = 23; + this.label1.Text = "Channel List"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // textBox1 + // + this.textBox1.BackColor = System.Drawing.Color.Silver; + this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs_grp, "value", true)); + this.textBox1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.textBox1.Location = new System.Drawing.Point(0, 596); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.ReadOnly = true; + this.textBox1.Size = new System.Drawing.Size(213, 46); + this.textBox1.TabIndex = 22; + this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // panel7 + // + this.panel7.Controls.Add(this.bt_delgroup); + this.panel7.Controls.Add(this.LinkLabel5); + this.panel7.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel7.Location = new System.Drawing.Point(0, 642); + this.panel7.Name = "panel7"; + this.panel7.Padding = new System.Windows.Forms.Padding(5, 8, 0, 0); + this.panel7.Size = new System.Drawing.Size(213, 31); + this.panel7.TabIndex = 21; + // + // bt_delgroup + // + this.bt_delgroup.AutoSize = true; + this.bt_delgroup.Dock = System.Windows.Forms.DockStyle.Left; + this.bt_delgroup.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.bt_delgroup.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.bt_delgroup.Location = new System.Drawing.Point(93, 8); + this.bt_delgroup.Name = "bt_delgroup"; + this.bt_delgroup.Size = new System.Drawing.Size(88, 22); + this.bt_delgroup.TabIndex = 11; + this.bt_delgroup.TabStop = true; + this.bt_delgroup.Text = "ì„ íƒê·¸ë£¹ì‚­ì œ"; + this.bt_delgroup.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabel4_LinkClicked); + // + // LinkLabel5 + // + this.LinkLabel5.AutoSize = true; + this.LinkLabel5.Dock = System.Windows.Forms.DockStyle.Left; + this.LinkLabel5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.LinkLabel5.Location = new System.Drawing.Point(5, 8); + this.LinkLabel5.Name = "LinkLabel5"; + this.LinkLabel5.Size = new System.Drawing.Size(88, 22); + this.LinkLabel5.TabIndex = 10; + this.LinkLabel5.TabStop = true; + this.LinkLabel5.Text = "신규그룹ìƒì„±"; + this.LinkLabel5.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabel5_LinkClicked); + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 2; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.Controls.Add(this.bt_run, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.Button2, 1, 0); + this.tableLayoutPanel2.Controls.Add(this.Button1, 1, 1); + this.tableLayoutPanel2.Controls.Add(this.bt_print, 0, 1); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 673); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 2; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(213, 87); + this.tableLayoutPanel2.TabIndex = 20; + // + // bt_run + // + this.bt_run.Dock = System.Windows.Forms.DockStyle.Fill; + this.bt_run.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.bt_run.Location = new System.Drawing.Point(3, 3); + this.bt_run.Name = "bt_run"; + this.bt_run.Size = new System.Drawing.Size(100, 37); + this.bt_run.TabIndex = 7; + this.bt_run.Text = "조회"; + this.bt_run.UseVisualStyleBackColor = true; + this.bt_run.Click += new System.EventHandler(this.bt_run_Click); + // + // Button2 + // + this.Button2.Dock = System.Windows.Forms.DockStyle.Fill; + this.Button2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Button2.Location = new System.Drawing.Point(109, 3); + this.Button2.Name = "Button2"; + this.Button2.Size = new System.Drawing.Size(101, 37); + this.Button2.TabIndex = 18; + this.Button2.Text = "조회범위설정"; + this.Button2.UseVisualStyleBackColor = true; + this.Button2.Click += new System.EventHandler(this.Button2_Click_2); + // + // Button1 + // + this.Button1.Dock = System.Windows.Forms.DockStyle.Fill; + this.Button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Button1.Location = new System.Drawing.Point(109, 46); + this.Button1.Name = "Button1"; + this.Button1.Size = new System.Drawing.Size(101, 38); + this.Button1.TabIndex = 17; + this.Button1.Text = "저장(PNG)"; + this.Button1.UseVisualStyleBackColor = true; + this.Button1.Click += new System.EventHandler(this.Button1_Click_1); + // + // bt_print + // + this.bt_print.Dock = System.Windows.Forms.DockStyle.Fill; + this.bt_print.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.bt_print.Location = new System.Drawing.Point(3, 46); + this.bt_print.Name = "bt_print"; + this.bt_print.Size = new System.Drawing.Size(100, 38); + this.bt_print.TabIndex = 14; + this.bt_print.Text = "ì¸ì‡„"; + this.bt_print.UseVisualStyleBackColor = true; + this.bt_print.Click += new System.EventHandler(this.Button1_Click); + // + // panel6 + // + this.panel6.Controls.Add(this.cmb_group); + this.panel6.Controls.Add(this.Label4); + this.panel6.Dock = System.Windows.Forms.DockStyle.Top; + this.panel6.Location = new System.Drawing.Point(0, 0); + this.panel6.Name = "panel6"; + this.panel6.Padding = new System.Windows.Forms.Padding(0, 5, 0, 5); + this.panel6.Size = new System.Drawing.Size(213, 33); + this.panel6.TabIndex = 19; + // + // cmb_group + // + this.cmb_group.Dock = System.Windows.Forms.DockStyle.Fill; + this.cmb_group.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmb_group.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.999999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.cmb_group.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(0))))); + this.cmb_group.FormattingEnabled = true; + this.cmb_group.Location = new System.Drawing.Point(43, 5); + this.cmb_group.Name = "cmb_group"; + this.cmb_group.Size = new System.Drawing.Size(170, 30); + this.cmb_group.TabIndex = 16; + this.cmb_group.SelectedIndexChanged += new System.EventHandler(this.cmb_group_SelectedIndexChanged); + // + // Label4 + // + this.Label4.Dock = System.Windows.Forms.DockStyle.Left; + this.Label4.Location = new System.Drawing.Point(0, 5); + this.Label4.Name = "Label4"; + this.Label4.Size = new System.Drawing.Size(43, 23); + this.Label4.TabIndex = 15; + this.Label4.Text = "대분류"; + this.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ContextMenuStrip2 + // + this.ContextMenuStrip2.ImageScalingSize = new System.Drawing.Size(24, 24); + this.ContextMenuStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.ToolStripMenuItem1, + this.ToolStripMenuItem2}); + this.ContextMenuStrip2.Name = "ContextMenuStrip1"; + this.ContextMenuStrip2.Size = new System.Drawing.Size(157, 68); + // + // ToolStripMenuItem1 + // + this.ToolStripMenuItem1.Name = "ToolStripMenuItem1"; + this.ToolStripMenuItem1.Size = new System.Drawing.Size(156, 32); + this.ToolStripMenuItem1.Text = "ì‹ ê·œìƒì„±"; + this.ToolStripMenuItem1.Click += new System.EventHandler(this.ToolStripMenuItem1_Click); + // + // ToolStripMenuItem2 + // + this.ToolStripMenuItem2.Name = "ToolStripMenuItem2"; + this.ToolStripMenuItem2.Size = new System.Drawing.Size(156, 32); + this.ToolStripMenuItem2.Text = "ì„ íƒì‚­ì œ"; + this.ToolStripMenuItem2.Click += new System.EventHandler(this.ToolStripMenuItem2_Click); + // + // PrintDocument1 + // + this.PrintDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.PrintDocument1_PrintPage); + // + // PrintPreviewDialog1 + // + this.PrintPreviewDialog1.AutoScrollMargin = new System.Drawing.Size(0, 0); + this.PrintPreviewDialog1.AutoScrollMinSize = new System.Drawing.Size(0, 0); + this.PrintPreviewDialog1.ClientSize = new System.Drawing.Size(400, 300); + this.PrintPreviewDialog1.Document = this.PrintDocument1; + this.PrintPreviewDialog1.Enabled = true; + this.PrintPreviewDialog1.Icon = ((System.Drawing.Icon)(resources.GetObject("PrintPreviewDialog1.Icon"))); + this.PrintPreviewDialog1.Name = "PrintPreviewDialog1"; + this.PrintPreviewDialog1.UseAntiAlias = true; + this.PrintPreviewDialog1.Visible = false; + // + // ToolStrip1 + // + this.ToolStrip1.BackColor = System.Drawing.Color.White; + this.ToolStrip1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ToolStrip1.ImageScalingSize = new System.Drawing.Size(24, 24); + this.ToolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.lb_datatcnt, + this.lb_Area, + this.lb_selgroup, + this.lb_filesearchtime, + this.lb_querytime, + this.ToolStripButton1, + this.lb_charttime, + this.lb_totaltime, + this.toolStripLabel1, + this.toolStripLabel2, + this.toolStripLabel3, + this.btConfig}); + this.ToolStrip1.Location = new System.Drawing.Point(0, 768); + this.ToolStrip1.Name = "ToolStrip1"; + this.ToolStrip1.Size = new System.Drawing.Size(1184, 33); + this.ToolStrip1.TabIndex = 7; + this.ToolStrip1.Text = "ToolStrip1"; + // + // lb_datatcnt + // + this.lb_datatcnt.Name = "lb_datatcnt"; + this.lb_datatcnt.Size = new System.Drawing.Size(121, 28); + this.lb_datatcnt.Text = ""; + // + // lb_Area + // + this.lb_Area.Name = "lb_Area"; + this.lb_Area.Size = new System.Drawing.Size(72, 28); + this.lb_Area.Text = ""; + // + // lb_selgroup + // + this.lb_selgroup.Name = "lb_selgroup"; + this.lb_selgroup.Size = new System.Drawing.Size(89, 28); + this.lb_selgroup.Text = ""; + // + // lb_filesearchtime + // + this.lb_filesearchtime.Name = "lb_filesearchtime"; + this.lb_filesearchtime.Size = new System.Drawing.Size(114, 28); + this.lb_filesearchtime.Text = ""; + // + // lb_querytime + // + this.lb_querytime.Name = "lb_querytime"; + this.lb_querytime.Size = new System.Drawing.Size(120, 28); + this.lb_querytime.Text = ""; + // + // ToolStripButton1 + // + this.ToolStripButton1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.ToolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.ToolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("ToolStripButton1.Image"))); + this.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.ToolStripButton1.Name = "ToolStripButton1"; + this.ToolStripButton1.Size = new System.Drawing.Size(34, 28); + this.ToolStripButton1.Text = "ToolStripButton1"; + this.ToolStripButton1.Click += new System.EventHandler(this.ToolStripButton1_Click_1); + // + // lb_charttime + // + this.lb_charttime.Name = "lb_charttime"; + this.lb_charttime.Size = new System.Drawing.Size(94, 28); + this.lb_charttime.Text = ""; + // + // lb_totaltime + // + this.lb_totaltime.Name = "lb_totaltime"; + this.lb_totaltime.Size = new System.Drawing.Size(74, 28); + this.lb_totaltime.Text = ""; + // + // toolStripLabel1 + // + this.toolStripLabel1.Name = "toolStripLabel1"; + this.toolStripLabel1.Size = new System.Drawing.Size(117, 28); + this.toolStripLabel1.Text = ""; + // + // toolStripLabel2 + // + this.toolStripLabel2.Name = "toolStripLabel2"; + this.toolStripLabel2.Size = new System.Drawing.Size(111, 28); + this.toolStripLabel2.Text = "