Example #1
0
        private static List <List <byte> > CreateRequestCommandByteStreamsForFunNum16 <T>(ICustomerRequestData customerRequestData)
        {
            List <List <byte> > requesCommandByteStreams = new List <List <byte> >();

            FunNum16CustomerRequestData <T> funNum16CustomerRequestData = (FunNum16CustomerRequestData <T>)customerRequestData;
            List <FunNum16RequestDataBase>  funNum16RequestDataBases    = funNum16CustomerRequestData.CovertToFunNum16RequestDataBases();

            foreach (FunNum16RequestDataBase item in funNum16RequestDataBases)
            {
                FunNum16RequestDataRTU funNum16RequestDataRTU = new FunNum16RequestDataRTU();
                funNum16RequestDataRTU.FunNum16RequestDataBase = item;

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

            return(requesCommandByteStreams);
        }
        public void CreateRequestCommandByteStreamForFunNum16ForDouble()
        {
            FunNum16CustomerRequestData <double> customerRequestData = new FunNum16CustomerRequestData <double>();

            customerRequestData.DeviceAddress           = 1;
            customerRequestData.FunctionNum             = FunctionNumType.FunctionNum16;
            customerRequestData.StartingRegisterAddress = 0;
            customerRequestData.PresetData = new List <double>()
            {
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
                13, 14, 15, 16, 17, 18, 19, 20, 21
            };

            List <List <byte> > rtuRequesCmdByteStreams = RTURequesCommandCreator.CreateRequestCommandByteStream <double>(customerRequestData);

            int countSplitOfcustomerRequestData = 1;

            Assert.True(countSplitOfcustomerRequestData == rtuRequesCmdByteStreams.Count);
        }
Example #3
0
        private static List <List <byte> > CreateRequestCommandByteStreamForFunNum16(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:
            {
                FunNum16CustomerRequestData <short> customerRequestData =
                    new FunNum16CustomerRequestData <short>();
                customerRequestData.DataAnalyzeMode = dataAnalyzeMode;

                customerRequestData.DeviceAddress           = (byte)firstDataPoint.DeviceAddress;
                customerRequestData.FunctionNum             = FunctionNumType.FunctionNum16;
                customerRequestData.StartingRegisterAddress = (ushort)theFirstRegisterAddress;

                foreach (var dataPoint in dataPoints)
                {
                    customerRequestData.PresetData.Add((short)dataPoint.ValueToSet);
                }

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

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

                customerRequestData.DeviceAddress           = (byte)firstDataPoint.DeviceAddress;
                customerRequestData.FunctionNum             = FunctionNumType.FunctionNum16;
                customerRequestData.StartingRegisterAddress = (ushort)theFirstRegisterAddress;

                foreach (var dataPoint in dataPoints)
                {
                    customerRequestData.PresetData.Add((ushort)dataPoint.ValueToSet);
                }

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

            case DataPointDataType.S32:
            {
                FunNum16CustomerRequestData <int> customerRequestData =
                    new FunNum16CustomerRequestData <int>();
                customerRequestData.DataAnalyzeMode = dataAnalyzeMode;

                customerRequestData.DeviceAddress           = (byte)firstDataPoint.DeviceAddress;
                customerRequestData.FunctionNum             = FunctionNumType.FunctionNum16;
                customerRequestData.StartingRegisterAddress = (ushort)theFirstRegisterAddress;

                foreach (var dataPoint in dataPoints)
                {
                    customerRequestData.PresetData.Add((int)dataPoint.ValueToSet);
                }

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

            case DataPointDataType.U32:
            {
                FunNum16CustomerRequestData <uint> customerRequestData =
                    new FunNum16CustomerRequestData <uint>();
                customerRequestData.DataAnalyzeMode = dataAnalyzeMode;

                customerRequestData.DeviceAddress           = (byte)firstDataPoint.DeviceAddress;
                customerRequestData.FunctionNum             = FunctionNumType.FunctionNum16;
                customerRequestData.StartingRegisterAddress = (ushort)theFirstRegisterAddress;

                foreach (var dataPoint in dataPoints)
                {
                    customerRequestData.PresetData.Add((uint)dataPoint.ValueToSet);
                }

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

            case DataPointDataType.S64:
            {
                FunNum16CustomerRequestData <long> customerRequestData =
                    new FunNum16CustomerRequestData <long>();
                customerRequestData.DataAnalyzeMode = dataAnalyzeMode;

                customerRequestData.DeviceAddress           = (byte)firstDataPoint.DeviceAddress;
                customerRequestData.FunctionNum             = FunctionNumType.FunctionNum16;
                customerRequestData.StartingRegisterAddress = (ushort)theFirstRegisterAddress;

                foreach (var dataPoint in dataPoints)
                {
                    customerRequestData.PresetData.Add((long)dataPoint.ValueToSet);
                }

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

            case DataPointDataType.U64:
            {
                FunNum16CustomerRequestData <ulong> customerRequestData =
                    new FunNum16CustomerRequestData <ulong>();
                customerRequestData.DataAnalyzeMode = dataAnalyzeMode;

                customerRequestData.DeviceAddress           = (byte)firstDataPoint.DeviceAddress;
                customerRequestData.FunctionNum             = FunctionNumType.FunctionNum16;
                customerRequestData.StartingRegisterAddress = (ushort)theFirstRegisterAddress;

                foreach (var dataPoint in dataPoints)
                {
                    customerRequestData.PresetData.Add((ulong)dataPoint.ValueToSet);
                }

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

            case DataPointDataType.F32:
            {
                FunNum16CustomerRequestData <float> customerRequestData =
                    new FunNum16CustomerRequestData <float>();
                customerRequestData.DataAnalyzeMode = dataAnalyzeMode;

                customerRequestData.DeviceAddress           = (byte)firstDataPoint.DeviceAddress;
                customerRequestData.FunctionNum             = FunctionNumType.FunctionNum16;
                customerRequestData.StartingRegisterAddress = (ushort)theFirstRegisterAddress;

                foreach (var dataPoint in dataPoints)
                {
                    customerRequestData.PresetData.Add((float)dataPoint.ValueToSet);
                }

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

            case DataPointDataType.D64:
            {
                FunNum16CustomerRequestData <double> customerRequestData =
                    new FunNum16CustomerRequestData <double>();
                customerRequestData.DataAnalyzeMode = dataAnalyzeMode;

                customerRequestData.DeviceAddress           = (byte)firstDataPoint.DeviceAddress;
                customerRequestData.FunctionNum             = FunctionNumType.FunctionNum16;
                customerRequestData.StartingRegisterAddress = (ushort)theFirstRegisterAddress;

                foreach (var dataPoint in dataPoints)
                {
                    customerRequestData.PresetData.Add((double)dataPoint.ValueToSet);
                }

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

            case DataPointDataType.Bit:
                break;

            default:
                break;
            }


            return(requestCommandByteStreams);
        }
        private void btSendRequestion_Click(object sender, RoutedEventArgs e)
        {
            if (!CheckSerialPortCanUse())
            {
                MessageBox.Show("串口还没打开,请先打开串口");
                return;
            }

            if (null != this.currentFunctionNumView)
            {
                //IRequestInfo requestInfo = this.currentFunctionNumView.GetRequestInfo();
                // if (null != requestInfo)
                {
                    if (null != this.modbusRTU && null != this.modbusRTU.SerialPort)
                    {
                        //this.modbusRTU.OperateFunctionNum(requestInfo);

                        //RequestInfo requestInfo2 = (RequestInfo)requestInfo;

                        ///TODO:可删,测试01功能码
                        //FunNum01CustomerRequestData customerRequestData = new FunNum01CustomerRequestData();
                        //customerRequestData.DeviceAddress = requestInfo2.DeviceAddress;
                        //customerRequestData.FunctionNum = FunctionNumType.FunctionNum01;
                        //customerRequestData.StartingRegister = requestInfo2.TheByte3and4;
                        //customerRequestData.NumOfRegisterToRead = requestInfo2.TheByte5and6;

                        ///TODO:可删,测试03功能码
                        //FunNum03CustomerRequestData customerRequestData = new FunNum03CustomerRequestData();
                        //customerRequestData.DeviceAddress = requestInfo2.DeviceAddress;
                        //customerRequestData.FunctionNum = requestInfo2.FunctionNum;
                        //customerRequestData.StartingRegister = requestInfo2.TheByte3and4;
                        //customerRequestData.NumOfRegisterToRead = requestInfo2.TheByte5and6;

                        ///TODO:可删,测试05功能码
                        //FunNum05CustomerRequestData customerRequestData = new FunNum05CustomerRequestData();
                        //customerRequestData.DeviceAddress = requestInfo2.DeviceAddress;
                        //customerRequestData.FunctionNum = FunctionNumType.FunctionNum05;
                        //customerRequestData.CoilAddress = requestInfo2.TheByte3and4;
                        //customerRequestData.ON = true;

                        ///TODO:可删,测试06功能码
                        //FunNum06CustomerRequestData<ushort> customerRequestData = new FunNum06CustomerRequestData<ushort>();
                        //customerRequestData.DeviceAddress = requestInfo2.DeviceAddress;
                        //customerRequestData.FunctionNum = FunctionNumType.FunctionNum06;
                        //customerRequestData.RegisterAddress = requestInfo2.TheByte3and4;
                        //customerRequestData.PresetData = 32768;

                        ///TODO:可删,测试16功能码
                        FunNum16CustomerRequestData <int> customerRequestData = new FunNum16CustomerRequestData <int>();
                        //customerRequestData.DeviceAddress = requestInfo2.DeviceAddress;
                        //customerRequestData.FunctionNum = FunctionNumType.FunctionNum16;
                        //customerRequestData.StartingRegisterAddress = requestInfo2.TheByte3and4;
                        //customerRequestData.PresetData = new List<int>()
                        //{
                        //    0, 1, 2, 3, 4 , 5 , 6 , 7, 8, 9 , 10 , 11,
                        //    12, 13, 14 , 15 , 16 , 17, 18 , 19 , 20, 21, 22

                        //};

                        this.modbusRTU.OperateFunctionNum <int>(customerRequestData);
                    }
                }
            }
        }