public void 长连接主动开关(int port)
        {
            client = new OmronFinsClient(ip, port);

            client.Open();

            Random rnd = new Random((int)Stopwatch.GetTimestamp());

            for (int i = 0; i < 100; i++)
            {
                short  short_number   = (short)rnd.Next(short.MinValue, short.MaxValue);
                ushort short_number_1 = (ushort)rnd.Next(ushort.MinValue, ushort.MaxValue);

                int  int_number   = rnd.Next(int.MinValue, int.MaxValue);
                uint int_number_1 = (uint)rnd.Next(0, int.MaxValue);

                float float_number = int_number / 100;
                var   bool_value   = short_number % 2 == 1;

                client.Write("D100", bool_value);
                Assert.True(client.ReadBoolean("D100").Value == bool_value);
                client.Write("D101", bool_value);
                Assert.True(client.ReadBoolean("D101").Value == bool_value);
                client.Write("D102", !bool_value);
                Assert.True(client.ReadBoolean("D102").Value == !bool_value);

                client.Write("D100", short_number);
                Assert.True(client.ReadInt16("D100").Value == short_number);
                client.Write("D100", short_number_1);
                Assert.True(client.ReadUInt16("D100").Value == short_number_1);

                client.Write("D100", int_number);
                Assert.True(client.ReadInt32("D100").Value == int_number);
                client.Write("D100", int_number_1);
                Assert.True(client.ReadUInt32("D100").Value == int_number_1);

                client.Write("D100", Convert.ToInt64(int_number));
                Assert.True(client.ReadInt64("D100").Value == Convert.ToInt64(int_number));
                client.Write("D100", Convert.ToUInt64(int_number_1));
                Assert.True(client.ReadUInt64("D100").Value == Convert.ToUInt64(int_number_1));

                client.Write("D200", float_number);
                Assert.True(client.ReadFloat("D200").Value == float_number);
                client.Write("D300", Convert.ToDouble(float_number));
                Assert.True(client.ReadDouble("D300").Value == Convert.ToDouble(float_number));
            }

            client.Close();
        }
        private void but_read_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(txt_address.Text))
                {
                    MessageBox.Show("请输入地址");
                    return;
                }
                dynamic result = null;
                if (rd_bit.Checked)
                {
                    result = client.ReadBoolean(txt_address.Text);
                }
                else if (rd_short.Checked)
                {
                    result = client.ReadInt16(txt_address.Text);
                }
                else if (rd_ushort.Checked)
                {
                    result = client.ReadUInt16(txt_address.Text);
                }
                else if (rd_int.Checked)
                {
                    result = client.ReadInt32(txt_address.Text);
                }
                else if (rd_uint.Checked)
                {
                    result = client.ReadUInt32(txt_address.Text);
                }
                else if (rd_long.Checked)
                {
                    result = client.ReadInt64(txt_address.Text);
                }
                else if (rd_ulong.Checked)
                {
                    result = client.ReadUInt64(txt_address.Text);
                }
                else if (rd_float.Checked)
                {
                    result = client.ReadFloat(txt_address.Text);
                }
                else if (rd_double.Checked)
                {
                    result = client.ReadDouble(txt_address.Text);
                }

                if (result.IsSucceed)
                {
                    AppendText($"[读取 {txt_address.Text?.Trim()} 成功]:{result.Value}\t\t耗时:{result.TimeConsuming}ms");
                }
                else
                {
                    AppendText($"[读取 {txt_address.Text?.Trim()} 失败]:{result.Err}\t\t耗时:{result.TimeConsuming}ms");
                }
                if (chb_show_package.Checked || (ModifierKeys & Keys.Control) == Keys.Control)
                {
                    AppendText($"[请求报文]{result.Requst}");
                    AppendText($"[响应报文]{result.Response}\r\n");
                }

                var config = ConnectionConfig.GetConfig();
                config.OmronFins_IP          = txt_ip.Text;
                config.OmronFins_Port        = txt_port.Text;
                config.OmronFins_Address     = txt_address.Text;
                config.OmronFins_Value       = txt_value.Text;
                config.OmronFins_ShowPackage = chb_show_package.Checked;
                config.OmronFins_Datatype    = string.Empty;
                if (rd_bit.Checked)
                {
                    config.OmronFins_Datatype = "rd_bit";
                }
                else if (rd_short.Checked)
                {
                    config.OmronFins_Datatype = "rd_short";
                }
                else if (rd_ushort.Checked)
                {
                    config.OmronFins_Datatype = "rd_ushort";
                }
                else if (rd_int.Checked)
                {
                    config.OmronFins_Datatype = "rd_int";
                }
                else if (rd_uint.Checked)
                {
                    config.OmronFins_Datatype = "rd_uint";
                }
                else if (rd_long.Checked)
                {
                    config.OmronFins_Datatype = "rd_long";
                }
                else if (rd_ulong.Checked)
                {
                    config.OmronFins_Datatype = "rd_ulong";
                }
                else if (rd_float.Checked)
                {
                    config.OmronFins_Datatype = "rd_float";
                }
                else if (rd_double.Checked)
                {
                    config.OmronFins_Datatype = "rd_double";
                }
                config.SaveConfig();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }