241 lines
7.9 KiB
C#
241 lines
7.9 KiB
C#
using CSStudio6Lib;
|
|
using GraphControl;
|
|
using GraphControl.GraphElements;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
namespace TestLib
|
|
{
|
|
public partial class MainForm : Form
|
|
{
|
|
private ICSStudio6 m_spDev = new CSStudio6();
|
|
|
|
public Graph graph = new Graph();
|
|
private GraphLine line1 = null;
|
|
public Graph graph2 = new Graph();
|
|
private GraphLine line2 = null;
|
|
public MainForm()
|
|
{
|
|
InitializeComponent();
|
|
InitGraph();
|
|
}
|
|
|
|
|
|
private void InitGraph()
|
|
{
|
|
graph.offsetLeft = 80;
|
|
graph.offsetRight = 20;
|
|
graph.offsetTop = 20;
|
|
graph.offsetBottom = 50;
|
|
graph.IsDrawCursor = true;
|
|
graph.Dock = DockStyle.Fill;
|
|
graph.YAxisTitleColor = Color.Red;
|
|
line1 = new GraphLine(AxisAssosiatedType.Left);
|
|
line1.lineColor = Color.Red;
|
|
line1.markColor = Color.Red;
|
|
line1.markStyle = PointStyle.cycle_empty;
|
|
graph.YAxisTitle = line1.Name = line1.legend = "电位(V)";
|
|
graph.XAxisTitle = "Time/s";
|
|
line1.IsDrawLengend = false;
|
|
graph.AxisManager.IsAutoAll = true;
|
|
graph.AxisManager.IsShowXGrid = graph.AxisManager.IsShowYGrid = true;
|
|
graph.AxisManager.YAxisColor = line1.lineColor;
|
|
graph.AddNewGraphElement(line1);
|
|
graph.SetActiveElement(line1.Name);
|
|
graph.AxisManager.Axises[0].MinValue = 0;
|
|
|
|
graph2.offsetLeft = 80;
|
|
graph2.offsetRight = 20;
|
|
graph2.offsetTop = 20;
|
|
graph2.offsetBottom = 50;
|
|
graph2.IsDrawCursor = true;
|
|
graph2.Dock = DockStyle.Fill;
|
|
graph2.YAxisTitleColor = Color.Red;
|
|
line2 = new GraphLine(AxisAssosiatedType.Left);
|
|
line2.lineColor = Color.Red;
|
|
line2.markColor = Color.Red;
|
|
line2.markStyle = PointStyle.cycle_empty;
|
|
graph2.YAxisTitle = line2.Name = line2.legend = "电流(A)";
|
|
graph2.XAxisTitle = "Time/s";
|
|
line2.IsDrawLengend = false;
|
|
graph2.AxisManager.IsAutoAll = true;
|
|
graph2.AxisManager.IsShowXGrid = graph2.AxisManager.IsShowYGrid = true;
|
|
graph2.AxisManager.YAxisColor = line2.lineColor;
|
|
graph2.AddNewGraphElement(line2);
|
|
graph2.SetActiveElement(line2.Name);
|
|
graph2.AxisManager.Axises[0].MinValue = 0;
|
|
|
|
pnlGraph.Controls.Add(graph);
|
|
pnlGraph.Controls.Add(graph2);
|
|
|
|
pnlGraph_SizeChanged(null, null);
|
|
}
|
|
|
|
private void btnSreach_Click(object sender, EventArgs e)
|
|
{
|
|
if (!m_spDev.FindDeviceInCom())
|
|
{
|
|
return;
|
|
}
|
|
Text = m_spDev.GetSerialNumber();
|
|
}
|
|
|
|
private void btnOcp_Click(object sender, EventArgs e)
|
|
{
|
|
if (!m_spDev.DeviceIsOpen()) return;
|
|
Clear();
|
|
m_spDev.SetOcpParams(float.Parse(txtTime.Text), float.Parse(txtFreq.Text));
|
|
m_spDev.DeviceStart();
|
|
timer1.Start();
|
|
}
|
|
|
|
|
|
private object m_objLock = new object();
|
|
private void Clear()
|
|
{
|
|
if (line1 == null) return;
|
|
|
|
lock(m_objLock)
|
|
{
|
|
line1.Clear();
|
|
line2.Clear();
|
|
}
|
|
this.graph.Invalidate();
|
|
this.graph2.Invalidate();
|
|
}
|
|
|
|
private void btnStop_Click(object sender, EventArgs e)
|
|
{
|
|
if (!m_spDev.DeviceIsOpen()) return;
|
|
|
|
m_spDev.DeviceStop();
|
|
timer1.Stop();
|
|
|
|
m_bIsEis = false;
|
|
}
|
|
|
|
private void pnlGraph_SizeChanged(object sender, EventArgs e)
|
|
{
|
|
int nWidth = pnlGraph.Width;
|
|
int nHeith = pnlGraph.Height;
|
|
|
|
if (this.graph == null) return;
|
|
|
|
this.graph.Dock = DockStyle.None;
|
|
this.graph2.Dock = DockStyle.None;
|
|
|
|
this.graph.Location = new Point(0, 0);
|
|
this.graph.Size = new Size(nWidth, nHeith / 2);
|
|
|
|
this.graph2.Location = new Point(0, nHeith / 2 + 0);
|
|
this.graph2.Size = new Size(nWidth, nHeith / 2);
|
|
this.graph.Invalidate();
|
|
this.graph2.Invalidate();
|
|
}
|
|
|
|
private void timer1_Tick(object sender, EventArgs e)
|
|
{
|
|
if (m_spDev == null || m_spDev.DeviceIsOpen() == false) return;
|
|
|
|
if(!m_bIsEis)
|
|
{
|
|
int nCount = m_spDev.GetValuesCount();
|
|
if (nCount <= 0) return;
|
|
|
|
object dEs = new object();
|
|
object dIs = new object();
|
|
object dTs = new object();
|
|
m_spDev.GetValues(out dEs, out dIs, out dTs);
|
|
|
|
List<double> listE = (dEs as double[]).ToList();
|
|
List<double> listI = (dIs as double[]).ToList();
|
|
List<double> listT = (dTs as double[]).ToList();
|
|
|
|
line1.Add(listT, listE);
|
|
line2.Add(listT, listI);
|
|
}
|
|
else
|
|
{
|
|
int nCount = m_spDev.GetEisValueCount();
|
|
if (nCount <= 0) return;
|
|
|
|
object dEs = new object();
|
|
object dIs = new object();
|
|
object dTs = new object();
|
|
object dZs = new object();
|
|
object dAs = new object();
|
|
m_spDev.GetEisValues(out dEs, out dIs, out dTs,out dZs,out dAs);
|
|
|
|
List<double> listE = (dEs as double[]).ToList();
|
|
List<double> listI = (dIs as double[]).ToList();
|
|
List<double> listT = (dTs as double[]).ToList();
|
|
List<double> listA = (dAs as double[]).ToList();
|
|
|
|
line1.Add(listE, listI);
|
|
line2.Add(listE, listA);
|
|
}
|
|
|
|
|
|
this.graph.Invalidate();
|
|
this.graph2.Invalidate();
|
|
}
|
|
|
|
private void btnPotS_Click(object sender, EventArgs e)
|
|
{
|
|
if (!m_spDev.DeviceIsOpen()) return;
|
|
Clear();
|
|
m_spDev.SetVoltRange(true, 2);
|
|
m_spDev.SetPotStaticParams(3, float.Parse(txtE1.Text), float.Parse(txtTime.Text), float.Parse(txtFreq.Text));
|
|
m_spDev.DeviceStart();
|
|
timer1.Start();
|
|
}
|
|
|
|
private void btnGalS_Click(object sender, EventArgs e)
|
|
{
|
|
if (!m_spDev.DeviceIsOpen()) return;
|
|
Clear();
|
|
m_spDev.SetGalStaticParams(3, float.Parse(txtE1.Text)/1000, float.Parse(txtTime.Text), float.Parse(txtFreq.Text));
|
|
m_spDev.DeviceStart();
|
|
timer1.Start();
|
|
}
|
|
|
|
private void btnLSV_Click(object sender, EventArgs e)
|
|
{
|
|
if (!m_spDev.DeviceIsOpen()) return;
|
|
Clear();
|
|
m_spDev.SetLSVAParams(3, float.Parse(txtE1.Text), float.Parse(txtE4.Text), float.Parse(txtE5.Text)/1000, float.Parse(txtFreq.Text));
|
|
m_spDev.DeviceStart();
|
|
timer1.Start();
|
|
}
|
|
|
|
private void btnCV_Click(object sender, EventArgs e)
|
|
{
|
|
if (!m_spDev.DeviceIsOpen()) return;
|
|
Clear();
|
|
m_spDev.SetCVParams(3, float.Parse(txtE1.Text), float.Parse(txtE2.Text), float.Parse(txtE3.Text), float.Parse(txtE4.Text), float.Parse(txtE5.Text) / 1000, float.Parse(txtFreq.Text),5);
|
|
m_spDev.DeviceStart();
|
|
timer1.Start();
|
|
}
|
|
|
|
private bool m_bIsEis = false;
|
|
private void btnEis_Click(object sender, EventArgs e)
|
|
{
|
|
m_bIsEis = true;
|
|
|
|
if (!m_spDev.DeviceIsOpen()) return;
|
|
Clear();
|
|
float fValue = 0;
|
|
m_spDev.GetOcpValue(out fValue);
|
|
m_spDev.SetEISVSfrqParams(100000,0.1f,fValue,10,60);
|
|
m_spDev.DeviceStart();
|
|
timer1.Start();
|
|
}
|
|
}
|
|
}
|