111,097
社区成员




namespace Neo.ApplicationFramework.Generated
{
using System.Windows.Forms;
using System;
using System.Drawing;
using Neo.ApplicationFramework.Tools;
using Neo.ApplicationFramework.Common.Graphics.Logic;
using Neo.ApplicationFramework.Controls;
using Neo.ApplicationFramework.Interfaces;
using Neo.ApplicationFramework.Controls.Script;
public class DeviceInfo
{
public float[] wrSV_float = new float[3];
public int[] wrSV_int = new int[4];
public string[] wrPW = new string[3];
public bool[] wBTN = new bool[3];
public float[] rCV_float = new float[5];
public int[] rCV_int = new int[4];
public bool[] rLP = new bool[3];
public bool[] rSIG = new bool[2];
public int exe()
{
int exeStp = 0;
int[] bool2int = {0,0};
bool[] sig = this.rSIG;
bool2int[0] = Convert.ToInt16(sig[0]);
bool2int[1] = Convert.ToInt16(sig[1]);
exeStp |= bool2int[0];
exeStp |= (bool2int[1]<<1);
return exeStp;
}
public string[] TextDisplay ()
{
string[] rslt = {"",""};
int exe = this.exe();
switch(exe)
{
case 0:
rslt[0] = "设备当前处于空闲状态。";
rslt[1] = "Idle";
break;
case 1:
rslt[0] = "设备当前正在进行刷炉后排空气操作。";
rslt[1] = "Post-purge";
break;
case 2:
rslt[0] = "设备当前正在进行第"+this.rCV_int[0]+"次刷炉……";
rslt[1] = "Brushing";
break;
case 3:
rslt[0] = "设备当前正在进行刷炉前排空气操作。";
rslt[1] = "Pre-purge";
break;
default:
rslt[0] = "设备当前处于空闲状态。\n当前正处于离线模拟状态。";
rslt[1] = "Idle";
break;
}
return rslt;
}
public string[] storeinfo()
{
string[] info = new string[8];
int cur_Node = Globals.Tags.addr_node.Value;
info[0] = "# 8" + cur_Node.ToString("D2");
info[1] = DateTime.Now.ToString("yy.MM.dd@HH:mm:ss.ff");
info[2] = this.TextDisplay()[1];
info[3] = this.rCV_float[0].ToString("F3") + " psi";
info[4] = this.rCV_float[1].ToString("F3") + " psi";
info[5] = this.rCV_float[2] + " l/min";
info[6] = this.rCV_float[3] + " l/min";
info[7] = this.rCV_float[4].ToString("F3") + " dB";
return info;
}
}
public partial class UserModule
{
//用户自定义脚本区
public DeviceInfo DvInfo = new DeviceInfo();
public void DataSave()
{
}
}
//界面1
public partial class bgScr
{
//界面bgScr代码区
void bgScr_Opened(System.Object sender, System.EventArgs e)
{
//界面打开时执行代码
}
void btn_DeviceStatus_Click(System.Object sender, System.EventArgs e)
{
//其中一个按钮的Click事件代码
}
}
//界面2
public partial class tempdsScr
{
//界面tempdsScr代码
private Timer t;
int rt1 = 176, rt2 = 31;
bool CycFlag = false;
int CycCnt = 0;
public void StartTimer()
{
t = new Timer();
t.Enabled = true;
t.Interval = Globals.Tags.refreshCT.Value;
t.Tick += myTick;
}
public void myTick(object obj,EventArgs ea)
{
if(!Globals.Tags.flag_LoginOpen.Value)
{
Globals.UserModule.DataRead(rt1,rt2);
disp_Pressure.Value = Globals.UserModule.DvInfo.rCV_float[1];
disp_Flow1.Value = Globals.UserModule.DvInfo.rCV_float[2];
disp_Flow2.Value = Globals.UserModule.DvInfo.rCV_float[3];
disp_Sound.Value = Globals.UserModule.DvInfo.rCV_float[4];
ExeInd.Text = Globals.UserModule.DvInfo.TextDisplay()[0];
ColorChange(ExeInd.Text);
}
}
void tempdsScr_Opened(System.Object sender, System.EventArgs e)
{
//界面temdsScr打开时执行代码
disp_Pressure.Prefix = "当前气压:";//disp_前缀表示界面上的AnalogNumeric控件,这里只是修改了名称
disp_Pressure.Suffix = " psi";
disp_Flow1.Prefix = "主管道流量:";
disp_Flow1.Suffix = " l/min";
disp_Flow2.Prefix = "支管道流量:";
disp_Flow2.Suffix = " l/min";
disp_Sound.Prefix = "汽笛声强:";
disp_Sound.Suffix = " dB";
StartTimer();
}
}
}
Globals.UserModule.DataRead(rt1,rt2);
disp_Pressure.Value = Globals.UserModule.DvInfo.rCV_float[1];
disp_Flow1.Value = Globals.UserModule.DvInfo.rCV_float[2];
disp_Flow2.Value = Globals.UserModule.DvInfo.rCV_float[3];
disp_Sound.Value = Globals.UserModule.DvInfo.rCV_float[4];
ExeInd.Text = Globals.UserModule.DvInfo.TextDisplay()[0];
ColorChange(ExeInd.Text);
namespace Neo.ApplicationFramework.Generated
{
using System.Windows.Forms;
using System;
using System.Drawing;
using Neo.ApplicationFramework.Tools;
using Neo.ApplicationFramework.Common.Graphics.Logic;
using Neo.ApplicationFramework.Controls;
using Neo.ApplicationFramework.Interfaces;
public class Demo
{
public float pressure,flow1,flow2,sound;
public string ind_exe;
}
public static class SendData
{
public delegate void SendValueHandle(Demo e);
public static event SendValueHandle SndV;
public static void SetV(Demo e)
{
SndV(e);
}
}
public partial class UserScript
{
}
public partial class bgScr
{
private Timer bgrfsTmr;
Demo bgds = new Demo();
public void bgs()
{
bgrfsTmr = new Timer();
bgrfsTmr.Enabled = true;
bgrfsTmr.Interval = 50;
bgrfsTmr.Tick += bgRfs;
}
public void bgRfs(object obj,EventArgs e)
{
bgds.pressure = 1.0f;
bgds.flow1 = 2.0f;
bgds.flow2 = 3.0f;
bgds.sound = 4.0f;
bgds.ind_exe = "这是一个测试";
}
void bgScr_Opened(System.Object sender, System.EventArgs e)
{
bgs();
}
}
public partial class DvStsScr
{
void DvStsScr_Opened(System.Object sender, System.EventArgs e)
{
SendData.SndV += new SendData.SendValueHandle(dsCtrl);
}
private void dsCtrl(Demo e)
{
AN_dp1.Value = e.pressure;
AN_dp2.Value = e.flow1;
AN_dp3.Value = e.flow2;
AN_dp4.Value = e.sound;
T_dp1.Text = e.ind_exe;
}
}
}
编译时通过的,但不知为何界面显示不成功,字符串无显示,数值都显示时0[/quote]
你的委托引用在哪里?
你的事件在哪里?
我的QQ:315425246,有半个小时的时间[/quote]
知道问题出那儿了,多谢!
namespace Neo.ApplicationFramework.Generated
{
using System.Windows.Forms;
using System;
using System.Drawing;
using Neo.ApplicationFramework.Tools;
using Neo.ApplicationFramework.Common.Graphics.Logic;
using Neo.ApplicationFramework.Controls;
using Neo.ApplicationFramework.Interfaces;
public class Demo
{
public float pressure,flow1,flow2,sound;
public string ind_exe;
}
public static class SendData
{
public delegate void SendValueHandle(Demo e);
public static event SendValueHandle SndV;
public static void SetV(Demo e)
{
SndV(e);
}
}
public partial class UserScript
{
}
public partial class bgScr
{
private Timer bgrfsTmr;
Demo bgds = new Demo();
public void bgs()
{
bgrfsTmr = new Timer();
bgrfsTmr.Enabled = true;
bgrfsTmr.Interval = 50;
bgrfsTmr.Tick += bgRfs;
}
public void bgRfs(object obj,EventArgs e)
{
bgds.pressure = 1.0f;
bgds.flow1 = 2.0f;
bgds.flow2 = 3.0f;
bgds.sound = 4.0f;
bgds.ind_exe = "这是一个测试";
}
void bgScr_Opened(System.Object sender, System.EventArgs e)
{
bgs();
}
}
public partial class DvStsScr
{
void DvStsScr_Opened(System.Object sender, System.EventArgs e)
{
SendData.SndV += new SendData.SendValueHandle(dsCtrl);
}
private void dsCtrl(Demo e)
{
AN_dp1.Value = e.pressure;
AN_dp2.Value = e.flow1;
AN_dp3.Value = e.flow2;
AN_dp4.Value = e.sound;
T_dp1.Text = e.ind_exe;
}
}
}
namespace Neo.ApplicationFramework.Generated
{
using System.Windows.Forms;
using System;
using System.Drawing;
using Neo.ApplicationFramework.Tools;
using Neo.ApplicationFramework.Common.Graphics.Logic;
using Neo.ApplicationFramework.Controls;
using Neo.ApplicationFramework.Interfaces;
public class Demo
{
public float pressure,flow1,flow2,sound;
public string ind_exe;
}
public static class SendData
{
public delegate void SendValueHandle(Demo e);
public static event SendValueHandle SndV;
public static void SetV(Demo e)
{
SndV(e);
}
}
public partial class UserScript
{
}
public partial class bgScr
{
private Timer bgrfsTmr;
Demo bgds = new Demo();
public void bgs()
{
bgrfsTmr = new Timer();
bgrfsTmr.Enabled = true;
bgrfsTmr.Interval = 50;
bgrfsTmr.Tick += bgRfs;
}
public void bgRfs(object obj,EventArgs e)
{
bgds.pressure = 1.0f;
bgds.flow1 = 2.0f;
bgds.flow2 = 3.0f;
bgds.sound = 4.0f;
bgds.ind_exe = "这是一个测试";
}
void bgScr_Opened(System.Object sender, System.EventArgs e)
{
bgs();
}
}
public partial class DvStsScr
{
void DvStsScr_Opened(System.Object sender, System.EventArgs e)
{
SendData.SndV += new SendData.SendValueHandle(dsCtrl);
}
private void dsCtrl(Demo e)
{
AN_dp1.Value = e.pressure;
AN_dp2.Value = e.flow1;
AN_dp3.Value = e.flow2;
AN_dp4.Value = e.sound;
T_dp1.Text = e.ind_exe;
}
}
}
编译时通过的,但不知为何界面显示不成功,字符串无显示,数值都显示时0
Globals.UserModule.DataRead(rt1, rt2);
disp_Pressure.Value = Globals.UserModule.DvInfo.rCV_float[1];
disp_Flow1.Value = Globals.UserModule.DvInfo.rCV_float[2];
disp_Flow2.Value = Globals.UserModule.DvInfo.rCV_float[3];
disp_Sound.Value = Globals.UserModule.DvInfo.rCV_float[4];
ExeInd.Text = Globals.UserModule.DvInfo.TextDisplay()[0];
ColorChange(ExeInd.Text);
public dgSrc()
报错方法必须具有返回类型
public void UpdateData(object data) => DataUpdateMonitor.Monitor.UpdateData(this,data);
报错应输入;???
类、结构或接口成员申明中的标记")"无效
类、结构或接口成员申明中的标记"="无效
public static DataUpdateMonitor Monitor { get; } = new DataUpdateMonitor();
提示“类、结构或接口成员声明中的标记"="无效”
Globals.UserModule.DataRead(rt1, rt2);
这个代码会在bgScr(background Screen)里面以bgScr内StartTime()的方式周期执行,bgScr的StartTime()除了执行DataRead,同样会在区分当前界面的前提下,选择激活不同事件。比方说这里的:
disp_Pressure.Value = Globals.UserModule.DvInfo.rCV_float[1];
disp_Flow1.Value = Globals.UserModule.DvInfo.rCV_float[2];
disp_Flow2.Value = Globals.UserModule.DvInfo.rCV_float[3];
disp_Sound.Value = Globals.UserModule.DvInfo.rCV_float[4];
ExeInd.Text = Globals.UserModule.DvInfo.TextDisplay()[0];
ColorChange(ExeInd.Text);
如果是其他的界面会有其他的控件数值更新需要激活。
我没有看懂你这事件与委托的目的,但应该没达到我的要求。不过我技术不是很好,不知道理解的对不对。
是把DataRead后的值,传递给public static界面的protected控件。不知道这样表达会不会好的?
public class DeviceInfo
{
public float[] wrSV_float = new float[3];
public int[] wrSV_int = new int[4];
public string[] wrPW = new string[3];
public bool[] wBTN = new bool[3];
public float[] rCV_float = new float[5];
public int[] rCV_int = new int[4];
public bool[] rLP = new bool[3];
public bool[] rSIG = new bool[2];
public int exe()
{
int exeStp = 0;
int[] bool2int = { 0, 0 };
bool[] sig = this.rSIG;
bool2int[0] = Convert.ToInt16(sig[0]);
bool2int[1] = Convert.ToInt16(sig[1]);
exeStp |= bool2int[0];
exeStp |= (bool2int[1] << 1);
return exeStp;
}
public string[] TextDisplay()
{
string[] rslt = { "", "" };
int exe = this.exe();
switch (exe)
{
case 0:
rslt[0] = "设备当前处于空闲状态。";
rslt[1] = "Idle";
break;
case 1:
rslt[0] = "设备当前正在进行刷炉后排空气操作。";
rslt[1] = "Post-purge";
break;
case 2:
rslt[0] = "设备当前正在进行第" + this.rCV_int[0] + "次刷炉……";
rslt[1] = "Brushing";
break;
case 3:
rslt[0] = "设备当前正在进行刷炉前排空气操作。";
rslt[1] = "Pre-purge";
break;
default:
rslt[0] = "设备当前处于空闲状态。\n当前正处于离线模拟状态。";
rslt[1] = "Idle";
break;
}
return rslt;
}
public string[] storeinfo()
{
string[] info = new string[8];
int cur_Node = Globals.Tags.addr_node.Value;
info[0] = "# 8" + cur_Node.ToString("D2");
info[1] = DateTime.Now.ToString("yy.MM.dd@HH:mm:ss.ff");
info[2] = this.TextDisplay()[1];
info[3] = this.rCV_float[0].ToString("F3") + " psi";
info[4] = this.rCV_float[1].ToString("F3") + " psi";
info[5] = this.rCV_float[2] + " l/min";
info[6] = this.rCV_float[3] + " l/min";
info[7] = this.rCV_float[4].ToString("F3") + " dB";
return info;
}
}
public partial class UserModule
{
//用户自定义脚本区
public DeviceInfo DvInfo = new DeviceInfo();
public void DataSave()
{
}
}
//参数传递类,根据实际情况写
public class MyAge
{
public string PressureValue;
public string Flow1Value;
public string Flow2Value;
public string SoundValue;
public string ExeIndText;
}
//取数据静态类
public static class SendData
{
public delegate void SendValueHandle(MyAge e);
public static event SendValueHandle SendValue;
public static void SetValue(MyAge e)
{
SendValue(e);
}
}
//界面1
public partial class bgScr
{
//界面bgScr代码区
void bgScr_Opened(System.Object sender, System.EventArgs e)
{
//界面打开时执行代码
SendData.SendValue+=new SendData.SendValueHandle(SendData_SendValue);
}
void btn_DeviceStatus_Click(System.Object sender, System.EventArgs e)
{
//其中一个按钮的Click事件代码
}
private void SendData_SendValue(MyAge e)
{
//处理取回的值
}
}
//界面2
public partial class tempdsScr
{
//界面tempdsScr代码
private Timer t;
int rt1 = 176, rt2 = 31;
bool CycFlag = false;
int CycCnt = 0;
public void StartTimer()
{
t = new Timer();
t.Enabled = true;
t.Interval = Globals.Tags.refreshCT.Value;
t.Tick += myTick;
}
public void myTick(object obj, EventArgs ea)
{
MyAge myage = new MyAge();
if (!Globals.Tags.flag_LoginOpen.Value)
{
Globals.UserModule.DataRead(rt1, rt2);
disp_Pressure.Value = Globals.UserModule.DvInfo.rCV_float[1];
disp_Flow1.Value = Globals.UserModule.DvInfo.rCV_float[2];
disp_Flow2.Value = Globals.UserModule.DvInfo.rCV_float[3];
disp_Sound.Value = Globals.UserModule.DvInfo.rCV_float[4];
ExeInd.Text = Globals.UserModule.DvInfo.TextDisplay()[0];
//取值并产生委托事件
myage.PressureValue = Globals.UserModule.DvInfo.rCV_float[1];
myage.Flow1Value = Globals.UserModule.DvInfo.rCV_float[2];
myage.Flow2Value = Globals.UserModule.DvInfo.rCV_float[3];
myage.SoundValue = Globals.UserModule.DvInfo.rCV_float[4];
myage.ExeIndText = Globals.UserModule.DvInfo.rCV_float[4];
SendData.SetValue(myage);
ColorChange(ExeInd.Text);
}
}
void tempdsScr_Opened(System.Object sender, System.EventArgs e)
{
//界面temdsScr打开时执行代码
disp_Pressure.Prefix = "当前气压:";//disp_前缀表示界面上的AnalogNumeric控件,这里只是修改了名称
disp_Pressure.Suffix = " psi";
disp_Flow1.Prefix = "主管道流量:";
disp_Flow1.Suffix = " l/min";
disp_Flow2.Prefix = "支管道流量:";
disp_Flow2.Suffix = " l/min";
disp_Sound.Prefix = "汽笛声强:";
disp_Sound.Suffix = " dB";
StartTimer();
}
}
private static DataUpdateMonitor intance;
private static object obj =new object();
private DataUpdateMonitor()
{
}
public DataUpdateMonitor GetIntance()
{
if(intance == null)
{
lock(obj)
{
if(intance == null)
{
intance =new DataUpdateMonitor();
}
}
}
return intance;
}
Globals.UserModule.DataRead(rt1, rt2);
这个代码会在bgScr(background Screen)里面以bgScr内StartTime()的方式周期执行,bgScr的StartTime()除了执行DataRead,同样会在区分当前界面的前提下,选择激活不同事件。比方说这里的:
disp_Pressure.Value = Globals.UserModule.DvInfo.rCV_float[1];
disp_Flow1.Value = Globals.UserModule.DvInfo.rCV_float[2];
disp_Flow2.Value = Globals.UserModule.DvInfo.rCV_float[3];
disp_Sound.Value = Globals.UserModule.DvInfo.rCV_float[4];
ExeInd.Text = Globals.UserModule.DvInfo.TextDisplay()[0];
ColorChange(ExeInd.Text);
如果是其他的界面会有其他的控件数值更新需要激活。
我没有看懂你这事件与委托的目的,但应该没达到我的要求。不过我技术不是很好,不知道理解的对不对。
是把DataRead后的值,传递给public static界面的protected控件。不知道这样表达会不会好的?[/quote]
tempdsScr 的public void myTick(object obj, EventArgs ea) 读取值后,在bgScr的 private void SendData_SendValue(MyAge e)输出值,bgScr里不用加StartTime()的方式周期执行,你试一下,已满足你的要求[/quote]
我的意思是,bgScr是一个公共界面,会一直是打开的,而除了tempdsScr之外,还有其他的一些tempdmScr、tempamScr、tempssScr、tempmtnsScr等等一些列界面,而这些界面上的控件各不相同,但都以bgScr为背景,这是为什么我需要把myTick放在bgScr的原因,这样其他界面就不用有myTick了