• Domingo 17 de Noviembre de 2024, 18:32

Autor Tema:  Enviar Y Recibir Caracteres Por El Puerto Serie  (Leído 4846 veces)

marleysoft

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Enviar Y Recibir Caracteres Por El Puerto Serie
« en: Sábado 10 de Noviembre de 2007, 21:33 »
0
Hola amigos del foro.

Hoy tengo un gran problema, Resulta que tengo una pequeña aplicación sencilla en Visual Basic.Net 2005, que maneja un serial port o puerto serie para enviar y recibir datos con un microcontrolador. Lo curioso de esto es que cuando envío el caracter (ÿ) o chr(255) o chr(254) entre otro tipo de estos caracteres, el computador los envia al microcontrolador como el caracter de interrogación (?).

Para descartar fallas del microcontrolador, nosotros probamos con Visual Basic 6.0 y alli funciona correctamente, además en nuestro pc hemos unido los pines 2 y 3 de recepción y transmisión de manera que todo lo que enviemos nos vuelva a llegar y como lo he dicho con VB 6.0 si funciona pero con Visual Basic.Net si envio el caracter ÿ me llega ?.

Ahora quisiera saber como hago en Visual Basic.Net 2005 de manera que si envío el caracter ÿ chr(255) me retorne ese mismo caracter.

No se si quieran ayudarme, pero si lo quieren hacer lo único que tienen que hacer es una aplicacíon sencilla en Visual Basic.Net, utilizar un control Serial Port, hacer las configuracines para enviar y mostrar los datos recividos, unir los pines 2 Y 3 de su máquina de manera que todo lo que envien llegue a su misma aplicación y lo puedan ver y por último probar enviando el carater ÿ o chr(255), se darán cuenta entonces que si envio este caracter recibo el caracter ?, y deberia recibir el mismo caracter ÿ. Algo que que comprobe es que el problema esta al enviar los datos por que el microcontrolador me recibe este signo interrogación ?, pero no se que puede estar pasando.

agradezco su colaboración.

sergios_

  • Nuevo Miembro
  • *
  • Mensajes: 20
  • Nacionalidad: es
    • Ver Perfil
    • http://masprogramacionymenosprozac.blogspot.com
Re: Enviar Y Recibir Caracteres Por El Puerto Serie
« Respuesta #1 en: Domingo 11 de Noviembre de 2007, 16:55 »
0
Hola marleysoft,

¿Podrías dar alguna pista  más de la forma en que estas tramistiendo desde VB.NET y cómo has configurado el puerto en el programa que envía y en el microcontrolador que recibe?

A simple vista me parece curioso que cuando envías "ÿ" (0xFF) recibes "?" (0x3F). Osea, que se ha cargado los dos bits de más peso en la transmisión. No sé si podrías estar mal configurado el número de bits por dato o el número de bits de stop. O a lo mejor no tiene nada que ver pero si puedes poner algo de cómo lo estas haciendo le intento echar un vistazo.

Un saludo
============================
"Si sale, sale. Si no sale, hay que volver a empezar.
Todo lo demás son fantasías." - Edouard Manet

http]

marleysoft

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Enviar Y Recibir Caracteres Por El Puerto Serie
« Respuesta #2 en: Domingo 11 de Noviembre de 2007, 19:31 »
0
Gracias por reponder sergios_.

Ahora mismo lo que mas me interesa es que se envien bien los valores al puerto COM, es decir,
enviar valores en el rango de 0 a 255. La recepcion la dejo para mas adelante.

He creado una ventanito con un boton en que se envian los datos.
Con un porgramita monitorizo los valores que llegan al COM1, que es el que utilizo.
Siempre que se envien valores iguales o inferiores a 127 la informacion llega correcta.
En cambio, para valores superiores, simpre llega al puerto el valor 0x3F(?). No se si sera un
error en la codificacion.

Código: Text
  1.  
  2.    Private serialPort1 As System.IO.Ports.SerialPort
  3.    
  4.    Sub Button2Click(ByVal sender As Object, ByVal e As EventArgs)
  5.     Serialport1.Write (chr(4))    ' -> Lleva el valor correcto (0x04)
  6.     Serialport1.Write (chr(130)) ' -> Error, llega el valor 0x3f
  7.   End Sub
  8.  
  9.  
  10.  

Salud  B)

sergios_

  • Nuevo Miembro
  • *
  • Mensajes: 20
  • Nacionalidad: es
    • Ver Perfil
    • http://masprogramacionymenosprozac.blogspot.com
Re: Enviar Y Recibir Caracteres Por El Puerto Serie
« Respuesta #3 en: Sábado 17 de Noviembre de 2007, 13:12 »
0
Hola marleysoft,

La verdad es que he andado con mucho trabajo últimamente y se me había olvidado mirar tu respuesta. He encontrado cuál parece ser el problema y espero que aún te sirva. El fallo parece que proviene de la codificación de los caracteres por defecto. A continuación te pongo un enlace a la descripción del método "serialport.write" en la MSDN. Si te fijas en la sección de comentarios verás que indica que por defecto todos los caracteres mayores que 127 se codifican como '?'. Para mandar caracteres por encima de 127 pone que tienes que cambiar el "Encoding".

msdn2.microsoft.com/es-es/library/ms143551(VS.80).aspx

Yo no puedo probarlo ahora, pero espero que tirando un poco del hilo a partir del enlace que te indico consigas que finalmente te funcione. Si lo consigues me gustaría ver cómo te ha quedado al final.

NOTA: Corta el link y pegalo en el navegador, al parecer todavía no tengo permisos para incluir enlaces en mis respuestas.

Un saludo.
============================
"Si sale, sale. Si no sale, hay que volver a empezar.
Todo lo demás son fantasías." - Edouard Manet

http]