From 1b918c31acd8abc74e0122f3235023d26e616608 Mon Sep 17 00:00:00 2001 From: Nicola Pievani Date: Fri, 1 Aug 2025 12:44:40 +0200 Subject: [PATCH] Nuova lettura configurazione --- CameraMng/FrmMain.vb | 74 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 3 deletions(-) diff --git a/CameraMng/FrmMain.vb b/CameraMng/FrmMain.vb index 57145c2..6fb9f21 100644 --- a/CameraMng/FrmMain.vb +++ b/CameraMng/FrmMain.vb @@ -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"