Imports System.IO
Imports System.Runtime.InteropServices
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim sFilename, dFilename As String
Dim tailledata As Integer
Dim lines() As String
Dim enregoctet() As Byte
sFilename = "D:\ov2.txt" ' le fichier texte exemple des POI
dFilename = "D:\first.ov2" ' le fichier binaire créé
Dim bw As BinaryWriter
bw = New BinaryWriter(File.OpenWrite(dFilename))
Try
lines = System.IO.File.ReadAllLines(sFilename) ' format : X,Y,DEscription
For i = 0 To lines.Length - 1
Dim Xcoor, Ycoor As Integer
Dim enreg() As String
enreg = Split(lines(i), ",") 'récupère les données du fichier texte
'codifie le type et la longueur
tailledata = enreg(2).TrimEnd.Length + 14 ' taille des données
ReDim enregoctet(0 To tailledata - 1)
enregoctet(0) = 2 ' octet de type = 2 en position 0 de l'enregistrement POI
Marshal.WriteInt32(enregoctet, 1, tailledata) ' écrit les 4 octets de la taille
enregoctet(tailledata - 1) = 0 ' octet 0 de fin d'enregistrement du POI
'codifie les coordonnées GPS
enreg(0) = enreg(0).Replace(".", ",") ' séparateur décimal est la virgule en France
Xcoor = CInt(CDbl(enreg(0)) * 100000)
Marshal.WriteInt32(enregoctet, 5, Xcoor) ' écrit les 4 octets de la latitude
enreg(1) = enreg(1).Replace(".", ",")
Ycoor = CInt(CDbl(enreg(1)) * 100000)
Marshal.WriteInt32(enregoctet, 9, Ycoor) ' écrit les 4 octets de la longitude
Dim maArray As Char() = enreg(2).ToCharArray
For j = 0 To enreg(2).Length - 1
Marshal.WriteByte(enregoctet, 13 + j, Convert.ToByte(maArray(j)))
Next
bw.Write(enregoctet) 'ecrit en binaire
Next
MessageBox.Show("Le fichier a été créé")
Catch
MessageBox.Show(" Erreur")
End Try
bw.Close()
End Sub
End Class
Imports System.IO
Imports System.Runtime.InteropServices
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
Dim sFilename, dFilename As String
Dim tailledata As Integer
Dim lines() As String
Dim enregoctet() As Byte
OpenFileDialog1.Filter = "Fichier texte des POI (*.txt)|*.txt" '"Fichier TomTom Binary (*.ov2)|*.ov2"
'si ok sur boite de dialogue
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
sFilename = OpenFileDialog1.FileName ' le fichier texte exemple des POI
SaveFileDialog1.Filter = "Fichier TomTom Binary (*.ov2)|*.ov2"
'si ok sur boite de dialogue
If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
dFilename = SaveFileDialog1.FileName ' le fichier binaire .ov2 créé
Dim bw As BinaryWriter = New BinaryWriter(File.OpenWrite(dFilename))
Try
lines = System.IO.File.ReadAllLines(sFilename) ' format : X,Y,DEscription
For i = 0 To lines.Length - 1
Dim Xcoor, Ycoor As Integer
Dim enreg() As String
enreg = Split(lines(i), ",") 'récupère les données du fichier texte
'codifie le type et la longueur
tailledata = enreg(2).TrimEnd.Length + 14 ' taille des données
ReDim enregoctet(0 To tailledata - 1)
enregoctet(0) = 2 ' octet de type = 2 en position 0 de l'enregistrement POI
Marshal.WriteInt32(enregoctet, 1, tailledata) ' écrit les 4 octets de la taille
enregoctet(tailledata - 1) = 0 ' octet 0 de fin d'enregistrement du POI
'codifie les coordonnées GPS
enreg(0) = enreg(0).Replace(".", ",") ' séparateur décimal est la virgule en France
Xcoor = CInt(CDbl(enreg(0)) * 100000)
Marshal.WriteInt32(enregoctet, 5, Xcoor) ' écrit les 4 octets de la longitude
enreg(1) = enreg(1).Replace(".", ",")
Ycoor = CInt(CDbl(enreg(1)) * 100000)
Marshal.WriteInt32(enregoctet, 9, Ycoor) ' écrit les 4 octets de la latitude
Dim maArray As Char() = enreg(2).ToCharArray
For j = 0 To enreg(2).Length - 1
Marshal.WriteByte(enregoctet, 13 + j, Convert.ToByte(maArray(j)))
Next
bw.Write(enregoctet, 0, enregoctet.Length) 'ecrit en binaire
Next
MessageBox.Show("Le fichier a été créé")
Catch
MessageBox.Show(" Erreur ")
End Try
bw.Close()
End If
End If
End Sub
End Class
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question