Comunicación serial con Visual Basic 2008

Hola META de momento le he pedido si me puede mandar el codigo,pero como te he dicho me da la sendacion que la luz la enciende el pulsador no el dato recivido,enfin esperaremos.De lo que me dices de retomar el asunto te dire que yo nunca lo he dejado si no te molesto mas es porque me dijiste te estabas de examenes,En cuanto este Sr me conteste te dire lo que me dice,no me as dicho nada de lo que te an puesto en microsof.
Otro punto yo he visto como la que te puse que tienen termostato,yo tengo el programa de un termostato para gobrernarlo desde el pc y desde el mismo sitiocuando quieras empezamos con ello,saludos pepe
 
Hola meta mira haber si sacas algo en claro,segun el que me lo puso funciona,a mi no





Option Strict Off

Public Class Form1
Private WithEvents PUERTO As New System.IO.Ports.SerialPort

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each PUERTO As String In My.Computer.Ports.SerialPortNames
ComboBox1.Items.Add(PUERTO)
Next

End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

PUERTO = My.Computer.Ports.OpenSerialPort(ComboBox1.Text)
PUERTO.BaudRate = 9600 ' 115200
PUERTO.Parity = IO.Ports.Parity.None
PUERTO.DataBits = 8
PUERTO.StopBits = IO.Ports.StopBits.Two
If PUERTO.IsOpen Then
TextBox5.Text = "EL PUERTO IS OPEN"
End If
Me.Refresh()


If PUERTO.ReadExisting.Contains("41") Then '("41")
TextBox1.BackColor = Color.Red
ElseIf PUERTO.ReadExisting.Contains("B") Then
TextBox2.BackColor = Color.Red
ElseIf PUERTO.ReadExisting.Contains("") Then
TextBox3.BackColor = Color.Red
ElseIf PUERTO.ReadExisting.Contains("D") Then
TextBox4.BackColor = Color.Red
ElseIf PUERTO.ReadExisting.Contains("a") Then
TextBox1.BackColor = Color.Beige
ElseIf PUERTO.ReadExisting.Contains("b") Then
TextBox2.BackColor = Color.Beige
ElseIf PUERTO.ReadExisting.Contains("c") Then
TextBox3.BackColor = Color.Beige
ElseIf PUERTO.ReadExisting.Contains("d") Then
TextBox4.BackColor = Color.Beige

End If

' PUERTO.Close()
' TextBox5.Text = "EL PUERTO IS CLOSED "



End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


Dim A() As Byte = {&H41}
PUERTO.Write(A, 0, A.Length)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim B() As Byte = {&H42}
PUERTO.Write(B, 0, B.Length)


End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click


Dim C() As Byte = {&H43}

PUERTO.Write(C, 0, C.Length)



End Sub


Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click


Dim D() As Byte = {&H44}

PUERTO.Write(D, 0, D.Length)


End Sub

End Class

dETECTAR
 
Hola Willyfv El proyecto sigue igual, en el tutorial ultimo envia y recibe bien los caracteres,pero lo que no funciona es que segun el caracter haga cambiar el color de los textbox,saludos pepe

Hola Willyfv

Hola ha todos estoy haciendo un interfaz para comunicarme con microcontrolador.Lo de enviar y recibir dato fuciona perfectamante lo que necesito es que
segun el caracte se me aloje en un sitio ò en otro por ejen 1ºTextBox al recibir "A" se ponga rojo,al recibir "a" torne a blanco 2ºTextBox al recibir "B" se ponga
rojo,al recibir "b" torne a blanco 3º textBox al recibir "C" se ponga rojo y al trecibir "c" blanbo 4ºTextBox al recibir "D" se ponga en rojo y "d" blanco.
El codigo que pongo a continuacion funciona todo.Lo que esta puesto entre +++++ no funciona esto me lo puso un compañero del foro,pero al igual falta algo
porque a mi no me funciona y podeis ayudarme os lo agradezco gracias pepe


Imports System.IO.Ports

Public Class Form_Principal
Dim Recibidos As String
Dim A() As Byte = {&H41}
Dim B() As Byte = {&H42}



Public Sub New()
' Llamada necesaria para el Diseñador de Windows Forms.
InitializeComponent()
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
If Not SerialPort1.IsOpen Then
Try
SerialPort1.Open()
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End If
AddHandler SerialPort1.DataReceived, AddressOf Recepcion
End Sub

Private Sub Recepcion(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
Recibidos += SerialPort1.ReadExisting()
Me.Invoke(New EventHandler(AddressOf Actualizar))

End Sub


Private Sub Actualizar(ByVal s As Object, ByVal e As EventArgs)
TextBox1.Text = Recibidos




'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

If SerialPort1.ReadExisting.Contains("A") Then '(NOTA)
TextBox1.BackColor = Color.Red

ElseIf SerialPort1.ReadExisting.Contains("a") Then
TextBox2.BackColor = Color.PowderBlue




ElseIf SerialPort1.ReadExisting.Contains("B") Then
TextBox2.BackColor = Color.Red

ElseIf SerialPort1.ReadExisting.Contains("b") Then
TextBox2.BackColor = Color.PowderBlue




Else If SerialPort1.ReadExisting.Contains("C") Then
TextBox3.BackColor = Color.Red

ElseIf SerialPort1.ReadExisting.Contains("c") Then
TextBox3.BackColor = Color.PowderBlue




If SerialPort1.ReadExisting.Contains("D") Then '
TextBox4.BackColor = Color.Red

ElseIf SerialPort1.ReadExisting.Contains("d") Then
TextBox4.BackColor = Color.PowderBlue
End If

NOTA
Aqui si coincide el caracter ("A") ò ("41") tendria que leer
la siguiente instrucion si no se la salta.
Si dejo en blanco el ("") si lee la siguiente instruccion pero lo hace con todos los caracteres.


'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim mBuffer As Byte() = New Byte(0) {}
mBuffer(0) = &H41 'Aen ascii
SerialPort1.Write(mBuffer, 0, mBuffer.Length)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim mBuffer As Byte() = New Byte(0) {}
mBuffer(0) = &H42 'B en ascii
SerialPort1.Write(mBuffer, 0, mBuffer.Length)

End Sub

Private Sub Button3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim mBuffer As Byte() = New Byte(0) {}
mBuffer(0) = &H43 'C en ascii
SerialPort1.Write(mBuffer, 0, mBuffer.Length)

End Sub

Private Sub Button4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim mBuffer As Byte() = New Byte(0) {}
mBuffer(0) = &H44 'D en ascii
SerialPort1.Write(mBuffer, 0, mBuffer.Length)
End Sub
End Class
 
Última edición:
Saludos,

@depepees tu quieres que solo cambie el fondo de color de la caja texto o lo que esta escrito en la caja de texto...espero tu respuesta para darte una mano.....

De todas forma te envio un ejemplo....
 

Adjuntos

  • CAMBIO DE COLOR CAJA DE TEXTOS.rar
    57.6 KB · Visitas: 68
Última edición:
No se mucho de Visual Basic, pero este año por Octubre, en mi último año, daremos programación con Visual Basic 2005 .NET y SQL express 2005. Al final aprenderé VB .net por la fuerza bruta.
 
Hola Willyfv El caso es el siguiente estoy haciendo un interfaz con varios pulsadores,yvarios texboxt uno encima de cada pulsador cada pulsador me envia un caracter por el puerto serie y lo reciben varios microcontroladores y los microcontroladores responden cada vez que cabian de estado bajo ò alto
Por ejen el 1º micro me manda "A" si esta en alto y "a" en bajo 2º micro "B" alto "b" bajo 3º micro "C" alto
"c" bajo 4º micro "D" alto "d" bajo.Lo que necesito es que cuando en el interfaz reciba estos caracteres cada uno en enciendan y apagen los textbox 1ºtextbox "A" rojo"a"blanco 2ºtextbox "B"rojo "b" blaco y asi con los demasosea que cambien de color al recibir el caracter,Por cierto vivi muchos años en venezuela,saludos pepe

Por supuesto que cambien de color al recibir el caracter los textbox nos caracteres no tienen porque salir en los textbox en los textbox va la inscricion a donde pertenece el micro.Puntuando ento es para encender y apagar varias habitaciones,y tiene que se asi porque los micros tambien llevan un pulsador y se puede apagar y encender indistintamente desde los dos
 
Última edición:
Ok,Deppepees los pulsadores van con el microcontrolador y a la vez en visaul basic o solo en visual basic o solo con el micro?

Meta yo tampoco soy el Dios en programacion pero como todos aqui investigamos y prestamos en apoyo mas cuando anosotros nos gusta el diseño y el desafio.....

Saludos
 
Hola Willyfv,Intentare explicarme mejor.Supongamos quetenemos un interfaz con 4 pulsadores y 4 textbox, estos 4 pulsadores envian un dato cada uno por enjem 1º "A" 2º "B" 3º"C" 4º"D" y
lo reciben 4 micros que estan en una linea RS485 en distintos sitios y no se ven fisicamente ni el micro ni la bombilla que encienden y apagan.a su vez cada micro tiene un pulsador que hace de conmutador con el pulsador del interfaz osea que se puede apagar y endender indistintamente desde el interfaz y desde el mismo micro todo lo anterior funciona bien, lo que necesito es que los textbox cambien de color al recibir el dato desde el micro.Por lo tanto el funcionamiento es que cuando el interfaz reciba los datos desde los micros cambien de color
desde el 1º micro el interfaz recibe "A" encendido "a" apagado desde el 1º micro y por tanto el
1º textbox al recibir "A" se ponga rojo y "a" en blanco,asi con los dema solo que el 2º textbox con "B"y"b" 3ºcon"C"y"c" y 4º con"D"y"d". Si sigues teniendo dudas me lo dices,si necesitas saber como funcionan los micros que es mas ò menos en lo que me defiendo.Saludos pepe
 
ok Depepees si ya tienes la comunicacion con Visual basic y el micro ademas todo te esta funcionando bien lo unico que tendria que agrerar en Visual Basic es lo siguiente:

If a = "A" Then

Text1.BackColor = QBColor(12)
End If

If a = "B" Then
Text2.BackColor = QBColor(12)
End If

If a = "C" Then
Text2.BackColor = QBColor(12)
End If


If a = "a" Then

Text1.BackColor = QBColor(15)
End If

If a = "b" Then
Text2.BackColor = QBColor(15)
End If

If a = "c" Then
Text2.BackColor = QBColor(15)
End If

Esto solo pregunta si la letra recibida por el puerto es igual si lo es cambia a color rojo , esto seria para las letras A,B,C y para las letras a,b,c cambia de color blanco
 
Ok Willyfv ahora es tarde pero mañana lo miro conectando los micro y te digo algo,gracias y saludos pepe

Hola Willyfv he estado mirando y aparentemente funciona pero tiene algo,si mando "A" se pone rojo el 1º
textbox y ya no pasa nada mas,si apago y mando "a" se pone el 1º textbox de color blanco y no pasa nada mas envies el caracter que envies,haciendo pruebas he deducido que funciona bien pero solo el 1º caracter por lo cual deduzco que despues de recibir el 1º caracter hay que borrar el buffer recibido y eso no se hacerlo.Te dire en en esto de visual basic soy novel gracias pepe

Si Willyfv he estado probando mejor y sin duda pasa eso que recibe bien el 1º caracte si por ejen mando
"B" el 2º textbox se pone rojo pero despues tengo que apagar y encender otra vez para que cuando mande otra vez "B" el micro al estar en alto,pasa ha bajo y entonces si se pone en blanco, osea que seguro que es lo que he dicho.Hay que borrar el buffer recibidos despues de recibir cada caracter ò ponerle un relog que cada 20 ms borre el buffer.Eso tanpoco se hacerlo.gracias pepe
 
Última edición:
ok, pepe no tengo VB2010, enviame el programa en de VB en Word y de igual forma el circuito del micro con el programa para estudiarlo meor y asi te ayudo.

Saludos
 
http://www.fileupyours.com/view/303869/Nueva carpeta.rar

Hola Willyfv te he puesto el VB en el wold el esquema de proteus en el pain y el ASM el programa asm esta hecho para que un micro pueda ocupar cualquier posicion de 32 enpezando A,B,,C,D,E,F,G para que el micro te funcione bien con su direccion tiene que estar bien puesto lo 5 interruptores por ejem 00000
solo recibe A y envia Aya,00001 solo recibe B y envia Byb y asi hasta 32 mira el asm y ya me diras.saludos pepe
 
Última edición:
Hola Willyfv no he podido abrir un menage tuyo, mi mail es depepees@hotmail.com.Saludos pepe

Hola Willyfv,ya lo he gabierto de lo que dices el micro envia A ò a B ò b todo eso funciona bien el que envia h41 en vez de "A" es el interfaz de VB y eso tambien funciona ahora te paso en wold el asm,saludos
pepe

http://www.fileupyours.com/view/303869/Nueva carpeta.rar

Willyfv lo que creo que pasa es lo siguiente: el 1º dato entra bien sea en el textbox que sea el 2 no creo
que al leer el 2º lee el 1º y el 2º se tendria que despues de poner el color poner una instruccion que borre
el buffer recibidos.saludos pepe

Por ejem
If Recibidos ="A" then
Textbox1.Backcolor=red
Aqui borrar Recibidos
end If
 
Última edición:
pepe tu codigo esta de esta forma





Private Sub Recepcion(ByVal Sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
Recibidos += SerialPort1.ReadExisting()
Me.Invoke(New EventHandler(AddressOf Actualizar))
End Sub



prueba de esta manera y me dices
Private Sub Recepcion(ByVal Sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
Recibidos = SerialPort1.ReadExisting()
textbox1.AppendText( Recibidos )
End Sub



por eso es que no nos entedemos tu manejas VB 2010 y yo el vb.6 ademas manejo bien el lenguaje pic basic y por lo visto tu el ensamble, lo anterior lo investigue en esta pag
http://www.todopic.com.ar/foros/index.php?topic=28752.0
 
Por ejem
If Recibidos ="A" then
Textbox1.Backcolor=red

end If

Hola Willyfv Si pongo el tricito de codigo que has puesto me da error en lo siguiente



If Recibidos ="A" error
Textbox1.Backcolor=red
end If


yo insisto en que como esta funcionando ahora funciona todo pero solo entra el 1 caracter
Yo Pregunto hay alguna instruccion para borra el contenido de Recibidos ò de SerialPort porque
a mi parecer cuando lee el 2 caracter esta leyendo el 1 yo lo he probado con otro programa
donde tengo un textbox para saca datos y otro para entrar datos y si pongo "A" funciona y si
pongo AB no .saludos pepe

Willyfv he intentado ponerte en la carpeta el HEX de pic 16f88 pero no me deja,antes tenia Win XP y
ahora me he puesto el Win 7 de todas forma lo intentare con otro opdenador,supongo que teniendo el Hex
podas grabar el pic.Te dije que yo soy novel en lo de VB porque esta instruccion que buscamos en emsablador es sensilla.De todas formas insisto en ponerle despues del color al textbox una instruccion que borre el buffer recibido.saludos pepe

http://www.fileupyours.com/view/303869/Rs 30-88 ven.rar

Hola Willyfv,ahora paso ha explicarte nejo,se trata de hacer un interfaz con 30 puntos osea poder gobernar 30 puntos.Ahora va todo bien pero me gustaria añadirle un par de cosa, una de ellas es un controlador de temperatura para el aire acondicionado o calefaccion eso ya lo tengo hecho en VB y en ASM si los necesitas te los mando.ahora tanbien me gustaria ponerle un relog para que haga lo mismo que hace los pulsadores,y asi poder encender y apagar una luz a determinada hora, pero que a una hora se encienda y a otra ora se apage lo cual no se si son necesarios dos relojes en fin creo que es lo que falta,saludos pepe
 
Última edición:
Atrás
Arriba