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 DefVentosa
End Enum End Enum
Private Enum ReadCfgResult
OK
WARNING
ERR0
ERR1
End Enum
Private Const CFG_DEFAULT As String = "Default" Private Const CFG_DEFAULT As String = "Default"
Private m_sDataRoot As String = "" Private m_sDataRoot As String = ""
@@ -392,6 +399,48 @@ Public Class FrmMain
Next Next
End Sub 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 ' procedo alla lettura del file *.cfg
Private Sub LeggiFileConfigurazione() Private Sub LeggiFileConfigurazione()
@@ -413,7 +462,9 @@ Public Class FrmMain
DirToReadCfg = DirToReadCfg & MainModule.IndexProc DirToReadCfg = DirToReadCfg & MainModule.IndexProc
End If 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 <> "") Debug.Assert(DirToReadCfg <> "")
NomeFileCfg = DirToReadCfg & "\CameraMng.cfg" NomeFileCfg = DirToReadCfg & "\CameraMng.cfg"
@@ -452,12 +503,15 @@ Public Class FrmMain
TmpString = reader.ReadLine() TmpString = reader.ReadLine()
If TmpString.StartsWith("FileCali=") Then If TmpString.StartsWith("FileCali=") Then
FileLensCalib = Mid(TmpString, 10) FileLensCalib = Mid(TmpString, 10)
IsCorrectFilePathReadFromCfg(DirToReadCfg, FileLensCalib, sMsgErr)
ElseIf TmpString.StartsWith("LensCalibType=") Then ElseIf TmpString.StartsWith("LensCalibType=") Then
LensCalibType = Convert.ToInt16(Mid(TmpString, 15)) LensCalibType = Convert.ToInt16(Mid(TmpString, 15))
ElseIf TmpString.StartsWith("FileCaliProsp=") Then ElseIf TmpString.StartsWith("FileCaliProsp=") Then
FileCalibProsp = Mid(TmpString, 15) FileCalibProsp = Mid(TmpString, 15)
IsCorrectFilePathReadFromCfg(DirToReadCfg, FileCalibProsp, sMsgErr)
ElseIf TmpString.StartsWith("FileCaliRes=") Then ElseIf TmpString.StartsWith("FileCaliRes=") Then
FileCalibRes = Mid(TmpString, 13) FileCalibRes = Mid(TmpString, 13)
IsCorrectFilePathReadFromCfg(DirToReadCfg, FileCalibRes, sMsgErr)
ElseIf TmpString.StartsWith("Extended=") Then ElseIf TmpString.StartsWith("Extended=") Then
bExtended = CInt(TmpString.Substring(9)) > 0 'lascio vedere tutti i bottoni bExtended = CInt(TmpString.Substring(9)) > 0 'lascio vedere tutti i bottoni
BtnCfg.Visible = bExtended BtnCfg.Visible = bExtended
@@ -467,8 +521,10 @@ Public Class FrmMain
BtnLoad.Visible = bExtended BtnLoad.Visible = bExtended
ElseIf TmpString.StartsWith("SaveDir=") Then ElseIf TmpString.StartsWith("SaveDir=") Then
SaveDir = Mid(TmpString, 9) SaveDir = Mid(TmpString, 9)
IsCorrectFilePathReadFromCfg(DirToReadCfg, SaveDir, sMsgErr)
ElseIf TmpString.StartsWith("TmpDir=") Then ElseIf TmpString.StartsWith("TmpDir=") Then
DirTmp = Mid(TmpString, 8) DirTmp = Mid(TmpString, 8)
IsCorrectFilePathReadFromCfg(DirToReadCfg, DirTmp, sMsgErr)
ElseIf TmpString.StartsWith("MaxPxWidth=") Then ElseIf TmpString.StartsWith("MaxPxWidth=") Then
TmpInt = Convert.ToInt16(Mid(TmpString, 12)) TmpInt = Convert.ToInt16(Mid(TmpString, 12))
If TmpInt > 0 Then ImageMng.MaxPxWidthOutImage = TmpInt 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 _visione.ReduceImage = CInt(TmpString.Substring(11)) 'pyr_down nel riconoscimento bordi
ElseIf TmpString.StartsWith("LogDir=") Then ElseIf TmpString.StartsWith("LogDir=") Then
SaveLogDir = Mid(TmpString, 8) SaveLogDir = Mid(TmpString, 8)
IsCorrectFilePathReadFromCfg(DirToReadCfg, SaveLogDir, sMsgErr)
ElseIf TmpString.StartsWith("CameraID=") Then ElseIf TmpString.StartsWith("CameraID=") Then
CameraID = Mid(TmpString, 10) CameraID = Mid(TmpString, 10)
CfgForm.LbCfgCameraID.Text = CameraID CfgForm.LbCfgCameraID.Text = CameraID
@@ -517,12 +574,16 @@ Public Class FrmMain
VacuumCheckEnable = TmpInt > 0 VacuumCheckEnable = TmpInt > 0
ElseIf TmpString.StartsWith("VacFileStart=") Then ElseIf TmpString.StartsWith("VacFileStart=") Then
VacFileStart = Mid(TmpString, Len("StartVacFile=") + 1) VacFileStart = Mid(TmpString, Len("StartVacFile=") + 1)
IsCorrectFilePathReadFromCfg(DirToReadCfg, VacFileStart, sMsgErr)
ElseIf TmpString.StartsWith("VacFilePos=") Then ElseIf TmpString.StartsWith("VacFilePos=") Then
VacFilePos = Mid(TmpString, Len("VacFilePos=") + 1) VacFilePos = Mid(TmpString, Len("VacFilePos=") + 1)
IsCorrectFilePathReadFromCfg(DirToReadCfg, VacFilePos, sMsgErr)
ElseIf TmpString.StartsWith("VacFileEnd=") Then ElseIf TmpString.StartsWith("VacFileEnd=") Then
VacFileEnd = Mid(TmpString, Len("VacFileEnd=") + 1) VacFileEnd = Mid(TmpString, Len("VacFileEnd=") + 1)
IsCorrectFilePathReadFromCfg(DirToReadCfg, VacFileEnd, sMsgErr)
ElseIf TmpString.StartsWith("VacDirModels=") Then ElseIf TmpString.StartsWith("VacDirModels=") Then
VacDirModels = Mid(TmpString, Len("VacDirModels=") + 1) VacDirModels = Mid(TmpString, Len("VacDirModels=") + 1)
IsCorrectFilePathReadFromCfg(DirToReadCfg, VacDirModels, sMsgErr)
ElseIf TmpString.StartsWith("VacMinScore=") Then ElseIf TmpString.StartsWith("VacMinScore=") Then
VacMinScore = Convert.ToDouble(Mid(TmpString, Len("VacMinScore=") + 1), nfi) VacMinScore = Convert.ToDouble(Mid(TmpString, Len("VacMinScore=") + 1), nfi)
ElseIf TmpString.StartsWith("VacTolmm=") Then ElseIf TmpString.StartsWith("VacTolmm=") Then
@@ -531,6 +592,13 @@ Public Class FrmMain
End While End While
reader.Close() reader.Close()
reader.Dispose() 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 Catch ex As Exception
MsgBox("Error in Cfg File " & TmpString) MsgBox("Error in Cfg File " & TmpString)
End Try End Try
@@ -856,7 +924,7 @@ Public Class FrmMain
DirToReadCfg = DirToReadCfg & ComboBoxCameraCfg.SelectedItem.ToString() DirToReadCfg = DirToReadCfg & ComboBoxCameraCfg.SelectedItem.ToString()
End If End If
Else Else
DirToReadCfg = DirToReadCfg & MainModule.IndexProc.ToString() DirToReadCfg = DirToReadCfg & MainModule.IndexProc
End If End If
NomeFileCfg = DirToReadCfg & "\CameraMng.cfg" NomeFileCfg = DirToReadCfg & "\CameraMng.cfg"
NomeFileTempCfg = DirToReadCfg & "\CameraMngTmp.cfg" NomeFileTempCfg = DirToReadCfg & "\CameraMngTmp.cfg"
@@ -940,7 +1008,7 @@ Public Class FrmMain
DirToReadCfg = DirToReadCfg & ComboBoxCameraCfg.SelectedItem.ToString() DirToReadCfg = DirToReadCfg & ComboBoxCameraCfg.SelectedItem.ToString()
End If End If
Else Else
DirToReadCfg = DirToReadCfg & MainModule.IndexProc.ToString() DirToReadCfg = DirToReadCfg & MainModule.IndexProc
End If End If
NomeFileCfg = DirToReadCfg & "\CameraMng.cfg" NomeFileCfg = DirToReadCfg & "\CameraMng.cfg"
NomeFileTempCfg = DirToReadCfg & "\CameraMngTmp.cfg" NomeFileTempCfg = DirToReadCfg & "\CameraMngTmp.cfg"