leer puerto serie

06/03/2007 - 09:17 por Jordi Sanchez | Informe spam
Hola,

Con el control serie de .net 2005 quiero leer el buffer caracter a
caracter, de momento no puedo probarlo, cfreeeis que serviria asi?

SUB Port1_DataReceived(..
While Me.Port1.ReadBufferSize > 0
LEIDO += Me.Port1.ReadChar
End While

Y para abrir el puerto tengo que poner algun paramentro espedial a 1 para
recivir de 1 en 1 ?
Por ejemplo el parametro bitesToRead ??

gracias,

Preguntas similare

Leer las respuestas

#1 RFOG
06/03/2007 - 11:12 | Informe spam
Hola.

Para abrir el puerto serie necesitas conocer la velocidad, los bits de
inicio, parada y paridad, así como el control de flujo. Generalmente suele
ser: 9600 bauidos, 1 bit de inicio, 1 de parada y sin paridad. Y el control
de flujo a ninguno, pero nada te garantiza que sea así, depende del cable y
de lo que esté conectado al otro lado.

No entiendo de VB, pero creo que estás leyendo un char en lugar de un byte,
estás intentando leer 2 bytes a la vez. Lo que se debe leer de un puerto
serie (a no ser que al otro lado haya una aplicación .NET enviando), son
elementos de la clase Byte del net.

El parámetro BytesToRead no deberías tocarlo, ya que es en cierta medida el
tamaño del buffer interno de lectura, y si te equivocas tendrás una bonita
excepción cuando recibas algo.

"Jordi Sanchez" escribió en el mensaje de noticias
news:
Hola,

Con el control serie de .net 2005 quiero leer el buffer caracter a
caracter, de momento no puedo probarlo, cfreeeis que serviria asi?

SUB Port1_DataReceived(..
While Me.Port1.ReadBufferSize > 0
LEIDO += Me.Port1.ReadChar
End While

Y para abrir el puerto tengo que poner algun paramentro espedial a 1 para
recivir de 1 en 1 ?
Por ejemplo el parametro bitesToRead ??

gracias,





Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
La vida nunca nos depara lo que queremos en el momento apropiado. Las
aventuras ocurren, pero no puntualmente.
Respuesta Responder a este mensaje
#2 Jordi Sanchez
06/03/2007 - 12:04 | Informe spam
Hola,

gracias por tu respuesta... El puerto serie ya lo tengo abierto con los
parametros del host con el que comunico, no hay problema... y cuando recivo
algo ya lo leo y lo tengo todo en un string.

Pero mi pregunta viene dada porque deberia analizar los datos caracter a
caracter al leerlos, por un tema de caracteres especiales y no mezclar un
evento con el siguiente.




"RFOG" escribió en el mensaje
news:
Hola.

Para abrir el puerto serie necesitas conocer la velocidad, los bits de
inicio, parada y paridad, así como el control de flujo. Generalmente suele
ser: 9600 bauidos, 1 bit de inicio, 1 de parada y sin paridad. Y el
control de flujo a ninguno, pero nada te garantiza que sea así, depende
del cable y de lo que esté conectado al otro lado.

No entiendo de VB, pero creo que estás leyendo un char en lugar de un
byte, estás intentando leer 2 bytes a la vez. Lo que se debe leer de un
puerto serie (a no ser que al otro lado haya una aplicación .NET
enviando), son elementos de la clase Byte del net.

El parámetro BytesToRead no deberías tocarlo, ya que es en cierta medida
el tamaño del buffer interno de lectura, y si te equivocas tendrás una
bonita excepción cuando recibas algo.

"Jordi Sanchez" escribió en el mensaje de noticias
news:
Hola,

Con el control serie de .net 2005 quiero leer el buffer caracter a
caracter, de momento no puedo probarlo, cfreeeis que serviria asi?

SUB Port1_DataReceived(..
While Me.Port1.ReadBufferSize > 0
LEIDO += Me.Port1.ReadChar
End While

Y para abrir el puerto tengo que poner algun paramentro espedial a 1
para
recivir de 1 en 1 ?
Por ejemplo el parametro bitesToRead ??

gracias,





Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
> La vida nunca nos depara lo que queremos en el momento apropiado. Las
aventuras ocurren, pero no puntualmente.

Respuesta Responder a este mensaje
#3 RFOG
06/03/2007 - 12:43 | Informe spam
Entonces tienes un evento que se llama DataReceived que se disparará cada
vez que recibas un byte. Ahí puedes hacer tu análisis y decodificación o
lo que quieras.

O puedes crearte un hilo y estar leyendo continuamente del puerto serie y
actualdo en consecuencia. Algo así

bucle
{
try
{
si leer
decodificar
}
catch(Exception)
{
}
fin bucle

Cuando leas y no haya nada para leer se puede producir una excepción.

De todos modos no temas por la pérdida de bytes, no se va a producir
aunque vayas más lento tu decodificando. Otra cosa es que vayas SIEMPRE
más lento, entonces sí.

En Tue, 06 Mar 2007 12:04:31 +0100, Jordi Sanchez
escribió:

Hola,

gracias por tu respuesta... El puerto serie ya lo tengo abierto con
los
parametros del host con el que comunico, no hay problema... y cuando
recivo
algo ya lo leo y lo tengo todo en un string.

Pero mi pregunta viene dada porque deberia analizar los datos
caracter a
caracter al leerlos, por un tema de caracteres especiales y no mezclar un
evento con el siguiente.




"RFOG" escribió en el mensaje
news:
Hola.

Para abrir el puerto serie necesitas conocer la velocidad, los bits de
inicio, parada y paridad, así como el control de flujo. Generalmente
suele
ser: 9600 bauidos, 1 bit de inicio, 1 de parada y sin paridad. Y el
control de flujo a ninguno, pero nada te garantiza que sea así, depende
del cable y de lo que esté conectado al otro lado.

No entiendo de VB, pero creo que estás leyendo un char en lugar de un
byte, estás intentando leer 2 bytes a la vez. Lo que se debe leer de un
puerto serie (a no ser que al otro lado haya una aplicación .NET
enviando), son elementos de la clase Byte del net.

El parámetro BytesToRead no deberías tocarlo, ya que es en cierta medida
el tamaño del buffer interno de lectura, y si te equivocas tendrás una
bonita excepción cuando recibas algo.

"Jordi Sanchez" escribió en el mensaje de
noticias
news:
Hola,

Con el control serie de .net 2005 quiero leer el buffer caracter a
caracter, de momento no puedo probarlo, cfreeeis que serviria asi?

SUB Port1_DataReceived(..
While Me.Port1.ReadBufferSize > 0
LEIDO += Me.Port1.ReadChar
End While

Y para abrir el puerto tengo que poner algun paramentro espedial a 1
para
recivir de 1 en 1 ?
Por ejemplo el parametro bitesToRead ??

gracias,





Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
>> La vida nunca nos depara lo que queremos en el momento apropiado. Las
aventuras ocurren, pero no puntualmente.










Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Prefiero una locura que me entusiasme a una verdad que me abata.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida