/// <summary>
        /// 根据数据点获取读取寄存器命令(若干个请求字节流)
        /// </summary>
        /// <param name="dataPoints">
        /// dataPoints中的DataPoint不必满足如下条件:
        /// 1.设备地址相同;
        /// 2.读寄存器用的功能码相同;
        /// 3.相邻DataPoint的寄存器地址是连续的。
        ///
        /// 该方法内部将自动调整为以上条件
        /// </param>
        /// <returns></returns>
        public static List <List <byte> > CreateReadRegisterCommands(List <DataPoint> dataPoints)
        {
            List <List <byte> > readRegisterCommands = new List <List <byte> >();

            if (null == dataPoints)
            {
                return(readRegisterCommands);
            }

            List <List <DataPoint> > dataPointsGroupedForRead = DataPointGrouper.GroupingDataPointsForReadRegister(dataPoints);

            foreach (var dataPointsGroup in dataPointsGroupedForRead)
            {
                List <List <byte> > requestCommadBytes = RTURequestCommandByteStreamCreator.CreateRequestCommandByteStreamForReadRegisterBy(dataPointsGroup);

                foreach (var requestCommadByte in requestCommadBytes)
                {
                    readRegisterCommands.Add(requestCommadByte);
                }
            }

            return(readRegisterCommands);
        }
        /// <summary>
        /// 根据数据点获取写寄存器命令(若干个请求字节流)
        /// </summary>
        /// <param name="dataAnalyzeMode">数据解析模式</param>
        /// <param name="dataPoints">
        /// dataPoints中的DataPoint不必满足如下条件:
        /// 1.设备地址相同;
        /// 2.读寄存器用的功能码相同;
        /// 3.相邻DataPoint的寄存器地址是连续的。
        ///
        /// 该方法内部将自动调整为以上条件
        /// </param>
        /// <returns></returns>
        public static List <List <byte> > CreateWriteRegisterCommands(DataAnalyzeMode dataAnalyzeMode, List <DataPoint> dataPoints)
        {
            List <List <byte> > writeRegisterCommands = new List <List <byte> >();

            if (null == dataPoints || dataPoints.Count < 1)
            {
                return(writeRegisterCommands);
            }

            List <List <DataPoint> > dataPointsGroupedForWrite = DataPointGrouper.GroupingDataPointsForWriteRegister(dataPoints);

            foreach (var dataPointsGroup in dataPointsGroupedForWrite)
            {
                List <List <byte> > requestCommadBytes =
                    RTURequestCommandByteStreamCreator.CreateRequestCommandByteStreamForWriteRegisterBy(dataAnalyzeMode, dataPointsGroup);

                foreach (var requestCommadByte in requestCommadBytes)
                {
                    writeRegisterCommands.Add(requestCommadByte);
                }
            }

            return(writeRegisterCommands);
        }