private void match(object i)
        {
            string armid = "-";

            try
            {
                int[] status = new int[455];
                //List<string> updatestrings = new List<string> { };
                int    row = (int)i;
                string ip  = dt.Rows[row][1].ToString();
                armid = dt.Rows[row][0].ToString();

                ModbusTcpHelper mt = new ModbusTcpHelper(ip, 502);
                mt.Connect();

                if (mt.GetConnect())
                {
                    byte[] return_bytes;
                    mt.discover_loopandgroup();

                    while (true)
                    {
                        Thread.Sleep(10);
                        if (mt.GetReturnData() != null)
                        {
                            return_bytes = mt.GetReturnData();
                            break;
                        }
                    }

                    if (return_bytes.Length == 57)
                    {
                        byte[] loop_bytes = new byte[48];

                        for (int j = 0; j < loop_bytes.Length; j++)
                        {
                            if (j < 47)
                            {
                                loop_bytes[j] = return_bytes[j + 9];
                                string temp = Convert.ToString(loop_bytes[j], 2);
                                char[] bin  = stringtobin(temp);
                                for (int k = 0; k < 8; k++)
                                {
                                    status[8 * j + k] = Convert.ToInt32(bin[7 - k].ToString());
                                }
                            }
                            else if (j == 47)
                            {
                                loop_bytes[j] = return_bytes[j + 9];
                                string temp = Convert.ToString(loop_bytes[j], 2);
                                char[] bin  = stringtobin(temp);
                                for (int k = 0; k < 7; k++)
                                {
                                    status[8 * j + k] = Convert.ToInt32(bin[7 - k].ToString());
                                }
                            }
                        }
                    }
                }

                mt.disconnect();
                Thread.Sleep(50);

                ModbusTcpHelper mt_model = new ModbusTcpHelper(ip, 502);
                mt_model.Connect();
                if (mt_model.GetConnect())
                {
                    byte[] return_bytes_model;
                    mt_model.discover_model();

                    while (true)
                    {
                        Thread.Sleep(10);
                        if (mt_model.GetReturnData() != null)
                        {
                            return_bytes_model = mt_model.GetReturnData();
                            break;
                        }
                    }

                    if (return_bytes_model.Length == 18)
                    {
                        byte[] model_bytes = new byte[9];

                        for (int j = 0; j < model_bytes.Length; j++)
                        {
                            model_bytes[j] = return_bytes_model[j + 9];
                            string temp = Convert.ToString(model_bytes[j], 2);
                            char[] bin  = stringtobin(temp);
                            for (int k = 0; k < 8; k++)
                            {
                                status[8 * j + k + 383] = Convert.ToInt32(bin[7 - k].ToString());
                            }
                        }
                    }
                }

                CommonlyFunctions.ExecuteSqlTran(armid, status);
            }
            catch (Exception ex)
            {
                CommonlyFunctions.insertlog(Guid.NewGuid().ToString(), armid, "0", "匹配OPIU寄存器状态异常", DateTime.Now, "-", "-", ex.Message.ToString());
            }
        }