public bool Initialize_PPG()
        {
            lock (syncRoot)
            {
                bool   result;
                bool[] txLock;

                InnoBert14GCh24.TimeBase((ushort)rate, gt1706_CLK, subBoardNum, device, out result);
                if (!result)
                {
                    return(false);
                }

                InnoBert14GCh24.InitializeTX((ushort)rate, gt1706_CLK, subBoardNum, device, out txLock);
                for (int i = 0; i < txLock.Length; i++)
                {
                    if (!txLock[i])
                    {
                        return(false);
                    }
                }

                InnoBert14GCh24.TXSet((byte)invent, isON, totalChannels, subBoardNum, (byte)txPRBS, device);

                return(true);
            }
        }
        public bool IniTialize_ED()
        {
            lock (syncRoot)
            {
                InnoBert14GCh24.InitializeRX(subBoardNum, (ushort)rate, device);

                InnoBert14GCh24.RXSet(isON, (byte)rxPRBS, (byte)invent, device, subBoardNum, totalChannels);

                return(true);
            }
        }
        public bool ReSet()
        {
            lock (syncRoot)
            {
                bool result;
                InnoBert14GCh24.InitializeFW(subBoardNum, device, out result);

                if (!result)
                {
                    return(false);
                }

                return(true);
            }
        }
        public override double[] RapidErrorRate_AllCH(int syn = 0)
        {
            lock (syncRoot)
            {
                double[] readData = new double[6];
                string[,] ber        = new string[6, 6];
                string[,] errorCount = new string[6, 6];

                //InnoBert14GCh24.ClearECAllCH(device);
                Thread.Sleep(1000);
                InnoBert14GCh24.__504hBER_accurateBERSimple((ushort)rate, edGatingTime, device, out errorCount, out ber);

                // Bert_25G_V2.GetBER()
                for (int i = 0; i < 6; i++)
                {
                    try
                    {
                        double k = Convert.ToDouble(ber[0, i]);

                        if (k >= 0 && k <= 1)
                        {
                            readData[i] = k;
                        }
                        else
                        {
                            readData[i] = 1;
                        }
                    }
                    catch
                    {
                        readData[i] = 1;
                    }
                }

                return(readData);
            }
        }