Visual Basic Foro
Electrónica => Interfaces PC y Electronica => Mensaje iniciado por: YAcosta en Mayo 12, 2012, 02:03:32 am
-
Hola, queria preguntarles como debo manejar la información que llega a este control.
Nunca use este control y ayer por primera vez y ayudando a un amigo lo voy conociendo. El estaba usando un timer para leer la información de este control y luego de revisar y revisar entendí que no era necesario usar ningún timer ya que el mismo control reacciona cuando recibe información, hasta allí bien.
El asunto es que recibe una cadena de números y necesitamos tomar de 3 en 3 pero se hace un despelote cuando el numero que debemos recibir es 25 y al tomar tres (eje 425) cogemos un numero que no debemos tomar, si ponemos a dos cifras se friega para el numero 100, y lo mismo para los números del 1 al 9.
El habia probado meter en la señal (usando un simulador) un caracter (ejemplo la letra A) para separar los numeros y de alli le conclui que debiamos usar un algoritmo para leer esto: A433A42A333A1A12 y separarlo como: 433, 42, 333, 1 y 12 y asi sucesivamente.
Por eso quería por favor si me aclaraban un poco conceptualmente como debería usar este control, si es que debo ir por alli o estamos errados, mi amigo es electrónico pero casi no sabe nada de VB6 y quizá esta explicándome mal y alli tenemos un problema de comunicación, y yo no conozco nada de electrónica y de este control VB6 recién ayer por primera vez lo voy viendo.
Quiero darle una mano a el y por eso queria pedirles un poco de orientacion acerca de como debo entender o manipular los datos que obtengo de este control, ¿como es que usualmente se trabaja con esta señal? o es que quiza el problema viene desde la parte electrónica, no lo se.
Este codigo pusimos en el Load
Dim CommPort As String, Handshaking As String, Settings As String
MSComm1.CommPort = 3 'puerto com1
MSComm1.Settings = "9600,n,8,1" 'configuracion del puerto serie
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
Y este código en el control
Dim NumPuerto As Integer
If memNumFuente = 3 Then memNumFuente = 0
memNumFuente = memNumFuente + 1
NumPuerto = MSComm1.Input '<--- Aqui recibo el numero que me envia el control
lblFuente(memNumFuente).Caption = NumPuerto
En las propiedades del control pusimos el ImputLen en 3 pero los resultados no son los esperados, por lo que explique arriba.
Saludos
-
si tu algoritmo trama es A433A42A333A1A12
mejor seria que coloques un carácter especial como |
por ejemplo seria así |433|42|333|1|12
la pregunta es siempre es una trama de 5 números agrupados? si es asi se hace un for para obtener los numeros si es variable se captura el numero de caracteres que existe en la cadena de ingreso osea capturar los |
por ejemplo seria asi
'------------------------------------------------------------------
' esto es cuando la cadena tiene q tener si o si los 5 numeros
Dim xCad as string
xCad = MSComm1.Input 'trama=|433|42|333|1|12
If xCad <> "" Then
MostrarPuerto Split(xCad, "|")(1) '433
MostrarPuerto Split(xCad, "|")(2) ' 42
MostrarPuerto Split(xCad, "|")(3) ' 333
MostrarPuerto Split(xCad, "|")(4) ' 1
MostrarPuerto Split(xCad, "|")(5) '12
end if
'------------------------------------------------------------------
'ahora si es varible seria asi
Dim xCad as string,xCadObt() As String
Dim xCon As Integer
xCad = MSComm1.Input 'trama=|433|42|333
If xCad <> "" Then
xCadObt = Split(xCad, "|")
For xCon = 1 To UBound(xCadObt)
MostrarPuerto xCadObt (xCon)
Next xCon
end if
private sub MostrarPuerto (byval xNum as string)
'lblFuente().Caption = xNum
MsgBox xNum
end sub
si tienes alguna duda publica tu código para ayudarte a solucionarlo
-
Gracias Cristian, si es variable según entiendo. Mañana me reuno con mi amigo y veremos esto. El ejemplo del split creo que es el que mas se ajusta.
Saludos
-
muy bien cualquier duda no dudes en comentar
otra pregunta con que componentes lo estas conectando o indicador
o se está creando tu amigo uno
yo estube trabajando un tiempo con indicador de peso con rice lake, jadever, bilanciai y mettler toledo
Gracias
-
Si el se esta creando uno, se dedica a esto.
Lo de la derecha es el programa que se esta haciendo, lo de la izquierda es un simulador. Mañana debo estar viendo este tema a ver como se va resolviendo o que problemas tenemos. Muchas gracias.
(http://dl.dropbox.com/u/4052038/Otros/Amigo.jpg)
-
aya muy bien ese es el proteus soy avanzado en eso lo uso para hacer diferentes simulacion de proyectos con pic's
Ok esperamos (y)