Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    vb6 localizzare su Google Earth

    Premetto che di VB6 sono ancora agli albori sto cercando di sviluppare qualcosa che mi permetta di visualizzare più punti contemporaneamente su google heart mi spiego mglio :

    Ricevo in tempo reale dei pacchetti gps da diverse unità identificate da un id stringa ben preciso ( la stringa è composta da vari dati coordinate, ora, id, altezza ect..) ora sono riuscito a ricevere tramite seriale i dati, a selezionare quello che interessa, applicargli le conversioni per i formati Google Earth e farli riportare in alcune text di un form. Ma qua mi sono bloccato in teoria bisognerebbe che i dati ricevuti e riportati nelle text (id, ora, data, lat. e long.) venissero scritte su un file (cvs, excel o access) previo controllo se id esiste, se esiste aggiorna i dati data ora e coordinate se no crea una riga nuova, dopo questo controllo dovrebbe creare un file kmz o kml di Google Earth.

    qualcuno può aiutarmi o indirizzami su qualche sito? io ho cercato di fare qualche ricerca ma son 30 gg che ci sbatto la testa .
    grazzie

  2. #2
    Non ho capito, cosa è che non ti riesce?

    1. controllare se un determinato dato esiste in un file
    2. scrivere una riga nuova
    3. come creare un file kmz o kml


    Cerca di essere + preciso..

    Ciao

  3. #3
    praticamente non so come inserire i dati che mi arrivano e che visualizzo nel form in un file fargli fare la verifica se id esiste e creare il file per Google Earth :

    attualmente in automatico decodifico ogni stringa che mi arriva tramite 232 separo i vari campi viene fatta una conversione di coordinate il tutto va a compilare dei campi text in un form, ad ogni ricezione di stringa vengono cancellati i campi text e riscritti con i nuovi dati.

    quello che non riesco a comprendere come si fà :
    dei vari campi text che vengono riempiti prendere solo le text di data e ora, id (univoco che mi viene inviato insieme ai dati, e che già visualizzo) latitudine e longitudine farli scrivere su un file aggiornando un id eventualmente già presente e trasformare il tutto per Google Earth.

    Spero di essere riuscito a farmi capire se ti può essere di aiuto per comprendere meglio invio immagine del form o codici

    grazie

  4. #4
    Ultima domanda: questo ID di cui parli, è un file oppure è un valore all'interno del file?

    Inoltre: la scrittura del file/files è automatica (cioè all'arrivo dei dati) oppure la controlli manualmente per esempio con un commandbutton?

    Forse sarebbe il caso che mi spedissi per mail il progetto oppure le form e il codice..

    mde2005@libero.it

    Ciao

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Originariamente inviato da MdE2005
    Forse sarebbe il caso che mi spedissi per mail il progetto oppure le form e il codice..
    Mi rivolgo all'autore originale della discussione.

    Se possibile, io cercherei di pubblicare il codice testualmente qui sul forum, limitatamente alle parti rilevanti e interessate dal problema, usando l'apposito tag [CODE ].

    In alternativa, se occorre avere l'intero progetto, magari lo pubblicherei su un sito di "file sharing" gratuito per poi consentirne il download.

    Se nessuna di queste due modalità è possibile, allora purtroppo ci arrendiamo all'email privata.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6

    Re: Moderazione

    Originariamente inviato da alka
    Mi rivolgo all'autore originale della discussione.

    Se possibile, io cercherei di pubblicare il codice testualmente qui sul forum, limitatamente alle parti rilevanti e interessate dal problema, usando l'apposito tag [CODE ].

    In alternativa, se occorre avere l'intero progetto, magari lo pubblicherei su un sito di "file sharing" gratuito per poi consentirne il download.

    Se nessuna di queste due modalità è possibile, allora purtroppo ci arrendiamo all'email privata.

    Ciao!

    Sono completamente d'accordo..ho fatto tale proposta perchè ho letto nell'utente una certa furia e disperazione (relativa ovviamente..), e quella sarebbe stata la soluzione + veloce..

    Ciao

  7. #7
    non ci avevo pensato a postare il codice
    eccolo

    [CODE ]
    Private Sub Form_Load()

    'Lettura parametri file ini
    Dim iniFile As New Class1 'specifica modulo di classe
    Dim strVar1 As String
    Dim strVar2 As String
    iniFile.FileName = App.Path & "/seriale.ini"
    iniFile.ApplicationKey = "Impostazioni_seriale"
    strVar1 = iniFile.GetValue("Porta_com", "7")
    strVar2 = iniFile.GetValue("Setting_com", "9600,N,8,1")
    strVar3 = iniFile.GetValue("timer1_lettura_com", "2000")

    'Apri la porta seriale
    MSComm1.CommPort = strVar1
    MSComm1.Settings = strVar2
    Timer1.Interval = strVar3
    On Error Resume Next

    MSComm1.RThreshold = 1
    MSComm1.PortOpen = True

    If Err Then
    MsgBox "- ERRORE - IMPOSSIBILE APRIRE COMM " & MSComm1.CommPort & vbCrLf
    End If
    'MSComm1.InputLen = 0
    'ìMSComm1.RThreshold = 1

    End Sub
    Private Sub Form_Unload(Cancel As Integer)

    'Chiude la porta Seriale quando chiude il form
    Timer1.Enabled = False
    If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
    'MSComm1.PortOpen = False

    End

    End Sub
    Private Sub Start_dati_Click()

    Timer1.Enabled = True
    Text6.Text = "Attesa Flusso Dati GPS"
    'Stringa_GPS
    'Stringa_Targa
    End Sub
    Private Sub Timer1_Timer()

    Stringa_GPS
    Stringa_Targa

    End Sub

    Private Sub Stringa_GPS()

    Dim mess As String
    Dim start As Integer
    Dim dataeOraCorrenti As Variant

    'Dim strA As Variant
    'Dim strB As Variant

    MSComm1.RThreshold = 1
    MSComm1.InputLen = 0
    MSComm1.InBufferCount = 0
    Text6.Text = "Attesa Flusso Dati GPS"


    ' Cerca GGA nel pacchetto
    Do
    DoEvents
    mess = MSComm1.Input
    start = InStr(1, mess, "GPGGA")
    Text12.Text = mess
    Loop Until start <> 0

    'Trim di inizio del pacchetto
    mess = Mid$(mess, start)

    ' Prima analisi del resto del pacchetto abbiamo a che fare con la possibilità che si possa avere
    ' solo un frammento del pacchetto. Per garantire che abbiamo l'intero pacchetto di cui abbiamo
    ' bisogna leggere il buffer della seriale e fino a trovare un CR / LF

    Do
    DoEvents
    mess = mess & MSComm1.Input
    start = InStr(1, mess, vbCrLf)

    Loop Until start <> 0

    ' butta via tutto quello che segue il CR / LF

    mess = Left$(mess, start)

    'Tutto ciò che rimane da fare è dividere i dati (virgola separa i dati) in un array

    Dim info As Variant
    info = Split(mess, ",")

    ' significato campi GPGGA

    ' Campo Formato Esempio Descrizione

    ' 1 hhmmss.ss 125642.57 Ora UTC - GPS
    ' 2 llll.ll 4512.72 Latitudine della posizione attuale (numero di decimali variabile)
    ' 3 A N Emisfero della posizione attuale: N=Nord; S=Sud
    ' 4 yyyyy.yy 00934.88 Longitudine della posizione attuale (numero di decimali variabile)
    ' 5 A E Verso della posizione attuale: E=Est; W=Ovest
    ' 6 n 1 Qualità del rilevamento GPS: 0=non valido; 1=GPS; 2=DGPS
    ' 7 x 8 Numero di satelliti in vista (teorica, non necessariamente in uso o ricevuti)
    ' 8 x.x 1.9 HDOP - Horizontal Dilution Of Precision
    ' 9 x.x 540.4 Altitudine dell'antenna GPS relativa al livello medio del mare (geoide)
    ' 10 A M Indicatore dell'unità di misura dell'altitudine M=metri (ma è mai diverso da M?)
    ' 11 x.x 45.8 Altezza (separazione) del geoide (livello medio del mare) rispetto all'elissiode WGS84
    ' 12 A M Indicatore dell'unità di misura della separazione del geoide M=metri (ma è mai diverso da M?)
    ' 13 x.x 8.0 Tempo in secondi dall'ultimo aggiornamento DGPS
    ' 14 nnnn 1023 Identificatore della stazione DGPS (0000-1023)

    ' Ora visualizziamo i dati ( si spera )

    'separa per poter fare il calcolo

    'stringa latidunine
    strA = info(2)

    'stringa longitudine
    strB = info(4)

    'legge ora e data dal sistema
    dataeOraCorrenti = Now

    'separa la latitudine
    parteLatgradi = Left(strA, 2)
    parteLatminuti = Mid(strA, 3, 7)
    parteLatmillesimiminuti = Right(strA, 4)

    'separa longitudine
    parteLoggradi = Left(strB, 3)
    parteLogminuti = Mid(strB, 4, 7)
    partelogmillesimiminuti = Right(strB, 4)

    'scrive la latitudine
    Text13.Text = parteLatgradi
    Text14.Text = parteLatminuti
    Text15.Text = parteLatmillesimiminuti

    'scrive longitudine
    Text16.Text = parteLoggradi
    Text17.Text = parteLogminuti
    Text18.Text = partelogmillesimiminuti

    Text19.Text = (parteLatminuti / 60) + parteLatgradi
    Text20.Text = (parteLogminuti / 60) + parteLoggradi
    Text21.Text = dataeOraCorrenti

    'crive resto dei campi in formato nmea

    Text1.Text = info(1)
    Text2.Text = info(2)
    Text3.Text = info(3)
    Text4.Text = info(4)
    Text5.Text = info(5)
    Text7.Text = info(7)
    Text8.Text = info(8)
    Text9.Text = info(9)
    Text10.Text = info(13)

    ' Il sesto elemento dati è "0" se i dati non è valido,"1" se è valida e deve essere trattato
    ' leggermente diverso

    If info(6) = "1" Then
    Text6.Text = "Flusso Dati GPS Validi"
    'Text6.BackColor = &H80FF80
    'Text6.ForeColor = &H80000012

    Else
    'Text6.BackColor = &H8000000F
    'Text6.ForeColor = &HFF&

    Text6.Text = "Flusso Dati GPS non validi"
    End If

    End Sub
    Private Sub Stringa_Targa()

    Dim TmpChaine As String
    Dim i As Integer
    On Error Resume Next
    'MSComm1.InputLen = 0
    TmpChaine = MSComm1.Input
    Text12.Text = TmpChaine


    i = InStr(TmpChaine, "&O:")
    Do While Len(TmpChaine) - i < 56
    On Error Resume Next
    TmpChaine = TmpChaine & MSComm1.Input

    Loop

    Text11.Text = Mid(TmpChaine, i + 3, 8)

    End Sub


    Private Sub Stop_dati_Click()

    Timer1.Enabled = False
    If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
    Text6.Text = "STOP FLUSSO DATI"

    End Sub

    Private Sub Esci_Click()

    Dim uscita As String
    uscita = MsgBox("SEI SICURO?", vbInformation + vbOKCancel, "STAI USCENDO")
    If uscita = vbOK Then If MSComm1.PortOpen = True Then MSComm1.PortOpen = False: End

    End Sub

    [/CODE ]

    mi organizzerò con un sito di sito di "file sharing"

    grazie

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Originariamente inviato da MdE2005
    Sono completamente d'accordo..ho fatto tale proposta perchè ho letto nell'utente una certa furia e disperazione (relativa ovviamente..), e quella sarebbe stata la soluzione + veloce..
    Originariamente inviato da group.biagio
    non ci avevo pensato a postare il codice
    eccolo [...]
    Nessun problema. Sono lecite tutte le "pensate", però mettere il codice direttamente qui è preferibile perché argomenta la discussione e permette a chiunque si trovi in un problema analogo di individuare il thread e ottenere un aiuto, con premio della gloria ai partecipanti.

    P.S.: il tag [CODE] deve essere chiuso correttamente (basta usare il tasto "#"), altrimenti il codice non viene formattato.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Originariamente inviato da MdE2005
    Ultima domanda: questo ID di cui parli, è un file oppure è un valore all'interno del file?

    Inoltre: la scrittura del file/files è automatica (cioè all'arrivo dei dati) oppure la controlli manualmente per esempio con un commandbutton?
    Sarà che manca la formattazione ma..non ho trovato risposta alle mie domande :master:

    Inoltre: questo file deve avere un formato particolare?


    Ciao

  10. #10
    No il file che genero non deve avere un formato specifico può essere un cvs, excel o anche access, c'è solo da considerare che dovrà essere convertito in file kml o kmz (molto simile a xml) per Google Earth, in teoria si potrebbe fare direttamente in kml ( ci sono delle API e classi di Google Earth ma pultroppo in inglese e mi sono confuso ancora di + ) se si riesce a gestire il controllo dell'id gia presente ed aggiornamento dati . Io sono riuscito a trovare un file excell con macro e vba che da una lista di indirizzio crea il file kml con tutti i nomi e indirizzi se vuoi lo posto su forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.