Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
VectoJobForm.vb 43.9 KiB
Newer Older
		ecoRoll = RdEcoRoll.Checked
		overspeed = RdOverspeed.Checked
		TbOverspeed.Enabled = overspeed Or ecoRoll
		Label13.Enabled = overspeed Or ecoRoll
		Label14.Enabled = overspeed Or ecoRoll
		TbUnderSpeed.Enabled = ecoRoll
		Label22.Enabled = ecoRoll
		Label20.Enabled = ecoRoll
		TbVmin.Enabled = overspeed Or ecoRoll
		Label23.Enabled = overspeed Or ecoRoll
		Label21.Enabled = overspeed Or ecoRoll

		TbHVCclass.Text = ""
		TbVehCat.Text = ""
		TbMass.Text = ""
		TbAxleConf.Text = ""
		TbEngTxt.Text = ""
		TbGbxTxt.Text = ""
		PicVehicle.Image = Nothing
		PicBox.Image = Nothing

		Dim chart As Chart = Nothing
		UpdateEnginePic(chart)
Markus QUARITSCH's avatar
Markus QUARITSCH committed
		Dim chartArea As ChartArea = New ChartArea()
		chartArea.Name = "main"
Markus QUARITSCH's avatar
Markus QUARITSCH committed
		chartArea.AxisX.Title = "engine speed [1/min]"
		chartArea.AxisX.TitleFont = New Font("Helvetica", 10)
		chartArea.AxisX.LabelStyle.Font = New Font("Helvetica", 8)
		chartArea.AxisX.LabelAutoFitStyle = LabelAutoFitStyles.None
		chartArea.AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dot
Markus QUARITSCH's avatar
Markus QUARITSCH committed
		chartArea.AxisY.Title = "engine torque [Nm]"
		chartArea.AxisY.TitleFont = New Font("Helvetica", 10)
		chartArea.AxisY.LabelStyle.Font = New Font("Helvetica", 8)
		chartArea.AxisY.LabelAutoFitStyle = LabelAutoFitStyles.None
		chartArea.AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dot
Markus QUARITSCH's avatar
Markus QUARITSCH committed
		chartArea.AxisX.Minimum = 300
		chartArea.BorderDashStyle = ChartDashStyle.Solid
		chartArea.BorderWidth = 1
Markus QUARITSCH's avatar
Markus QUARITSCH committed
		chartArea.BackColor = Color.GhostWhite
Markus QUARITSCH's avatar
Markus QUARITSCH committed
		chart.ChartAreas.Add(chartArea)
Markus QUARITSCH's avatar
Markus QUARITSCH committed
		Dim img As Bitmap = New Bitmap(chart.Width, chart.Height, PixelFormat.Format32bppArgb)
		chart.DrawToBitmap(img, New Rectangle(0, 0, PicBox.Width, PicBox.Height))
	Private Sub UpdateGearboxPic(ByRef chartArea As Chart)
		Dim s As Series
		Dim i As Integer
		Dim gearbox As IGearboxEngineeringInputData = Nothing
		Dim gearboxFile As String =
				If(Not String.IsNullOrWhiteSpace(VectoFile), Path.Combine(Path.GetDirectoryName(VectoFile), TbGBX.Text), TbGBX.Text)
		If File.Exists(gearboxFile) Then
			Try
				Dim inputData As IEngineeringInputDataProvider = TryCast(JSONInputDataFactory.ReadComponentData(gearboxFile), 
																		IEngineeringInputDataProvider)
				gearbox = inputData.GearboxInputData
			Catch
			End Try
		End If
Markus QUARITSCH's avatar
Markus QUARITSCH committed
		TbGbxTxt.Text = String.Format("{0}-Speed {1} {2}", gearbox.Gears.Count, gearbox.Type.ShortName(), gearbox.ModelName)
		If Cfg.DeclMode Then
			For i = 1 To gearbox.Gears.Count
				'If FLD0.Init(ENG0.Nidle) Then '' use engine from below...

				'Dim engine As CombustionEngineData = ConvertToEngineData(FLD0, F_VECTO.n_idle)
				'Dim shiftLines As ShiftPolygon = DeclarationData.Gearbox.ComputeShiftPolygon(Gear - 1,
				'																			engine.FullLoadCurve, gears,
				'																			engine,
				'																			Double.Parse(LvGears.Items(0).SubItems(F_GBX.GearboxTbl.Ratio).Text,
				'																						CultureInfo.InvariantCulture),
				'																			(.rdyn / 1000.0).SI(Of Meter))

				's = New Series
				's.Points.DataBindXY(shiftLines.Upshift.Select(Function(pt) pt.AngularSpeed.Value() / Constants.RPMToRad).ToList(),
				'					shiftLines.Upshift.Select(Function(pt) pt.Torque.Value()).ToList())
				's.ChartType = SeriesChartType.FastLine
				's.BorderWidth = 2
				's.Color = Color.DarkRed
				's.Name = "Upshift curve (" & i & ")"
				'MyChart.Series.Add(s)

				's = New Series
				's.Points.DataBindXY(
				'	shiftLines.Downshift.Select(Function(pt) pt.AngularSpeed.Value() / Constants.RPMToRad).ToList(),
				'	shiftLines.Downshift.Select(Function(pt) pt.Torque.Value()).ToList())
				's.ChartType = SeriesChartType.FastLine
				's.BorderWidth = 2
				's.Color = Color.DarkRed
				's.Name = "Downshift curve (" & i & ")"
				'MyChart.Series.Add(s)
				'End If

				'	OkCount += 1

				'	pmax = FLD0.Pfull(FLD0.EngineRatedSpeed)

				'End If
			Next
		Else
			For Each gear As ITransmissionInputData In gearbox.Gears
				If gear.ShiftPolygon Is Nothing OrElse gear.ShiftPolygon.Rows.Count = 0 Then Continue For
				Dim shiftPolygon As ShiftPolygon = ShiftPolygonReader.Create(gear.ShiftPolygon)
				s = New Series
				s.Points.DataBindXY(shiftPolygon.Upshift.Select(Function(x) x.AngularSpeed.AsRPM).ToArray(),
									shiftPolygon.Upshift.Select(Function(x) x.Torque.Value()).ToArray())
				s.ChartType = SeriesChartType.FastLine
				s.BorderWidth = 2
				s.Color = Color.DarkRed
				s.Name = "Upshift curve"
				' MyChart.Series.Add(s) 'MQ 2016-06-20: do not plot shift lines in engine dialog

				s = New Series
				s.Points.DataBindXY(shiftPolygon.Downshift.Select(Function(x) x.AngularSpeed.AsRPM).ToArray(),
									shiftPolygon.Downshift.Select(Function(x) x.Torque.Value()).ToArray())
				s.ChartType = SeriesChartType.FastLine
				s.BorderWidth = 2
				s.Color = Color.DarkRed
				s.Name = "Downshift curve"
				'MyChart.Series.Add(s) 'MQ 2016-06-20:do not plot shift lines in engine dialog
			Next
		End If
	End Sub
	Private Sub UpdateEnginePic(ByRef chart As Chart)
		Dim s As Series
		Dim pmax As Double
		Dim engine As IEngineEngineeringInputData = Nothing
		Dim engineFile As String =
				If(Not String.IsNullOrWhiteSpace(VectoFile), Path.Combine(Path.GetDirectoryName(VectoFile), TbENG.Text), TbENG.Text)
		If File.Exists(engineFile) Then
			Try
				Dim inputData As IEngineeringInputDataProvider = TryCast(JSONInputDataFactory.ReadComponentData(engineFile), 
																		IEngineeringInputDataProvider)
				engine = inputData.EngineInputData
			Catch
				Return
			End Try
		End If
		'engine.FilePath = fFileRepl(TbENG.Text, GetPath(VECTOfile))
		'Create plot
		chart = New Chart
		chart.Width = PicBox.Width
		chart.Height = PicBox.Height
		'Dim FLD0 As EngineFullLoadCurve = New EngineFullLoadCurve
		Dim fullLoadCurve As FullLoadCurve = EngineFullLoadCurve.Create(engine.FullLoadCurve)
		s = New Series
		s.Points.DataBindXY(fullLoadCurve.FullLoadEntries.Select(Function(x) x.EngineSpeed.AsRPM).ToArray(),
							fullLoadCurve.FullLoadEntries.Select(Function(x) x.TorqueFullLoad.Value()).ToArray())
		s.ChartType = SeriesChartType.FastLine
		s.BorderWidth = 2
		s.Color = Color.DarkBlue
		s.Name = "Full load"
		chart.Series.Add(s)
		s = New Series
		s.Points.DataBindXY(fullLoadCurve.FullLoadEntries.Select(Function(x) x.EngineSpeed.AsRPM).ToArray(),
							fullLoadCurve.FullLoadEntries.Select(Function(x) x.TorqueDrag.Value()).ToArray())
		s.ChartType = SeriesChartType.FastLine
		s.BorderWidth = 2
		s.Color = Color.Blue
		s.Name = "Motoring"
		chart.Series.Add(s)
		pmax = fullLoadCurve.MaxPower.Value() / 1000 'FLD0.Pfull(FLD0.EngineRatedSpeed)
		TbEngTxt.Text = String.Format("{0} l {1} kw {2}", (engine.Displacement.Value() * 1000).ToString("0.0"),
									pmax.ToString("#"), engine.ModelName)
		Dim fuelConsumptionMap As FuelConsumptionMap = FuelConsumptionMapReader.Create(engine.FuelConsumptionMap)
		s = New Series
		s.Points.DataBindXY(fuelConsumptionMap.Entries.Select(Function(x) x.EngineSpeed.AsRPM).ToArray(),
							fuelConsumptionMap.Entries.Select(Function(x) x.Torque.Value()).ToArray())
		s.ChartType = SeriesChartType.Point
		s.MarkerSize = 3
		s.Color = Color.Red
		s.Name = "Map"
		chart.Series.Add(s)
	End Sub
	Private Sub UpdateVehiclePic()
		Dim HDVclass As String
		Dim vehicle As IVehicleEngineeringInputData = Nothing
		Dim vehicleFile As String =
				If(Not String.IsNullOrWhiteSpace(VectoFile), Path.Combine(Path.GetDirectoryName(VectoFile), TbVEH.Text), TbVEH.Text)
		If File.Exists(vehicleFile) Then
			Try
				Dim inputData As IEngineeringInputDataProvider = TryCast(JSONInputDataFactory.ReadComponentData(vehicleFile), 
																		IEngineeringInputDataProvider)
				vehicle = inputData.VehicleInputData
			Catch
			End Try
		End If
		Dim maxMass As Kilogram = vehicle.GrossVehicleMassRating					'CSng(fTextboxToNumString(TbMassMass.Text))
		Dim s0 As Segment = Nothing
		Try
			s0 = DeclarationData.Segments.Lookup(vehicle.VehicleCategory, vehicle.AxleConfiguration, maxMass, 0.SI(Of Kilogram),
												True)
		Catch
		End Try
		If s0 Is Nothing Then
			HDVclass = "-"
		Else
			HDVclass = s0.VehicleClass.GetClassNumber()
			If Cfg.DeclMode Then
				LvCycles.Items.Clear()
				Dim m0 As Mission
				For Each m0 In s0.Missions
					LvCycles.Items.Add(m0.MissionType.ToString())
		PicVehicle.Image = ConvPicPath(If(s0 Is Nothing, -1, HDVclass.ToInt()), False) _
		'Image.FromFile(cDeclaration.ConvPicPath(HDVclass, False))
Markus QUARITSCH's avatar
Markus QUARITSCH committed
		TbHVCclass.Text = String.Format("HDV Class {0}", HDVclass)
		TbVehCat.Text = vehicle.VehicleCategory.GetCategoryName()	'ConvVehCat(VEH0.VehCat, True)
		TbMass.Text = (vehicle.GrossVehicleMassRating.Value() / 1000) & " t"
		TbAxleConf.Text = vehicle.AxleConfiguration.GetName()	'ConvAxleConf(VEH0.AxleConf)
	Private _contextMenuFiles As String()

	Private Sub OpenFiles(ParamArray files() As String)
		If files.Length = 0 Then Exit Sub

		_contextMenuFiles = files
		OpenWithToolStripMenuItem.Text = "Open with " & Cfg.OpenCmdName
		CmOpenFile.Show(Windows.Forms.Cursor.Position)
	End Sub

	Private Sub OpenWithToolStripMenuItem_Click(sender As Object, e As EventArgs) _
		Handles OpenWithToolStripMenuItem.Click
		If Not FileOpenAlt(_contextMenuFiles(0)) Then MsgBox("Failed to open file!")
	End Sub

	Private Sub ShowInFolderToolStripMenuItem_Click(sender As Object, e As EventArgs) _
		Handles ShowInFolderToolStripMenuItem.Click
		If File.Exists(_contextMenuFiles(0)) Then
				Process.Start("explorer", "/select,""" & _contextMenuFiles(0) & "")
			Catch ex As Exception
				MsgBox("Failed to open file!")
			End Try
		Else
			MsgBox("File not found!")
		End If
	End Sub

#End Region


	'AA-TB
	Private Sub picAuxInfo_MouseEnter(sender As Object, e As EventArgs) Handles picAuxInfo.MouseEnter


		If cboAdvancedAuxiliaries.SelectedIndex = -1 Then Exit Sub

		'Get tooltip
		item = DirectCast(cboAdvancedAuxiliaries.SelectedItem, AdvancedAuxiliary)

		If item.AuxiliaryVersion = "CLASSIC" Then

			ToolTip1.ToolTipTitle = "Classic Vecto Auxiliaries"
			ToolTip1.SetToolTip(picAuxInfo, "Uses original basic auxiliaries calculation")

		Else

			ToolTip1.ToolTipTitle = "Advanced Auxiliary Information"
			ToolTip1.SetToolTip(picAuxInfo, item.AuxiliaryName & " : Version=" & item.AuxiliaryVersion)

		End If
	End Sub

	'AA-TB
	Private Sub btnBrowseAAUXFile_Click(sender As Object, e As EventArgs) Handles btnBrowseAAUXFile.Click

			MessageBox.Show(
				"Please complete and save a valid new .vecto file before adding/configuring advanced bus auxiliaries.")
			Return
		End If

		Dim aauxFileValidated As Boolean = False
		Dim fbAux As New FileBrowser("aaux", False, False)
		Dim message As String = String.Empty
		Dim absoluteAuxPath As String

		'If Classic is selected, then bail
		If cboAdvancedAuxiliaries.SelectedIndex = 0 Then Return

		'Get Absolute Path for AAUX FILE.
		absoluteAuxPath = ResolveAAUXFilePath(GetPath(VectoFile), txtAdvancedAuxiliaryFile.Text)

		'Set Extensions
		fbAux.Extensions = New String() {"AAUX"}

		Try

			assembly = DirectCast(cboAdvancedAuxiliaries.SelectedItem, AdvancedAuxiliary)

			Dim validAAUXFile As Boolean = ValidateAAUXFile(absoluteAuxPath, assembly.AssemblyName,
															assembly.AuxiliaryVersion, message)
			Dim fileExists As Boolean = File.Exists(absoluteAuxPath)

			If fileExists AndAlso validAAUXFile Then
				ConfigureAdvancedAuxiliaries(assembly.AssemblyName, assembly.AuxiliaryVersion,
			Else

				Dim needToFindOrCreateFile As Boolean = True

				While needToFindOrCreateFile

					'Find / Create  file and configure.
					If fbAux.CustomDialog(absoluteAuxPath, False, False, FileBrowserFileExtensionMode.ForceExt, False, String.Empty) _
						Then
						txtAdvancedAuxiliaryFile.Text = GetFilenameWithoutDirectory(fbAux.Files(0), GetPath(VectoFile))
						assembly = DirectCast(cboAdvancedAuxiliaries.SelectedItem, AdvancedAuxiliary)
							File.Exists(ResolveAAUXFilePath(GetPath(VectoFile), txtAdvancedAuxiliaryFile.Text)) OrElse
							MsgBox("Do you want to create a new .AAUX file?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
							needToFindOrCreateFile = False
							ConfigureAdvancedAuxiliaries(assembly.AssemblyName, assembly.AuxiliaryVersion,
						End If
					Else
						needToFindOrCreateFile = False
					End If

				End While

			End If

		Catch ex As Exception
			MessageBox.Show("There was an error configuring your Advanced Auxiliary File")
		End Try
	End Sub

	'AA-TB
	Private Sub cboAdvancedAuxiliaries_SelectedIndexChanged(sender As Object, e As EventArgs) _
		Handles cboAdvancedAuxiliaries.SelectedIndexChanged

		'Enable or otherwise the text box and browser button associated with Advanced Axuiliaries
		If cboAdvancedAuxiliaries.SelectedIndex = 0 Then

			btnBrowseAAUXFile.Enabled = False
			txtAdvancedAuxiliaryFile.Enabled = False

		Else

			btnBrowseAAUXFile.Enabled = True
			txtAdvancedAuxiliaryFile.Enabled = True

		End If
	End Sub


	'AA-TB
	Private Sub btnAAUXOpen_Click(sender As Object, e As EventArgs) Handles btnAAUXOpen.Click

		OpenFiles(FileRepl(txtAdvancedAuxiliaryFile.Text, GetPath(VectoFile)))

	Private Sub btnDfTargetSpeed_Click(sender As Object, e As EventArgs) Handles btnDfTargetSpeed.Click
		If DriverDecisionFactorTargetSpeedFileBrowser.OpenDialog(FileRepl(tbLacDfTargetSpeedFile.Text, GetPath(VectoFile))) _
			Then _
			tbLacDfTargetSpeedFile.Text = GetFilenameWithoutDirectory(DriverDecisionFactorTargetSpeedFileBrowser.Files(0),
	Private Sub btnDfVelocityDrop_Click_1(sender As Object, e As EventArgs) Handles btnDfVelocityDrop.Click
		If DriverDecisionFactorVelocityDropFileBrowser.OpenDialog(FileRepl(tbLacDfVelocityDropFile.Text, GetPath(VectoFile))) _
			Then _
			tbLacDfVelocityDropFile.Text = GetFilenameWithoutDirectory(DriverDecisionFactorVelocityDropFileBrowser.Files(0),
																		GetPath(VectoFile))
	End Sub
	Private Sub Label6_Click(sender As Object, e As EventArgs) Handles Label6.Click
	End Sub
End Class