Problema con RS232 in VB2005

giovedì 25 settembre 2008 - 14.58

cable Profilo | Junior Member

Ciao a tutti,
ho il seguente problema con la gestione della seriale in VB2005.
Nel mio programma ricevo e invio stringhe in seriale utilizzando rispettivamente SerialPort1.ReadExisting e SerialPort1.Write(StrCom).

Ho però il problema che non riesco a svuotare il buffer di ricezione così, se ad esempio ci sono problemi e non mi arriva nulla,anzichè visualizzare il nulla visualizzo gli ultimi dati ricevuti.
Ho provato ad utilizzare i seguenti metodi:

FrmTxModem.SerialPort1.DiscardInBuffer()
FrmTxModem.SerialPort1.DiscardOutBuffer()
RxData = FrmTxModem.SerialPort1.ReadExisting
RxData = ""

ma non ottengo il risultato sperato (RxData è la variabile di tipo stringa dove metto i dati che ricevo in 232).

Grazie in anticipo
Ciao

Mauro

Vash Profilo | Junior Member

Ciao, non so se ho capito male ma è abbastanza strano che tu non riesca a svuotare il buffer!!

L'istruzione SerialPort1.ReadExisting dovrebbe memorizzarti tutto in una variabile e in automatico cancellarti il contenuto del buffer.

cable Profilo | Junior Member

Ciao,
hai capito bene.
Se ho qualche problema e non arrivano dati nuovi anzichè avere il buffer vuoto mi trovo dentro gli ultimi dati che ho letto.

Sai se c'è qualche istruzione alternativa per leggere/svuotare?

Bhooo

grazie

Vash Profilo | Junior Member

io ho sempre usato questi due metodi per svuotare il buffer:
1) miaVariabileStringa = SerialPort1.Readexisting()
2) SerialPort1.DiscardInBuffer() ' elimina i dati del buffer di ricezione

cable Profilo | Junior Member

Proverò a verificare meglio ma non faceva il suo dovere :((

Ti faccio sapere.

Grazie Ciao

rgirardi Profilo | Newbie

Dovresti controllare anche a come hai settato il controllo di flusso (handshake se non erro).

cable Profilo | Junior Member

Non ho messo controllo di flusso (handshake :none)

Bisogna settarlo diversamente?

rgirardi Profilo | Newbie

Cosa hai collegato alla seriale?
Ade esempio, di solito se hai una stampante seriale, queste hanno il controllo di flusso (quindi HARWARE") che server appunto a gestire il buffer.
Prova con harware o Xon/Xoff

cable Profilo | Junior Member

Alla seriale ho collegato un modem GSM Siemens .

Altra cosa:m'è capitato anche di collegare alla seriale una stampante ma anche in quel caso non ho messo controllo di flusso e sembra che tutto funzioni.
Mettere un controllo di flusso Hardware che vantaggi comporta se tutto funziona comunque?Minori rischi di errore?

Grazie.Ciao

rgirardi Profilo | Newbie

Si.. in quanto la gestione del buffer viene demandata all'hardware...
nel tuop caso prova a pensare cosa succede se invii al modem dati più velocemente di quanti lui riesca ad eseguirne: prima si riempie il buffer...e una volta riempito.. se tu li mandi cosa succede? vengono persi? vanno a sovrascrivere gli altri nel buffer?
Il controllo di flusso fa in modo che se il buffer è pieno, la seriale del tuo PC non possa mandare nulla.

cable Profilo | Junior Member

Appena ho un attimo lo inserisco e faccio qualche prova.

Grazie.Ciao
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