Buongiorno
sto realizzando una windows form..
che riceve segnale gps,faccio la scansione delle porte per vedere su quale porta è presente segnale gps.... ma quando vado a chiudere il programma mi resta in debug o provato a fare dispose sulla porta e close ma niente
resta ugualmente in debug e devo stopparlo premendo stop
inoltre se invece sulla porta trovo segnale gps non mi è consentito chiudere la porta perchè va in errore visto che il gps è connesso tramite bluetooth ma fa tutto in automatico senza che io apro la connessione....
potete aiutarmi
public void disposeGps(simpleGps gps)
{
GC.SuppressFinalize(gps);
}
private void button1_Click_1(object sender, EventArgs e)
{
try
{
btnSalvaGps.Enabled = false;
if (portagpsTrovata == false || !nomeporta.Equals("COM" + portanum))
{
//SE NON HO SELEZIONATO LA PORTA LA CERCO
if (nomeporta.Equals(""))
{
portanum = 0;
do
{
/*CERCO LA PORTA QUANDO LA TROVO IMPOSTA A=0
E ESCO DAL CICLO ALTRIMENTI ESCO SE SONO ARRIVATO ALLA COM "MAX_PORTE" IMPOSTATA NEL FILE DI SETTING
SENZA TROVARE NULLA*/
try
{
portagps = new SerialPort("COM" + portanum);
mlink = new simpleGps(portagps);
if (portagps.ReadExisting().Contains("GPGGA"))
a = 0;
else
a = 1;
}
catch
{
a = 1;
}
}
while (a == 1 && (portanum = (portanum + 1) % (Settings.Settings1.Default.MAX_PORTE)) > 0);
// SE HO TROVATO LA PORTA SCRIVO ALTRIMENTI MOSTRO UN MESSAGGIO A VIDEO
if (a.Equals(0))
labelPorta.Text = portagps.PortName.ToString();
else
MessageBox.Show("Porta non trovata");
}
else
{
// SELEZIONE PORTA MANUALE
portagps = new SerialPort(nomeporta);
mlink = new simpleGps(portagps);
labelPorta.Text = portagps.PortName.ToString();
if (!portagps.ReadExisting().Contains("GPGGA"))
{
// SE NON è PRESENTE SEGNALE GPS MOSTRO MESSAGGIO A VIDEO
MessageBox.Show("Su Questa porta non sono presenti dispositivi GPS");
a = 1;
}
}
}
if (a.Equals(0))
{
portagpsTrovata = true;
btnGuarda.Visible = true;
Button_stop.Visible = true;
}
else
{
btnSalvaGps.Enabled = true;
goto FINE;
}
//SE NON HO TROVATO IL GPS SALTO ALLA FINE
int i = 0;
bool incremento = true;
while ( a == 0)
{
i++;
if (i == 50000)
{
if (incremento ==true)
progressBar1.Value = progressBar1.Value + 1;
else
progressBar1.Value = progressBar1.Value - 1;
i = 0;
}
if (mlink.isValidGpsData())
{
txtLongitudine.Visible = false;
txtLatidudine.Visible = false;
mia = mlink.getDatiAggiornati("GPGGA");
TEST = (NMEA_Adapter.GPGGA)mlink.getDatiAggiornati("GPGGA");
latidudine = TEST.getLatitudine();
lblLat.Visible = true;
lblLong.Visible = true;
lblLat.Text = latidudine;
longitudine = TEST.getLongitudine();
lblLong.Text = longitudine;
statoSat.Text = TEST.getQualitaSegnale();
}
if ((progressBar1.Value == 100 || progressBar1.Value == 0) && i==0)
incremento = !incremento;
Application.DoEvents();
}
if (a == 1)
{
btnSalvaGps.Enabled = true;
progressBar1.Value = 0;
}
else
{
//mia = mlink.getDatiAggiornati("GPGGA");
//string segnale = TEST.getQualitaSegnale();
//latidudine = TEST.getLatitudine();
//ora = TEST.getOra();
//lblLat.Text = latidudine;
//longitudine = TEST.getLongitudine();
//lblLong.Text = longitudine;
gpsManuale = false;
btnSalvaGps.Enabled = true;
label1.Text = ora;
label1.Visible = true;
lblLat.Visible = true;
lblLong.Visible = true;
}
}
catch (Exception EX)
{
MessageBox.Show(EX.ToString());
progressBar1.Value = 0;
if (gpsManuale == true)
btnSalvaGps.Enabled = true;
}
finally
{
Button_stop.Visible = false;
a = 0;
}
FINE:
;
}
questo è il codice mi serve qualcosa per chiudere il collegamento con il bluetooth penso la libreria 32feet e qualcosa che mi faccia terminare il debug perchè anche cliccando sulla x il programma resta in debug e devo stopparlo manualmente