#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_outfile=csv2gpsexec_mod.exe #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;Format du fichier aprés traitement ;Latitude ,Longitude,,,DISTANCE,UNITé,"TYPERADAR_VITESSE" ;44.812837,-0.555668,,,500,M,"RADAR_FIXE_130" ;44.814602,-0.572405,,,500,M,"RADAR_MOBILE_80" ; Ajout des fichiers nécessaires au fonctionnement du script. #include #include #include #include #include #include #include #include ; cette ligne peut être effacée après avoir vu à quoi ressemblait un tableau. If Not FileExists(@ScriptDir & "\csv2gpsexec.ini") Then IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "with_gui ", "false or true default=false") IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "files_in ", "add files.csv , ex:files1.csv,files2.csv,...filesn.csv") IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "file_out ", "file_out name") IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "concatenation ", "concatenation all files , false or true default=false") IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "units ", "unit (MI,FT,YD,KM,M) default is M") IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "minhdg ", "Minimun trigger heading at location in degres(default=nothing)") IniWrite("csv2gpsexec.ini", "csv2gpsexec.ini", "maxhdg ", "Minimun trigger heading at location in degres(default=nothing)") EndIf ; Déclaration des variables utilisées pour la suite du script. Dim $aRadars, $Fichier ,$Fichier_RF, $Fichier_RM, $Fichier_RFR, $Fichier_ZD, $Var, $Var2, $Longitude, $Latitude, $Vitesse, $TypeRadar, $Res , $Inp_Distance , $Concatener , $Cb_Unites , $Inp_Minhdg , $Inp_Maxhdg , $Apropos Dim $szDrive, $szDir, $szFName, $szExt , $MaVar , $IDFic ,$Dist , $Units , $Minhdg , $Maxhdg $MaVar = $MaVar & $Fichier_RF & @CRLF & $Fichier_RM & @CRLF & $Fichier_RFR & @CRLF & $Fichier_ZD & @CRLF _ChoixRadars() ; La fonction attribue automatiquement le nom du fichier et le type de radar. ; On lit le fichier dans un tableau If Not _FileReadToArray($Fichier, $aRadars) Then ; Si problème à la lecture du fichier MsgBox(4096, "Erreur", "Erreur de lecture du fichier ") ; Erreur Exit EndIf ; Décommentez cette ligne pour voir à quoi ressemble le tableau de départ. ;_ArrayDisplay($aRadars, "Tableau des radars") For $i = 1 To $aRadars[0] ; permet de lire le tableau de l'élément 1 au dernier. $Var = StringSplit($aRadars[$i], ",") ; Ceci permet de lire chaque élément du tableau. $Longitude = $Var[1] ; On attribue la valeur de la longitude $Latitude = $Var[2] ; On attribue la valeur de la latitude $Var2 = StringSplit($Var[3], '@"') ; On décompose la chaine restante $Vitesse = $Var2[3] ; On récupère la vitesse ; Attribution à la cellule du tableau de la chaine mise en forme. ; $aRadars[$i] = $Latitude & ',' & $Longitude & ',' & $Inp_Minhdg & ',' & $Inp_Maxhdg & ',' & $Inp_Distance & ',' & $Cb_Unites & ',"' & $TypeRadar & "_" & $Vitesse & '"' $aRadars[$i] = $Latitude & ',' & $Longitude & ',' & $Minhdg & ',' & $Maxhdg & ',' & $Dist & ',' & $Units & ',"' & $TypeRadar & "_" & $Vitesse & '"' Next ; Décommentez cette ligne pour voir à quoi ressemble le tableau d'arrivée. ;_ArrayDisplay($aRadars, "Tableau des radars") ; Ecriture du fichier de destination : _ArrayDelete($aRadars, 0) ; On supprime le nombre d'élément du tableau $Path = _PathSplit($Fichier, $szDrive, $szDir, $szFName, $szExt) ; On décompose chemin, nom de fichier et extention. $Fichier = $szDrive & $szDir & $szFName & "_New" & $szExt ; on recompose le nom de fichier avec _New en plus du nom. If Not _FileWriteFromArray($Fichier, $aRadars) Then ; Si problème à l'écriture du fichier MsgBox(4096, "Erreur", "Erreur d'écriture du fichier ") ; Erreur Exit EndIf $Res = MsgBox(36, "", "Voulez-vous traiter un autre fichier ? ") If $Res = 6 Then If @Compiled Then ; Si le fichier est compilé ... ShellExecute(@ScriptFullPath) ; alors on le relance puis ... Exit ; on quitte celui-ci Else ShellExecute(@AutoItExe, '"' & @ScriptFullPath & '"') ; Sinon on lance AutoIt.exe avec le script en argument. EndIf EndIf Func _ChoixRadars() #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("CSV Convert", 568, 353, -1, -1) $Annuler = GUICtrlCreateButton("Annuler", 392, 296, 75, 25) $OK = GUICtrlCreateButton("OK", 480, 296, 75, 25) $Group1 = GUICtrlCreateGroup(" Radars ", 8, 15, 297, 305) $Fic_RF = GUICtrlCreateInput("", 16, 63, 250, 21) $Choix_RF = GUICtrlCreateButton("...", 270, 63, 20, 20) $Lb_RF = GUICtrlCreateLabel("Fichier radars fixes :", 16, 39, 194, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Fic_RM = GUICtrlCreateInput("", 16, 119, 250, 21) $Choix_RM = GUICtrlCreateButton("...", 270, 119, 20, 20) $Lb_RM = GUICtrlCreateLabel("Fichier radars mobiles :", 16, 95, 194, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Fic_RFR = GUICtrlCreateInput("", 16, 183, 250, 21) $Choix_RFR = GUICtrlCreateButton("...", 270, 183, 20, 20) $Lb_RFR = GUICtrlCreateLabel("Fichier radars feu rouge :", 16, 159, 194, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Fic_ZD = GUICtrlCreateInput("", 16, 247, 250, 21) $Choix_ZD = GUICtrlCreateButton("...", 270, 247, 20, 20) $Lb_ZD = GUICtrlCreateLabel("Fichier radars zones dangereuse :", 16, 223, 242, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Ckb_Fusion = GUICtrlCreateCheckbox("Concaténer les fichiers", 16, 287, 185, 17) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") GUICtrlCreateGroup("", -99, -99, 1, 1) $Group2 = GUICtrlCreateGroup(" Options ", 312, 15, 241, 169) $Lb_Minhdg = GUICtrlCreateLabel("MINHDG :", 327, 75, 72, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Lb_Maxhdg = GUICtrlCreateLabel("MAXHDG :", 327, 110, 76, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Lb_Distance = GUICtrlCreateLabel("DISTANCE :", 327, 145, 88, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Inp_Minhdg = GUICtrlCreateInput("", 442, 70, 97, 21) $Inp_Maxhdg = GUICtrlCreateInput("", 442, 105, 97, 21) $Inp_Distance = GUICtrlCreateInput("", 442, 140, 97, 21) $Lb_Unites = GUICtrlCreateLabel("UNITES :", 327, 40, 68, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") $Cb_Unites = GUICtrlCreateCombo("", 442, 35, 97, 25) GUICtrlSetData(-1, "MI|FT|YD|KM|M", "M") GUICtrlCreateGroup("", -99, -99, 1, 1) ;$Menu = GUICtrlCreateMenu("?") ;$Apropos = GUICtrlCreateMenuItem("A propos", $Menu) GUISetState(@SW_SHOW) $Apropos = GUICtrlCreateButton(" À propos", 380, 210, 100, 50) GUICtrlSetOnEvent(-1, "Apropos") #EndRegion ### END Koda GUI section ### While 1 ; Boucle de message (voir la section création d'une GUI pour comprendre le fonctionnement) $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $Annuler ; Si la fenêtre est fermée ou si le bouton annulé est cliqué. Exit Case $Choix_RF ; Si le bouton ... à été cliqué. $Fichier_RF = FileOpenDialog("Choisissez le fichier Radars Fixes", @ScriptDir, "Fichier asc (*.csv)", 1) If $Fichier_RF <> "" Then GUICtrlSetData($Fic_RF, $Fichier_RF) ; Si le nom du fichier n'est pas vide, ; on attribue ca valeur au champ de l'input. $TypeRadar = "RADAR_FIXE" ;atribution du type de radar. $IDFic = $Fic_RF $Fichier = $Fichier_RF Case $Choix_RM ; Si le bouton ... à été cliqué. $Fichier_RM = FileOpenDialog("Choisissez le fichier Radars Mobiles", @ScriptDir, "Fichier asc (*.csv)", 1) If $Fichier_RM <> "" Then GUICtrlSetData($Fic_RM, $Fichier_RM) ; Si le nom du fichier n'est pas vide, ; on attribue ca valeur au champ de l'input. $TypeRadar = "RADAR_MOBILE" ;atribution du type de radar. $IDFic = $Fic_RM $Fichier = $Fichier_RM Case $Choix_RFR ; Si le bouton ... à été cliqué. $Fichier_RFR = FileOpenDialog("Choisissez le fichier Radars Feux Rouges", @ScriptDir, "Fichier asc (*.csv)", 1) If $Fichier_RFR <> "" Then GUICtrlSetData($Fic_RFR, $Fichier_RFR) ; Si le nom du fichier n'est pas vide, ; on attribue ca valeur au champ de l'input. $TypeRadar = "RADAR_FEU_ROUGE" ;atribution du type de radar. $IDFic = $Fic_RFR $Fichier = $Fichier_RFR Case $Choix_ZD ; Si le bouton ... à été cliqué. $Fichier_ZD = FileOpenDialog("Choisissez le fichier Zones de Danger", @ScriptDir, "Fichier asc (*.csv)", 1) If $Fichier_ZD <> "" Then GUICtrlSetData($Fic_ZD, $Fichier_ZD) ; Si le nom du fichier n'est pas vide, ; on attribue ca valeur au champ de l'input. $TypeRadar = "ZONE_DANGEREUSE" ;atribution du type de radar. $IDFic = $Fic_ZD $Fichier = $Fichier_ZD Case $Inp_Minhdg $Minhdg = GUICtrlRead($Inp_Minhdg) Case $Inp_Maxhdg $Maxhdg = GUICtrlRead($Inp_Maxhdg) Case $Inp_Distance $Dist = GUICtrlRead($Inp_Distance) Case $Cb_Unites $Units = GUICtrlRead($Cb_Unites) Case $Apropos Apropos() Case $OK ; Si le bouton OK à été cliqué. $Fichier = GUICtrlRead($IDFic) ; On lit le nom du fichier ; Teste chaque radioBox et valide le choix If _IsChecked($Ckb_Fusion) Then $Fichier = $MaVar If FileExists($Fichier) Then ; On vérifie que le fichier existe bel et bien. GUIDelete($Form1) ; Efface la GUI Return ; on sort de la fonction EndIf EndSwitch WEnd EndFunc ;==>_ChoixRadars Func Apropos() #cs Ce programme est conçu pour modifier quatre fichiers ascii issus du site GPSALERT http://www2.alertegps.com/download_basic.asp?id_matos=8&menu=1&sous_menu=1 . On obtient quatre fichiers: RF.csv , radars fixe RFR.csv, radars feu rouge RM.csv, radars mobile ZD.csv, zones dangereuses Exemple du format de ces 4 fichiers (ZD.csv n'ayant pas de vitesse définie ex: @110) 55.50166,-21.30224,"Num 3461@110" (Radar fixe) 55.42566,-21.30207,"Num 3457@110" (Radar feu rouge) 55.30042,-21.23435,"Num 3455@90" (Radar Mobile) 55.30413,-20.96288,"Num 3456" (Zone Danger) Ce format est compatible Garmin, soit: Longitude,Latitude,"Numéro_du_POI@vitesse" Nous obtenons en sortie: Latitude,Longitude,,,DISTANCE,UNITES,"RADAR_FIXE vitesse" soit au final : -21.30224,55.50166,,,500,M,"RADAR_FIXE_110" -21.30207,55.42566,,,500,M,"RADAR_FEU_ROUGE_110" -21.23435,55.30042,,,500,M,"RADAR_MOBILE_90" -20.96288,55.30413,,,500,M,"ZONE_DANGER" #ce MsgBox(262208, "À propos", "Ce programme est conçu pour modifier" & @CRLF & "quatre fichiers ascii issus du site http://www2.alertegps.com/" & @CRLF & @CRLF & "Les fichiers au format Garmin sont à télécharger ici:" & @CRLF & "http://www2.alertegps.com/download_basic.asp?id_matos=8&menu=1&sous_menu=1 ." & @CRLF & @CRLF & "On obtient quatre fichiers:" & @CRLF & "RF.csv , radars fixe" & @CRLF & "RFR.csv, radars feu rouge" & @CRLF & "RM.csv, radars mobile" & @CRLF & "ZD.csv, zones dangereuses" & @CRLF & @CRLF & "Exemple du format de ces 4 fichiers (ZD.csv n'ayant pas de vitesse définie ex: @110)" & @CRLF & '55.50166,-21.30224,"Num 3461@110" (Radar fixe)"' & @CRLF & '55.42566,-21.30207,"Num 3457@110" (Radar feu rouge)"' & @CRLF & '55.30042,-21.23435,"Num 3455@90" (Radar Mobile)' & @CRLF & '55.30413,-20.96288,"Num 3456" (Zone Danger)' & @CRLF & @CRLF & "Ce format est compatible Garmin, soit:" & @CRLF & 'Longitude,Latitude,"Numéro_du_POI@vitesse"' & @CRLF & @CRLF & "Nous obtenons en sortie:" & @CRLF & 'Latitude,Longitude,MinHdg,MaxHdg,,,Distance,Unités,"RADAR_FIXE vitesse"' & @CRLF & "soit au final :" & @CRLF & '-21.30224,55.50166,,,500,"RADAR_FIXE_110"' & @CRLF & '-21.30207,55.42566,,,500,"RADAR_FEU_ROUGE_110"' & @CRLF & '-21.23435,55.30042,,,500,"RADAR_MOBILE_90"' & @CRLF & '-20.96288,55.30413,,,500,"ZONE_DANGER"') GUICtrlSetState($Apropos, $GUI_focus) EndFunc ;==>Apropos Func Close() Exit EndFunc ;==>Close ; Fonction pour tester si la RadioBox "Concaténation" est cochée. Func _IsChecked($control) Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED EndFunc ;==>_IsChecked