ACCESSO ALLE PORTE COM con VB.net

lunedì 17 maggio 2010 - 13.24

ostoniv Profilo | Newbie

Salve,
chi mi puo' aiutare con un nuovo problema ropicapo: ))

Dunque, nel mio applicativo ho gestito le funzionalità di invio SMS dal cell cellulare ( il cell. viene collegato al pc tramite cavetto usb ). Per tale funzionalità ho creato la classe: "Cellulare" che contiene le funzionalita necessarie.
Effettuo le seguenti operazioni:
1) Dalla form principale Menu, chiamo una seconda form "Connessione" che mi permette di trovare la porta COM su cui è aggangiato il modem del cellulare. Per tale operazioni creo un oggetto della classe cellulare ed uso un metodo opportuno ( checkPort) e quindi il controllo SerialPort creato all' interno della classe. Tale metodo funziona correttamente, trova la porta COM interessata ( es. COM5) ed la visualizzO in una TextBOX, dopodichè di chiudo la connessione del controllo ( SerialPort.Close, SerialPort.Dispose) e distruggo l' oggetto cellulare.
2) Dalla form principale Menu, chiamo la terza form "Messaggi" per l' invio del sms. Anche per tale operazione creo un oggetto della classe cellulare, il metodo "InviaSms" e lostesso tipo di controllo SerialPort usato in precedenza. Quindi configuro l' oggetto SerialPort con la porta trovata in precedenza, ma quando vado aprire la porta, invocando il metodo: SerialPort.Open, compare il messaggio di errore: "La porta COM5 è già impegnata in un altro processo".

Quindi non riesco ad utilizzare la porta COM, trovata.

Un osservazione: se salto il passo 1, inchiodo direttamente il nome della porta COM, nel codice del pass 2, il tutto funziona correttamente.

Qualcuno puo' dirmi cosa sbaglio?

Grazie in anticipo

Vinc.


luxsor Profilo | Guru

Ciao Vincenzo,
>Tale metodo funziona correttamente, trova la porta COM interessata
>( es. COM5) ed la visualizzO in una TextBOX, dopodichè di chiudo
>la connessione del controllo ( SerialPort.Close, SerialPort.Dispose)
>e distruggo l' oggetto cellulare.
allora, se vuoi chiudere la connessione per poi riaprirla subito dopo, devi utilizzare solo SerialPort.Close.
Utilizzando il metodo DISPOSE non fai altro che "dare in pasto" l'oggetto al Garbage Collection in modo da liberare la memoria utilizzata.
Questo processo non è immediato, perchè dipende dal SO.

Prova ad utilizzare solo il metoto CLOSE.

A mio parere ti sconsiglio di utlizzare il cellulare, ma appoggiarti a qualche gateway SMS sul web, che tramite una semplice richiesta http ti permette di inviare sms.
Ti consiglio http://www.subitosms.it

Fammi sapere


------------------------
Luxsor

ostoniv Profilo | Newbie

Ciao luxsor,
grazie per la tempestiva risposta.

Riquardo all' uso del solo metodo close, avevo già fatto questo tentativo: ho utilizzato solo il metodo close e poi insieme quello dispose.

Quello che non mi spiego come mai se utilizzo la porta COM da due form diverse non riesco ad utilizzarla, se invece la uso dalla stessa form la posso usare ripetutamente ( con i metodi Close, Open) ?

L' esigenza di mandare gli sms dal cell. è dovuta al fatto che il cliente non sempre la connessione internet disponibile. Poi analizzando i prezzi che offrono su internet, l' sms viene a costare sui 13,7 Cent. Mentre con i vari operatori in media costa da 10-15 cent.


Vinc.



luxsor Profilo | Guru

Utilizzi direttamente il controllo SerialPort o utilizzi la classe?

Posta il codice che utilizzi.


------------------------
Luxsor

ostoniv Profilo | Newbie

Utilizzo la classe, creo un nuovo oggetto serialport nella mia classe.




luxsor Profilo | Guru

Prova ad utilizzare il controllo.

Fammi sapere


------------------------
Luxsor
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5