Hola Patricia, yo tengo trabajos hechos con rs232, pero bajo VFP, no obstante 
los míos se limitan a "escuchar" el puerto, la info y la long del string que 
recibo en el puerto no depende de mí sino del que transmite. En el caso mío son 
centrales telefónicas que emiten un string de long fija delimitados  por un 
"fin de linea". Lo que hago es leer ese string hasta encontrar ese "fin 
delinea" y así sucesivamente.
Espero que te sea útil.

Saludos.
Sergio.



From: Patricia Banfi 
Sent: Thursday, December 02, 2010 8:30 AM
To: vbnet List Member 
Subject: [vbnet] Lectura de un puerto RS232


      Muchas Gracias Carlos, lo voy a intentar y después te cuento.

      --- El mié 1-dic-10, Carlos Peix <[email protected]> escribió:


        De: Carlos Peix <[email protected]>
        Asunto: [vbnet] Lectura de un puerto RS232
        Para: "vbnet List Member" <[email protected]>
        Fecha: miércoles, 1 de diciembre de 2010, 22:05


        Una cosa mas, en el punto 1 dije "por ahora" y me olvide de aclarar el 
despues. Dato que potencialmente tengamos acceso concurrente al buffer, 
deberias sincronizar el acceso al mismo, una vez que tengas lo demas resuelto 
te ayudamos con esto ultimo. 

        ----------------------------------
        Carlos Peix


        2010/12/1 Carlos Peix <[email protected]>

          Hola Patricia, 


          Es normal que te pase lo que describis, deberias hacer las cosas de 
otra manera. No me animo a escribir codigo VB.NET asi que te planteo la idea.


          1) Deberias crear un buffer, por ahora digamos que fuera una variable 
static (Shared en VB).


          2) Deberias crear una funcion muy parecida a la que describis pero 
que agregue al buffer lo que recibe, NADA MAS!


          3) Hacer otra funcion que se dispara periodicamente, por ejemplo con 
un timer, que analice el buffer y extraiga los mensajes de acuerdo a los 
caracteres de delimitacion. Por supuesto que esta funcion deberia retirar el 
mensaje leido desde el buffer.


          La idea es desacoplar la lectura del puerto del analisis del buffer.

          ----------------------------------
          Carlos Peix


          2010/12/1 Patricia Banfi <[email protected]>

                  Hola,

                  Trabajo con vb 2005 , estoy recibiendo datos por el puerto 
serial COM1 con la siguiente sub (está hecha sólo para hacer pruebas de la 
interfase)
                  .....
                  AddHandler Puerto.DataReceived, AddressOf Recibir 
                  ......

                  Private Sub Recibir(ByVal Sender As Object, ByVal e As 
IO.Ports.SerialDataReceivedEventArgs) 
                  Dim RES As String 
                  Dim mBuffer As Byte() = New Byte(Puerto.ReadBufferSize) {} 
                  Try 
                         Puerto.Read(mBuffer, 0, Puerto.ReadBufferSize)
                         If mBuffer(0) = Hex(5) Then 
                            Me.mensa.Text = "EMPIEZA LA COMUNICACION" 
                            MandarACK()
                         ElseIf mBuffer(0) = Hex(2) Then 
                            Me.mensa.Text = "SE ESTAN COMUNICANDO" 
                            MessageBox.Show(mBuffer.Length)
                            RES = 
System.Text.ASCIIEncoding.ASCII.GetString(mBuffer)
                            Me.txtRecibido.Text = RES 
                            SW1.WriteLine(RES)
                            MandarACK()
                         ElseIf mBuffer(0) = Hex(4) Then 
                            Me.mensa.Text = "TERMINÓ LA COMUNICACION" 
                         Else 
                            Me.mensa.Text = "recibió " & 
Convert.ToChar(mBuffer(0)) 
                  End If 
                  Catch ex As Exception 
                  MessageBox.Show(ex.ToString)
                  End Try 
                  End Sub 

                  La longitud del buffer es 4097, pero el getstring(mbuffer) me 
devuelve sólo 8 caracteres. Sé que recibo más de 8 porque probé con 
HyperTerminal.
                  Probé con readexisting y no anduvo. Es la primera vez que 
trabajo con un RS232.

                  Alguna sugerencia ?
                  Muchas Gracias.
                  Patricia 

             



     

 

Responder a