File name
Commit message
Commit date
File name
Commit message
Commit date
using EasyModbus;
using Modbus.Device;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace KHModbus
{
public partial class FormModbus : Form
{
// PLC 주소
string mipAddr = "192.168.1.200";
//string mipAddr = "127.0.0.1";
int mPortNumber = 502;
ModbusClient mModbusClient;
List<string[,]> m_Data = new List<string[,]>();
public FormModbus()
{
InitializeComponent();
mModbusClient = new ModbusClient(mipAddr, mPortNumber); //Ip-Address and Port of Modbus-TCP-Server
//timer_Connect.Enabled = true;
SerialConnectionSingleton.Instance().InitialModBus();
SerialConnectionSingleton.Instance().PortName = "COM1";
SerialConnectionSingleton.Instance().BaudRate = 9600;
SerialConnectionSingleton.Instance().Parity = System.IO.Ports.Parity.None;
SerialConnectionSingleton.Instance().StopBits = System.IO.Ports.StopBits.One;
SerialConnectionSingleton.Instance().DataBits = 8;
SerialConnectionSingleton.Instance().SlaveNo = 1;
//UpdateBaseoilSwitch();
}
public void KHModbus2()
{
//client로 연결하는 부분
ModbusClient modbusClient = new ModbusClient(mipAddr, mPortNumber); //Ip-Address and Port of Modbus-TCP-Server
modbusClient.Connect(); //Connect to Server
modbusClient.WriteMultipleCoils(0, new bool[] { true, true, true, true, true, true, true, true, true, true }); //Write Coils starting with Address 5
bool[] readCoils = modbusClient.ReadCoils(9, 10); //Read 10 Coils from Server, starting with address 10
int[] readHoldingRegisters = modbusClient.ReadHoldingRegisters(0, 10); //Read 10 Holding Registers from Server, starting with Address 1
// Console Output
//for (int i = 0; i < readCoils.Length; i++)
// textBox1.Text += "Value of Coil " + (9 + i + 1) + " " + readCoils[i].ToString() +"\r\n";
//for (int i = 0; i < readHoldingRegisters.Length; i++)
// textBox1.Text += "Value of HoldingRegister " + (i + 1) + " " + readHoldingRegisters[i].ToString() + "\r\n";
modbusClient.Disconnect(); //Disconnect from Server
//Console.ReadKey(true);
}
public bool Connect()
{
try
{
if (!mModbusClient.Connected)
mModbusClient.Connect();
if (mModbusClient.Connected)
{
textBox_State.Text += "Connected\r\n";
return true;
}else
{
return false;
}
}
catch(Exception ex)
{
textBox_State.Text += "PLC Connect Error : "+ ex.Message+ "\r\n";
return false;
}
}
public bool[] DataReadCoils(int Addr, int Size)
{
if (mModbusClient.Connected)
{
bool[] read = mModbusClient.ReadCoils(Addr, Size); //Read 10 Holding Registers from Server, starting with Address 1
return read;
}
else
{
return null;
}
}
public int[] DataReadHolding(int Addr, int Size)
{
try
{
if (mModbusClient.Connected)
{
int[] readHoldingRegisters = mModbusClient.ReadHoldingRegisters(Addr, Size); //Read 10 Holding Registers from Server, starting with Address 1
return readHoldingRegisters;
}
else
{
return null;
}
}catch(Exception ex)
{
textBox_State.Text += "DataReading Error : " + ex.Message + "\r\n";
mModbusClient.Disconnect();
return null;
}
}
public int[] DataReadInput(int Addr, int Size)
{
try
{
if (mModbusClient.Connected)
{
int[] readHoldingRegisters = mModbusClient.ReadInputRegisters(Addr, Size); //Read 10 Holding Registers from Server, starting with Address 1
return readHoldingRegisters;
}
else
{
return null;
}
}
catch (Exception ex)
{
textBox_State.Text += "DataReading Error : " + ex.Message + "\r\n";
mModbusClient.Disconnect();
return null;
}
}
public async void modbusReadWrite()
{
TcpClient tcpc = new TcpClient();
tcpc.BeginConnect("127.0.0.1", 502, null, null);
ModbusIpMaster master = ModbusIpMaster.CreateIp(tcpc);
try
{
while(true)
{
bool[] coil = master.ReadCoils(0, 1);
textBox_State.Text += coil[0].ToString();
ushort[] holding = master.ReadHoldingRegisters(0, 1);
//textBox2.Text = holding[0].ToString();
ushort[] input = master.ReadHoldingRegisters(0, 9);
//textBox2.Text = input[0].ToString();
await Task.Delay(500);
}
}catch (Exception ex)
{
}
}
private void simpleButton1_Click(object sender, EventArgs e)
{
KHModbus2();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (mModbusClient.Connected)
{
mModbusClient.Disconnect();
}
else
{
}
}
private void timer_Connect_Tick(object sender, EventArgs e)
{
if(mModbusClient != null)
{
if(mModbusClient.Connected == false)
{
Connect();
}
}
}
private void simpleButton2_Click(object sender, EventArgs e)
{
int[] Data = DataReadInput(400, 47);
if (Data == null) return;
textBox_State.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+ "[400,47]: ";
foreach (int i in Data)
{
textBox_State.Text += i.ToString() + " ";
}
textBox_State.Text += "\r\n";
textBox_State.Select(textBox_State.Text.Length, 0);
textBox_State.ScrollToCaret();
}
private void simpleButton1_Click_1(object sender, EventArgs e)
{
DBConnectionSingleton.Instance().GetSqlData("select * from T_STD_COMPANY");
}
private void simpleButton3_Click(object sender, EventArgs e)
{
if(DBConnectionSingleton.Instance().SetCommand("HTSaveRealData",
DBConnectionSingleton.Instance().getParams("COMP_CD", "0001"),
DBConnectionSingleton.Instance().getParams("MACH_CD", "M0001"),
DBConnectionSingleton.Instance().getParams("REAL_DATA", "1")))
{
textBox_State.Text += "DBInsert Complete\r\n";
}
}
private void simpleButton4_Click(object sender, EventArgs e)
{
//Stopwatch sw = new Stopwatch();
//sw.Reset();
//sw.Start();
//DB 설비정보내에서 온도계 정보를 가져옵니다.[온도계는 CODE정보로 E03으로 저장되어있다]
DataTable dt = DBConnectionSingleton.Instance().GetSqlData("SELECT [COMP_CD],[MACH_CD],[MACH_NO],[MACH_NM] FROM [dbo].[T_STD_MACH] m where m.COMP_CD = '0001' and m.MACH_TYPE = '03' order by MACH_NO asc");
//sw.Stop();
//textBox_State.Text += "Timer Check 1 : "+sw.ElapsedMilliseconds.ToString() + "\r\n";
//sw.Start();
//ReadHolding데이터 0자리에서 10개를 가져온다
int[] Data = DataReadHolding(0, 10);
//데이터를 가져오지 못하면 도루묵
if (Data == null) return;
//sw.Stop();
//textBox_State.Text += "Timer Check 2 : " + sw.ElapsedMilliseconds.ToString() + "\r\n";
//sw.Start();
int Number= 1;
string input_Mach_CD = "";
string input_RealData = "";
//설비정보에서 번호(1~10)와 가져온 정보 0~9)를 매칭하여 설비코드와 데이터를 나열한다.
foreach (int i in Data)
{
for(int j = 0; j < dt.Rows.Count;j++)
{
if(dt.Rows[j]["MACH_NO"].ToString() == Number.ToString())
{
input_Mach_CD += dt.Rows[j]["MACH_CD"].ToString() + ",";
input_RealData += Data[i].ToString() + ",";
}
}
Number++;
}
if(input_Mach_CD.LastIndexOf(',') == input_Mach_CD.Length-1)
{
input_Mach_CD = input_Mach_CD.Substring(0, input_Mach_CD.Length - 1);
}
if (input_RealData.LastIndexOf(',') == input_RealData.Length-1)
{
input_RealData = input_RealData.Substring(0, input_RealData.Length - 1);
}
//sw.Stop();
//textBox_State.Text += "Timer Check 3 : " + sw.ElapsedMilliseconds.ToString() + "\r\n";
//sw.Start();
if (DBConnectionSingleton.Instance().SetCommand("HTSaveRealDataAll",
DBConnectionSingleton.Instance().getParams("COMP_CD", "0001"),
DBConnectionSingleton.Instance().getParams("MACH_CD", input_Mach_CD),
DBConnectionSingleton.Instance().getParams("REAL_DATA", input_RealData)))
{
textBox_State.Text += "DBInsert Complete : " + input_Mach_CD + "\r\n";
textBox_State.Text += "DBInsert Complete : " + input_RealData + "\r\n";
}
//sw.Stop();
//textBox_State.Text += "Timer Check 4 : " + sw.ElapsedMilliseconds.ToString() + "\r\n";
textBox_State.Select(textBox_State.Text.Length, 0);
textBox_State.ScrollToCaret();
UpdateHbtOnOff();
UpdateBaseoilSwitch();
}
public int RunState = 0;
List<string[,]> lst = new List<string[,]>();
string[,] array;
private void timer_AutoInput_Tick(object sender, EventArgs e)
{
DateTime dt = DateTime.Now;
if (dt.Hour == 2 && dt.Minute == 2 && dt.Second == 2)
{
this.Close();
return;
}
switch (RunState)
{
case 0:
//U3Util.ErrorLog(textBox_State.Text);
textBox_State.Text = "";
lst = new List<string[,]>();
break;
case 1:
array = DataReadInputToInt64(textBox_Addr_1.Text, textBox_LENGTH_1.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
break;
case 2:
array = DataReadInputToInt64(textBox_Addr_2.Text, textBox_LENGTH_2.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
break;
case 3:
array = DataReadInput(textBox_Addr_2_2.Text, textBox_LENGTH_2_2.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
break;
case 4:
array = DataReadInput(textBox_Addr_3.Text, textBox_LENGTH_3.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
break;
case 5:
array = DataReadInput(textBox_Addr_4.Text, textBox_LENGTH_4.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
break;
case 6:
array = DataReadInputToInt64(textBox_Addr_5.Text, textBox_LENGTH_5.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
break;
case 7:
array = DataReadInputToBit(textBox_Addr_6.Text, textBox_LENGTH_6.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
break;
case 8:
array = DataReadInputToBit(textBox_Addr_7.Text, textBox_LENGTH_7.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
break;
case 9:
DB_Input(lst);
break;
}
RunState++;
if(RunState >=10)
{
RunState = 0;
}
//textBox_State.Text = "";
//List<string[,]> lst = new List<string[,]>();
//string[,] array;
//array = DataReadInputToInt64(textBox_Addr_1.Text, textBox_LENGTH_1.Text);
//if (array != null) if (array.Length > 1) lst.Add(array);
//array = DataReadInputToInt64(textBox_Addr_2.Text, textBox_LENGTH_2.Text);
//if (array != null) if (array.Length > 1) lst.Add(array);
//array = DataReadInput(textBox_Addr_2_2.Text, textBox_LENGTH_2_2.Text);
//if (array != null) if (array.Length > 1) lst.Add(array);
//array = DataReadInput(textBox_Addr_3.Text, textBox_LENGTH_3.Text);
//if (array != null) if (array.Length > 1) lst.Add(array);
//array = DataReadInput(textBox_Addr_4.Text, textBox_LENGTH_4.Text);
//if (array != null) if (array.Length > 1) lst.Add(array);
//array = DataReadInputToInt64(textBox_Addr_5.Text, textBox_LENGTH_5.Text);
//if (array != null) if (array.Length > 1) lst.Add(array);
//array = DataReadInputToBit(textBox_Addr_6.Text, textBox_LENGTH_6.Text);
//if (array != null) if (array.Length > 1) lst.Add(array);
//DB_Input(lst);
//if (SerialConnectionSingleton.Instance().IsOpen())
//{
// try
// {
// array = SerialConnectionSingleton.Instance().DataReadHolding("220", "1");
// if (array != null)
// {
// if (array.Length > 1)
// {
// lst.Add(array);
// for (int i = 0; i < array.Length / 2; i++)
// {
// textBox_State.Text += "[" + array[i, 0] + ":" + array[i, 1] + "]";
// }
// textBox_State.Text += "\r\n";
// }
// }
// array = SerialConnectionSingleton.Instance().DataReadHolding("231", "1");
// if (array != null)
// {
// if (array.Length > 1)
// {
// lst.Add(array);
// for (int i = 0; i < array.Length / 2; i++)
// {
// textBox_State.Text += "[" + array[i, 0] + ":" + array[i, 1] + "]";
// }
// textBox_State.Text += "\r\n";
// }
// }
// array = SerialConnectionSingleton.Instance().DataReadHolding("242", "1");
// if (array != null)
// {
// if (array.Length > 1)
// {
// lst.Add(array);
// for (int i = 0; i < array.Length / 2; i++)
// {
// textBox_State.Text += "[" + array[i, 0] + ":" + array[i, 1] + "]";
// }
// textBox_State.Text += "\r\n";
// }
// }
// array = SerialConnectionSingleton.Instance().DataReadHolding("253", "1");
// if (array != null)
// {
// if (array.Length > 1)
// {
// lst.Add(array);
// for (int i = 0; i < array.Length / 2; i++)
// {
// textBox_State.Text += "[" + array[i, 0] + ":" + array[i, 1] + "]";
// }
// textBox_State.Text += "\r\n";
// }
// }
// array = SerialConnectionSingleton.Instance().DataReadHolding("264", "1");
// if (array != null)
// {
// if (array.Length > 1)
// {
// lst.Add(array);
// for (int i = 0; i < array.Length / 2; i++)
// {
// textBox_State.Text += "[" + array[i, 0] + ":" + array[i, 1] + "]";
// }
// textBox_State.Text += "\r\n";
// }
// }
// array = SerialConnectionSingleton.Instance().DataReadHolding("275", "1");
// if (array != null)
// {
// if (array.Length > 1)
// {
// lst.Add(array);
// for (int i = 0; i < array.Length / 2; i++)
// {
// textBox_State.Text += "[" + array[i, 0] + ":" + array[i, 1] + "]";
// }
// textBox_State.Text += "\r\n";
// }
// }
// DB_Input(lst);
// }
// catch (Exception ex)
// {
// textBox_State.Text += "시리얼통신 연결중..." + "\r\n";
// }
//}
}
private void toggleSwitch_Auto_Toggled(object sender, EventArgs e)
{
timer_Connect.Enabled = toggleSwitch_Auto.IsOn;
timer_AutoInput.Enabled = toggleSwitch_Auto.IsOn;
timer_DBInsert.Enabled = toggleSwitch_Auto.IsOn;
}
private void simpleButton5_Click(object sender, EventArgs e)
{
if(SerialConnectionSingleton.Instance().IsOpen())
{
//ushort resultBit = SerialConnectionSingleton.Instance().ReadWords_To_ushort(4, 0, 2);
//ushort resultBit2 = SerialConnectionSingleton.Instance().ReadWords_To_ushort(4, 1, 1);
//for(int i = 1000; i<=1010;i++)
//{
// int resultBit = SerialConnectionSingleton.Instance().ReadWords_To_int(1, 4, (ushort)i, 2);
// textBox_State.Text += "Slave1_4_"+i+" : " + resultBit + "\r\n";
// textBox_State.Select(textBox_State.Text.Length, 0);
// textBox_State.ScrollToCaret();
//}
//for (int i = 31000; i <= 31010; i++)
//{
// int resultBit = SerialConnectionSingleton.Instance().ReadWords_To_int(1, 4, (ushort)i, 2);
// textBox_State.Text += "Slave1_4_" + i + " : " + resultBit + "\r\n";
// textBox_State.Select(textBox_State.Text.Length, 0);
// textBox_State.ScrollToCaret();
//}
//for (int i = 1000; i <= 1010; i++)
//{
// int resultBit = SerialConnectionSingleton.Instance().ReadWords_To_int(2, 4, (ushort)i, 2);
// textBox_State.Text += "Slave1_3_" + i + " : " + resultBit + "\r\n";
// textBox_State.Select(textBox_State.Text.Length, 0);
// textBox_State.ScrollToCaret();
//}
int resultBit1 = SerialConnectionSingleton.Instance().ReadWords_To_int(2, 4, 1002, 2);
textBox_State.Text += "[SV]Slave2_4_" + 1002 + " : " + resultBit1 + "\r\n";
int resultBit2 = SerialConnectionSingleton.Instance().ReadWords_To_int(2, 4, 1005, 2);
textBox_State.Text += "[PV]Slave2_4_" + 1005 + " : " + resultBit2 + "\r\n";
//for (int i = 31000; i <= 31010; i++)
//{
// int resultBit = SerialConnectionSingleton.Instance().ReadWords_To_int(1, 3, (ushort)i, 2);
// textBox_State.Text += "Slave1_3_" + i + " : " + resultBit + "\r\n";
// textBox_State.Select(textBox_State.Text.Length, 0);
// textBox_State.ScrollToCaret();
//}
//int resultBit3 = SerialConnectionSingleton.Instance().ReadWords_To_int(1, 4, 1005, 2);
//int resultBit4 = SerialConnectionSingleton.Instance().ReadWords_To_int(2, 4, 31004, 2);
//int resultBit3 = SerialConnectionSingleton.Instance().ReadWords_To_int(1, 4, 1005, 2);
//int resultBit4 = SerialConnectionSingleton.Instance().ReadWords_To_int(4, 0, 2);
//textBox_State.Text += "ReadSerial1 : " + resultBit + "\r\n";
//textBox_State.Text += "ReadSerial2 : " + resultBit2 + "\r\n";
//textBox_State.Text += "Slave1_4_31004 : " + resultBit3 + "\r\n";
//textBox_State.Text += "Slave2_4_31004 : " + resultBit4 + "\r\n";
}
}
private void simpleButton6_Click(object sender, EventArgs e)
{
if (SerialConnectionSingleton.Instance().IsOpen())
{
try
{
int resultBit1 = SerialConnectionSingleton.Instance().ReadWords_To_int(Convert.ToByte(textBox_DEV_ID.Text), Convert.ToByte(textBox_FUNC.Text), Convert.ToUInt16(textBox_ADDR.Text), 2);
textBox_State.Text += "[4Byte]Slave"+ textBox_DEV_ID.Text + "_"+ textBox_FUNC.Text + "_" + textBox_ADDR.Text + " : " + resultBit1 + "\r\n";
textBox_State.Select(textBox_State.Text.Length, 0);
textBox_State.ScrollToCaret();
}catch(Exception ex)
{
textBox_State.Text += ex.Message+"\r\n";
textBox_State.Select(textBox_State.Text.Length, 0);
textBox_State.ScrollToCaret();
}
}
}
private void simpleButton7_Click(object sender, EventArgs e)
{
if (SerialConnectionSingleton.Instance().IsOpen())
{
try
{
ushort resultBit1 = SerialConnectionSingleton.Instance().ReadWords_To_ushort(Convert.ToByte(textBox_DEV_ID.Text), Convert.ToByte(textBox_FUNC.Text), Convert.ToUInt16(textBox_ADDR.Text), 1);
textBox_State.Text += "[2Byte]Slave" + textBox_DEV_ID.Text + "_" + textBox_FUNC.Text + "_" + textBox_ADDR.Text + " : " + resultBit1 + "\r\n";
textBox_State.Select(textBox_State.Text.Length, 0);
textBox_State.ScrollToCaret();
}
catch (Exception ex)
{
textBox_State.Text += ex.Message + "\r\n";
textBox_State.Select(textBox_State.Text.Length, 0);
textBox_State.ScrollToCaret();
}
}
}
private void FormModbus_Load(object sender, EventArgs e)
{
}
public string[,] DataReadHolding(string Addr, string Length)
{
int[] Data = DataReadHolding(Convert.ToInt32(Addr), Convert.ToInt32(Length));
if (Data == null) return null;
string[,] result = new string[Data.Length, 2];
textBox_State.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ": ";
int aa = 0;
foreach (int i in Data)
{
textBox_State.Text += "[" + (Convert.ToInt32(Addr) + aa).ToString() + ":" + i.ToString() + "].";
result[aa, 0] = (Convert.ToInt32(Addr) + aa).ToString();
result[aa, 1] = i.ToString();
aa++;
}
textBox_State.Text += "\r\n";
textBox_State.Select(textBox_State.Text.Length, 0);
textBox_State.ScrollToCaret();
return result;
}
public string[,] DataReadInput(string Addr, string Length)
{
int[] Data = DataReadInput(Convert.ToInt32(Addr), Convert.ToInt32(Length));
if (Data == null) return null;
string[,] result = new string[Data.Length, 2];
textBox_State.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ": ";
int aa = 0;
foreach (int i in Data)
{
textBox_State.Text += "[" + (Convert.ToInt32(Addr) + aa).ToString() + ":" + i.ToString() + "].";
result[aa, 0] = (Convert.ToInt32(Addr) + aa).ToString();
result[aa, 1] = i.ToString();
aa++;
}
textBox_State.Text += "\r\n";
textBox_State.Select(textBox_State.Text.Length, 0);
textBox_State.ScrollToCaret();
return result;
}
public string[,] DataReadInputToBit(string Addr, string Length)
{
int[] Data = DataReadInput(Convert.ToInt32(Addr), Convert.ToInt32(Length));
if (Data == null) return null;
string[,] result = new string[Data.Length*32, 2];
textBox_State.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ": ";
int aa = 0;
string Result = "";
for (int i = 0; i < Data.Length; i++)
{
byte[] a = BitConverter.GetBytes(Convert.ToInt32(Data[i]));
textBox_State.Text += "[" + (Convert.ToInt32(Addr) + i).ToString() + ":";
for (int j = 0; j < a.Length; j++)
{
string s = Convert.ToString(a[j], 2).PadLeft(8, '0');
char[] sa = s.ToCharArray();
Array.Reverse(sa);
for (int r = 0; r < sa.Length; r++)
{
result[((i * a.Length * 8) + (j * 8)) + r, 0] = (Convert.ToInt32(Addr) + i).ToString()+"."+((j*8)+r).ToString();
result[((i * a.Length * 8) + (j * 8)) + r, 1] = sa[r].ToString();
}
textBox_State.Text += new string(sa);
Result += new string(sa);
}
textBox_State.Text += "].";
}
textBox_State.Text += "\r\n";
textBox_State.Select(textBox_State.Text.Length, 0);
textBox_State.ScrollToCaret();
return result;
}
public string[,] DataReadInputTouUint64(string Addr, string Length)
{
//Stopwatch sw = new Stopwatch();
//sw.Start();
int[] Data = DataReadInput(Convert.ToInt32(Addr), Convert.ToInt32(Length));
if (Data == null) return null;
string[,] result = new string[Data.Length / 2 + ((Data.Length & 2) == 1 ? 1 : 0), 2];
//sw.Stop();
//textBox_State.Text += "[Time1: " + sw.ElapsedMilliseconds + "] \r\n";
//sw.Reset();
//sw.Start();
textBox_State.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ": ";
int aa = 0;
for (int i = 0; i < Data.Length - 1; i++)
{
byte[] a = BitConverter.GetBytes(Convert.ToInt16(Data[i]));
byte[] b = null;
if (Data.Length > i + 1)
{
b = BitConverter.GetBytes(Convert.ToInt16(Data[i + 1]));
}
else
{
b = new byte[2] { 0, 0 };
}
byte[] c = new byte[4];
Array.Copy(a, 0, c, 0, a.Length);
Array.Copy(b, 0, c, a.Length, b.Length);
textBox_State.Text += "[" + (Convert.ToInt32(Addr) + i).ToString() + ":" + BitConverter.ToInt32(c, 0).ToString() + "].";
result[aa, 0] = (Convert.ToInt32(Addr) + i).ToString();
result[aa, 1] = BitConverter.ToUInt32(c, 0).ToString();
aa++;
i++;
}
foreach (int i in Data)
{
}
textBox_State.Text += "\r\n";
textBox_State.Select(textBox_State.Text.Length, 0);
textBox_State.ScrollToCaret();
//sw.Stop();
//textBox_State.Text += "[Time2: " + sw.ElapsedMilliseconds + "] \r\n";
return result;
}
public string[,] DataReadInputToInt64(string Addr, string Length)
{
//Stopwatch sw = new Stopwatch();
//sw.Start();
int[] Data = DataReadInput(Convert.ToInt32(Addr), Convert.ToInt32(Length));
if (Data == null) return null;
string[,] result = new string[Data.Length/2+((Data.Length&2)==1?1:0), 2];
//sw.Stop();
//textBox_State.Text += "[Time1: " + sw.ElapsedMilliseconds + "] \r\n";
//sw.Reset();
//sw.Start();
textBox_State.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ": ";
int aa = 0;
for(int i=0 ; i<Data.Length-1;i++)
{
byte[] a = BitConverter.GetBytes(Convert.ToInt16(Data[i]));
byte[] b = null;
if (Data.Length > i+1)
{
b = BitConverter.GetBytes(Convert.ToInt16(Data[i + 1]));
}else
{
b = new byte[2] {0,0};
}
byte[] c = new byte[4];
Array.Copy(a, 0, c, 0, a.Length);
Array.Copy(b, 0, c, a.Length, b.Length);
textBox_State.Text += "[" + (Convert.ToInt32(Addr) + i).ToString() + ":" + BitConverter.ToInt32(c,0).ToString() + "].";
result[aa, 0] = (Convert.ToInt32(Addr) + i).ToString();
result[aa, 1] = BitConverter.ToInt32(c, 0).ToString();
aa++;
i++;
}
foreach (int i in Data)
{
}
textBox_State.Text += "\r\n";
textBox_State.Select(textBox_State.Text.Length, 0);
textBox_State.ScrollToCaret();
//sw.Stop();
//textBox_State.Text += "[Time2: " + sw.ElapsedMilliseconds + "] \r\n";
return result;
}
private void simpleButton_InputRegister_1_Click(object sender, EventArgs e)
{
textBox_State.Text = "";
string[,] Data = DataReadInputToInt64(textBox_Addr_1.Text, textBox_LENGTH_1.Text);
DB_Input(Data);
}
private void simpleButton_InputRegister_2_Click(object sender, EventArgs e)
{
textBox_State.Text = "";
string[,] Data = DataReadInputToInt64(textBox_Addr_2.Text, textBox_LENGTH_2.Text);
DB_Input(Data);
}
private void simpleButton_InputRegister_3_Click(object sender, EventArgs e)
{
textBox_State.Text = "";
string[,] Data = DataReadInput(textBox_Addr_3.Text, textBox_LENGTH_3.Text);
DB_Input(Data);
}
private void simpleButton_InputRegister_4_Click(object sender, EventArgs e)
{
textBox_State.Text = "";
string[,] Data = DataReadInput(textBox_Addr_4.Text, textBox_LENGTH_4.Text);
DB_Input(Data);
}
private void simpleButton_InputRegister_5_Click(object sender, EventArgs e)
{
textBox_State.Text = "";
string[,] Data = DataReadInputTouUint64(textBox_Addr_5.Text, textBox_LENGTH_5.Text);
DB_Input(Data);
}
private void simpleButton_InputRegister_6_Click(object sender, EventArgs e)
{
//textBox_State.Text = "";
string[,] Data = DataReadInputToBit(textBox_Addr_6.Text, textBox_LENGTH_6.Text);
//for (int i = 0; i < Data.Length / 2; i++)
//{
// textBox_State.Text += "["+Data[i,0]+ " : "+Data[i,1]+"]";
//}
//textBox_State.Text += "\r\n";
DB_Input(Data);
}
private void simpleButton_InputRegister_7_Click(object sender, EventArgs e)
{
string[,] Data = DataReadInputToBit(textBox_Addr_7.Text, textBox_LENGTH_7.Text);
DB_Input(Data);
}
private void simpleButton_InputRegister_2_2_Click(object sender, EventArgs e)
{
textBox_State.Text = "";
string[,] Data = DataReadInput(textBox_Addr_2_2.Text, textBox_LENGTH_2_2.Text);
DB_Input(Data);
}
public void DB_Input(List<string[,]> Data)
{
m_Data = Data;
}
public void DB_Input(string[,]Data)
{
if (!DBConnectionSingleton.Instance().isConnect()) return;
//DB 설비정보내에서 온도계 정보를 가져옵니다.[온도계는 CODE정보로 E03으로 저장되어있다]
DataTable dt = DBConnectionSingleton.Instance().GetSqlData("SELECT [COMP_CD],[MACH_CD],[MACH_NO],[MACH_NM] FROM [dbo].[T_STD_MACH] m where m.COMP_CD = '0001' order by MACH_NO asc");
if (dt == null) return;
string input_Mach_CD = "";
string input_RealData = "";
textBox_State.Text += "TEST START \r\n";
if (Data != null)
{
for (int i = 0; i < Data.Length / 2; i++)
{
for (int j = 0; j < dt.Rows.Count; j++)
{
if (dt.Rows[j]["MACH_NO"].ToString() == Data[i,0].ToString())
{
textBox_State.Text += "["+ dt.Rows[j]["MACH_CD"].ToString() + ":"+ Data[i, 1].ToString() + "]";
input_Mach_CD += dt.Rows[j]["MACH_CD"].ToString() + ",";
input_RealData += Data[i,1].ToString() + ",";
break;
}
}
}
}
textBox_State.Text += "TEST END\r\n";
if (input_Mach_CD.LastIndexOf(',') == input_Mach_CD.Length - 1 && input_Mach_CD.LastIndexOf(',') != -1)
{
input_Mach_CD = input_Mach_CD.Substring(0, input_Mach_CD.Length - 1);
}
if (input_RealData.LastIndexOf(',') == input_RealData.Length - 1 && input_RealData.LastIndexOf(',') != -1)
{
input_RealData = input_RealData.Substring(0, input_RealData.Length - 1);
}
//sw.Stop();
//textBox_State.Text += "Timer Check 3 : " + sw.ElapsedMilliseconds.ToString() + "\r\n";
//sw.Start();
if (input_Mach_CD == "" || input_RealData == "") return;
U3Util.ErrorLog("void DB_Input(string[,]Data) --> HTSaveRealDataAll");
if (DBConnectionSingleton.Instance().SetCommand("HTSaveRealDataAll",
DBConnectionSingleton.Instance().getParams("COMP_CD", "0001"),
DBConnectionSingleton.Instance().getParams("MACH_CD", input_Mach_CD),
DBConnectionSingleton.Instance().getParams("REAL_DATA", input_RealData)))
{
textBox_State.Text += "DBInsert Complete : " + input_Mach_CD + "\r\n";
textBox_State.Text += "DBInsert Complete : " + input_RealData + "\r\n";
}
}
class MACHDATA
{
public string MACH_NO { get; set; }
public string DATA { get; set; }
}
public void All_Data_Insert()
{
//DB 설비정보내에서 온도계 정보를 가져옵니다.[온도계는 CODE정보로 E03으로 저장되어있다]
DataTable dt = DBConnectionSingleton.Instance().GetSqlData("SELECT [COMP_CD],[MACH_CD],[MACH_NO],[MACH_NM] FROM [dbo].[T_STD_MACH] m where m.COMP_CD = '0001' order by MACH_CD asc");
if (dt == null) return;
string input_Mach_CD = "";
string input_RealData = "";
List<MACHDATA> inputData = new List<MACHDATA>();
if (m_Data != null)
{
if (m_Data.Count >= 1)
{
foreach (string[,] strData in m_Data)
{
for (int i = 0; i < strData.Length / 2; i++)
{
for (int j = 0; j < dt.Rows.Count; j++)
{
if (dt.Rows[j]["MACH_NO"].ToString() == strData[i, 0].ToString())
{
MACHDATA MData = new MACHDATA();
MData.MACH_NO = dt.Rows[j]["MACH_CD"].ToString();
MData.DATA = strData[i, 1].ToString();
inputData.Add(MData);
//input_Mach_CD += dt.Rows[j]["MACH_CD"].ToString() + ",";
//input_RealData += strData[i, 1].ToString() + ",";
break;
}
}
}
}
}
}
List<MACHDATA> sortList = inputData.OrderBy(x => x.MACH_NO).ThenBy(x => x.DATA).ToList();
foreach(MACHDATA md in sortList)
{
input_Mach_CD += md.MACH_NO + ",";
input_RealData += md.DATA + ",";
}
if (input_Mach_CD.LastIndexOf(',') == input_Mach_CD.Length - 1 && input_Mach_CD.LastIndexOf(',') != -1)
{
input_Mach_CD = input_Mach_CD.Substring(0, input_Mach_CD.Length - 1);
}
if (input_RealData.LastIndexOf(',') == input_RealData.Length - 1 && input_RealData.LastIndexOf(',') != -1)
{
input_RealData = input_RealData.Substring(0, input_RealData.Length - 1);
}
//sw.Stop();
//textBox_State.Text += "Timer Check 3 : " + sw.ElapsedMilliseconds.ToString() + "\r\n";
//sw.Start();
if (input_Mach_CD == "" || input_RealData == "") return;
U3Util.ErrorLog("All_Data_Insert --> HTSaveRealDataAll");
if (DBConnectionSingleton.Instance().SetCommand("HTSaveRealDataAll",
DBConnectionSingleton.Instance().getParams("COMP_CD", "0001"),
DBConnectionSingleton.Instance().getParams("MACH_CD", input_Mach_CD),
DBConnectionSingleton.Instance().getParams("REAL_DATA", input_RealData)))
{
textBox_State.Text += "DBInsert Complete : " + input_Mach_CD + "\r\n";
textBox_State.Text += "DBInsert Complete : " + input_RealData + "\r\n";
}
if (CheckTemp() == false)
{
this.Close();
return;
}
U3Util.ErrorLog("온도 체크 완료. All_Data_Insert");
UpdateHbtOnOff();
UpdateBaseoilSwitch();
}
private Dictionary<string, int> m_dicHbtOnOff = new Dictionary<string, int>();
private void UpdateHbtOnOff()
{
U3Util.ErrorLog("UpdateHbtOnOff");
U3Database db = new U3Database();
string strSQL = "";
strSQL = "";
strSQL += " select *";
strSQL += " from T_HT_REAL_DATA a";
strSQL += " left join T_STD_MACH b on a.MACH_CD = b.MACH_CD";
strSQL += " where b.REMARK03 = 'TEMP'";
strSQL += "";
DataTable dtTemp = db.OpenSQL(strSQL);
strSQL = "";
strSQL += " select *";
strSQL += " from T_HT_REAL_DATA a";
strSQL += " left join T_STD_MACH b on a.MACH_CD = b.MACH_CD";
strSQL += " where b.REMARK03 = 'TIME'";
strSQL += "";
DataTable dtTime = db.OpenSQL(strSQL);
strSQL = "";
strSQL += " select *";
strSQL += " from T_HT_REAL_DATA a";
strSQL += " left join T_STD_MACH b on a.MACH_CD = b.MACH_CD";
strSQL += " where b.REMARK03 = 'ONOFF'";
strSQL += "";
DataTable dtOnoff = db.OpenSQL(strSQL);
foreach (DataRow dr in dtOnoff.Rows)
{
string strHbt = U3Util.toStr(dr["REMARK01"]);
if (strHbt == "") continue;
int val = U3Util.toInt(dr["REAL_DATA"]);
if (m_dicHbtOnOff.ContainsKey(strHbt))
{
int prev = m_dicHbtOnOff[strHbt];
// 값이 이전과 달라졌는가?
if (val != prev)
{
U3Util.ErrorLog(String.Format("UpdateHbtOnOff {0}, {1}, {2}", strHbt, val, prev));
float fTemp = 0;
int nTime = 0;
foreach (DataRow drTemp in dtTemp.Rows)
{
string s = U3Util.toStr(drTemp["REMARK01"]);
if (s == strHbt)
{
float f1 = U3Util.toFloat(drTemp["REAL_DATA"]);
float f2 = U3Util.toFloat(drTemp["VALUE_RATIO"]);
fTemp = f1 * f2;
break;
}
}
foreach (DataRow drTime in dtTime.Rows)
{
string s = U3Util.toStr(drTime["REMARK01"]);
if (s == strHbt)
{
nTime = U3Util.toInt(drTime["REAL_DATA"]);
break;
}
}
string sql2 = "";
sql2 += " insert into T_HT_HIST_HBT (COMP_CD,HBT_CD,ONOFF_YN,MINUTE_VAL,TEMP_VAL,REG_DT) values (";
sql2 += " '0001', ";
sql2 += " '" + strHbt + "', ";
sql2 += " '" + (val == 1 ? "Y" : "N") + "', ";
sql2 += " " + nTime.ToString() + ", ";
sql2 += " " + fTemp.ToString() + ", ";
sql2 += " getdate() ";
sql2 += " )";
sql2 += " ";
db.ExcuteSql(sql2);
}
}
// 새로운 값을 Dictionary에 저장
m_dicHbtOnOff[strHbt] = val;
}
/*
strSQL = "select isnull(REMARK02, '') as REMARK02 from T_STD_MACH where MACH_TYPE = '05' group by REMARK02";
DataTable dt = db.OpenSQL(strSQL);
foreach (DataRow dr in dt.Rows)
{
string s = U3Util.toStr(dr["REMARK02"]);
if (s.Length > 0)
{
myDictionary.Add(s, "");
}
}
strSQL = "";
strSQL += " select a.MACH_CD, a.MACH_NM, isnull(b.REAL_DATA, 0) as REAL_DATA, a.REMARK01, a.REMARK02";
strSQL += " from T_STD_MACH a";
strSQL += " left join T_HT_REAL_DATA b on a.MACH_CD = b.MACH_CD";
strSQL += " where a.MACH_TYPE = '05'";
strSQL += " and isnull(b.REAL_DATA, 0) = 1";
dt = db.OpenSQL(strSQL);
foreach (DataRow dr in dt.Rows)
{
string s1 = U3Util.toStr(dr["REMARK01"]);
string s2 = U3Util.toStr(dr["REMARK02"]);
if (s1.Length > 0 && s2.Length > 0)
{
myDictionary[s2] = s1;
}
}
foreach (KeyValuePair<string, string> item in myDictionary)
{
string sql1 = "";
sql1 += " update T_HT_REAL_BASEOIL set";
sql1 += " HBT_CD = '" + item.Value + "', ";
sql1 += " REG_DT = getdate()";
sql1 += " where COMP_CD = '0001' and BASEOIL_CD = '" + item.Key + "'";
string sql2 = "";
sql2 += " insert into T_HT_REAL_BASEOIL (COMP_CD, BASEOIL_CD) values";
sql2 += " ('0001', '" + item.Key + "') ";
int nResult = db.ExcuteSql(sql1);
if (nResult == 0)
{
db.ExcuteSql(sql2);
db.ExcuteSql(sql1);
}
}
*/
}
private Dictionary<string, float> m_dicPV = new Dictionary<string, float>();
private void UpdateBaseoilSwitch()
{
U3Util.ErrorLog("UpdateBaseoilSwitch");
U3Database db = new U3Database();
string strSQL = "";
strSQL = " SELECT *, (a.REAL_DATA * b.VALUE_RATIO) as PV_VAL FROM T_HT_REAL_DATA a ";
strSQL += " left join T_STD_MACH b on a.MACH_CD = b.MACH_CD where b.REMARK04 is not null";
DataTable dtCurPV = db.OpenSQL(strSQL);
foreach (DataRow drCurPV in dtCurPV.Rows)
{
string strBaseoil = U3Util.toStr(drCurPV["REMARK04"]);
string strMachCD = U3Util.toStr(drCurPV["MACH_CD"]);
string strMachNM = U3Util.toStr(drCurPV["MACH_NM"]);
string strRealData = U3Util.toStr(drCurPV["REAL_DATA"]);
float fPV = U3Util.toFloat(drCurPV["PV_VAL"]);
if (m_dicPV.ContainsKey(strMachCD) == false)
{
m_dicPV.Add(strMachCD, fPV);
}
else
{
float fPrev = m_dicPV[strMachCD];
if (fPV < (fPrev * 0.1))
{
U3Util.ErrorLog("### " + strBaseoil + " = 이전: " + fPrev.ToString() + " / 현재: " + fPV.ToString());
string sql3 = "";
sql3 += " insert into T_HT_HIST_BASEOIL (COMP_CD,BASEOIL_CD,HBT_CD,ONOFF_YN,REAL_DATA,PV_VAL,MACH_NM,REG_DT) values (";
sql3 += " '0001', ";
sql3 += " '" + strBaseoil + "', ";
sql3 += " '', ";
sql3 += " 'X', ";
sql3 += " " + strRealData + ", ";
sql3 += " " + fPrev.ToString() + ", ";
sql3 += " '" + strMachNM + "', ";
sql3 += " getdate() ";
sql3 += " )";
sql3 += " ";
db.ExcuteSql(sql3);
}
m_dicPV[strMachCD] = fPV;
}
}
Dictionary<string, string> oldDic = new Dictionary<string, string>();
strSQL = "select * from T_HT_REAL_BASEOIL";
DataTable dtOld = db.OpenSQL(strSQL);
foreach (DataRow drOld in dtOld.Rows)
{
string strKey = U3Util.toStr(drOld["BASEOIL_CD"]);
string strVal = U3Util.toStr(drOld["HBT_CD"]);
if (oldDic.ContainsKey(strKey) == false)
oldDic.Add(strKey, strVal);
}
Dictionary<string, float> pvDic = new Dictionary<string, float>();
Dictionary<string, float> realDataDic = new Dictionary<string, float>();
Dictionary<string, string> machNmDic = new Dictionary<string, string>();
strSQL = "";
strSQL += " SELECT a.MACH_CD, a.REAL_DATA, (REAL_DATA * VALUE_RATIO) as PV_VAL, MACH_NM, REMARK04";
strSQL += " FROM T_HT_REAL_DATA a";
strSQL += " left join T_STD_MACH b on a.MACH_CD = b.MACH_CD";
strSQL += " where b.REMARK04 is not null";
DataTable dtPv = db.OpenSQL(strSQL);
foreach (DataRow drPv in dtPv.Rows)
{
string strKey = U3Util.toStr(drPv["REMARK04"]);
float fVal = U3Util.toFloat(drPv["PV_VAL"]);
float fRealData = U3Util.toFloat(drPv["REAL_DATA"]);
string strMachNm = U3Util.toStr(drPv["MACH_NM"]);
if (pvDic.ContainsKey(strKey) == false)
pvDic.Add(strKey, fVal);
if (realDataDic.ContainsKey(strKey) == false)
realDataDic.Add(strKey, fRealData);
if (machNmDic.ContainsKey(strKey) == false)
machNmDic.Add(strKey, strMachNm);
}
Dictionary<string, string> myDictionary = new Dictionary<string, string>();
strSQL = "select isnull(REMARK02, '') as REMARK02 from T_STD_MACH where MACH_TYPE = '05' group by REMARK02";
DataTable dt = db.OpenSQL(strSQL);
foreach (DataRow dr in dt.Rows)
{
string s = U3Util.toStr(dr["REMARK02"]);
if (s.Length > 0)
{
myDictionary.Add(s, "");
}
}
strSQL = "";
strSQL += " select a.MACH_CD, a.MACH_NM, isnull(b.REAL_DATA, 0) as REAL_DATA, a.REMARK01, a.REMARK02";
strSQL += " from T_STD_MACH a";
strSQL += " left join T_HT_REAL_DATA b on a.MACH_CD = b.MACH_CD";
strSQL += " where a.MACH_TYPE = '05'";
strSQL += " and isnull(b.REAL_DATA, 0) = 1";
dt = db.OpenSQL(strSQL);
foreach (DataRow dr in dt.Rows)
{
string s1 = U3Util.toStr(dr["REMARK01"]);
string s2 = U3Util.toStr(dr["REMARK02"]);
if (s1.Length > 0 && s2.Length > 0)
{
myDictionary[s2] = s1;
}
}
foreach (KeyValuePair<string, string> item in myDictionary)
{
U3Util.ErrorLog(String.Format("UpdateBaseoilSwitch {0}, {1}", item.Key, item.Value));
if (oldDic.ContainsKey(item.Key))
{
float pvVal = 0;
if (pvDic.ContainsKey(item.Key))
{
pvVal = pvDic[item.Key];
}
float realDataVal = 0;
if (realDataDic.ContainsKey(item.Key))
{
realDataVal = realDataDic[item.Key];
}
string mach_nm = "";
if (machNmDic.ContainsKey(item.Key))
{
mach_nm = machNmDic[item.Key];
}
string oldValue = oldDic[item.Key];
if (item.Value != oldValue)
{
float pvVal2 = 0;
float realDataVal2 = 0;
if (item.Value.Length == 0)
{
// N인 경우 PV_VAL2 에 차이값을 저장한다
string sql4 = "";
sql4 += " select * from T_HT_HIST_BASEOiL";
sql4 += " where BASEOIL_CD = '" + item.Key + "' and HBT_CD = '" + oldValue + "'";
sql4 += " order by idx desc";
DataTable dt4 = db.OpenSQL(sql4);
if (dt4 != null && dt4.Rows.Count > 0)
{
float fPrev = U3Util.toFloat(dt4.Rows[0]["PV_VAL"]);
pvVal2 = fPrev - pvVal;
float rPrev = U3Util.toFloat(dt4.Rows[0]["REAL_DATA"]);
realDataVal2 = rPrev - realDataVal;
}
}
string sql3 = "";
sql3 += " insert into T_HT_HIST_BASEOIL (COMP_CD,BASEOIL_CD,HBT_CD,ONOFF_YN,REAL_DATA,REAL_DATA2, PV_VAL,PV_VAL2,MACH_NM,REG_DT) values (";
sql3 += " '0001', ";
sql3 += " '" + item.Key + "', ";
sql3 += " '" + ((item.Value.Length > 0) ? item.Value : oldValue) + "', ";
sql3 += " '" + ((item.Value.Length > 0) ? "Y" : "N") + "', ";
sql3 += " " + realDataVal.ToString() + ", ";
sql3 += " " + realDataVal2.ToString() + ", ";
sql3 += " " + pvVal.ToString() + ", ";
sql3 += " " + pvVal2.ToString() + ", ";
sql3 += " '" + mach_nm + "', ";
sql3 += " getdate() ";
sql3 += " )";
sql3 += " ";
db.ExcuteSql(sql3);
}
}
string sql1 = "";
sql1 += " update T_HT_REAL_BASEOIL set";
sql1 += " HBT_CD = '" + item.Value + "', ";
sql1 += " REG_DT = getdate()";
sql1 += " where COMP_CD = '0001' and BASEOIL_CD = '" + item.Key + "'";
string sql2 = "";
sql2 += " insert into T_HT_REAL_BASEOIL (COMP_CD, BASEOIL_CD) values";
sql2 += " ('0001', '" + item.Key + "') ";
int nResult = db.ExcuteSql(sql1);
if (nResult == 0)
{
db.ExcuteSql(sql2);
db.ExcuteSql(sql1);
}
}
}
private void simpleButton_All_Click(object sender, EventArgs e)
{
textBox_State.Text = "";
var lst = new List<string[,]>();
string[,] array;
array = DataReadInputToInt64(textBox_Addr_1.Text, textBox_LENGTH_1.Text);
if(array!=null) if (array.Length > 1) lst.Add(array);
array = DataReadInputToInt64(textBox_Addr_2.Text, textBox_LENGTH_2.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
array = DataReadInput(textBox_Addr_2_2.Text, textBox_LENGTH_2_2.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
array = DataReadInput(textBox_Addr_3.Text, textBox_LENGTH_3.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
array = DataReadInput(textBox_Addr_4.Text, textBox_LENGTH_4.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
array = DataReadInputToInt64(textBox_Addr_5.Text, textBox_LENGTH_5.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
array = DataReadInputToBit(textBox_Addr_6.Text, textBox_LENGTH_6.Text);
if (array != null) if (array.Length > 1) lst.Add(array);
DB_Input(lst);
}
private void timer_DBConnect_Tick(object sender, EventArgs e)
{
try
{
if (!DBConnectionSingleton.Instance().isConnect())
if (DBConnectionSingleton.Instance().Connect())
{
textBox_State.Text += "DB_Connected\r\n";
panel_DBConnect.BackColor = Color.FromArgb(192, 255, 192);
}
else
{
panel_DBConnect.BackColor = Color.FromArgb(255, 192, 192);
}
}
catch (Exception ex)
{
textBox_State.Text += "Connect Error : " + ex.Message + "\r\n";
}
if (DBConnectionSingleton.Instance().isConnect())
{
All_Data_Insert();
}
}
// 온도값이 500이 넘는 오류가 발생하면 프로그램을 종료한다
private bool CheckTemp()
{
U3Database db = new U3Database();
string strSQL = "";
strSQL = "";
strSQL += " select r.MACH_CD,(r.REAL_DATA * m.VALUE_RATIO) REAL_DATA, m.MACH_NM, m.MACH_NO, c.WORK_ROUT_CD";
strSQL += " FROM T_HT_REAL_DATA r";
strSQL += " left join T_STD_MACH m on r.MACH_CD = m.MACH_CD and r.COMP_CD = m.COMP_CD";
strSQL += " left join T_STD_CODE c on c.NO_RMK = m.MACH_NO order by r.MACH_CD asc";
DataTable dtTemp = db.OpenSQL(strSQL);
if (dtTemp == null || dtTemp.Rows.Count == 0)
return true;
bool bResult = true;
int nZeroCount = 0;
foreach (DataRow dr in dtTemp.Rows)
{
string sName = U3Util.toStr(dr["MACH_NM"]);
float fVal = U3Util.toFloat(dr["REAL_DATA"]);
if (sName.IndexOf("온도") > 0)
{
if (fVal >= 500)
{
bResult = false;
U3Util.ErrorLog("온도이상 발생 " + sName + " = " + fVal.ToString());
}
if (fVal == 0)
{
nZeroCount++;
if (nZeroCount > 5)
{
bResult = false;
U3Util.ErrorLog("온도이상 발생 " + sName + " = " + fVal.ToString());
}
}
}
}
return bResult;
}
private void timer_Log_Tick(object sender, EventArgs e)
{
U3Util.ErrorLog("timer_Log_Tick --> HTInsertRealToLog");
if (DBConnectionSingleton.Instance().SetCommand("HTInsertRealToLog"))
{
//textBox_State.Text += "DBInsert Complete : Log Insert\r\n";
}
}
private void toggleSwitch_Log_Toggled(object sender, EventArgs e)
{
timer_Log.Enabled = toggleSwitch_Log.IsOn;
}
private void simpleButton8_Click_1(object sender, EventArgs e)
{
}
}
}