Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Comunicazione sulla stessa porta seriale
lunedì 27 febbraio 2006 - 15.56
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
lcabrin
Profilo
| Newbie
27
messaggi | Data Invio:
lun 27 feb 2006 - 15:56
Salve a tutti,
sto realizzare un programma che utilizza una libreria di comunicazione seriale. Questa libreria dovrà comunicare sulla stessa porta seriale, ma non so come posso fare per scrivere e ricevere dati utilizzando la stessa COM.. Se provo a istanziare un nuovo oggetto porta mi da errore e mi dice, ovviamente che la porta è già utilizzata.. Qualcuno mi saprebbe dare un aiuto o dirmi dove trovare materiale a riguardo?
Grazie e ciao a tutti..
Loris
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
lun 27 feb 2006 - 23:21
>Salve a tutti,
>sto realizzare un programma che utilizza una libreria di comunicazione
>seriale. Questa libreria dovrà comunicare sulla stessa porta
>seriale, ma non so come posso fare per scrivere e ricevere dati
>utilizzando la stessa COM.. Se provo a istanziare un nuovo oggetto
>porta mi da errore e mi dice, ovviamente che la porta è già utilizzata..
>Qualcuno mi saprebbe dare un aiuto o dirmi dove trovare materiale
>a riguardo?
Ciao Loris,
che io sappia una volta che l'handle di una COM è aperto non possono usarlo anche altri processi. Se tu sei connesso ad Internet e provi a spedire un fax non ce la fai perchè la COM è bloccata.
Per lavorare sulla COM devi anadre di botta e risposta (io almeno lavoro così perchè è più semplice). Scrivi sula COM e leggi, scrivi e leggi e così via.
Ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
lcabrin
Profilo
| Newbie
27
messaggi | Data Invio:
mar 28 feb 2006 - 09:07
Ciao David,
grazie per la risposta. Purtroppo non sono molto informato sulla programmazione delle porte seriali.
Il mio problema infatti è che mi aspetto di sscrivere e leggere direttamente dalla COMx utilizzando i metodi: oggettoMiaPorta.Write(byte[]) e oggettoMiaPorta.Read(Data), utilizzando la stessa WinForm in cui tale oggetto viene creato. Purtroppo non è cosi..
Quello che devo creare è una comunicazione tra palmare e PC che su COM3 legga e scriva dati.. Se hai un buon consiglio te ne sarei grato...
Ciao e buona giornata.
Loris
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 28 feb 2006 - 10:46
>Il mio problema infatti è che mi aspetto di sscrivere e leggere
>direttamente dalla COMx utilizzando i metodi: oggettoMiaPorta.Write(byte[])
>e oggettoMiaPorta.Read(Data), utilizzando la stessa WinForm in
>cui tale oggetto viene creato. Purtroppo non è cosi..
oggettoMiaPorta che oggetto è ? Di che libreria ?
>Quello che devo creare è una comunicazione tra palmare e PC che
>su COM3 legga e scriva dati.. Se hai un buon consiglio te ne
>sarei grato...
Io so che l'ActiveSync è lì per quello. Non puoi passare tramite ActiveSync ?
Ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
lcabrin
Profilo
| Newbie
27
messaggi | Data Invio:
mar 28 feb 2006 - 10:52
Ciao David,
allora la libreria è della Franson, "private SerialNET.Port port", con queste impostazioni:
port = new SerialNET.Port();
port.OnRead += new SerialNET.OnRead(port_OnRead);
port.OnWritten +=new SerialNET.OnWritten(port_OnWritten);
port.OnForceClose += new SerialNET.OnForceClose(port_OnForceClose);
port.Parent = this;
port.ComPort = 3;
port.BufferSize = 0;
string s = "9600";
port.BaudRate = Convert.ToInt32(s);
port.Timeout = 1000;
port.Enabled = true;
Ecco, tutto funziona bene su due porte seriali distinte (es COM3 e COM4), ma come faccio a ricevere e ad inviare sulla stessa com?? Ho un form1 e un un form2 che in qualche modo si devono scambiare dati in base ad una richiesta: form1 richiede di leggere o scrivere dei dati e form2 risponde a questa richiesta inviando i dati sempre utilizzando la COM3. Come posso fare? Non so più che pesci pigliare!!
Grazie ancora.
Ciao loris
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 28 feb 2006 - 10:59
> tutto funziona bene su due porte seriali distinte (es COM3
>e COM4), ma come faccio a ricevere e ad inviare sulla stessa
>com??
Ripeto, prima invii Write, e poi ricevi Read.
>Ho un form1 e un un form2 che in qualche modo si devono
>scambiare dati in base ad una richiesta: form1 richiede di leggere
>o scrivere dei dati e form2 risponde a questa richiesta inviando
>i dati sempre utilizzando la COM3. Come posso fare? Non so più
>che pesci pigliare!!
Se hai due Form che usano la stessa COM non è possibile.
O ti passi l'handle da una Form all'altra ma sempre in modalità Leggi e poi scrivi, leggi e poi scrivi. Oppure devi chiudere la COM su una form e riaprirla sull'altra.
Una porta COM non è come un Socket TCP.
Ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
lcabrin
Profilo
| Newbie
27
messaggi | Data Invio:
mar 28 feb 2006 - 11:14
Si, ho provato a fare come dici, ma quando leggo sulla stessa porta mi dice che non sono presenti dati da inviare e Data(variabile passata) è vuota.. Non è che sai dove trovare un esempio anche scritto con una libreria diversa che mi spieghi come ragiona la porta seriale?
Scusami e grazie per la disponibilità
Ciao Loris.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 28 feb 2006 - 11:22
>Si, ho provato a fare come dici, ma quando leggo sulla stessa
>porta mi dice che non sono presenti dati da inviare e Data(variabile
>passata) è vuota.. Non è che sai dove trovare un esempio anche
>scritto con una libreria diversa che mi spieghi come ragiona
>la porta seriale?
Non ha funzionamenti particolari la porta seriale, inviaa e riceve dati come tutte le altre.
Quello che devi sapere tu è come funziona il device collegato alla seriale che è un altro paio di maniche. Cioè quando invia i dati ? Se li invia ? Come, in che formato ? Allora tu a quel punto dall'altro capo sai anche che funzioni chiamare, se sai che invia dei dati allora li puoi leggere con la Read, viceversa se non arriva niente sai che devi andare a scrivere.
Solitamente una porta risponde se invocata. Se tu ti colleghi a un qualsiasi porta di un qualsiasi server, HTTP, POP3, o altro, finchè tu non parli, lui non ti dice niente, escludendo il messaggio di benvenuto appena ti colleghi (che sarebbe una sorta di "pronto!" telefonico).
Ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
Torna su
Stanze Forum
Elenco Threads
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 !