Saludos! Pues queria compartir con vosotros una duda, estoy desarrollando un sistema con un microcontrolador y necesito en mi diseño realizar la comunicacion serie del ordenador con el microcontrolador.
La aplicacion de VB almacena en un array 4 valores, y cuando estan todos los manda por el puerto serie. El microcontrolador recibe los 4 bytes, y responde con el de mayor valor. El programa del microcontrolador lo he comprobado usando el hyperterminal y funciona bien, sin hacer nada extraño.
El problema es que por mas que he buscado, no encuentro un codigo para trabajar en Visual Basic Express con datos tipo byte a traves del puerto serie. A partir de algunas rutinas que trabajan con cadenas de caracteres, escribi el siguiente codigo :
'Se declara 1 delegado_Tendra como dato de referencia una variable data del tipo Byte
Delegate Sub delegado(ByVal data As Byte
...........
Private Sub sp_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles sp.DataReceived
Dim recepcion As Byte
recepcion = sp.ReadByte
Dim escribeport As New delegado(AddressOf Me.mostrar)
Me.Invoke(escribeport, recepcion)
End Sub
Sub mostrar(ByVal b As Byte)
Consola.AppendText("El Puerto Recibe : " & b)
End Sub
Para enviar datos a traves del puerto serie utilizo la instruccion:
sp.WriteLine(dato(i))
Y esta instruccion no me manda tampoco datos tipo bytes, supongo que mandara en formato cadena de caracteres, o no se.
Para comprobar la correcta programacion del microcontrolador uso el hyperterminal, y va todo bien sin problemas.Asi que os escribo aqui, por si alguien puede ayudarme a solucionar este problema.
En la recepcion, el microcontrolador solo manda un byte, pero en la aplicacion es como si recibiera mas y ademas sin sentido:
Puerto Recibe : 22
3El Puerto Recibe : 4
56a3
78