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()); } } }