Leggere dati da PIC tramite RS232 con Visual Basic 2005 Express Edition

Salve a tutti. Ho il seguente obiettivo: Scrivere in visual basic 2005 un'interfaccia utente che consenta di leggere i dati inviati dal PIC tramite RS232 e poter fermare la lettura di questi dati attraverso un tasto form ad esempio col nome "stop lettura" tanto per intenderci. Da quanto sono riuscito a comprendere per leggere i dati da RS232 senza interruzioni devo impostare un LOOP come segue:

Using com1 As IO.Ports.SerialPort = _ My.Computer.Ports.OpenSerialPort("COM1") Do Dim Incoming As String = com1.ReadLine() If Incoming Is Nothing Then Exit Do Else returnStr &= Incoming & vbCrLf End If Loop End Using

Inserendo opportunamente questo codice in un Private Sub e avviando il debug non appena inizio la lettura il programma mi si pianta non svolgendo alcunchè. Da qualche parte ho letto che se in lettura il buffer della seriale è vuoto il programma non riesce più a leggere bloccandosi.... ma non ricordo dove ho intravisto questa cosa. Qualcuno di voi ha avuto qualche esperienza del genere? Vi ringrazio anticipatamente per ogni eventuale aiuto o suggerimento.

--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG
Reply to
Giuseppe Bauloti
Loading thread data ...

Giuseppe Bauloti ha scritto:

Non so aiutarti sul codice scritto, =E8 un po' diverso dal vecchio VB che conosco, per=F2 noto che non sono dichiarati i settings della porta seriale (velocit=E0 bit, e controllo di flusso). Inoltre: la logica di trasmissione del PIC =E8 giusta ? cio=E8 tieni conto e inverti opportunamente l'uscita se hai in mezzo un traslatore di livello cmos-rs232 o meno ? Marco

formatting link

Reply to
Marcick

Giuseppe Bauloti ha scritto:

Verifica con programmi come Minicom o altri terminali seriali se la comunicazione con il PIC funziona. Se funziona, il problema adrebbe posto su it.comp.programmare.win32

Non lavorare in questo modo. ReadLine, come suggerisce la parola stessa, aspetta una linea completa (terminata da un CRLF. Non sono sicuro se un CRLF o un LF e basta, ma comunque rimane in attesa fino alla fine della linea o alla chiusura del descrittore del file).

Lavora con le callback (con gli oggetti COM di VB hai degli eventi) Ottieni principalmente 2 vantaggi:

1) L'applicazione non rimane bloccata nel loop (ergo puoi cliccare su altri pulsanti) 2) É il SO che ti avvisa se ci sono nuovi caratteri in arrivo.

Dovrai, però, fare un lavoro: definire un buffer per riunire le stringhe di byte. Infatti se il PIC trasmette 1024 bytes, potresti riceverli tutti insieme, o anche spezzettati (fino ad arrivare ad un byte alla volta). Quindi dovrai riassemblare i vari pezzi e ricomporre il tutto per poterlo analizzare.

Luca

Reply to
Luca Pascali

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.