Autor Tema: Mscomm (Numeros Binarios)  (Leído 11362 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Mscomm (Numeros Binarios)
« Respuesta #15 en: 13 de Mayo de 2005, 11:09:00 »
Hola batmand:

Yo compile tu programa y no me da ningun error...

lo unico es que aun así llame al formulario frmVentana_Load() el evento en mi vb siempre me da como Form_Load y si te dice lo de "Variable no definida" es cuando utilizas Option Explicit... Prueba declarando dato como string:

Dim dato as string  Sonrisa Gigante Giño

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Mscomm (Numeros Binarios)
« Respuesta #16 en: 13 de Mayo de 2005, 11:10:00 »
Llorando Tienes razón, se me está olvidando el Basic, y había confundido "&" con el operador AND de C

Si no recuerdo mal, en VB para que las variables no necesiten ser declaradas, existía algo como "OPTION EXPLICIT".

Lo que no estoy seguro es si había que ponerlo o había que borrarlo para conseguir el efecto deseado, pero bueno, pruébalo y nos cuentas.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Mscomm (Numeros Binarios)
« Respuesta #17 en: 13 de Mayo de 2005, 11:16:00 »
Hola:

El Option Explicit te obliga a declarar las variables.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Mscomm (Numeros Binarios)
« Respuesta #18 en: 13 de Mayo de 2005, 11:27:00 »
Pues entonces será que lo tiene puesto y tendría que quitarlo
Sonrisa Gigante

Desconectado atlasdelcarinakeel

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 277
RE: Mscomm (Numeros Binarios)
« Respuesta #19 en: 15 de Mayo de 2005, 11:15:00 »
Que tal, trata colocando a 1 el MSComm1.Handshaking, es decir MSComm1.Handshaking =1
Si tienes un problema y tiene solucion, para que te preocupas? y si no tiene solucion, para que te preocupas?

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Mscomm (Numeros Binarios)
« Respuesta #20 en: 15 de Mayo de 2005, 13:47:00 »
Hola:

Te pongo un jmplo que a mi me funciona bien....

Crea un formulario exe standard y en el un textbox, el mscomm y un timer:

Option Explicit
Dim dato As String

Private Sub Form_Load()
    Timer1.Interval = 1
    MSComm1.Settings = "2400,n,8,1" "propiedades
    MSComm1.CommPort = 2 "seleccionar puerto
    MSComm1.PortOpen = True "abrir puerto
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If MSComm1.PortOpen = True Then "si el pueerto esta
        MSComm1.PortOpen = False "abierto, cerrarlo
    End If
End Sub

Private Sub Timer1_Timer() "setear timer en 1 ms
    dato = MSComm1.Input
    Text1.Text = dato
End Sub

Este codigo pegalo y listo!

Yo utilizo un timmer para hacer una lectura cada 1ms, luego si te funciona puedes cambiarlo, es necesario que cuando cierres tu aplicacion cierrs tambien el puerto.

Comprueba que las velocidades en baudios del PC y del PIC sean las mismas. Sonrisa Gigante Giño

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
RE: Mscomm (Numeros Binarios)
« Respuesta #21 en: 17 de Mayo de 2005, 13:03:00 »
Al fin!!!!!!!!!!!!!!!!!!!1   RebotadoRebotadoRebotadoRebotado

Gracias LordLafebre!!!!!

Bueno, con tu ejemplo funciona, aunque me frustra un poco el no saber porque cuernos mi programa no funciona, pero seguire investigando.

Ahora el problema es que lo visualizo como codigo ascii, no en decimal.

Conocen alguna forma mas o menos simple de hacer eso? Digo mas o menos simple porque estuve mirando este otro post

http://miarroba.com/foros/ver.php?foroid=64652&temaid=1626935

pero no entiendo un pepino.

gracias nuevamente
Saludos
Dario

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Mscomm (Numeros Binarios)
« Respuesta #22 en: 17 de Mayo de 2005, 15:10:00 »
Que bien...!

Me alegra que te haya funcionado.... Muchas risas

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
RE: Mscomm (Numeros Binarios)
« Respuesta #23 en: 24 de Mayo de 2005, 12:52:00 »
Bueno, aqui estoy de nuevo, afloje un poco con este tema porque estaba tapado de laburo, pero ahora lo estoy retomando.

LordLafebre, tu ejemplo funciona perfecto, pero ahora quiero ir personalizando mas mi programa, y no puedo.

Lo primero que quiero hacer es que convierta el dato recibido a decimal, ya que lo visualiso siempre en ascii (no importa como lo envie del pic, siempre lo visualizo como ascii).

Me dijeron que lo unico que hay que hacer es usar la sentencia Asc(), pero por mas que intento no me sale.

Cambie el programa del micro, para que en ves de enviar 5 datos seguids mande 1, espere un segundo, mande le otro, y asi, pero tampoco funciona.

Podrias darme una ejemplo de como se hace?

Porque una vez que pueda recivir en el textbox un numero decimal, ahi quiero seguir avanzando para graficarlos en tiempo real y luego guardarlo una vez al dia.

Saludos y mil gracias
Dario

Desconectado atlasdelcarinakeel

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 277
RE: Mscomm (Numeros Binarios)
« Respuesta #24 en: 25 de Mayo de 2005, 10:02:00 »
Que tal, puedes probar usando la funcion CDec() o tambien Val().RollEyes
Si tienes un problema y tiene solucion, para que te preocupas? y si no tiene solucion, para que te preocupas?

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
RE: Mscomm (Numeros Binarios)
« Respuesta #25 en: 27 de Mayo de 2005, 13:20:00 »
Hola a todos

atlasdelcarinakeel, gracias por la info, pero no me funciona.

Si pongo Val(), me aparece siempre 0, y si pongo CDec (), me da error y me dice que no coinciden los tipos

Abajo te paso el codigo que tengo y como intente con cada uno, lo mas probable es que no lo este escribiendo en el lugar debido.

Gracias de antemano
Dario


Private Sub Form_Load()
Timer1.Interval = 100
MSComm1.Settings = "9600,n,8,1" "propiedades
MSComm1.CommPort = 1 "seleccionar puerto
MSComm1.PortOpen = True "abrir puerto
End Sub

Private Sub Form_Unload(Cancel As Integer)
If MSComm1.PortOpen = True Then "si el puerto esta
MSComm1.PortOpen = False "abierto, cerrarlo
End If
End Sub

Private Sub Timer1_Timer()
Dato = MSComm1.Input
[color=FF0000]Text1.Text = Text1.Text & CDec(Dato)

End Sub[/color]

o sino

Private Sub Timer1_Timer()
Dato = MSComm1.Input
Text1.Text = Text1.Text & Val(Dato)
End Sub



Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Mscomm (Numeros Binarios)
« Respuesta #26 en: 27 de Mayo de 2005, 17:49:00 »
Tu problema es que pretendes usar el operador & para unir una cadena de texto con una variable numérica.
No se pueden concatenar peras con manzanas, o unes peras con peras, o manzanas con manzanas.

Por tanto, o haces:
text1.text=text1.text & Dato // si quieres tratarlo como cadenas

o

text1.text = val(text1.text) + val(Dato)  // si quieres tratarlo como números

Desconectado atlasdelcarinakeel

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 277
RE: Mscomm (Numeros Binarios)
« Respuesta #27 en: 28 de Mayo de 2005, 08:47:00 »
Que tal creo que nocturno66 ya respondio la forma de hacerlo o tambien puedes hacerlo asi:

Dato=MSComm1.Input

Variable_Tipo_String=Text1.Text & Dato

y luego

Text1.Text=Val(Variable_Tipo_String).Sonrisa
Si tienes un problema y tiene solucion, para que te preocupas? y si no tiene solucion, para que te preocupas?

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Mscomm (Numeros Binarios)
« Respuesta #28 en: 28 de Mayo de 2005, 21:24:00 »
Hola batmand:

Aqui te pongo dos funciones la una que transforma un numero binario a decimal y la otra un decimal a binario, espro te sirva...

Public Function BinADec(Valbin As String) As Integer
Dim ValAn As Integer
Dim PosBin As Integer
ValAn = 0
PosBin = 1
Do
   If PosBin = (Len(Valbin) + 1) Then Exit Do
   If Right(Left(Valbin, PosBin), 1) = "1" Then
      ValAn = (ValAn + 0.5) * 2
   Else
      ValAn = ValAn * 2
   End If
   PosBin = PosBin + 1
Loop
BinADec = ValAn
End Function

Public Function DecABin(ValDec As Integer) As String
Dim Valdec2 As String
Dim Valdec1 As Integer
Dim res As Integer
Dim Bin As String
Valdec1 = ValDec
    Do
        If Valdec1 = 0 Then
            Exit Do
        End If
        res = Valdec1 Mod 2
        Bin = res
        Valdec2 = Bin + Valdec2
        Valdec1 = Int(Valdec1 / 2)
    Loop
If Len(Valdec2) < 9 Then Valdec2 = String$((8 - Len(Valdec2)), "0"Giño + Valdec2
DecABin = Valdec2
End Function

Pudes utilizarla asi:

text2=DecAbin(val(text1))    Giño Sonrisa Gigante

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
RE: Mscomm (Numeros Binarios)
« Respuesta #29 en: 30 de Mayo de 2005, 14:40:00 »
Bueno, gracias a todos por la ayuda, pero creo que voy a abandonar, porque no hay caso.

Probe lo que sugirio Nocturno, y aunque no me da error, me da siempre 0.

Despues probe lo que me sugirio atlasdelkarinakel,y me convierte el primer byte (0), paro se queda ahi, es como si al convertir el valor dejara de recibir datos.

Despues probe lo que sugirio LordLafebre, con la funcion BinADec, pero me da un error de compilacion, asumi que era donde aparece el guiño, pero tambien me da 0 todo el tiempo.

Si alguien tiene un ejemplo completo de como recibir el dato y visualizarlo en forma decimal, se los agradeceria.

Lo que estuve pensando es que no necesito concatenar los datos, lo importante es que los visualice en el textbox en formato decimal.

Bueno, mil gracias por la paciencia, esto me pasa por meterme con otra especialidad.

Saludos
Dario



 

anything