CRVM-redis-6/Host/IServerMainForm.cs

1180 lines
43 KiB
C#
Raw Normal View History

2025-11-07 02:02:31 +08:00
using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
using CRVM.Entity;
using CRVM.SIDExcuter;
using System.ServiceModel;
using System.IO;
using ICService;
using System.Threading.Tasks;
using CRVM.Utility;
using RestApi;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.ComponentModel;
namespace CRVM
{
struct FileReview
{
public string fileType;
public string filePath;
public bool readOK;
}
public partial class IServerMainForm : Form
{
//private NotifyIcon notifyIcon;
[DllImport("kernel32.dll")]
static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode);
private bool isReview = false;
private bool isRollInfoRead = false;
private enum SystemStatus { unstart = 0, start = 1, stop = 2, pause = 3 }
private SystemStatus sysStatus = SystemStatus.unstart;
private ServiceHost host;
private Machine mac;
private Machine macReview;
private DataProcessCenter dpc;
private Plotting onlinePlot;
private PlottingReview reviewPlot;
private Plot_energy reviewPlot_Energy;
private IViewHelper fileHelper;
private DbHelper dbHelper;
private ToolStripLabel labelAlarmNow;
private ToolStripComboBox comBoxAlarmNow;
private ToolStripLabel labelAlarmLast;
private ToolStripComboBox comBoxAlarmLast;
// 页面 刷新的数据 ---2025-01-09 新增
public BoxData[] roll_mill_data_array { set; get; }
public AlarmInfo alarmInfo;
public RollMillData rollMillData { set; get; }
public RollMillEnergyTrend rollMillET { set; get; }
public CZState cZState { set; get; }
public RMVibData[] standRmVibData { set; get; }
public delegate void Shda();
//private void RestoreWindow()
//{
// this.WindowState = FormWindowState.Normal;
// this.ShowInTaskbar = true;
// this.Activate();
// notifyIcon.Visible = false;
//}
//private void MainForm_Resize(object sender, EventArgs e)
//{
// if (this.WindowState == FormWindowState.Minimized)
// {
// this.ShowInTaskbar = false;
// notifyIcon.Visible = true;
// }
//}
public IServerMainForm()
{
//// 初始化托盘图标
//notifyIcon = new NotifyIcon();
//notifyIcon.Icon = new System.Drawing.Icon("Resources\\VibrationTest.ico");
//notifyIcon.Text = "轧机振动监测系统";
//notifyIcon.Visible = true;
//// 双击托盘恢复窗口
//notifyIcon.DoubleClick += (s, e) => RestoreWindow();
//// 添加右键菜单
//var menu = new ContextMenuStrip();
//menu.Items.Add("退出", null, (s, e) => Application.Exit());
//notifyIcon.ContextMenuStrip = menu;
//// 窗体事件绑定
//this.Resize += MainForm_Resize;
//this.FormClosing += (s, e) => notifyIcon.Dispose();
InitializeComponent();
// 页面 刷新的数据 ---2025-01-09 新增
roll_mill_data_array = new BoxData[6];
standRmVibData = new RMVibData[6] { new RMVibData(), new RMVibData(), new RMVibData(), new RMVibData(), new RMVibData(), new RMVibData() };
alarmInfo = new AlarmInfo();
cZState = new CZState();
RollMillGetService dh = new RollMillGetService();
rollMillET = new RollMillEnergyTrend();
for (int i = 0; i < 6; i++)
{
this.roll_mill_data_array[i] = dh.Roll_mill_data.F1.copy();
}
}
private void MainForm_Load(object sender, EventArgs e)
{
backgroundWorker_fileRead.DoWork += backgroundWorker_fileRead_DoWork;
backgroundWorker_fileRead.RunWorkerCompleted += backgroundWorker_fileRead_RunWorkerCompleted;
SysParam.Instance.searchStartTime = DateTime.Now.AddDays(-1);
SysParam.Instance.searchEndTime = DateTime.Now;
SysParam.Instance.appPath = Application.StartupPath;
ConfigHelper.GetInstance(SysParam.Instance.appPath + "\\AppSetting.config");
ConfigHelper.GetInstance("").InitialData();
dbHelper = DbHelper.GetInstance(SysParam.Instance.appPath);
if (!dbHelper.LoadConfigData(dbHelper))
{
MessageBox.Show("数据库配置文件丢失或损坏!");
}
dbHelper.SetL2Connect();
dbHelper.SetLocalConnect();
dbHelper.isStart = true;
try
{
host = new ServiceHost(typeof(PushMessage));
host.Open();
}
catch (Exception ex)
{
recordLog("无法向客户端发送数据");
MessageBox.Show("无法向客户端发送数据:" + ex.ToString());
}
InitialSetting();
DbHelper.GetInstance("").autoUpdateAlarmParam();//数据库报警参数更新
// Utility.VibSimulation.UpdateOnlineData(false);//模拟数据
}
private void InitialSetting()
{
//标签控件初始化
ServerStartView();
if (comBoxAlarmNow == null && labelAlarmNow == null)
{
Alarm_Info_show();
}
btStop.Enabled = false;
btPause.Enabled = false;
connectStatusStrip.Text = " ";
connectStatusStrip.BackColor = System.Drawing.Color.RoyalBlue;
}
#region
private void ServerStartView()
{
titileSet titile0 = new titileSet();
titile0.change += new titileSet.Change(titile0_change);
titile0.labelText = "通道选择 ";
tableLayoutPanel3.Controls.Add(titile0, 0, 0);
titile0 = new titileSet();
titile0.change += new titileSet.Change(titile1_change);
titile0.labelText = "瞬时波形 ";
tableLayoutPanel3.Controls.Add(titile0, 0, 2);
titile0 = new titileSet();
titile0.change += new titileSet.Change(titile2_change);
titile0.labelText = "趋势波形 ";
tableLayoutPanel3.Controls.Add(titile0, 0, 4);
titile0 = new titileSet();
titile0.change += new titileSet.Change(titile3_change);
titile0.labelText = "显示方式 ";
tableLayoutPanel3.Controls.Add(titile0, 0, 6);
if (sysStatus == SystemStatus.unstart)
{
//online
panel1.Controls.Clear();
panel2.Controls.Clear();
panel3.Controls.Clear();
panel4.Controls.Clear();
ChannelSelect cs = new ChannelSelect();
cs.Dock = DockStyle.Fill;
panel1.Controls.Add(cs);
GraCheckedTime gct = new GraCheckedTime();
gct.Dock = DockStyle.Fill;
panel2.Height = 256;
panel2.Controls.Add(gct);
GraCheckedEnergy gce = new GraCheckedEnergy();
gce.Dock = DockStyle.Fill;
panel3.Controls.Add(gce);
GraphOrder go = new GraphOrder();
go.Dock = DockStyle.Fill;
panel4.Controls.Add(go);
}
}
private void titile3_change(bool opend)
{
changeVisible(panel4, opend);
}
private void titile2_change(bool opend)
{
changeVisible(panel3, opend);
}
private void titile1_change(bool opend)
{
changeVisible(panel2, opend);
}
private void titile0_change(bool opend)
{
changeVisible(panel1, opend);
}
private void changeVisible(Panel panel, bool opened)
{
if (opened)
{
panel.Visible = true;
}
else
{
panel.Visible = false;
}
}
#endregion
private void start_Click(object sender, EventArgs e)
{
//new Task(() => DeleteFile()).Start();
try
{
sysStatus = SystemStatus.start;
mainFormRefresh();
mac = new Machine(SysParam.Instance.channelCount, SysParam.Instance.samplePoint, SysParam.Instance.timePoints, SysParam.Instance.energyPoints);
//报警参数设置
for (int i = 0; i < SysParam.Instance.channelCount; i++)
{
mac.Stand[i].alarm_L_Times_ck = SysParam.Instance.channel[i].alarmTimes_l;
mac.Stand[i].alarm_M_Times_ck = SysParam.Instance.channel[i].alarmTimes_m;
mac.Stand[i].alarm_H_Times_ck = SysParam.Instance.channel[i].alarmTimes_h;
mac.Stand[i].SetAlarmFred(SysParam.Instance.channel[i].alarmConfig);
}
dpc = new DataProcessCenter(mac);
//---2025-01-09 新增
dpc.roll_mill_data_array = this.roll_mill_data_array;
rollMillData = new RollMillData(this.roll_mill_data_array);
rollMillData.AF = this.alarmInfo;
dpc.alarmInfo = this.alarmInfo;
// dpc.cZState = this.cZState;
dpc.rollMillData = this.rollMillData;
for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)
{
standRmVibData[i].vib_data = mac.Stand[i].vib;
}
dpc.standRmVibData = new StandRMVibData(standRmVibData);
CloseDocumnet("Plotting");
IDockContent dock = IsExistDocumnet("Plotting");
if (dock == null)
{
onlinePlot = new Plotting(mac);
onlinePlot.Show(dockPanel1, DockState.Document);
}
Timer_Graph.Start();
SysParam.Instance.onlineList.Clear();
isRollInfoRead = false;//重读棍子信息
recordLog("开始采集数据");
}
catch (Exception ex)
{
throw ex;
//Console.WriteLine(ex.StackTrace);
}
}
private void stop_Click(object sender, EventArgs e)
{
DialogResult dir = MessageBox.Show("确定停止采集数据吗?", "信息提示框", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (dir == DialogResult.OK)
{
sysStatus = SystemStatus.stop;
mainFormRefresh();
if (dpc != null)
{
dpc.Stop();
}
Timer_Graph.Stop();
Timer_Graph_Tick(sender, e);
backgroundWorker.CancelAsync();
CloseDocumnet("Plotting");
distance_Strip.Text = "轧制距离: 0000.0m ";
cutLenSpeedStrip.Text = "出口速度: 0000m/min";
SysParam.Instance.onlineList.Clear();
recordLog("停止采集数据");
}
else
{
return;
}
}
private void pause_Click(object sender, EventArgs e)
{
if (sysStatus == SystemStatus.start)
{
sysStatus = SystemStatus.pause;
Timer_Graph.Stop();
//提取轧制距离列表用于后续数据点显示
mac.distance_Pause = mac.distance_Running.ToArray();
onlinePlot.IsShowMenuStrip(true);
}
else if (sysStatus == SystemStatus.pause)
{
sysStatus = SystemStatus.start;
Timer_Graph.Start();
onlinePlot.IsShowMenuStrip(false);
}
mainFormRefresh();
}
private IDockContent IsExistDocumnet(string name)
{
IDockContent b = null;
foreach (IDockContent content in dockPanel1.Documents)
{
if (content.DockHandler.TabText == name)
{
b = content;
break;
}
}
return b;
}
private void CloseDocumnet(string name)
{
foreach (IDockContent content in dockPanel1.Documents)
{
if (content.DockHandler.TabText == name)
{
content.DockHandler.Dispose();
content.DockHandler.Close();
break;
}
}
}
private void Timer_Graph_Tick(object sender, EventArgs e)
{
//DevelopLog.DeBug.WriteLogFile("cutData", "----------");
if (onlinePlot != null)
{
//图表刷新
if (onlinePlot.InvokeRequired)
onlinePlot.Invoke(new Shda(onlinePlot.GraRefresh));
else
onlinePlot.GraRefresh();
}
if (!isReview)
{
distance_Strip.Text = "轧制距离: " + mac.stripLength.ToString("00000.0") + "m ";
cutLenSpeedStrip.Text = "出口速度: " + mac.lengthSpeed.ToString("0000") + "m/min";
}
if (dpc == null)
{
return;
}
if (dpc.alarmInfoNowChanged && dpc.alarmInfoNow != null)
{
dpc.alarmInfoNowChanged = false;
comBoxAlarmNow.Items.Clear();
comBoxAlarmNow.Text = "";
comBoxAlarmNow.Items.AddRange(dpc.alarmInfoNow.ToArray());
if (comBoxAlarmNow.Items.Count > 0)
{
comBoxAlarmNow.SelectedIndex = comBoxAlarmNow.Items.Count - 1;
}
}
if (dpc.alarmInfoLastChanged)
{
dpc.alarmInfoLastChanged = false;
if (dpc.alarmInfoLast != null)
{
comBoxAlarmLast.Items.Clear();
comBoxAlarmLast.Items.AddRange(dpc.alarmInfoLast);
comBoxAlarmLast.SelectedIndex = comBoxAlarmLast.Items.Count - 1;
}
}
}
private void Timer_CoilInfo_Tick(object sender, EventArgs e)
{
/*this.Timer_CoilInfo.Interval = DbHelper.GetInstance("").Freq * 1000;
if (!backgroundWorker.IsBusy && dbHelper.isStart)
{
backgroundWorker.RunWorkerAsync();
}
if (dbHelper.isStart == false)
{
connectStatusStrip.BackColor = System.Drawing.Color.Red;
connectStatusStrip.Text = "系统与L2的数据连接尚未开启......";
}*/
}
private void backgroundWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
/*string msg = "00";
bool ischange = false;
try
{
//获取钢卷信息
DbHelper.GetInstance("").UpdateLocalCoilInfo();
msg = "10";
//获取在线轧辊信息
DataTable onlineRollData = dbHelper.GetL2OnlineRollInfo();
for (int i = 0; i < onlineRollData.Rows.Count; i++)
{
string rollno = onlineRollData.Rows[i]["rollno"].ToString().Trim();
if (!SysParam.Instance.onlineList.Contains(rollno))
{
ischange = true;
break;
}
}
if (ischange && sysStatus == SystemStatus.start)
{
dbHelper.RollDataInfo(mac, onlineRollData);
dbHelper.UpdateLocalRollData(onlineRollData);
SysParam.Instance.onlineList = new List<string>();
for (int i = 0; i < onlineRollData.Rows.Count; i++)
{
string rollno = onlineRollData.Rows[i]["rollno"].ToString().Trim();
SysParam.Instance.onlineList.Add(rollno);
}
ischange = false;
}
msg = "11";
}
catch (Exception ex)
{
}
backgroundWorker.ReportProgress(0, msg);
*/
}
private void backgroundWorker_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
/*if (e.UserState.ToString() == "00")
{
connectStatusStrip.Text = "获取L2钢卷信息异常请查看本系统与L2数据库的连接......";
connectStatusStrip.BackColor = System.Drawing.Color.Red;
}
else if (e.UserState.ToString() == "10")
{
connectStatusStrip.Text = "获取L2在线轧辊信息异常请查看本系统与L2数据库的连接......";
connectStatusStrip.BackColor = System.Drawing.Color.Red;
}
else if (e.UserState.ToString() == "11")
{
connectStatusStrip.Text = "获取L2在线轧辊信息正常...获取L2钢卷信息正常......";
connectStatusStrip.BackColor = System.Drawing.Color.RoyalBlue;
}*/
}
private void btnViewOut_Click(object sender, EventArgs e)
{
isReview = false;
mainFormRefresh();
CloseDocumnet("PlottingReview");
CloseDocumnet("Plot_energy");
if (sysStatus != SystemStatus.unstart)
{
IDockContent dock = IsExistDocumnet("Plotting");
if (dock == null)
{
onlinePlot = new Plotting(mac);
onlinePlot.Show(dockPanel1, DockState.Document);
}
}
}
private void btnViewIn_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog1.FileName;
//DataRead(filePath);//打开文件
if (File.Exists(filePath))
{
isReview = true;
mainFormRefresh();
if (backgroundWorker_fileRead.IsBusy)
{
MessageBox.Show("正在读取文件....");
}
else
{
backgroundWorker_fileRead.RunWorkerAsync(filePath);
}
}
}
}
void OpenFile(object sender, string filePath)
{
if (File.Exists(filePath))
{
isReview = true;
mainFormRefresh();
//DataRead(filePath);
if (backgroundWorker_fileRead.IsBusy)
{
MessageBox.Show("正在读取文件....");
}
else
{
backgroundWorker_fileRead.RunWorkerAsync(filePath);
}
}
else
{
MessageBox.Show("查找的文件不存在");
}
}
void backgroundWorker_fileRead_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
{
FileReview fileStruct = new FileReview();
fileStruct = (FileReview)e.Result;
if (fileStruct.readOK)
{
if (fileStruct.fileType == "0")
{
DataReview();//检查能量文件是否存在后再回放
new Task(() => GetFileCoilInfo(fileStruct.filePath, true)).Start();
}
else
{
DataReviewEnergy();//能量数据回放
new Task(() => GetFileCoilInfo(fileStruct.filePath, false)).Start();
}
}
}
void backgroundWorker_fileRead_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
string filePath = e.Argument.ToString();
FileReview fileStruct = new FileReview();
fileStruct.filePath = filePath;
if (fileHelper == null)
fileHelper = new IViewHelper(filePath);
else
fileHelper.ReadFile(filePath);
if (fileHelper.FileOk)
{
string alarmFilePath = fileHelper.selectAlarmFile(filePath);
ConfigHelper.GetOrigInstance(alarmFilePath);
if (filePath.Contains(".txt"))
{
if (filePath.Contains("original"))
{
string fileName = filePath.Replace("original", "energy");///////////读取能量信息 20151112
if (File.Exists(fileName))
{
fileHelper.ReadFile(fileName);
}
else
{
MessageBox.Show("能量数据文件不存在");
}
macReview = new Machine(SysParam.Instance.channelCount, 1, 1, 1);
for (int i = 0; i < SysParam.Instance.channelCount; i++)
{
macReview.Stand[i].SetAlarmFred(SysParam.Instance.channel[i].reAlarmConfig);
}
fileStruct.fileType = "0";
fileStruct.readOK = true;
//DataReview();//检查能量文件是否存在后再回放
//new Task(() => GetFileCoilInfo(filePath, true)).Start();
}
else
{
if (File.Exists(filePath))
{
fileHelper.ReadFile(filePath);
}
else
{
MessageBox.Show("能量数据文件不存在");
}
macReview = new Machine(SysParam.Instance.channelCount, 1, 1, 1);
for (int i = 0; i < SysParam.Instance.channelCount; i++)
{
macReview.Stand[i].SetAlarmFred(SysParam.Instance.channel[i].reAlarmConfig);
}
fileStruct.fileType = "1";
fileStruct.readOK = true;
//DataReviewEnergy();//能量数据回放
//new Task(() => GetFileCoilInfo(filePath, false)).Start();
}
}
else if (filePath.Contains(".dat"))
{
string fileName1 = filePath.Replace("original", "energy");
string fileName = fileName1.Replace(".dat", ".txt");
if (File.Exists(fileName))
{
fileHelper.ReadFile(fileName);
}
else
{
MessageBox.Show("能量数据文件不存在");
}
macReview = new Machine(SysParam.Instance.channelCount, 1, 1, 1);
for (int i = 0; i < SysParam.Instance.channelCount; i++)
{
macReview.Stand[i].SetAlarmFred(SysParam.Instance.channel[i].reAlarmConfig);
}
fileStruct.fileType = "0";
fileStruct.readOK = true;
}
}
else
{
fileStruct.readOK = false;
MessageBox.Show("文件已损坏!");
}
e.Result = fileStruct;
}
private void DataRead(string filePath)
{
if (fileHelper == null)
fileHelper = new IViewHelper(filePath);
else
fileHelper.ReadFile(filePath);
if (fileHelper.FileOk)
{
isReview = true;
mainFormRefresh();
string alarmFilePath = fileHelper.selectAlarmFile(filePath);
ConfigHelper.GetOrigInstance(alarmFilePath);
if (filePath.Contains(".txt"))
{
if (filePath.Contains("original"))
{
string fileName = filePath.Replace("original", "energy");///////////读取能量信息 20151112
if (File.Exists(fileName))
{
fileHelper.ReadFile(fileName);
}
else
{
MessageBox.Show("能量数据文件不存在");
}
macReview = new Machine(SysParam.Instance.channelCount, 1, 1, 1);
for (int i = 0; i < SysParam.Instance.channelCount; i++)
{
macReview.Stand[i].SetAlarmFred(SysParam.Instance.channel[i].reAlarmConfig);
}
DataReview();//检查能量文件是否存在后再回放
new Task(() => GetFileCoilInfo(filePath, true)).Start();
}
else
{
DataReviewEnergy();//能量数据回放
new Task(() => GetFileCoilInfo(filePath, false)).Start();
}
}
else if (filePath.Contains(".dat"))
{
string fileName1 = filePath.Replace("original", "energy");
string fileName = fileName1.Replace(".dat", ".txt");
if (File.Exists(fileName))
{
fileHelper.ReadFile(fileName);
}
else
{
MessageBox.Show("能量数据文件不存在");
}
macReview = new Machine(SysParam.Instance.channelCount, 1, 1, 1);
for (int i = 0; i < SysParam.Instance.channelCount; i++)
{
macReview.Stand[i].SetAlarmFred(SysParam.Instance.channel[i].reAlarmConfig);
}
DataReview();//检查能量文件是否存在后再回放
new Task(() => GetFileCoilInfo(filePath, true)).Start();
}
}
else
{
MessageBox.Show("文件已损坏!");
}
}
private void DataReviewEnergy()
{
CloseDocumnet("Plotting");
CloseDocumnet("Plot_energy");
CloseDocumnet("PlottingReview");
reviewPlot_Energy = new Plot_energy(fileHelper, macReview);
reviewPlot_Energy.Show(this.dockPanel1, DockState.Document);
}
private void DataReview()
{
CloseDocumnet("Plotting");
CloseDocumnet("Plot_energy");
CloseDocumnet("PlottingReview");
reviewPlot = new PlottingReview(fileHelper, macReview);
reviewPlot.Show(dockPanel1, DockState.Document);
}
private void mainFormRefresh()
{
if (isReview)
{
Timer_Graph.Stop();
btReviewExit.Visible = true;
btstart.Enabled = false;
btPause.Enabled = false;
btStop.Enabled = false;
//btrollInfo.Enabled = true;
if (labelAlarmNow != null)
{
labelAlarmNow.Visible = false;
comBoxAlarmNow.Visible = false;
labelAlarmLast.Visible = false;
comBoxAlarmLast.Visible = false;
}
connectStatusStrip.Visible = false;
filename_Strip.Visible = true;
distance_Strip.Visible = false;
cutLenSpeedStrip.Visible = false;
if (panel2.Height != 287)
{
panel2.Controls.Clear();
GraCheckedTimeRe gctr = new GraCheckedTimeRe();
gctr.Dock = DockStyle.Fill;
panel2.Height = 287;
panel2.Controls.Add(gctr);
}
}
else
{
btReviewExit.Visible = false;
if (labelAlarmNow != null)
{
labelAlarmNow.Visible = true;
comBoxAlarmNow.Visible = true;
labelAlarmLast.Visible = true;
comBoxAlarmLast.Visible = true;
}
connectStatusStrip.Visible = true;
filename_Strip.Visible = false;
distance_Strip.Visible = true;
cutLenSpeedStrip.Visible = true;
if (panel2.Height != 256)
{
panel2.Controls.Clear();
GraCheckedTime gct = new GraCheckedTime();
gct.Dock = DockStyle.Fill;
panel2.Height = 256;
panel2.Controls.Add(gct);
}
if (sysStatus == SystemStatus.start || sysStatus == SystemStatus.pause)
{
if (sysStatus == SystemStatus.start)
{
Timer_Graph.Start();
btStop.Enabled = true;
btPause.Image = Host.Properties.Resources.Pause_64;
btPause.Text = "暂停";
}
else
{
btStop.Enabled = false;
btPause.Image = Host.Properties.Resources.Refresh_64;
btPause.Text = "继续";
}
btstart.Enabled = false;
btPause.Enabled = true;
btSetSensor.Enabled = false;
//btSetAlarm.Enabled = false;
btSetSampling.Enabled = false;
btSetStore.Enabled = false;
btSetPassword.Enabled = false;
btdatabase.Enabled = false;
//btrollInfo.Enabled = false;
}
if (sysStatus == SystemStatus.stop || sysStatus == SystemStatus.unstart)
{
btstart.Enabled = true;
btPause.Enabled = false;
btPause.Image = Host.Properties.Resources.Pause_64;
btPause.Text = "暂停";
btStop.Enabled = false;
btSetSensor.Enabled = true;
btSetAlarm.Enabled = true;
btSetSampling.Enabled = true;
btSetStore.Enabled = true;
btSetPassword.Enabled = true;
btdatabase.Enabled = true;
//btrollInfo.Enabled = true;
}
}
}
//显示打开文件的钢卷信息
private void GetFileCoilInfo(string fileNameStr, bool isOrigData)
{
//查询该钢卷信息
DataTable dt = new DataTable();
macReview.review_coldcoilno = "";
macReview.review_extThick = "";
macReview.review_alloyCode = "";
macReview.review_steelGrade = "";
macReview.review_width = "";
filename_Strip.Text = "文件名:" + fileNameStr.Substring(fileNameStr.Length - 18, 18);
if (isOrigData)
{
dt = DbHelper.GetInstance("").GetCoilInfoByOriginPath(fileNameStr, macReview);
}
else
{
dt = DbHelper.GetInstance("").GetCoilInfoByEnergyPath(fileNameStr, macReview);
}
if (macReview.review_coldcoilno != "")
{
filename_Strip.Text = "文件名:" + fileNameStr.Substring(fileNameStr.Length - 18, 18) + " | 冷卷号:" + macReview.review_coldcoilno + " | 出钢记号:" + macReview.review_alloyCode + " | 宽度:" + macReview.review_width + "mm | 出口厚度:" + macReview.review_extThick + "mm"; ;
}
/*else
{
filename_Strip.Text = "文件名:" + fileNameStr.Substring(fileNameStr.Length - 18, 18);
}*/
}
private void Alarm_Info_show()
{
labelAlarmNow = new ToolStripLabel();
comBoxAlarmNow = new ToolStripComboBox();
comBoxAlarmNow.Alignment = ToolStripItemAlignment.Right;
comBoxAlarmNow.Width = 400;
comBoxAlarmNow.DropDownHeight = 150;
comBoxAlarmNow.DropDownWidth = 400;
toolStrip1.Items.Add(comBoxAlarmNow);
toolStrip1.Items.Add(labelAlarmNow);
labelAlarmNow.Text = "当前报警信息:";
labelAlarmNow.Alignment = ToolStripItemAlignment.Right;
labelAlarmLast = new ToolStripLabel();
comBoxAlarmLast = new ToolStripComboBox();
comBoxAlarmLast.Alignment = ToolStripItemAlignment.Right;
comBoxAlarmLast.Width = 400;
comBoxAlarmLast.DropDownHeight = 150;
comBoxAlarmLast.DropDownWidth = 400;
toolStrip1.Items.Add(comBoxAlarmLast);
toolStrip1.Items.Add(labelAlarmLast);
labelAlarmLast.Text = "上次报警信息:";
labelAlarmLast.Alignment = ToolStripItemAlignment.Right;
}
private void sysconfig_Click(object sender, EventArgs e)
{
login log = new login();
log.ShowDialog();
//if (log.DialogResult == DialogResult.OK)
{
SetDataStorageForm newForm = new SetDataStorageForm();
newForm.ShowDialog();
}
}
private void setsensitivity_Click(object sender, EventArgs e)
{
login log = new login();
log.ShowDialog();
//if (log.DialogResult == DialogResult.OK)
{
SetSenserForm newForm = new SetSenserForm();
newForm.ShowDialog();
}
}
private void setdisplay_Click(object sender, EventArgs e)
{
SetDisplayForm disForm = new SetDisplayForm();
disForm.ShowDialog();
}
private void setalarm_Click(object sender, EventArgs e)
{
login log = new login();
log.ShowDialog();
if (log.DialogResult == DialogResult.OK)
{
DbHelper.GetInstance("").autoUpdateAlarmParam();
SetAlarmForm newForm = new SetAlarmForm();
newForm.ShowDialog();
}
}
private void btsetsample_Click(object sender, EventArgs e)
{
login log = new login();
log.ShowDialog();
//if (log.DialogResult == DialogResult.OK)
{
SetSampleForm newForm = new SetSampleForm();
newForm.ShowDialog();
}
}
private void btsetpassword_Click(object sender, EventArgs e)
{
login log = new login();
log.ShowDialog();
//if (log.DialogResult == DialogResult.OK)
{
SetPasswordForm newForm = new SetPasswordForm();
newForm.ShowDialog();
}
}
private void bthelp_Click(object sender, EventArgs e)
{
string path = AppDomain.CurrentDomain.BaseDirectory;
string url = path + "用户使用手册.pdf"; //
try
{
// 使用应用打开
Process.Start(new ProcessStartInfo(url) { UseShellExecute = true });
}
catch (Win32Exception ex) // 捕获无浏览器异常
{
if (ex.ErrorCode == -2147467259)
MessageBox.Show(String.Format("打开\"{0}\"失败:{1}", url, ex.Message));
}
catch (Exception ex)
{
MessageBox.Show(String.Format("打开\"{0}\"失败:{1}", url, ex.Message));
}
}
private void btrollInfo_Click(object sender, EventArgs e)
{
if (isReview)
{
OriginRollForm form = new OriginRollForm(macReview);
form.StartPosition = FormStartPosition.CenterScreen;
form.ShowDialog();
}
else
{
if (dbHelper.isStart)
{
OnlineRollForm form = new OnlineRollForm();
form.StartPosition = FormStartPosition.CenterScreen;
form.ShowDialog();
}
else
{
MessageShowForm form = new MessageShowForm("提示", "未启动数据连接,无法获取在线轧辊信息!");
form.ShowDialog();
}
}
}
private void btdataSearch_Click(object sender, EventArgs e)
{
DataSearchForm data = new DataSearchForm();
data.showdata += new ShowGridData(OpenFile);
data.ShowDialog();
}
private void btdatabase_Click(object sender, EventArgs e)
{
//login log = new login();
//log.ShowDialog();
//if (log.DialogResult == DialogResult.OK)
{
DataAccessForm newForm = new DataAccessForm(dbHelper);
newForm.ShowDialog();
}
}
private void IServerMainForm_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dir = MessageBox.Show("确定退出本系统吗?", "信息提示框", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (dir == DialogResult.OK)
{
try
{
if (dpc != null)
{
dpc.Stop();
}
}
catch (Exception)
{
throw;
}
ConfigHelper.GetInstance("").SaveConfig(Application.StartupPath);//保存文件
dbHelper.SaveAlarmParam(ConfigHelper.GetInstance("").GetAlarmParam());//保存数据库
recordLog("退出本系统");
}
else
{
e.Cancel = true;
}
}
private void toolStripLabel1_Click(object sender, EventArgs e)
{
tableLayoutPanel3.Visible = tableLayoutPanel3.Visible ? false : true;
}
private void timer_delFile_Tick(object sender, EventArgs e)
{
new Task(() => DeleteFile()).Start();
}
private void DeleteFile()
{
string driveStr = SysParam.Instance.savePath.Substring(0, 2);
System.IO.DriveInfo drive = new System.IO.DriveInfo(driveStr);
long availabelfreespace = drive.AvailableFreeSpace / 1024 / 1024 / 1024;//剩余空间转换为G
long needFreespace = availabelfreespace - 20;//至少预留20个G的空间
if (needFreespace <= 0)
{
DirectoryInfo savedir = new DirectoryInfo(SysParam.Instance.savePath + "\\");
FileComparer fc = new FileComparer();
DirectoryInfo[] dirList = savedir.GetDirectories();
Array.Sort(dirList, fc);//根据时间排序
if (dirList.Length > 0)
{
Directory.Delete(dirList[0].FullName, true);
}
}
//删除创建日期早于一定天数的文件夹
foreach (string dirStr in Directory.GetDirectories(SysParam.Instance.savePath))
{
DirectoryInfo dir = new DirectoryInfo(dirStr);
if (dir.CreationTime < DateTime.Now.AddDays(-SysParam.Instance.saveDaysAlarm))
{
Directory.Delete(dirStr, true);
}
}
DataTable noalarmdata = dbHelper.GetCoilInfoByDate(false, DateTime.Now.AddDays(-360), DateTime.Now.AddDays(-SysParam.Instance.saveDaysNoAlarm));
DataTable alarmdata = dbHelper.GetCoilInfoByDate(true, DateTime.Now.AddDays(-360), DateTime.Now.AddDays(-SysParam.Instance.saveDaysAlarm));
for (int i = 0; i < noalarmdata.Rows.Count; i++)
{
if (File.Exists(noalarmdata.Rows[i]["origpath"].ToString().Trim()))
{
File.Delete(noalarmdata.Rows[i]["origpath"].ToString().Trim());
}
if (File.Exists(noalarmdata.Rows[i]["energypath"].ToString().Trim()))
{
File.Delete(noalarmdata.Rows[i]["energypath"].ToString().Trim());
}
}
for (int i = 0; i < alarmdata.Rows.Count; i++)
{
if (File.Exists(alarmdata.Rows[i]["origpath"].ToString().Trim()))
{
File.Delete(alarmdata.Rows[i]["origpath"].ToString().Trim());
}
if (File.Exists(alarmdata.Rows[i]["energypath"].ToString().Trim()))
{
File.Delete(alarmdata.Rows[i]["energypath"].ToString().Trim());
}
}
}
private void timer_RollInfo_Tick(object sender, EventArgs e)
{
//Console.WriteLine($"|{DateTime.Now.ToString("F")}|---Test---dbHelper is null?{dbHelper == null},mac is null?{mac == null}");
if (dbHelper != null && mac != null)
{
if (isRollInfoRead == false || mac.lengthSpeed < 50)
{
DataTable rolldata = dbHelper.GetL2OnlineRollInfo();
if (rolldata == null || rolldata.Rows.Count == 0)
{
return;
}
dbHelper.RollDataInfo(mac, rolldata);
isRollInfoRead = true;
}
}
}
private void recordLog(string logInfo)
{
if (dbHelper != null)
{
dbHelper.recordLogInfo("SERVER", logInfo);
}
}
private void IServerMainForm_FormClosed(object sender, FormClosedEventArgs e)
{
Process curProcess = Process.GetCurrentProcess();
IntPtr handle = curProcess.Handle;
TerminateProcess(handle, 0);
}
private void btSysSetting_Click(object sender, EventArgs e)
{
}
}
}