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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Bro.Device.OmronFins
{
    public class FinsFrameBase
    {
        /// <summary>
        /// 80 发送 C0 接收
        /// </summary>
        public byte ICF { get; set; }
        public byte RSV { get; set; } = 0x00;
        public byte GCT { get; set; } = 0x02;
        /// <summary>
        /// 目标网络号
        /// </summary>
        public byte DNA { get; set; }
        /// <summary>
        /// 目标节点号
        /// </summary>
        public byte DA1 { get; set; }
        /// <summary>
        /// 目标单元号
        /// </summary>
        public byte DA2 { get; set; }
        /// <summary>
        /// 源网络号
        /// </summary>
        public byte SNA { get; set; }
        /// <summary>
        /// 源节点号
        /// </summary>
        public byte SA1 { get; set; }
        /// <summary>
        /// 源单元号
        /// </summary>
        public byte SA2 { get; set; }
        public byte SID { get; set; }
        public byte MRC { get; set; } = 0x01;
        /// <summary>
        /// 01 读;02 写
        /// </summary>
        public byte SRC { get; set; }
 
        protected List<byte> BytesFrame(int sid = 0)
        {
            List<byte> bytes = new List<byte>();
 
            bytes.Add(ICF);
            bytes.Add(RSV);
            bytes.Add(GCT);
            bytes.Add(DNA);
            bytes.Add(DA1);
            bytes.Add(DA2);
            bytes.Add(SNA);
            bytes.Add(SA1);
            bytes.Add(SA2);
            SID = (byte)sid;
            bytes.Add(SID);
            bytes.Add(MRC);
            bytes.Add(SRC);
 
            return bytes;
        }
        //private string FCS(string data)
        //{
        //    int xorresult = 0;
        //    string tempfes = "";
        //    for (int i = 0; i < data.Length; i++)
        //    {
        //        xorresult = xorresult ^ Convert.ToInt32(data[i]);
        //    }
        //    tempfes = Convert.ToString(xorresult, 16);
        //    if (tempfes.Length == 1)
        //    {
        //        tempfes = "0" + tempfes;
        //    }
        //    return tempfes;
        //}
    }
}