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
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SerialPort1.Write("<")
End Sub
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í
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim rx As Integer
rx = SerialPort1.ReadByte()
End Sub
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!