using System;
using System.Threading;
using System.Windows.Forms;
using VirtualConveyor.Cache.Entity;
using VirtualConveyor.HeartBeat.Entity;
using VirtualConveyor.Properties;
using VirtualConveyor.Utils;
namespace VirtualConveyor.View.HeartBeat
{
public partial class HeartBeatForm : Form
{
private HeartBeatEntity HeartBeat;
public HeartBeatForm()
{
InitializeComponent();
HeartBeat = new HeartBeatEntity();
}
private Thread GetHeartBeatStateThread { get; set; }
private void HeartBeatForm_Load(object sender, EventArgs e)
{
CheckForIllegalCrossThreadCalls = false;
this.tbWPlcHeartBeat.DataBindings.Add("Text", HeartBeat, "WPlcHeartBeat");
this.tbWAlarmCode.DataBindings.Add("Text", HeartBeat, "WAlarmCode");
this.tbServerHeartBeat.DataBindings.Add("Text", HeartBeat, "ServerHeartBeat");
GetHeartBeatStateThread = new Thread(new ThreadStart(GetHeartBeatState));
ThreadHelper.StartThread(GetHeartBeatStateThread);
}
private void HeartBeatForm_FormClosing(object sender, FormClosingEventArgs e)
{
ThreadHelper.CloseThread(GetHeartBeatStateThread);
if(HeartBeat!= null)
{
HeartBeat.CloseWritePlcHeartBeatThread();
}
}
private void GetHeartBeatState()
{
var items = new string[]
{
HeartBeat.OpcReadItems.ServerHeartBeat// 1Srm编号
};
while (true)
{
try
{
var opcs = CacheEntity.OpcWcfServiceClient.ReadValues(items);
if (opcs == null || opcs.Length <= 0)
{
Thread.Sleep(1000);
continue;
}
var i = 0;
HeartBeat.ServerHeartBeat = bool.Parse(opcs[i++].ToString());
}
catch (Exception ex)
{
LogTextHelper.WriteLine(Resources.LogDir, "读取服务器心跳失败:{0}", ex.Message);
}
finally
{
Thread.Sleep(1000);
}
}
}
///
/// 点击更改按钮触发的事件
///
///
///
private void button1_Click(object sender, EventArgs e)
{
HeartBeat.WAlarmCode = int.Parse(this.tbAlarm.Text.Trim());
}
}
}