private FunNum15RequestDataBase CovertSingleCustomerRequestDataToSingleRequestDataBase(FunNum15CustomerRequestData customerRequestData)
        {
            FunNum15RequestDataBase requestDataBase = new FunNum15RequestDataBase();

            requestDataBase.DeviceAddress           = customerRequestData.DeviceAddress;
            requestDataBase.FunctionNum             = Convert.ToByte(Convert.ToInt32(customerRequestData.FunctionNum));
            requestDataBase.StartingCoilAddressHigh = (byte)(customerRequestData.StartingCoilAddress / 256);
            requestDataBase.StartingCoilAddressLow  = (byte)(customerRequestData.StartingCoilAddress % 256);
            requestDataBase.NumOfCoilToForceHigh    = (byte)(customerRequestData.NumOfCoilToForce / 256);
            requestDataBase.NumOfCoilToForceLow     = (byte)(customerRequestData.NumOfCoilToForce % 256);

            List <byte> forceDataTemp                 = new List <byte>();
            int         bitCountInOneByte             = 8;
            int         byteCountInOneCustomerRequest = (int)Math.Ceiling((double)customerRequestData.ForceData.Count / (double)bitCountInOneByte);
            int         retainByteCount               = customerRequestData.ForceData.Count % bitCountInOneByte;

            //不满8位(一个字节的位数)用false(即:0)补齐
            //保证customerRequestData.ForceData.Count是8的整数倍
            for (int i = 0; i < retainByteCount; i++)
            {
                bool shortfall = false;
                customerRequestData.ForceData.Add(shortfall);
            }

            for (int i = 0; i < byteCountInOneCustomerRequest; i++)
            {
                byte requestByte = 0;
                int  k           = bitCountInOneByte * i;

                byte byte1 = customerRequestData.ForceData[k + 0] ? (byte)1 : (byte)0;   //一个字节中的最低位
                byte byte2 = customerRequestData.ForceData[k + 1] ? (byte)1 : (byte)0;
                byte byte3 = customerRequestData.ForceData[k + 2] ? (byte)1 : (byte)0;
                byte byte4 = customerRequestData.ForceData[k + 3] ? (byte)1 : (byte)0;
                byte byte5 = customerRequestData.ForceData[k + 4] ? (byte)1 : (byte)0;
                byte byte6 = customerRequestData.ForceData[k + 5] ? (byte)1 : (byte)0;
                byte byte7 = customerRequestData.ForceData[k + 6] ? (byte)1 : (byte)0;
                byte byte8 = customerRequestData.ForceData[k + 7] ? (byte)1 : (byte)0;   //一个字节中的最高位

                requestByte = (byte)(requestByte | (byte1 << 0));
                requestByte = (byte)(requestByte | (byte2 << 1));
                requestByte = (byte)(requestByte | (byte3 << 2));
                requestByte = (byte)(requestByte | (byte4 << 3));
                requestByte = (byte)(requestByte | (byte5 << 4));
                requestByte = (byte)(requestByte | (byte6 << 5));
                requestByte = (byte)(requestByte | (byte7 << 6));
                requestByte = (byte)(requestByte | (byte8 << 7));

                forceDataTemp.Add(requestByte);
            }

            requestDataBase.ForceData = forceDataTemp;

            return(requestDataBase);
        }
        private List <FunNum15RequestDataBase> CovertAllCustomerRequestDataToRequestDataBase(List <FunNum15CustomerRequestData> customerRequestDatas)
        {
            List <FunNum15RequestDataBase> requestDataBases = new List <FunNum15RequestDataBase>();

            foreach (FunNum15CustomerRequestData item in customerRequestDatas)
            {
                FunNum15RequestDataBase requestDataBase = CovertSingleCustomerRequestDataToSingleRequestDataBase(item);
                requestDataBases.Add(requestDataBase);
            }

            return(requestDataBases);
        }