using DIT.Framework.Module._01_SerialModules;
|
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.IO.Ports;
|
using System.Linq;
|
using System.Text;
|
using System.Threading;
|
using System.Windows.Forms;
|
|
namespace DLL_Test_Program
|
{
|
public partial class EnergyMax_PowerMeter_Form : Form
|
{
|
#region Define
|
|
#endregion
|
|
#region Field
|
Thread m_DisplayThread;
|
Thread m_DataThread;
|
private EnergyMax_PowerMeter m_powermeter;
|
#endregion
|
|
#region Property
|
public EnergyMax_PowerMeter PowerMeter
|
{
|
get { return m_powermeter; }
|
set { m_powermeter = value; }
|
}
|
#endregion
|
|
#region Constructor
|
public EnergyMax_PowerMeter_Form()
|
{
|
InitializeComponent();
|
this.PowerMeter = new EnergyMax_PowerMeter();
|
this.cbb_Ports.DataSource = SerialPort.GetPortNames();
|
|
this.ThreadInit();
|
}
|
#endregion
|
|
#region Thread
|
private void ThreadInit()
|
{
|
m_DisplayThread = new Thread(UpdateDisplay);
|
m_DataThread = new Thread(UpdateData);
|
}
|
|
private void ThreadStart()
|
{
|
m_DisplayThread.Start();
|
m_DataThread.Start();
|
}
|
|
private void ThreadEnd()
|
{
|
m_DisplayThread.Abort();
|
m_DataThread.Abort();
|
}
|
#endregion
|
|
#region Method
|
private void UpdateDisplay()
|
{
|
while (this.Visible)
|
{
|
lock (this)
|
{
|
Thread.Sleep(100);
|
Application.DoEvents();
|
|
if (InvokeRequired)
|
{
|
BeginInvoke(new UpdateUIDelegate(UpdateDisplay));
|
return;
|
}
|
|
try
|
{
|
if (this.PowerMeter.SerialPort.IsOpen)
|
{
|
lb_PortState.Text = "Connected";
|
lb_PortState.BackColor = Color.Lime;
|
btn_PortClose.Enabled = true;
|
btn_PortOpen.Enabled = false;
|
}
|
else
|
{
|
lb_PortState.Text = "Disconnect";
|
lb_PortState.BackColor = Color.Red;
|
btn_PortClose.Enabled = false;
|
btn_PortOpen.Enabled = true;
|
}
|
}
|
catch (Exception)
|
{
|
|
}
|
}
|
}
|
}
|
|
private void UpdateData()
|
{
|
// Check..
|
}
|
|
#endregion
|
|
#region Event
|
private void btn_PortOpen_Click(object sender, EventArgs e)
|
{
|
string port;
|
int timeout;
|
|
if (this.cbb_Ports.Text == "") return;
|
|
port = this.cbb_Ports.Text;
|
timeout = 500;
|
|
if (this.PowerMeter.Connect(port, timeout) == false)
|
{
|
MessageBox.Show("Connect Fail...");
|
}
|
}
|
|
private void btn_PortClose_Click(object sender, EventArgs e)
|
{
|
this.PowerMeter.DisConnect();
|
}
|
|
private void btn_ReadEnergy_Click(object sender, EventArgs e)
|
{
|
if (this.PowerMeter.SendWaitReceive("READ?") == false)
|
{
|
MessageBox.Show("Send Fail...");
|
}
|
|
this.tb_Energy.Text = this.PowerMeter.RecvData;
|
}
|
|
private void btn_Initial_Click(object sender, EventArgs e)
|
{
|
if (this.PowerMeter.Send("*RST") == false)
|
{
|
MessageBox.Show("Send Fail...");
|
}
|
}
|
|
private void EnergyMax_PowerMeter_Form_FormClosing(object sender, FormClosingEventArgs e)
|
{
|
this.ThreadEnd();
|
}
|
|
private void EnergyMax_PowerMeter_Form_Load(object sender, EventArgs e)
|
{
|
this.ThreadStart();
|
}
|
#endregion
|
}
|
}
|