private void waveformAiCtrl1_DataReady(object sender, BfdAiEventArgs args) { ErrorCode err = ErrorCode.Success; try { //The WaveformAiCtrl has been disposed. if (waveformAiCtrl1.State == ControlState.Idle) { return; } if (m_dataScaled.Length < args.Count) { m_dataScaled = new double[args.Count]; } int chanCount = waveformAiCtrl1.Conversion.ChannelCount; int sectionLength = waveformAiCtrl1.Record.SectionLength; err = waveformAiCtrl1.GetData(args.Count, m_dataScaled);//读取数据 //Console.WriteLine("length:" + m_dataScaled.Length); DateTime t = DateTime.Now; // t = t.AddSeconds(-1.0);//采集到的是一秒钟之前的数据,因此需要对当前的时间减去1s t.ToString("yyyy-MM-dd hh:mm:ss:fff"); safetyDelegate mes = new safetyDelegate(systemInfoactive); try { Invoke(mes, t.ToString("yyyy-MM-dd hh:mm:ss:fff")); } catch { } //Console.WriteLine("time:" + t.ToString("yyyy-MM-dd hh:mm:ss:fff")); for (int i = 0; i < m_dataScaled.Length; i += 15) { Qc = Math.Round(m_dataScaled[i + 0], 2); Qh = Math.Round(m_dataScaled[i + 1], 2); Qm = Math.Round(m_dataScaled[i + 2], 2); Tc = Math.Round(m_dataScaled[i + 3], 2); Th = Math.Round(m_dataScaled[i + 4], 2); Tm = Math.Round(m_dataScaled[i + 5], 2); Pc = Math.Round(m_dataScaled[i + 6], 2); Ph = Math.Round(m_dataScaled[i + 7], 2); Pm = Math.Round(m_dataScaled[i + 8], 2); Qm5 = Math.Round(m_dataScaled[i + 9], 2); Temp1 = Math.Round(m_dataScaled[i + 10], 2); Temp2 = Math.Round(m_dataScaled[i + 11], 2); Temp3 = Math.Round(m_dataScaled[i + 12], 2); Temp4 = Math.Round(m_dataScaled[i + 13], 2); Temp5 = Math.Round(m_dataScaled[i + 14], 2); if (startFlag) { dt.Rows.Add(t.ToString("yyyy-MM-dd hh:mm:ss:fff"), Qc, Qh, Qm, Tc, Th, Tm, Pc, Ph, Pm, Qm5); } t = t.AddMilliseconds(10.0); } myDelegate md = new myDelegate(dataReadyUpdateForm); this.Invoke(md); if (err != ErrorCode.Success && err != ErrorCode.WarningRecordEnd) { HandleError(err); return; } System.Diagnostics.Debug.WriteLine("读取数据长度" + args.Count.ToString()); } catch (System.Exception) { HandleError(err); } }
void PressureAction(object source, System.Timers.ElapsedEventArgs e) { //启动a、c、11、011、12、012、022、021、vc、vh、vm 保持t1时间 然后关闭a 打开b set_bit(ref doData[1], 7, true); //a set_bit(ref doData[2], 0, false); //b set_bit(ref doData[2], 1, true); //c set_bit(ref doData[2], 2, false); //d set_bit(ref doData[0], 5, true); //11 set_bit(ref doData[2], 7, true); //011 set_bit(ref doData[0], 6, true); //12 set_bit(ref doData[3], 0, true); //012 set_bit(ref doData[3], 2, true); //022 set_bit(ref doData[3], 1, true); //021 set_bit(ref doData[2], 3, true); //vc set_bit(ref doData[2], 4, true); //vh set_bit(ref doData[2], 5, true); //vm control.InstantDo_Write(doData); safetyDelegate mes = new safetyDelegate(systemInfoactive); try { Invoke(mes, "[初始化系统...]\n"); } catch { } //热水降压测试 System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t1)); safetyDelegate org = new safetyDelegate(orgPmShowactive); //022压力切换为低压 用485切换 set_bit(ref doData[1], 7, false); //a set_bit(ref doData[2], 0, true); //b control.InstantDo_Write(doData); try { Invoke(mes, "[t1 = " + Properties.Settings.Default.t1.ToString() + " s 计时结束,关闭a打开b,开始压力变化测试-热水降压测试]\n"); } catch { } try { Invoke(mes, "[等待压力到达设定值...]\n"); } catch { } for (; true;) { if (Math.Abs(Ph - (double)Properties.Settings.Default.PumpHotLow022) <= (double)Properties.Settings.Default.pressureThreshold) { break; } System.Threading.Thread.Sleep((int)(100)); } //开始收集数据这个过程一共持续t3 try { Invoke(mes, "[压力达到设定值,开始记录热水降压数据]\n"); } catch { } //开始收集数据 dt.Rows.Add("开始采集热水降压测试数据", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); startFlag = true; System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t3)); try { Invoke(mes, "[t3 = " + Properties.Settings.Default.t3.ToString() + " s 热水降压测试阶段结束,停止记录数据。关闭b,打开a,压力开始恢复,022压力由低压切换为高压]\n"); } catch { } //停止收集数据,持续t3后打开a同时关闭b 022压力切换为高压 用485切换 startFlag = false; dt.Rows.Add("热水降压测试数据采集完毕", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); set_bit(ref doData[1], 7, true); //a set_bit(ref doData[2], 0, false); //b control.InstantDo_Write(doData); //达到初始压力以后再进行5s的数据收集 for (; true;) { if (Math.Abs(Ph - (double)Properties.Settings.Default.HotPump021) <= (double)Properties.Settings.Default.pressureThreshold) { break; } System.Threading.Thread.Sleep((int)(100)); } try { Invoke(mes, "[热水压力恢复到初始压力,开始记录 5s 的数据]\n"); } catch { } dt.Rows.Add("开始采集热水降压测试压力恢复数据", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); startFlag = true; System.Threading.Thread.Sleep((int)(1000 * 5));//延时5s startFlag = false; dt.Rows.Add("热水降压测试压力恢复数据采集完毕", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); try { Invoke(mes, "[ 5s 的数据记录完毕]\n"); } catch { } //热水升压测试 System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t1)); //022压力切换为高压 用485切换 set_bit(ref doData[1], 7, false); //a set_bit(ref doData[2], 0, true); //b //022高压切换 control.InstantDo_Write(doData); try { Invoke(mes, "[t1 = " + Properties.Settings.Default.t1.ToString() + " s 计时结束,关闭a打开b,开始压力变化测试-热水升压测试]\n"); } catch { } try { Invoke(mes, "[等待压力到达设定值...]\n"); } catch { } for (; true;) { if (Math.Abs(Ph - (double)Properties.Settings.Default.PumpHotHigh022) <= (double)Properties.Settings.Default.pressureThreshold) { break; } System.Threading.Thread.Sleep((int)(100)); } //开始收集数据这个过程一共持续t3 try { Invoke(mes, "[压力达到设定值,开始记录热水降压数据]\n"); } catch { } //开始收集数据 dt.Rows.Add("开始采集热水升压测试数据", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); startFlag = true; System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t3)); try { Invoke(mes, "[t3 = " + Properties.Settings.Default.t3.ToString() + " s 热水升压测试阶段结束,停止记录数据。关闭b,打开a,压力开始恢复,022压力由低压切换为高压]\n"); } catch { } //停止收集数据,持续t3后打开a同时关闭b 022压力切换为高压 用485切换 startFlag = false; dt.Rows.Add("热水升压测试数据采集完毕", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); set_bit(ref doData[1], 7, true); //a set_bit(ref doData[2], 0, false); //b control.InstantDo_Write(doData); //达到初始压力以后再进行5s的数据收集 for (; true;) { if (Math.Abs(Ph - (double)Properties.Settings.Default.HotPump021) <= (double)Properties.Settings.Default.pressureThreshold) { break; } System.Threading.Thread.Sleep((int)(100)); } try { Invoke(mes, "[热水压力恢复到初始压力,开始记录 5s 的数据]\n"); } catch { } dt.Rows.Add("开始采集热水升压测试压力恢复数据", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); startFlag = true; System.Threading.Thread.Sleep((int)(1000 * 5));//延时5s startFlag = false; dt.Rows.Add("热水升压测试压力恢复数据采集完毕", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); try { Invoke(mes, "[ 5s 的数据记录完毕]\n"); } catch { } //冷水降压测试 set_bit(ref doData[2], 1, true); //c set_bit(ref doData[2], 2, false); //d control.InstantDo_Write(doData); System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t1)); //012压力切换为低压 用485切换 set_bit(ref doData[2], 1, false); //c set_bit(ref doData[2], 2, true); //d //012输出低压 485输出 control.InstantDo_Write(doData); try { Invoke(mes, "[t1 = " + Properties.Settings.Default.t1.ToString() + " s 计时结束,关闭a打开b,开始压力变化测试-冷水降压测试]\n"); } catch { } try { Invoke(mes, "[等待压力到达设定值...]\n"); } catch { } for (; true;) { if (Math.Abs(Pc - (double)Properties.Settings.Default.PumpCoolLow012) <= (double)Properties.Settings.Default.pressureThreshold) { break; } System.Threading.Thread.Sleep((int)(100)); } //开始收集数据这个过程一共持续t3 try { Invoke(mes, "[压力达到设定值,开始记录冷水降压数据]\n"); } catch { } //开始收集数据 dt.Rows.Add("开始采集冷水降压测试数据", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); startFlag = true; System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t3)); try { Invoke(mes, "[t3 = " + Properties.Settings.Default.t3.ToString() + " s 冷水降压测试阶段结束,停止记录数据。关闭b,打开a,压力开始恢复,022压力由低压切换为高压]\n"); } catch { } //停止收集数据,持续t3后 startFlag = false; dt.Rows.Add("冷水降压测试数据采集完毕", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); set_bit(ref doData[2], 1, true); //c set_bit(ref doData[2], 2, false); //d //012输出高压 485输出 control.InstantDo_Write(doData); //达到初始压力以后再进行5s的数据收集 for (; true;) { if (Math.Abs(Pc - (double)Properties.Settings.Default.CoolPump011) <= (double)Properties.Settings.Default.pressureThreshold) { break; } System.Threading.Thread.Sleep((int)(100)); } try { Invoke(mes, "[冷水压力恢复到初始压力,开始记录 5s 的数据]\n"); } catch { } dt.Rows.Add("开始采集冷水降压测试压力恢复数据", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); startFlag = true; System.Threading.Thread.Sleep((int)(1000 * 5));//延时5s startFlag = false; dt.Rows.Add("冷水降压测试压力恢复数据采集完毕", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); try { Invoke(mes, "[ 5s 的数据记录完毕]\n"); } catch { } //冷水升压测试 set_bit(ref doData[2], 1, true); //c set_bit(ref doData[2], 2, false); //d //012输出高压 485输出 control.InstantDo_Write(doData); System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t1)); //012压力切换为高压 用485切换 set_bit(ref doData[2], 1, false); //c set_bit(ref doData[2], 2, true); //d control.InstantDo_Write(doData); try { Invoke(mes, "[t1 = " + Properties.Settings.Default.t1.ToString() + " s 计时结束,关闭a打开b,开始压力变化测试-冷水升压测试]\n"); } catch { } try { Invoke(mes, "[等待压力到达设定值...]\n"); } catch { } for (; true;) { if (Math.Abs(Pc - (double)Properties.Settings.Default.PumpCoolHigh012) <= (double)Properties.Settings.Default.pressureThreshold) { break; } System.Threading.Thread.Sleep((int)(100)); } //开始收集数据这个过程一共持续t3 try { Invoke(mes, "[压力达到设定值,开始记录冷水升压数据]\n"); } catch { } //开始收集数据 dt.Rows.Add("开始采集冷水升压测试数据", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); startFlag = true; System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t3)); try { Invoke(mes, "[t3 = " + Properties.Settings.Default.t3.ToString() + " s 冷水降压测试阶段结束,停止记录数据。关闭b,打开a,压力开始恢复,022压力由低压切换为高压]\n"); } catch { } //停止收集数据,持续t3后 startFlag = false; dt.Rows.Add("冷水升压测试数据采集完毕", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); set_bit(ref doData[2], 1, true); //c set_bit(ref doData[2], 2, false); //d control.InstantDo_Write(doData); //达到初始压力以后再进行5s的数据收集 for (; true;) { if (Math.Abs(Pc - (double)Properties.Settings.Default.CoolPump011) <= (double)Properties.Settings.Default.pressureThreshold) { break; } System.Threading.Thread.Sleep((int)(100)); } try { Invoke(mes, "[冷水压力恢复到初始压力,开始记录 5s 的数据]\n"); } catch { } dt.Rows.Add("开始采集冷水升压测试压力恢复数据", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); startFlag = true; System.Threading.Thread.Sleep((int)(1000 * 5));//延时5s startFlag = false; dt.Rows.Add("冷水降压测试压力恢复数据采集完毕", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); try { Invoke(mes, "[ 5s 的数据记录完毕]\n"); } catch { } try { Invoke(mes, "[压力变化测试结束,请注意保存数据!]"); } catch { } MessageBox.Show("压力变化测试结束,请注意保存数据!"); }
void safetyAction(object source, System.Timers.ElapsedEventArgs e) { //启动a、c、11、011、12、021、vc、vh、vm 保持t1时间 然后关闭vc vm 打开v5 set_bit(ref doData[1], 7, true); //a set_bit(ref doData[2], 1, true); //c set_bit(ref doData[0], 5, true); //11 set_bit(ref doData[2], 7, true); //011 set_bit(ref doData[0], 6, true); //12 set_bit(ref doData[3], 1, true); //021 set_bit(ref doData[2], 3, true); //vc set_bit(ref doData[2], 4, true); //vh set_bit(ref doData[2], 5, true); //vm control.InstantDo_Write(doData); safetyDelegate mes = new safetyDelegate(systemInfoactive); try { Invoke(mes, "[初始化系统]\n"); } catch { } System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t1)); double orgPm = Pm;//在界面上显示初始压力,一次判断过后压力恢复到初始压力以后对温度进行判断 safetyDelegate org = new safetyDelegate(orgPmShowactive); if (IsHandleCreated)//这里会导致访问到已经被释放的窗体界面 { Invoke(org, Math.Round(orgPm, 2).ToString()); } set_bit(ref doData[2], 3, false); //vc set_bit(ref doData[2], 5, false); //vm set_bit(ref doData[2], 6, true); //v5 control.InstantDo_Write(doData); try { Invoke(mes, "[t1 = " + Properties.Settings.Default.t1.ToString() + " s 计时结束,关闭Vc、Vm打开V5,开始冷水失效测试]\n"); } catch { } System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t2)); //开始收集数据这个过程一共持续t3 try { Invoke(mes, "[t2 = " + Properties.Settings.Default.t2.ToString() + "s 延时结束,开始记录冷水失效数据]\n"); } catch { } //开始收集数据 startFlag = true; System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t3)); try { Invoke(mes, "[t3 = " + Properties.Settings.Default.t3.ToString() + " s 冷水测试阶段结束,停止记录数据。关闭V5,打开Vc、Vm,压力开始恢复]\n"); } catch { } //停止收集数据,持续t3后打开VC Vm同时关闭V5 startFlag = false; set_bit(ref doData[2], 3, true); //vc set_bit(ref doData[2], 5, true); //vm set_bit(ref doData[2], 6, false); //v5 control.InstantDo_Write(doData); //达到初始压力以后再进行5s的数据收集 for (; true;) { if (Math.Abs(Pc - (double)Properties.Settings.Default.CoolPump011) <= (double)Properties.Settings.Default.pressureThreshold) { break; } } try { Invoke(mes, "[压力恢复到初始压力,开始记录 5s 的数据]\n"); } catch { } startFlag = true; System.Threading.Thread.Sleep((int)(1000 * 5));//延时5s startFlag = false; try { Invoke(mes, "[ 5s 的数据记录完毕]\n"); } catch { } System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t1)); set_bit(ref doData[2], 4, false); //vh set_bit(ref doData[2], 5, false); //vm set_bit(ref doData[2], 6, true); //v5 control.InstantDo_Write(doData); try { Invoke(mes, "[t1 = " + Properties.Settings.Default.t1.ToString() + " s 计时结束,关闭Vh、Vm打开V5,开始热水失效测试]\n"); } catch { } System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t2)); //开始收集数据这个过程一共持续t3 try { Invoke(mes, "[t2 = " + Properties.Settings.Default.t2.ToString() + " s 延时结束,开始记录热水失效数据。]\n"); } catch { } //开始收集数据 startFlag = true; System.Threading.Thread.Sleep((int)(1000 * Properties.Settings.Default.t3)); try { Invoke(mes, "[t3 = " + Properties.Settings.Default.t3.ToString() + " s 热水测试阶段结束,停止记录数据。关闭V5,打开Vh、Vm,压力开始恢复]\n"); } catch { } //停止收集数据,持续t3后打开VC Vm同时关闭V5 startFlag = false; set_bit(ref doData[2], 3, true); //vc set_bit(ref doData[2], 5, true); //vm set_bit(ref doData[2], 6, false); //v5 control.InstantDo_Write(doData); //达到初始压力以后再进行5s的数据收集 for (; true;) { if (Math.Abs(Ph - (double)Properties.Settings.Default.HotPump021) <= (double)Properties.Settings.Default.pressureThreshold) { break; } } try { Invoke(mes, "[压力恢复到初始压力,开始记录 5s 的数据]\n"); } catch { } startFlag = true; System.Threading.Thread.Sleep((int)(1000 * 5));//延时5s startFlag = false; try { Invoke(mes, "[ 5s 的数据记录完毕]\n"); } catch { } try { Invoke(mes, "[安全性测试结束,请注意保存数据!]"); } catch { } MessageBox.Show("安全性测试结束,请注意保存数据!"); }