Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278

    [vb.net]fermare esecuzione programma

    Public Sub comando(ByVal comandi As String)

    com1 = My.Computer.Ports.OpenSerialPort(ListBox1.Selected Item)
    com1.Write(comandi)
    'punto in cui vorrei fermare l'esecuzione
    While com1.BytesToRead > 0
    TextBox1.Text &= Chr(com1.ReadByte())

    End While

    com1.Close()



    End Sub


    con questo codice, prima che legga la risposta del modem vorrei che si fermasse per due secondi e poi legga la risposta, come potrei fare??ho provato con un timer (funzionava ma non molto bene) ma ci sono anche altre soluzioni??

  2. #2
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    prova con thread.sleep(millisecondi)

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da stejano
    con questo codice, prima che legga la risposta del modem vorrei che si fermasse per due secondi e poi legga la risposta, come potrei fare??ho provato con un timer (funzionava ma non molto bene) ma ci sono anche altre soluzioni??
    Credo che non sia il modo esatto di procedere: e se il modem ti fornisse la risposta poco dopo i due secondi stabiliti da te arbitrariamente?

    E' necessario acquisire padronanza con il threading e creare una routine asincrona che verifichi ripetutamente i dati in arrivo dal modem fino a quando non ottieni il dato che cerchi, eventualmente con il supporto di un timeout per evitare di rimanere in attesa all'infinito.

    Insomma, la tua soluzione - per quanto semplice - credo ti darà diversi problemi di scalabilità e gestione in futuro.

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

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

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [vb.net]fermare esecuzione programma

    Originariamente inviato da stejano
    (funzionava ma non molto bene)
    Ovviamente ... come ti accennava alka ... un modem non risponde dopo due secondi ...

    La comunicazione tramite modem (o in rete ...) presuppone eventi asincroni (trasmetto quando mi pare, rispondo quando e se mi pare ...) e quindi esclude temporizzazioni precise.
    Per non avere problemi, devi lavorare con gli "eventi" generati dal sistema in relazione alla ricezione dei dati, eventi sicuramente esistenti per i device in questione (porta seriale).

    Il problema principale (in generale) e' che "prima" di affrontare un problema (ad esempio comunicazione modem) bisogna avere una chiara idea teorica della problematica, e non andare a "tentoni" ...

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278
    ho già provato manualmente a leggere le risposte ogni due secondi, tramite un button e funziona...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Funziona nel caso specifico e nella situazione in cui ti trovi ... ma non e' il metodo corretto con cui si scrive un programma stabile per la comunicazione con i modem ...

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da stejano
    ho già provato manualmente a leggere le risposte ogni due secondi, tramite un button e funziona...
    Solo nel caso in cui tutto vada a buon fine, come previsto, che non vi siano intoppi, ritardi, errori di comunicazione, ecc. ecc.

    Il tuo modo di procedere è scorretto, a prescindere dal fatto che con i due secondi che hai stabilito, nel migliore dei casi, tu non abbia problemi.

    La risposta l'avrai probabilmente anche prima di 2 secondi, quindi il metodo corretto è scaricare i dati in modo asincrono e renderli disponibile all'applicazione quando sono stati ricevute tutte le informazioni richieste; nel tuo caso, hai semplicemente evitato questo passaggio ipotizzando che, entro due secondi, tali informazioni siano disponibili, ma 1) non hai garanzie che ciò avvenga sempre, 2) blocchi l'applicazione in quei due secondi, 3) in caso di problemi, nemmeno troppo rari, la risposta potrebbe arrivare, ma arrivare dopo, 4) attendi inutilmente fino a 2 secondi quando, probabilmente, potresti avere i dati prima, ma ovviamente seguendo il tuo metodo non puoi abbassare questo tempo perché rischieresti di perderlo.

    Poi, se tu applichi il concetto "me ne frego di come, teoricamente e praticamente, si dovrebbe colloquiare nel modo corretto con un modem", allora ok, ma voglio sperare che con la frase "ho provato... funziona..." tu non voglia far passare quel metodo come il più plausibile e consono modo di colloquiare con un modem o con un qualsivoglia dispositivo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da oregon
    Funziona nel caso specifico e nella situazione in cui ti trovi ... ma non e' il metodo corretto con cui si scrive un programma stabile per la comunicazione con i modem ...
    Cavolo, perché io non ho il dono di sintetizzare in questo modo ciò che penso.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278
    grazie cassano!!!! l'ho adattato al mio scopo e funziona una meraviglia....mille grazie.

    alka hai pienamente ragione...non è il metodo più corretto....ma siccome il modem è di un cellulare.....non ho tutte le informazioni che mi richiedete voi....per cui....una volta che ho provato e funziona .....direi che mi sta strabene!
    anche se ammetto non è il metodo più corretto.
    ma non sempre la via più semplice (studiare e poi generare il codice) , è quella che si può fare!eheh!
    grazie alka dei tuoi consigli!

  10. #10
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    grazie cassano!!!!
    Di nulla

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.