Necesito leerlo porque analizando ese carácter me doy cuenta cuando comienza y 
termina la transmisión y si tengo que evaluar los dos check digit que vienen al 
final de algunos registros.Hasta ahora no lo hice porque estaba probando la 
recepcion.En el archivo adjunto fuí grabando lo que entró por el puerto serie. 
Gracias

--- El mar 7-dic-10, Cristian A. Lòpez <[email protected]> escribió:


De: Cristian A. Lòpez <[email protected]>
Asunto: [vbnet] Lectura de un puerto RS232
Para: "vbnet List Member" <[email protected]>
Fecha: martes, 7 de diciembre de 2010, 19:44






Salta el primer carácter, no lo leas, me parece la más fácil.
 
Saludos.
 
Cristian Lopez
 

De: [email protected] [mailto:[email protected]] En nombre de Patricia Banfi
Enviado el: Martes, 07 de Diciembre de 2010 14:17
Para: vbnet List Member
Asunto: [vbnet] Lectura de un puerto RS232
 





Encontré otras respuestas en el Spam.

Para no seguir complicando las cosas empecé de nuevo desde cero.

Ahora ví con readexisting traigo en un string lo que  necesito ( siempre que 
tenga el mensaje que muestra la longitud del buffer,si no trae de a 8). Cambié 
el mensaje por 

Threading.Thread.Sleep(1000) (más por intuición que por conocimiento) y anda ok.

 

Ahora que solucioné lo más complicado me queda algo que debe ser simple:

el primer caracter del string que recibo es un valor hexadecimal y no sé cómo 
compararlo contra un char.

 

De nuevo gracias a todos.

Patricia

 

 



--- El mié 1-dic-10, Angel "Java" Lopez <[email protected]> escribió:


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


Hola gente!
Hmm… intentaria revisar los parametros, y ver de manejar la puerta por eventos. 
Ejemplo simple:
 
http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived.aspx
 
Otro ejemplo, presentado en un enlace de:
http://www.vbforums.com/showthread.php?t=530790
http://www.vbforums.com/attachment.php?attachmentid=68715&d=1233255133
 
Pero probaria con el primer ejemplo, parece mas simple.
 
Nos leemos!
 
Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez
 
 

From: [email protected] [mailto:[email protected]] On Behalf Of Patricia Banfi
Sent: Wednesday, December 01, 2010 5:29 PM
To: vbnet List Member
Subject: [vbnet] Lectura de un puerto RS232
 





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