Nuova lettura configurazione

This commit is contained in:
Nicola Pievani
2025-08-01 12:44:40 +02:00
parent f4e382d93a
commit 1b918c31ac
+71 -3
View File
@@ -23,6 +23,13 @@ Public Class FrmMain
DefVentosa
End Enum
Private Enum ReadCfgResult
OK
WARNING
ERR0
ERR1
End Enum
Private Const CFG_DEFAULT As String = "Default"
Private m_sDataRoot As String = ""
@@ -392,6 +399,48 @@ Public Class FrmMain
Next
End Sub
' Costruisco il percorso del file letto da configurazione
Private Sub IsCorrectFilePathReadFromCfg(DirToReadCfg As String, ByRef sStringPath As String, ByRef sMsg As String)
Dim bOk As ReadCfgResult = ReadCfgResult.OK
sStringPath = sStringPath.Trim
If Not sStringPath.StartsWith("\") And Not sStringPath.StartsWith(".\") Then
' Warning! il percorso potrebbe non essere relativo
If sStringPath.Contains("CameraMng") Then
' Errore! il percorso contiene un riferimento alla cartella
bOk = ReadCfgResult.ERR0
Else
bOk = ReadCfgResult.WARNING
sStringPath = DirToReadCfg & "\" & sStringPath
End If
Else
' OK! il percorso è potenzialmente correto
If sStringPath.Contains("\CameraMng") Then
' Errore! il percorso contiene un riferimento alla cartella
bOk = ReadCfgResult.ERR1
Else
' rimuovo il primo carattere se è il punto (".")
If sStringPath.StartsWith(".") Then sStringPath.Remove(0, 1)
' Ok! il percorso è accettato
bOk = ReadCfgResult.OK
sStringPath = DirToReadCfg & sStringPath
End If
End If
CreateMsgTextErr(bOk, sStringPath, sMsg)
End Sub
Private Sub CreateMsgTextErr(ReadCfg As ReadCfgResult, sStringPath As String, ByRef sMsg As String)
Select Case ReadCfg
Case ReadCfgResult.WARNING
sMsg &= String.Format(" · Il percorso relativo '{0}' deve iniziare con '.\'.", sStringPath) & vbCrLf
Case ReadCfgResult.ERR0
sMsg &= String.Format(" · Il percorso '{0}' contiene un riferimento alla cartella '.\CameraMng'.", sStringPath) & vbCrLf
Case ReadCfgResult.ERR1
sMsg &= String.Format(" · Il percorso '{0}' contiene un riferimento alla cartella '.\CameraMng', deve essere sostituito con {1}.", sStringPath, sStringPath.Replace("CameraMng", "")) & vbCrLf
End Select
End Sub
' procedo alla lettura del file *.cfg
Private Sub LeggiFileConfigurazione()
@@ -413,7 +462,9 @@ Public Class FrmMain
DirToReadCfg = DirToReadCfg & MainModule.IndexProc
End If
Console.WriteLine("LETTURA CONFIGURAZIONE: " & MainModule.IndexProc & " -- " & DirToReadCfg)
Dim sMsgErr As String = String.Empty
' Console.WriteLine("LETTURA CONFIGURAZIONE: " & MainModule.IndexProc & " -- " & DirToReadCfg)
Debug.Assert(DirToReadCfg <> "")
NomeFileCfg = DirToReadCfg & "\CameraMng.cfg"
@@ -452,12 +503,15 @@ Public Class FrmMain
TmpString = reader.ReadLine()
If TmpString.StartsWith("FileCali=") Then
FileLensCalib = Mid(TmpString, 10)
IsCorrectFilePathReadFromCfg(DirToReadCfg, FileLensCalib, sMsgErr)
ElseIf TmpString.StartsWith("LensCalibType=") Then
LensCalibType = Convert.ToInt16(Mid(TmpString, 15))
ElseIf TmpString.StartsWith("FileCaliProsp=") Then
FileCalibProsp = Mid(TmpString, 15)
IsCorrectFilePathReadFromCfg(DirToReadCfg, FileCalibProsp, sMsgErr)
ElseIf TmpString.StartsWith("FileCaliRes=") Then
FileCalibRes = Mid(TmpString, 13)
IsCorrectFilePathReadFromCfg(DirToReadCfg, FileCalibRes, sMsgErr)
ElseIf TmpString.StartsWith("Extended=") Then
bExtended = CInt(TmpString.Substring(9)) > 0 'lascio vedere tutti i bottoni
BtnCfg.Visible = bExtended
@@ -467,8 +521,10 @@ Public Class FrmMain
BtnLoad.Visible = bExtended
ElseIf TmpString.StartsWith("SaveDir=") Then
SaveDir = Mid(TmpString, 9)
IsCorrectFilePathReadFromCfg(DirToReadCfg, SaveDir, sMsgErr)
ElseIf TmpString.StartsWith("TmpDir=") Then
DirTmp = Mid(TmpString, 8)
IsCorrectFilePathReadFromCfg(DirToReadCfg, DirTmp, sMsgErr)
ElseIf TmpString.StartsWith("MaxPxWidth=") Then
TmpInt = Convert.ToInt16(Mid(TmpString, 12))
If TmpInt > 0 Then ImageMng.MaxPxWidthOutImage = TmpInt
@@ -476,6 +532,7 @@ Public Class FrmMain
_visione.ReduceImage = CInt(TmpString.Substring(11)) 'pyr_down nel riconoscimento bordi
ElseIf TmpString.StartsWith("LogDir=") Then
SaveLogDir = Mid(TmpString, 8)
IsCorrectFilePathReadFromCfg(DirToReadCfg, SaveLogDir, sMsgErr)
ElseIf TmpString.StartsWith("CameraID=") Then
CameraID = Mid(TmpString, 10)
CfgForm.LbCfgCameraID.Text = CameraID
@@ -517,12 +574,16 @@ Public Class FrmMain
VacuumCheckEnable = TmpInt > 0
ElseIf TmpString.StartsWith("VacFileStart=") Then
VacFileStart = Mid(TmpString, Len("StartVacFile=") + 1)
IsCorrectFilePathReadFromCfg(DirToReadCfg, VacFileStart, sMsgErr)
ElseIf TmpString.StartsWith("VacFilePos=") Then
VacFilePos = Mid(TmpString, Len("VacFilePos=") + 1)
IsCorrectFilePathReadFromCfg(DirToReadCfg, VacFilePos, sMsgErr)
ElseIf TmpString.StartsWith("VacFileEnd=") Then
VacFileEnd = Mid(TmpString, Len("VacFileEnd=") + 1)
IsCorrectFilePathReadFromCfg(DirToReadCfg, VacFileEnd, sMsgErr)
ElseIf TmpString.StartsWith("VacDirModels=") Then
VacDirModels = Mid(TmpString, Len("VacDirModels=") + 1)
IsCorrectFilePathReadFromCfg(DirToReadCfg, VacDirModels, sMsgErr)
ElseIf TmpString.StartsWith("VacMinScore=") Then
VacMinScore = Convert.ToDouble(Mid(TmpString, Len("VacMinScore=") + 1), nfi)
ElseIf TmpString.StartsWith("VacTolmm=") Then
@@ -531,6 +592,13 @@ Public Class FrmMain
End While
reader.Close()
reader.Dispose()
If Not String.IsNullOrEmpty(sMsgErr) And Not ModalitaNascosta Then
MessageBox.Show(sMsgErr, NomeFileCfg, MessageBoxButtons.OK, MessageBoxIcon.Hand)
Else
Console.WriteLine("ERRORE LETTURA CONFIGURAZIONE: " & MainModule.IndexProc & " -- " & sMsgErr)
End If
Catch ex As Exception
MsgBox("Error in Cfg File " & TmpString)
End Try
@@ -856,7 +924,7 @@ Public Class FrmMain
DirToReadCfg = DirToReadCfg & ComboBoxCameraCfg.SelectedItem.ToString()
End If
Else
DirToReadCfg = DirToReadCfg & MainModule.IndexProc.ToString()
DirToReadCfg = DirToReadCfg & MainModule.IndexProc
End If
NomeFileCfg = DirToReadCfg & "\CameraMng.cfg"
NomeFileTempCfg = DirToReadCfg & "\CameraMngTmp.cfg"
@@ -940,7 +1008,7 @@ Public Class FrmMain
DirToReadCfg = DirToReadCfg & ComboBoxCameraCfg.SelectedItem.ToString()
End If
Else
DirToReadCfg = DirToReadCfg & MainModule.IndexProc.ToString()
DirToReadCfg = DirToReadCfg & MainModule.IndexProc
End If
NomeFileCfg = DirToReadCfg & "\CameraMng.cfg"
NomeFileTempCfg = DirToReadCfg & "\CameraMngTmp.cfg"