• Jueves 18 de Abril de 2024, 19:06

Autor Tema:  Comunicación serial con Visual Basic 2008  (Leído 4702 veces)

pic-man

  • Miembro activo
  • **
  • Mensajes: 54
    • Ver Perfil
    • http://micropic.wordpress.com
Comunicación serial con Visual Basic 2008
« en: Sábado 1 de Noviembre de 2008, 15:03 »
0
Compañeros foreros, quiero ver si me pueden ayudar con un problema que tengo. Resulta que estoy realizando un proyecto en el cual debo comunicar un microcontrolador PIC 16F con una computadora. Lo que es la programación del pic lo domingo pero no se como hacerlo en la computadora.

Dado que no se programar decidí probar el Visual Basic Express 2008. Para la comunicación serial uso el componente SerialPort de Visual Basic 2008, pero algo no hago bien. Tengo que enviar tres caracteres distintos, uno dando click en el botón respectivo, los caracteres son <, = y >. Hago doble click en algún botón e ingreso el siguiente código

Código: Text
  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.     SerialPort1.Write("<")
  3. End Sub
  4.  

el caracter < lo pongo entre comillas porque tengo entendido que asi se deben mandar las strings, aunque no se si haya alguna otra manera de hacerlo, si deba escribirlo en hexadecimal o si hay que hacerlo de otra manera. Después el pic al recibir uno de esos caracteres debe dar una respuesta a la PC para que sepa que el envío tuvo éxito. En este caso el pic envia un 1 en ASCII (osea un 0x31 hexadecimal), en visual basic intento recibirlo así

Código: Text
  1. Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
  2.     Dim rx As Integer
  3.     rx = SerialPort1.ReadByte()
  4. End Sub
  5.  

Pero de nuevo no se si esa es la forma correcta de recibir un dato. Espero me puedan ayudar porque al probar el programa con el pic no funciona. Para ver que el pic no fuera el del problema programé otro pic que envía esos 3 caracteres y el otro al recibirlos si da una respuesta satisfactoria, entonces el problema debe estar en Visual Basic. Para adaptar los niveles ttl del pic a rs232 de la pc uso este circuito http://www.pablin.com.ar/electron/circu ... /index.htm el circuito funciona, ya lo he probado con éxito en otras ocasiones así que solo me queda culpar a mi programación en visual basic.

¿Alguien me puede ayudar? Muchas gracias!

pic-man

  • Miembro activo
  • **
  • Mensajes: 54
    • Ver Perfil
    • http://micropic.wordpress.com
Re: Comunicación serial con Visual Basic 2008
« Respuesta #1 en: Domingo 2 de Noviembre de 2008, 19:16 »
0
Encontré la solución, el código correcto es:

Código: Text
  1.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         Dim data(1) As Byte
  3.         data(0) = Asc(1)
  4.         SerialPort1.Write(data, 0, 1)
  5.         Label1.Text = data(0)
  6.     End Sub
  7.  

En ese caso estoy transmitiendo un 1 en ASCII, la función Asc() obtiene el código numérico correspondiente al caracter ASCII, siempre es más fácil escribir el símbolo ASCII que escribir un 49.

Me acabo de dar cuenta que puse este tema en un subforo equivocado, no se por que no vi el VB.Net cuando escribi esto.