添加项目文件。
This commit is contained in:
267
CowainHmi/FrmMain.cs
Normal file
267
CowainHmi/FrmMain.cs
Normal file
@@ -0,0 +1,267 @@
|
||||
using CowainHmi.S1;
|
||||
using PCHMI;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using XPHMI;
|
||||
|
||||
namespace CowainHmi
|
||||
{
|
||||
public partial class FrmMain : Form
|
||||
{
|
||||
|
||||
int survey = 0;
|
||||
int A = 0; //RFID读
|
||||
int B = 0; //RFI写
|
||||
int B1 = 0; ////回原弹窗
|
||||
int C = 0; //相机NG弹窗
|
||||
public FrmMain()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void FrmMain_Load(object sender, EventArgs e)
|
||||
{
|
||||
config1.START(this);
|
||||
FrmProgress frm = new FrmProgress();
|
||||
frm.TopMost = true;
|
||||
frm.Show();
|
||||
frm.Activate();
|
||||
await LoadDataAsync();
|
||||
}
|
||||
|
||||
private async Task LoadDataAsync()
|
||||
{
|
||||
|
||||
PCHMI.RT.SEND_UINT16(0, "U200", 0);
|
||||
//窗体加载时把站名称都读上来
|
||||
await ReadStationNames();
|
||||
GlobalData.StationChanged += GlobalData_StationChanged;
|
||||
GlobalData.StationId = 0;
|
||||
this.timer1.Enabled = true;
|
||||
}
|
||||
|
||||
|
||||
private async Task ReadStationNames()
|
||||
{
|
||||
//PCHMI.VL.GET_SIEMENS_STRING(0, "DB999.0", 6); //设备名称
|
||||
//PCHMI.VL.GET_SIEMENS_STRING(0, "DB999.8", 6); //设备名称
|
||||
//PCHMI.VL.GET_SIEMENS_STRING(0, "DB999.16", 6); //设备名称
|
||||
//PCHMI.VL.GET_SIEMENS_STRING(0, "DB999.24", 6); //设备名称
|
||||
string[] names = this.Tag.ToString().Split(',');
|
||||
await Task.Delay(300);
|
||||
//List<string> list = new List<string>();
|
||||
//list.Add(PCHMI.VL.GET_SIEMENS_STRING(0, "DB999.0", 6));
|
||||
//list.Add(PCHMI.VL.GET_SIEMENS_STRING(0, "DB999.8", 6));
|
||||
//list.Add(PCHMI.VL.GET_SIEMENS_STRING(0, "DB999.16", 6));
|
||||
//list.Add(PCHMI.VL.GET_SIEMENS_STRING(0, "DB999.24", 6));
|
||||
foreach (var item in names)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(item))
|
||||
{
|
||||
GlobalData.StationNames.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void GlobalData_StationChanged(object sender, int e)
|
||||
{
|
||||
int pageId = (e + 1) * 100;
|
||||
bool ret = ShowStation(e);
|
||||
if (ret)
|
||||
{
|
||||
PCHMI.RT.SEND_UINT16(0, "U200", (ushort)pageId);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("画面为空,不能创建", "提示");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private ushort safeErrLast;
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
ushort safeErr = PCHMI.RT.GET_BIT(0, "U:S1_SafeErr");
|
||||
//出现安全信号故障,主动弹出窗口
|
||||
if (safeErr > 0 && safeErr != safeErrLast)
|
||||
{
|
||||
DlgS1安全.GetInstance().Show();
|
||||
DlgS1安全.GetInstance().Activate();
|
||||
}
|
||||
safeErrLast = safeErr;
|
||||
|
||||
survey = PCHMI.RT.GET_INT16(0, "");
|
||||
if (survey == 1)
|
||||
{
|
||||
ShowPotho();
|
||||
}
|
||||
if (survey == 2)
|
||||
{
|
||||
ShowPotho1();
|
||||
}
|
||||
////回原弹窗
|
||||
B1 = PCHMI.RT.GET_INT16(0, "DB1651.20");
|
||||
if (B1 == 1)
|
||||
{
|
||||
|
||||
弹窗1_回原选择 OBJ = new 弹窗1_回原选择();
|
||||
//OBJ.TopMost = true;
|
||||
OBJ.Show();
|
||||
PCHMI.RT.SEND_INT16(0, "DB1651.20", 2);
|
||||
}
|
||||
|
||||
//RFID读
|
||||
A = PCHMI.RT.GET_INT16(0, "DB1651.22");
|
||||
if (A == 1)
|
||||
{
|
||||
|
||||
DlgS1RFID1读超时 OBJ = new DlgS1RFID1读超时();
|
||||
//OBJ.TopMost = true;
|
||||
OBJ.Show();
|
||||
PCHMI.RT.SEND_INT16(0, "DB1651.22", 2);
|
||||
}
|
||||
//RFID写
|
||||
B = PCHMI.RT.GET_INT16(0, "DB1651.24");
|
||||
if (B == 1)
|
||||
{
|
||||
|
||||
DlgS1RFID1写超时 OBJ = new DlgS1RFID1写超时();
|
||||
//OBJ.TopMost = true;
|
||||
OBJ.Show();
|
||||
PCHMI.RT.SEND_INT16(0, "DB1651.24", 2);
|
||||
}
|
||||
C = PCHMI.RT.GET_INT16(0, "DB1651.26");
|
||||
if (C == 1)
|
||||
{
|
||||
|
||||
弹窗2_相机NG弹窗 OBJ = new 弹窗2_相机NG弹窗();
|
||||
//OBJ.TopMost = true;
|
||||
OBJ.Show();
|
||||
PCHMI.RT.SEND_INT16(0, "DB1651.26", 2);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void ShowPotho() //打开笑脸
|
||||
{
|
||||
//DlgS1笑脸 OBJ = new DlgS1笑脸();
|
||||
//OBJ.TopMost = true;
|
||||
//OBJ.Location = new Point(300, 161);
|
||||
//OBJ.Show();
|
||||
//PCHMI.RT.SEND_INT16(0, "DB1651.20", 10);
|
||||
}
|
||||
private void ShowPotho1() //打开哭脸
|
||||
{
|
||||
//DlgS1哭脸 C = new DlgS1哭脸();
|
||||
////C.TopMost = true;
|
||||
//C.Location = new Point(300, 161);
|
||||
//C.Show();
|
||||
//PCHMI.RT.SEND_INT16(0, "DB1651.20", 10);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private bool ShowStation(int stationId)
|
||||
{
|
||||
RemoveControlByName(this, "顶部");
|
||||
RemoveControlByName(this, "任务栏");
|
||||
var top = CreateStationControl(stationId, "顶部");
|
||||
if (top == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
var bottom = CreateStationControl(stationId, "任务栏");
|
||||
if (bottom == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
//
|
||||
// 顶部
|
||||
//
|
||||
top.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
top.Location = new System.Drawing.Point(0, 0);
|
||||
top.Name = "顶部";
|
||||
top.Size = new System.Drawing.Size(1366, 60);
|
||||
top.TabIndex = 0;
|
||||
//
|
||||
// 任务栏
|
||||
//
|
||||
bottom.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
bottom.Location = new System.Drawing.Point(0, 688);
|
||||
bottom.Name = "任务栏";
|
||||
bottom.Size = new System.Drawing.Size(1366, 80);
|
||||
bottom.TabIndex = 1;
|
||||
this.Controls.Add(top);
|
||||
this.Controls.Add(bottom);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
private void RemoveControlByName(Control parent, string controlName)
|
||||
{
|
||||
// 遍历所有子控件
|
||||
foreach (Control child in parent.Controls)
|
||||
{
|
||||
// 如果找到了指定名称的控件
|
||||
if (child.Name == controlName)
|
||||
{
|
||||
// 从父控件的Controls集合中移除该控件
|
||||
parent.Controls.Remove(child);
|
||||
|
||||
// 如果需要,可以在这里添加更多逻辑,比如释放资源等
|
||||
|
||||
// 因为我们找到了并移除了控件,所以不需要继续搜索
|
||||
return;
|
||||
}
|
||||
|
||||
// 如果当前控件还包含子控件,则递归搜索
|
||||
if (child.HasChildren)
|
||||
{
|
||||
RemoveControlByName(child, controlName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public UserControl CreateStationControl(int stationId, string name)
|
||||
{
|
||||
string topName = $"S{stationId + 1}{name}";
|
||||
var baseType = typeof(UserControl);
|
||||
Assembly asm = Assembly.GetExecutingAssembly();
|
||||
var types = asm.GetTypes()
|
||||
.Where(x => x != baseType && baseType.IsAssignableFrom(x)).ToArray();
|
||||
if (types != null && types.Length > 0)
|
||||
{
|
||||
var type = types.Where(x => x.IsClass && x.Name == topName).FirstOrDefault();
|
||||
if (type != null && type.IsSubclassOf(typeof(UserControl)))
|
||||
{
|
||||
// 假设所有相关控件都有一个接受int类型ID的构造函数
|
||||
return (UserControl)Activator.CreateInstance(type);
|
||||
}
|
||||
}
|
||||
return null; // 如果没有找到或类型不匹配,则返回null
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user