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); }
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); } } } }