Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

VB6 - MSComm

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] VB6 - MSComm

Messaggioda Foto Utentesimo85 » 12 mag 2012, 11:49

Buongiorno a tutti,

Per un progetto che sto ultimando ho scritto un piccolo programma in VB6 per la comunicazione seriale RS232 tra il computer ed il microcontrollore. Fin qui tutto bene, il programma funziona bene ma vorrei aggiungere una piccola feature.

Nel programma ho aggiunto un semplice testo per specificare il numero della porta COM (visto che può essere differente da sistema a sistema), così:

Codice: Seleziona tutto
MSComm2.CommPort = Text4.Text


Quello che non mi piace è che se la porta non è riconosciuta, il programma si chiude sempre prima segnalando il messaggio di errore.
Ad esempio sul mio laptop in VirtualBox il numero di porta è 3, ma se lo imposto come 4, vuoi per distrazione o qualche altro motivo, il programma appunto termina la sua esecuzione.

Mi piacerebbe quindi impostare un controllo con un semplice if, visualizzando nel caso un mio messaggio di errore evitando la chiusura del programma, ma non so quale condizione impostare. :(

Qualcuno sà come posso fare?
Grazie in anticipo. iOi

O_/
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[2] Re: VB6 - MSComm

Messaggioda Foto Utenteangus » 12 mag 2012, 11:53

dovrebbe esserci un metodo "PortOpen" che restituisce true/false...
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.475 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4168
Iscritto il: 20 giu 2008, 17:25

0
voti

[3] Re: VB6 - MSComm

Messaggioda Foto Utentesimo85 » 12 mag 2012, 11:55

Si, con quello però per il momento riesco ad evitare anche la chiusura accidentale del programma nel caso che voglia aprire/chiudere la porta se lo è già.

Il mio problema è proprio il numero di porta.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

3
voti

[4] Re: VB6 - MSComm

Messaggioda Foto Utenteangus » 12 mag 2012, 11:59

Allora non ho capito il problema...
però ho trovato questo (se non lo hai già visto)
http://vbnet.mvps.org/index.html?code/s ... mscomm.htm
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.475 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4168
Iscritto il: 20 giu 2008, 17:25

0
voti

[5] Re: VB6 - MSComm

Messaggioda Foto Utentesimo85 » 12 mag 2012, 12:09

angus ha scritto:Allora non ho capito il problema...

Mi spiego meglio o almeno ci provo. Nel form principale ho inserito una casella di testo "Text4" nella quale posso appunto inserire un numero che viene assegnato a MSComm appunto così:
Codice: Seleziona tutto
MSComm2.CommPort = Text4.Text

Se però il numero inserito non corrisponde a nessun numero di porta COM riconosciuta dal sistema, il programma va in crash e si chiude.. :(

Ora do una occhiata più a fondo al link che mi hai riportato, sembra essere interessante.
Grazie.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

3
voti

[6] Re: VB6 - MSComm

Messaggioda Foto Utentecyclone » 12 mag 2012, 12:29

Ciao
Usa questa funzione:

Codice: Seleziona tutto
Function iscomportavailable(ByVal PortNum As Integer) As Boolean
        Dim fnum As Integer
       
        On Error Resume Next
        fnum = FreeFile
        Open "COM" & CStr(PortNum) For Binary Shared As #fnum
        If Err = 0 Then
           Close #fnum
           iscomportavailable = True
        End If
End Function


ti ritorna "true" se la com è valida

per elencare tutte le porte disponibili crea un button nSeriale e applica il seguente codice

Codice: Seleziona tutto
Private Sub mSeriale_Click()
        If mscomm1.PortOpen = True Then mscomm1.PortOpen = False
           Dim count As Integer, i As Integer
           For i = 1 To 32
           If iscomportavailable(i) Then
                  Frm.Combo1.AddItem i
           End If
         Next i
End Sub


Chiaramente questa è una linea guida ...... devi inserire gli oggetti e creare una form adeguata

ok?
Ultima modifica di Foto Utentecyclone il 12 mag 2012, 12:33, modificato 1 volta in totale.
Avatar utente
Foto Utentecyclone
86 2
New entry
New entry
 
Messaggi: 64
Iscritto il: 6 feb 2012, 11:38

2
voti

[7] Re: VB6 - MSComm

Messaggioda Foto UtenteTardoFreak » 12 mag 2012, 12:31

Ho avuto problemi indentici al tuo per un' applicazione identica alla tua (comunicazione con una seriale da PC a micro).
Dopo essere impazzito dietro a VB6 ||O , Visual Basic 2005/2008 ||O ho tagliato la testa al toro, mi sono studiato il Java ed oggi lavoro con le seriali senza problemi.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[8] Re: VB6 - MSComm

Messaggioda Foto Utentesimo85 » 12 mag 2012, 12:34

Foto UtenteTardoFreak, non sai quanto vorrei usare in questo momento C o Java, anche perché ho il codice più o meno pronto per Linux e per Win, ma devo usare VB6. ||O ||O

Foto Utentecyclone, ora applico la modifica da te suggerita e vedo se riesco ad adattarla al meglio al mio programmino.. :mrgreen:

Per il momento ringrazio tutti. :)
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

2
voti

[9] Re: VB6 - MSComm

Messaggioda Foto UtenteTardoFreak » 12 mag 2012, 12:36

Se devi per forza usare VB6 sappi che hai tutta la mia solidarietà. :(
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[10] Re: VB6 - MSComm

Messaggioda Foto Utentesimo85 » 12 mag 2012, 12:45

cyclone ha scritto:Chiaramente questa è una linea guida ...... devi inserire gli oggetti e creare una form adeguata.
OK?

OK. Il problema è solo che ... siccome con VB6 sono una capra e se devo dirla tutta mi fa venire l'orticaria :( credo di sbagliare qualcosa.

Per il momento ho inserito un button, ed anche una lista Combo :roll: ..
Però cliccando il button, non succede niente.. :cry:
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

Prossimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti