Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Mods
    Registrato dal
    Jun 2004
    Messaggi
    302

    [vb6]Seriale: invia e attendi risposta

    Da poco sto facendo dei lavoretti con la seriale in Visual Basic. In particolare sto facendo un programma per lo scambio file tra pc. Per fare dei controlli particolari dovrei fare una cosa del tipo:

    Invia Messaggio
    Attendi Risposta Positiva
    Inizia processo

    Ad esempio in Java io lo facevo così:

    codice:
    out.write(richiesta);  //invio della richiesta
    String risposta= in.readln(); //blocca il codice finché non si riceve una risposta
    if(risp=="OK") {
      //fai processo
    }
    E' possibile fare una cosa così anche in VB?
    Ci sono 10 tipi di persone al mondo: quelli che conoscono il codice binario, e quelli che non lo conoscono!

  2. #2
    Utente di HTML.it L'avatar di saraX
    Registrato dal
    Apr 2003
    Messaggi
    56
    Puoi usare il controllo MSComm.
    Per poterlo utilizzare devi aggiungere la componente:
    Microsoft Comm Control 6.


    Sara.

  3. #3
    Utente di HTML.it L'avatar di Mods
    Registrato dal
    Jun 2004
    Messaggi
    302
    Sì, scusa, non l'avevo specificato. Io uso l'MSCOMM, solo che a differenza di Java, quando ricevo qualcosa essa mi genera l'evento OnComm. Io cercavo invece un modo per bloccare il codice finché non ricevi una risposta, come nell'esempio fatto. Sai se è possibile farlo?
    Ci sono 10 tipi di persone al mondo: quelli che conoscono il codice binario, e quelli che non lo conoscono!

  4. #4
    Utente di HTML.it L'avatar di saraX
    Registrato dal
    Apr 2003
    Messaggi
    56
    Sai che non riesco a capire bene la situazione?
    Non conosco la sintassi java... ma cosa intendi tu per bloccare il codice?

    ...che fino a quando non arriva risposta dall'altro PC il programma chiamante deve restare in uno stato di blocco totale?

    ...quale handshaking usi?

    ciao
    Sara.

  5. #5
    Utente di HTML.it L'avatar di Mods
    Registrato dal
    Jun 2004
    Messaggi
    302
    sì, esatto: fino a quando non arriva risposta dall'altro PC il programma chiamante deve restare in uno stato di blocco ...
    Ci sono 10 tipi di persone al mondo: quelli che conoscono il codice binario, e quelli che non lo conoscono!

  6. #6
    Utente di HTML.it L'avatar di saraX
    Registrato dal
    Apr 2003
    Messaggi
    56
    perchè?

    non che mi voglia fare i fattacci tuoi...

    cmq. io utilizzerei un buffer,
    dichiarato a livello della form dove inserisco la componente MScomm, e gli accoderei tutto quello che mi arriva sull'RS232 attraverso un ciclo dal quale si esce solo a condizione che mi arrivi un certo dato che tu chiami "risposta positiva", in questo modo penso che se non aggiungi al ciclo un doEvents, automaticamente rimanga impallato ad aspettare...

    non so se mi sono spiegata bene, ma non so nello specifico quale sarà la tua applicazione...

    Sara.

  7. #7
    Utente di HTML.it L'avatar di Mods
    Registrato dal
    Jun 2004
    Messaggi
    302
    In poche parole devo inviare un file e per farlo lo suddivido a pacchetti di 1024 byte l'uno. Dopo aver inviato un pacchetto, prima di inviarne uno nuovo volevo che mi venisse data una conferma dall'altro pc. Che metodo proporresti per farlo?
    Ci sono 10 tipi di persone al mondo: quelli che conoscono il codice binario, e quelli che non lo conoscono!

  8. #8
    Quello che stai cercando di fare infatti è un po' la struttura di scambio di pacchetti TCP/IP via rete solo che tu li scambi dalla seriale...
    dovrai fare controlli di sovraccarico dei dati da spedire, di ricezione con ACK di risposta e altre cose....Comunque non hai una struttra complessa di PC visto che dovrebbero essere solo 2 quindi salti il processo di instradamento tipico nella rete WEB

    Io ti consiglio di mettere un Timer che verrà avviato una volta spedito il pacchetto con un refresh di pochi millisecondi e quest'ultimo continuerà a verifica che non ci siano dati in arrivo sulla porta...se arrivano controlla che sia la risposta (magari metti un HEADER di testa del tipo "OK")

    Di + non ti so' dire xkè io la MSCOMM non l'ho mai presa in mano ma mi sembra strano che non abbia un evento che intercetti i pacchetti!!! Il blocco totale del programma mi sembra inutile....

    Basta solo una variabile di verifica nel Timer (o nell'evento del MSCOMM di dati ricevuti)... se la risposta è arrivata allora setto la variabile=True

    Nel resto del programma racchiudi il codice in una if variabile=true then ...esegui codice.... end if

  9. #9
    Utente di HTML.it L'avatar di Mods
    Registrato dal
    Jun 2004
    Messaggi
    302
    Ah, ok, grazie. Quindi dici che si può fare a meno di questo controllo per lo scambio pacchetti nella seriale?

    Cmq un evento che intercetti i pacchetti ce l'ha, è l'onComm.
    Ci sono 10 tipi di persone al mondo: quelli che conoscono il codice binario, e quelli che non lo conoscono!

  10. #10
    Non ho detto che si puo' fare a meno... ho detto di non averlo mai usato perchè non ho 2 pc per fare programmi in grado di comunicare con la seriale....Cmq se non lo vuoi usare dovresti prenderti in mano le API che gestiscono tutto ....ma mi sembra un lavoro troppo difficile e lungo

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.