/// <summary> /// 写数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void but_write_Click(object sender, EventArgs e) { byte.TryParse(txt_stationNumber.Text?.Trim(), out byte stationNumber); if (string.IsNullOrWhiteSpace(txt_address.Text)) { MessageBox.Show("请输入地址"); return; } if (string.IsNullOrWhiteSpace(txt_value.Text)) { MessageBox.Show("请输入值"); return; } try { var address = txt_address.Text?.Trim().Split('-')[0]; dynamic result = null; if (rd_bit.Checked) { if (!bool.TryParse(txt_value.Text?.Trim(), out bool coil)) { if (txt_value.Text?.Trim() == "0") { coil = false; } else if (txt_value.Text?.Trim() == "1") { coil = true; } else { MessageBox.Show("请输入 True 或 False"); return; } } result = client.Write(address, coil, stationNumber); } else if (rd_short.Checked) { result = client.Write(address, short.Parse(txt_value.Text?.Trim()), stationNumber); } else if (rd_ushort.Checked) { result = client.Write(address, ushort.Parse(txt_value.Text?.Trim()), stationNumber); } else if (rd_int.Checked) { result = client.Write(address, int.Parse(txt_value.Text?.Trim()), stationNumber); } else if (rd_uint.Checked) { result = client.Write(address, uint.Parse(txt_value.Text?.Trim()), stationNumber); } else if (rd_long.Checked) { result = client.Write(address, long.Parse(txt_value.Text?.Trim()), stationNumber); } else if (rd_ulong.Checked) { result = client.Write(address, ulong.Parse(txt_value.Text?.Trim()), stationNumber); } else if (rd_float.Checked) { result = client.Write(address, float.Parse(txt_value.Text?.Trim()), stationNumber); } else if (rd_double.Checked) { result = client.Write(address, double.Parse(txt_value.Text?.Trim()), stationNumber); } else if (rd_discrete.Checked) { AppendText($"离散类型只读"); return; } if (result.IsSucceed) { AppendText($"[写入 {address?.Trim()} 成功]:{txt_value.Text?.Trim()} OK"); } else { AppendText($"[写入 {address?.Trim()} 失败]:{result.Err}"); } if (chb_show_package.Checked || (ModifierKeys & Keys.Control) == Keys.Control) { AppendText($"[请求报文]{result.Requst}"); AppendText($"[响应报文]{result.Response}\r\n"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public async Task 短连接自动开关() { short Number = 33; client.Write("4", Number, stationNumber); Assert.True(client.ReadInt16("4", stationNumber).Value == Number); Number = 34; client.Write("4", Number, stationNumber); Assert.True(client.ReadInt16("4", stationNumber).Value == Number); Number = 1; client.Write("12", Number, stationNumber); Assert.True(client.ReadInt16("12", stationNumber).Value == 1); Number = 0; client.Write("12", Number, stationNumber); Assert.True(client.ReadInt16("12", stationNumber).Value == 0); int numberInt32 = -12; client.Write("4", numberInt32, stationNumber); Assert.True(client.ReadInt32("4", stationNumber).Value == numberInt32); float numberFloat = 112; client.Write("4", numberFloat, stationNumber); Assert.True(client.ReadFloat("4", stationNumber).Value == numberFloat); double numberDouble = 32; client.Write("4", numberDouble, stationNumber); Assert.True(client.ReadDouble("4", stationNumber).Value == numberDouble); }