schangxiang@126.com
2025-06-04 3e837690e8a1d3b6e86f3db72d2d84eab1bc7114
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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);
                }
            }
        }
 
        /// <summary>
        /// 点击更改按钮触发的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            HeartBeat.WAlarmCode = int.Parse(this.tbAlarm.Text.Trim());
 
        }
 
 
    }
}