TODOPIC
Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: AABHGA en 22 de Septiembre de 2006, 09:42:45
-
Hola a todos, ahora con mi proyecto de crear una comunicación entre el pc y un pic, ando necesitando hacer un reloj con 3 variables H, M y S, el problema es como poner el tiempo, es decir como en PICBASIC poner un Pause 1000
-
Hola:
Mira aqui:
http://www.todopic.com.ar/foros/index.php?topic=7067.15
Hay algunos ejemplos para comunicarse con pic y hay un reloj tambien y es justamente lo que necesitas.
-
Ok thx por la info, voy a ver y te comento.
-
Está muy bueno, solo falta probar haber si ya todo me va, el problema fue que el maldito 16f628 que estoy usando para las pruebas saco la mano.
-
Hola:
De seguro te funciona, en la simulacion no va bien porque el barrido es muy rapido y no se alcanza a visualizar bien los numeros.
-
No, no lo puedo simular, no tengo el proteus y ando con internet telefónico de momento porque he tenido mil y un problemas con mi proveedor de internet (ETB en Bogotá por si a alguien le sirve la info) estoy esperando a que el nuevo proveedor me instale el servicio, pero sabra Dios cuando me lo instalan, ademas en si no estoy haciendo un reloj, es un proyecto de control del pc a traves del pic.
-
Oye Lord, otra vez yo por aca, no se si es porque soy muy bruto o no le tengo idea a la programación Visual y todas sus malditas subrutinas (yo me crié con POWERBasic para DOS) mira este código:
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
datos = "Leyendo"
cantidad = cantidad + 1
valor = MSComm1.Input
sumas = sumas + valor * 100
suma = sumas
End If
Ya establecí comunicación entre el PIC y el PC y leo los datos (son todos numéricos) sin ningún problema, solo que no se como diablos hacer para que la variable sumas almacene el valor que tiene y cuando vuelva a recibir datos del PIC continue sumando desde ahí, el puerto lo tengo configurado de la siguiente manera:
MSComm1.CommPort = 1
MSComm1.Settings = "2400,n,8,1"
MSComm1.CommPort = 1
MSComm1.InputMode = comInputModeText
MSComm1.InputLen = 0
MSComm1.RThreshold = 1
MSComm1.RTSEnable = True
MSComm1.SThreshold = 1
¿Qué estoy haciendo mal?
Tambien me gustaría saber, cuando el programa esta en Stand By, donde diablos se queda esperando la siguiente orden?
Eso es todo, y disculpá tanta joda, pero como te digo el VB me habla y me menta la madre y yo no se ni como contestarle.
EDIT: Alfin pude, despues de casi 5 horas pude solucionar esto, me faltaba definir de que tipo eran las variables.
-
Hola:
jeje, que bien que lo resolviste, y ya no maldigas tanto hombre :P , que el VB no tiene la culpa :D :D
-
Lo que no entiendo, es porque VB no tiene un comando llamdo PAUSE o Delay, toca que hacerlo y pone a trabajar el procesador a full.
-
Hola:
eso es lo malo, si hace falta una funcion de tiempo :?
-
La única sería hacer un .exe en powerbasic que tenga la función de tiempo y llamarlo cada vez que se necesite, porque de resto vaya joda, hay que tragarse todo el procesador para que logre contar tiempo.
-
No necesariamente.
Podes crear un timer, que cuando se ejecute, ponga una variable a true y que hasta que no se cumpla la condicion, el programa no siga.
Saludos.
-
Bruno, como no soy muy ducho en VB y apenas estoy comenzando, supongo que te refieres a esto:
Sub Delay(Segundos As Double)
Dim TempTime As Double
TempTime = Timer
While Timer - TempTime < Segundos
DoEvents
If Timer < TempTime Then
TempTime = TempTime - 24# * 3600#
End If
Wend
End SubSacado de un programa de Lord
El problema es, cuando se está ejecutando eso, mira la grafica de uso del procesador, es de un 100%, y la verdad, aunque no consume recursos es una joda y nada práctico ni decente.
-
Dejame probarlo bajo XP y te cuento.
Saludos
-
Exacto!
Un timer y un contador pueden reemplazar al comando "pause" o "wait" de algunos basic. :)
Saludos.