public void CreateRequestCommandByteStreamForFunNum06()
        {
            FunNum06CustomerRequestData <int> customerRequestData = new FunNum06CustomerRequestData <int>();

            customerRequestData.DeviceAddress   = 1;
            customerRequestData.FunctionNum     = FunctionNumType.FunctionNum06;
            customerRequestData.RegisterAddress = 1;
            customerRequestData.PresetData      = 65535 + 1;

            List <List <byte> > rtuRequesCmdByteStreams = RTURequesCommandCreator.CreateRequestCommandByteStream <int>(customerRequestData);
            int countSplitOfcustomerRequestData         = 2;

            Assert.True(countSplitOfcustomerRequestData == rtuRequesCmdByteStreams.Count);
        }
Esempio n. 2
0
        private static List <List <byte> > CreateRequestCommandByteStreamsForFunNum06 <T>(ICustomerRequestData customerRequestData)
        {
            List <List <byte> > requesCommandByteStreams = new List <List <byte> >();

            FunNum06CustomerRequestData <T> funNum06CustomerRequestData = (FunNum06CustomerRequestData <T>)customerRequestData;
            List <FunNum06RequestDataBase>  funNum06RequestDataBases    = funNum06CustomerRequestData.CovertToFunNum06RequestDataBases();

            foreach (FunNum06RequestDataBase item in funNum06RequestDataBases)
            {
                FunNum06RequestDataRTU funNum06RequestDataRTU = new FunNum06RequestDataRTU();
                funNum06RequestDataRTU.FunNum06RequestDataBase = item;

                requesCommandByteStreams.Add(funNum06RequestDataRTU.ToByteList());
            }

            return(requesCommandByteStreams);
        }
Esempio n. 3
0
        /// <summary>
        /// 因为:功能码06是设置单个寄存器(占两字节,所以T的类型只能为short ushort)的值
        /// </summary>
        /// <param name="dataPoints"></param>
        /// <returns></returns>
        private static List <List <byte> > CreateRequestCommandByteStreamForFunNum06(DataAnalyzeMode dataAnalyzeMode, List <DataPoint> dataPoints)
        {
            List <List <byte> > requestCommandByteStreams = new List <List <byte> >();

            DataPoint firstDataPoint = dataPoints.First();

            int theFirstRegisterAddress = dataPoints.First().StartRegisterAddress;

            switch (firstDataPoint.DataPointDataType)
            {
            case DataPointDataType.S16:
            {
                FunNum06CustomerRequestData <short> customerRequestData =
                    new FunNum06CustomerRequestData <short>();
                customerRequestData.DataAnalyzeMode = dataAnalyzeMode;

                customerRequestData.DeviceAddress   = (byte)firstDataPoint.DeviceAddress;
                customerRequestData.FunctionNum     = FunctionNumType.FunctionNum06;
                customerRequestData.RegisterAddress = (ushort)theFirstRegisterAddress;
                customerRequestData.PresetData      = (short)firstDataPoint.ValueToSet;

                requestCommandByteStreams =
                    TCPRequesCommandCreator.CreateRequestCommandByteStream(customerRequestData);
                break;
            }

            case DataPointDataType.U16:
            {
                FunNum06CustomerRequestData <ushort> customerRequestData =
                    new FunNum06CustomerRequestData <ushort>();
                customerRequestData.DataAnalyzeMode = dataAnalyzeMode;


                customerRequestData.DeviceAddress   = (byte)firstDataPoint.DeviceAddress;
                customerRequestData.FunctionNum     = FunctionNumType.FunctionNum06;
                customerRequestData.RegisterAddress = (ushort)theFirstRegisterAddress;
                customerRequestData.PresetData      = (ushort)firstDataPoint.ValueToSet;

                requestCommandByteStreams =
                    TCPRequesCommandCreator.CreateRequestCommandByteStream(customerRequestData);
                break;
            }

            case DataPointDataType.S32:
            case DataPointDataType.U32:
            case DataPointDataType.S64:
            case DataPointDataType.U64:
            case DataPointDataType.F32:
            case DataPointDataType.D64:
                //因为:功能码06是设置单个寄存器(占两字节,所以T的类型只能为short ushort)的值
                //其他T类型只能由功能码16(设置多个寄存器的值)去处理
                requestCommandByteStreams = CreateRequestCommandByteStreamForFunNum16(dataAnalyzeMode, dataPoints);
                break;

            case DataPointDataType.Bit:
                break;

            default:
                break;
            }

            return(requestCommandByteStreams);
        }