oils(slaveAddress, startAddress, numberOfPoints);
71
72 for (int i = 0; i < coilsBuffer.Length; i++)
73 {
74 SetMsg(coilsBuffer[i] + "");
75 }
76 break;
77 case "02 Read DisCrete Inputs"://读取输入线圈/离散量线圈
78 SetReadParameters();
79
80 coilsBuffer = master.ReadInputs(slaveAddress, startAddress, numberOfPoints);
81 for (int i = 0; i < coilsBuffer.Length; i++)
82 {
83 SetMsg(coilsBuffer[i] + "");
84 }
85 break;
86 case "03 Read Holding Registers"://读取保持寄存器
87 SetReadParameters();
88 registerBuffer = master.ReadHoldingRegisters(slaveAddress, startAddress, numberOfPoints);
89 for (int i = 0; i < registerBuffer.Length; i++)
90 {
91 SetMsg(registerBuffer[i] + "");
92 }
93 break;
94 case "04 Read Input Registers"://读取输入寄存器
95 SetReadParameters();
96 registerBuffer = master.ReadInputRegisters(slaveAddress, startAddress, numberOfPoints);
97 for (int i = 0; i < registerBuffer.Length; i++)
98 {
99 SetMsg(registerBuffer[i] + "");
100 }
101 break;
102 case "05 Write Single Coil"://写单个线圈
103 SetWriteParametes();
104 await master.WriteSingleCoilAsync(slaveAddress, startAddress, coilsBuffer[0]);
105 break;
106 case "06 Write Single Registers"://写单个输入线圈/离散量线圈
107 SetWriteParametes();
108 await master.WriteSingleRegisterAsync(slaveAddress, startAddress, registerBuffer[0]);
109 break;
110 case "0F Write Multiple Coils"://写一组线圈
111 SetWriteParametes();
112 await master.WriteMultipleCoilsAsync(slaveAddress, startAddress, coilsBuffer);
113 break;
114 case "10 Write Multiple Registers"://写一组保持寄存器
115 SetWriteParametes();
116 await master.WriteMultipleRegistersAsync(slaveAddress, startAddress, registerBuffer);
117 break;
118 default:
119 break;
120 }
121
122 }
123 else
124 {
125 MessageBox.Show("请选择功能码!");
126 }
127 master.Dispose();
128 }
129 catch (Exception ex)
130 {
131
132 MessageBox.Show(ex.Message);
133 }
134 }
135 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
136 {
137 if (comboBox1.SelectedIndex >= 4)
138 {
139 groupBox2.Enabled = true;
140 groupBox1.Enabled = false;
141 }
142 else
143 {
144 groupBox1.Enabled = true;
145 groupBox2.Enabled = false;
146 }
147 comboBox1.Invoke(new Action(() => { functionCode = comboBox1.SelectedItem.ToString(); }));
148 }
149
150 /// <summary>
151 /// 初始化读参数
152 /// </summary>
153 private void SetReadParameters()
154 {
155 if (txt_startAddr1.Text == "" || txt_slave1.Text == "" || txt_length.Text == "")
156 {
157 MessageBox.Show("请填写读参数!");
158 }
159 else
160 {
161 slaveAddress = byte.Parse(txt_slave1.Text);
162 startAddress = ushort.Parse(txt_startAddr1.Text);
163 numberOfPoints = ushort.Parse(txt_length.Text);
164 }
165 }
166 /// <summary>
167 /// 初始化写参数
168 /// </summary>
169 private void SetWriteParametes()
170 {
171 if (txt_startAddr2.Text == "" || txt_slave2.Text == "" || txt_data.Text == "")
172 {
173 MessageBox.Show("请填写写参数!");
174 }
175 else
176 {
177 slaveAddress = byte.Parse(txt_slave2.Text);
178 startAddress = ush |