Visual basic

Hola, mi pregunta es la siguiente:
Hola tengo 3 minitransmisores de bolsillo (tipo alarma de vehículo).
Mande a fabricar un circuito que reconozca cada transmisor y mande una trama identificatoria de cada transmisor al puerto serial de la pc...
Transmisor 1 genera en ascii:
:001
Transmisor 2 genera en ascii:
:002
Transmisor 3 genera en ascii:
:003
En realidad este valor ascii lo puedo ver con un software para monitorear el puerto... Pero si hago la conversión a binario con el mismo software esto me genera:
Transmisor 1 genera en binario:
00111010 00110000 00110000 00110001 00001010 00001101
TRANSMISOR 2 GENERA EN BINARIO:
00111010 00110000 00110000 00110010 00001010 00001101
TRANSMISOR 3 GENERA EN BINARIO:
00111010 00110000 00110000 00110011 00001010
Lo que necesito en "visual basic 6" es que cuando entre al puerto en código identificatorio de cada transmisor, se ejecute otra instrucción... Por ejemplo cambie el color de un shape...
Es para un programa ubicación en mapas...

3 respuestas

Respuesta
1
Lo primero que tines que hacerte es conseguir el MSComm Control este es un ActiveX Redistribuible con cualquier version de Visual Basic, y puede ser utilizado en cualquier otro entorno incluyendo delphi y BCB; No se que tan experto estés en al señalización de puertos en el PC, yta que estos se distribuyen alguna veces de manera no lineal, pero me imagino este no es tu caso, una vez ubicado el puero ya sea COM1, Com2.. o cualquiera donde este ubicado la entrada serial, direccionas el MSComm, a ese puerto, lo demás es leer y adicionar los eventos según quieres tu que sucedan, te envío una página donde están los ejemplos de recepción y envío de señales usando visual basic.
http://www.ontrak.net/visual.htm
http://www.control.com/1026195146/index_html
http://support.microsoft.com/?scid=kb;es;327362
Éxitos, y cualquier duda, no dudes en preguntar
Respuesta
1
Si estas seguro que ue recibes binario entonces pregunta algo como:
If MSComm1.InBufferCount Then
'Leo el Buffer la linea que viene de la planta tel,
'Input lee y limpia el buffer
strLLamada = MSComm1.Input
'Analizo lo que llego
'Una linea con una llamada
frmConsulta.lblEntrada.Text = frmConsulta.lblEntrada.Text & strLLamada & vbCrLf
If InStr(1, strLLamada, vbLf) > 0 Then
frmConsulta.AnalizaLinea Mid$(strLLamada, 1, InStr(1, strLLamada, vbLf))
strLLamada = Mid$(strLLamada, InStr(1, strLLamada, vbLf) + 1)
End If
End If
Como puedes apreciar en el If con INSTR analizo lo que veine en la cadena que recojo del control MSComm, de esa amnera tu puedes preguntar que es lo que viene, como ya tienes identificado lo que te envía cada uno de los dispositivos, solamente pregunta por cada dispositivo y si es entonces haces lo que necesitas para cambiar el color del shape.
Lo que recibes por el puerto serial en VB6 es ASCII, o sea recibes el código no binario
Al recibir el dato, debes verificar que código es, y cambiar el color del Shape con la propiedad Backcolor.
Respuesta
1
Bien ya que identificaste cada uno de los trasmisores
solo tienes que indicar que shape y color:
ntrasmisor=""' aqui va como identificas al trasmisor
Dim ntrasmisor As String
'ntrasmisor = "valor deltrasmisor"
ntrasmisor = "00111010 00110000 00110000 00110001 00001010 00001101" 'para prueba
Select Case ntrasmisor
Case "00111010 00110000 00110000 00110001 00001010 00001101" 'entra aqui
Shape1.BackStyle = 1
Shape1.BackColor = vbRed
'los otros dos estan inactivos
Shape2.BackStyle = 0
Shape2.BackColor = vbBlue
Shape3.BackStyle = 0
Shape3.BackColor = vbBlue
Case "00111010 00110000 00110000 00110010 00001010 00001101"
Shape2.BackStyle = 1
Shape2.BackColor = vbRed
'los otros dos estan inactivos
Shape1.BackStyle = 0
Shape1.BackColor = vbBlue
Shape3.BackStyle = 0
Shape3.BackColor = vbBlue
Case "00111010 00110000 00110000 00110011 00001010"
Shape3.BackStyle = 1
Shape3.BackColor = vbRed
'los otros dos estan inactivos
Shape1.BackStyle = 0
Shape1.BackColor = vbBlue
Shape2.BackStyle = 0
Shape2.BackColor = vbBlue
End Select
NOTA esto solo es para uno
si necesitas varios solo tienes que cambiar la intruccion SELECT por IF para cada uno.
Espero que sea lo que necesitas si no lo es has de nuevo otra pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas