• Martes 5 de Noviembre de 2024, 20:28

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - patitofeo

Páginas: 1 [2] 3 4 ... 6
26
C/C++ / Re: Transformacion De Figuras En 2d (x,y)
« en: Jueves 9 de Febrero de 2006, 13:13 »
Si solo necesitas rotar a razon de 90º o 180º yo te aconsejo que no utilices trigonometria y hagas tratamiento matricial que es mas rapido y eficiente.

para rotar una imagen 90º solo tienes que hacer la transpuesta

para rotar 180º invierte el orden de las columnas y de las filas

para rotar 270º las suma de ambas.

Asi te ahorras hacer el calculo trigonometrico de cada pixel.

Saludos :hola:

27
Visual Basic 6.0 e inferiores / Re: Puerto Serial
« en: Viernes 3 de Febrero de 2006, 13:35 »
Vale,

A ver si me explico:

La cuestion es que tu lo haces todo dentro de la rutina de atencion.

Esto es el evento OnComm. El programa entra en la rutina cada vez que reciva tantos caracteres como tu le digas. En tu caso 15

Código: Text
  1.  
  2.  .RThreshold = 15
  3.  
  4.  

Depende a que velocidad este trabajando el puerto, esto ocurre cada muy poco tiempo y esposible que antes de que la funcion haya terminado de procesar estos 15 caracteres ya hayan llegado otros 15. De esta forma se van produciendo retrasos y al final pierdes datos.

Lo que tienes que hacer es no procesarlos del tiron. Simplemente guardalos.

Crea un buffer de almacenamiento temporal. Del tipo string si estas trabajando en modo texto.

Algo como por ejemplo:
Código: Text
  1.  
  2. Private BufferComm as String
  3.  
  4.  

Y que la rutina de atencion simplemente valla metiendo ahi los datos

Código: Text
  1.  
  2. Private Sub MSComm1_OnComm()
  3.      BufferComm = BufferComm & MSComm1.Input
  4. End Sub
  5.  
  6.  

Esto lo hara muy rapido

Después habrá otra función que se encargue de procesar estos datos

Código: Text
  1.  
  2. Private Sub ProcesoDatosComm()
  3. Dim datos as string
  4.  
  5. datos = BufferComm
  6. BufferComm=""
  7.  
  8. Call HazLasCuentas   ' Esto sería el procesado como tal. Lo que hagas con los datos
  9.  
  10. End Sub
  11.  
  12.  

Aunque mientras estes haciendo esto te lleguen nuevos datos, no los pierdes porque quedan almacenados en el Buffer que has creado esperando a que vuelvas a llamar al procedimiento ProcesoDatosComm

El cuando tines que llamar a la funcion ProcesoDatosComm depende del programa.

Si los datos no llegan frecuentemente si no que son comandos de control por ejemplo y que siempre acaban con un caracter de fin de trama (esto es un supuesto. Tu tendras que mirar cual es tu caso) puedes añadir algo de codigo en la rutina de atencion que se mantenga esperando a que llegue este caracter

algo como:

Código: Text
  1.  
  2. If instr(BufferComm, caracterControl) <> 0 then Call ProcesoDatosComm
  3.  
  4.  

Si los datos simplemente son rocogidos en un momento dado por otro control (es otro supuesto) entonces en la funcion OnComm activas un flag

Cuando el control quiera los datos mirara el flag. Si esta activado entonces sabra que hay datos en el buffer y puede llamar a la rutina ProcesaDatosComm

En el ejemplo que te puse en el anterior Post te decia que podias comprobar que hubiera datos periodicamente (otro supuesto también distinto. Tu mira cual es tu caso y que se te ocurre que es lo mejor que puedes hacer)

Para hacer esto, añades un control Timer y lo programas con un periodo que tu elijas (cada segundo, cada 200 milisegundos, lo que quieras...)

Si no sabes usar el control Timer, mira la ayuda o en google, es muy facil.

En el evento "Timer" de este control añade una comprobacion.Algo como:

Código: Text
  1.  
  2. Private Sub Timer1_Timer()
  3. If BufferComm <> "" then
  4.        Call ProcesaDatosComm
  5. End If
  6. Timer1.Enable=True
  7. End Sub
  8.  
  9.  

De esta forma, se comprobara el buffer periodicamente pero sin interrumpir la llegada de datos.

Espero que esta vez me hayas entendido y que te haya servido de algo.

Por favor dime si conseguiste resolverlo y si por el contrario aun tienes dudas o problemas no dudes en preguntar ¿vale?

Suerte y un saludo

28
Visual Basic 6.0 e inferiores / Re: Puerto Serial
« en: Lunes 30 de Enero de 2006, 14:06 »
Probablemente pierdas datos porque tu rutina de atencion es demasiado pesada.

La rutina de atencion al puerto (evento OnComm del control) debe ser muy ligera ya que si mientras estas en esta rutina, te llegan nuevos datos, el programa volvera a entrar en ella y perdaras los datos anteriores que no le haya dado tiempo a procesar.

Create un buffer para realizar el consumo de datos de modo cliente-servidor

La función MSComm1_OnComm simplemente guarará los datos que le lleguen al buffer con, como mucho, alguna comprobacion de errores sencilla.

Cuando haya recogido los datos puedes activar un flag de modo que avises a la rutina cliente que tiene datos que recoger.

Esta rutina cliente comprobara el buffer que has creado periodicamente y sera la encargada de recogerlos y procesarlos.

    En primer lugar los recogemos del buffer y empezamos el prcesado.

    Mientras procesamos estos datos, la rutina OnComm sigue recibiendo y guardando en el buffer intermedio los datos que llegan por el puerto interrumpiendo a la funcion que procesa los datos  Pero en este caso, ningun dato se perdera.
por que se mantine esperando en el buffer intermedio



Un pseudocodigo:

   Rutina OnComm:
          BufferLlegada=BufferLlegada & MSComm1.Input
          FlagLlegada=True


  Rutina periodica: (el evento Timer de un control Timer programado a 200ms me parece buena idea)
           
       Si FlagLlegada
           BufferProcesado=BufferLlegada
           FlagLlegada=False
           BufferLlegada=""

           FuncionParaProcesarLosDatos



Espero que te sirva

Para cualquier duda, por aqui andare.

Saludos  :hola:

29
Visual Basic 6.0 e inferiores / Re: Refresh Para Un Combobox Y Un Msflexgrid
« en: Lunes 30 de Enero de 2006, 13:44 »
Bueno, creo que la cosa es que refresques tu cada vez que realices un cambio.

Es lo que dice jc_moty

Los controles DataGrid y ComboBox estaran referenciados a traves de la propiedad DataSource a un recordSet ¿no?

Ten en cuenta que esto no indica que recojan los datos directamente de la base de datos. sino que lo hacen de los datos que tu introdujiste en un recordset a traves de una consulta. Por eso no refresca.

Debes actualizar este recordSet con una nueva consulta cada vez que cambies datos en la Base de Datos.

Espero que te haya ayudado.

30
Visual Basic 6.0 e inferiores / Re: Guardar Registros
« en: Lunes 30 de Enero de 2006, 13:34 »
Esta muy bonito el enunciado de tu ejercicio pero...
  Francamente no creo que nadie te lo vaya a resolver. Desde que frecuento este foro nunca vi que nadie trabajara para nadie por el morro. Je. Por supuesto yo tampoco.

¿Que te parece si empiezas por definir la base de datos, pensar como quieres conectarte, que controles utilizas para esto...?

Como no definas un problema concreto... umh!! es probable que tu post se quede vacio

saludos :hola:

31
Visual Basic 6.0 e inferiores / Re: Acceso A Db Desde Vb
« en: Lunes 30 de Enero de 2006, 13:27 »
Gracias:

Esa puede ser una solución. Aunque me parece bastante fea. El hecho de que tengas que "desmontar" el fichero y volverlo a montar en cada uso. buff!!!

No obstante me parece la mejor solucion. gracias de nuevo

Saludos  :hola:

32
C++ Builder / Re: Empaqtar Todos Los Archivos En Un Exe
« en: Lunes 30 de Enero de 2006, 13:20 »
¿Has oido hablar de inno setup?

Es el programa que yo utilizo. Cuesta un poco al principio...

http://www.jrsoftware.org/isinfo.php

Saludos  :hola:

33
Visual Basic 6.0 e inferiores / Re: Llenar Registro
« en: Lunes 23 de Enero de 2006, 11:19 »
¿Que tipo de registro?

34
Visual Basic 6.0 e inferiores / Re: Acceso A Db Desde Vb
« en: Lunes 23 de Enero de 2006, 10:59 »
Bueno:

Yo os explico el problema desde el principio y me decis donde me equivoco o me pierdo. Ya os he dicho que estoy empezando....

El acceso a la base de datos desde mi aplicacion en Visual Basic debe comportarse de forma diferente dependiendo de que usuario trate de acceder (problema bastante comun). La base de datos es una base de Datos Access 2000 que trabaja en local, en el mismo PC donde estara la aplicacion. Yo accedo a ella directamente con el driver del Motor Jet de Windows/Visual Basic.
Código: Text
  1.  
  2. BaseDeDatos.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" _
  3.     & App.Path & "/Data/DB.mdb;"
  4.  
  5.  

Como la base de Datos va ha estar en local, pense que debería proteger el fichero (la base de datos como tal). Tras paparme un poco de ayuda y rebuscar por internet (ya que no he tirado nunca mucho de Access) encontre lo de la gestion de usuarios y grupos de Access.

Dije "perfecto! todo solucionado". Cree, una cuenta de usuario 'administrador' con todos los permisos y una cuenta 'consulta' con permisos restringidos (solo consultas, como su propio nombre indica)

Esto fue bastante bien. Cuando intentaba abrir el fichero (de forma externa a mi aplicación. Simplemente doble click sobre el icono) Access me pedia nombre de usuario y password.

Pense que ya estaba todo arreglado. Luego trate de abrir la base de datos desde mi aplicacion y resulto qeu indicando el nombre de usuario y el pass, el visual se cascaba un error diciendo que faltaba un fichero de gestion de usuarios.

Cuando descubri lo que era eso, vi que era una cagada, ya que si la gestion de usuarios y grupos esta en otro fichero, con borrar ese fichero, la puerta hacia mi base de datos estaba abierta (no hace falta ser hacker para hacer esto). A pesar de todo segui a delante y cree el fichero .vbw .

No consegui acceder a la base de datos usando un usuario. Siempre me resultaba el mismo error.

Luego pude ver que en cualquiera de los casos (con politica de usuarios y grupos, con fichero .vbw, sin el, de cualquier modo) no puedo acceder poniendo explicitamente el nombre de usuario y password pero SIEMPRE puedo acceder directamente sin ponerlo.

¡Que gracioso!  :kicking:

Finalmente opte por la solución que no queria utilizar desde el princio que es incluir el password que da los permisos en una tabla de la BD y gestionar esos permisos desde mi aplicación. Lo cual no protege nada, ya que si alguien quiere modificar la Base de datos solo tiene que hacer doble click sobre el fichero en cuestion y modificar lo que quiera. Le puse una clave como antes para que por lo menos no pudiesen hacer esto. Pero ahora, el administrador necesita saber la clave que protege el fichero que no tiene porque coincidir con la que hay en la tabla "password"  ya que esta segunda se puede cambiar. No es el mayor problema ya que en principio nunca debería hacer falta trabajar sobre el fichero directamente abriendolo con access

De todos modos esto sigue asi porque hasta donde he podido ver. Las bases de datos Access son de todo menos seguras ni comodas.

Ahora, tengo que trabajar el doble al hacer mi aplicación para gestionar de forma externa los permisos para los usuarios (al menos que alguien me clarifique el camino y me de una solucion) y además estoy seguro que si alguna persona que no tiene permisos se propone conseguirlos, no le sera muy dificil aunque no tenga ni idea de informatica.

Esta es la forma mas segura que he encontrado para la base de datos. Clave en una tabla y fichero con usuarios y protegido con Clave.

 :hola:  Saludos

35
C/C++ / Re: Lio De Punteros...
« en: Lunes 23 de Enero de 2006, 10:26 »
En primer lugar

Código: Text
  1.  
  2. "typedef char Nombre[20]"
  3.  
  4.  

no es una estructura sino un tipo definido por el usuario que se refiere a un array de caraceres (string).

Despues, a que te refieres con las cabeceras?

Cabeceras de ficheros que incluyes o a los prototipos de las funciones?

Estas creando una clase o trabajas con programacion extructurada?

36
C/C++ / Re: Problema Con "strcmp"
« en: Lunes 23 de Enero de 2006, 10:15 »
Asi a primer vistazo

¿Te acordaste de incluir la cabecera de la libreria "string"?

#include <string.h>

puedes mostrar como has creado la estructura Reg_Actividad ?

 :hola: Saludos

37
Visual Basic 6.0 e inferiores / Re: Acceso A Db Desde Vb
« en: Viernes 20 de Enero de 2006, 18:12 »
Gracias pcmario

Pero antes tengo un problema mayor. Y es que mi aplicacion se conecta a una base de datos que en teoria esta protegida por password sin necesidad de especificar ni usuario ni password.

Me explico y quiza puedan decirme donde me equivoco.

Trabajo con Access 2000 y en la base de datos cree dos usuarios. "Administrador" y "consulta". Al administrador le dejo como estaba (es el usuario por defecto) solo que le di un password. A "consulta" le quite todos los permisos sobre las tablas excepto los de lectura y no le di password.

ahora cada vez que trato de abrir la base de datos (clicko directamente sobre el fichero) me pide usuario y password. Bien!!

Solo que si me conecto desde codigo

Código: Text
  1.  
  2. BaseDeDatos.ConnectionString = &#34;Provider=Microsoft.Jet.OLEDB.4.0; Data Source=&#34; _
  3.     & App.Path & &#34;/Data/MenocaDB.mdb;&#34;
  4. BaseDeDatos.Open                'BaseDeDatos.ConnectionString, &#34;administrador&#34;, &#34;*&#34;
  5.  
  6.  

entonces no tengo que pasarle el pass ni nada y el se conecta perfectamente. ¿por qué?

Valla una seguridad ¿Que hago mal?

38
C/C++ / Re: Un Problemilla
« en: Viernes 20 de Enero de 2006, 14:21 »
Bueno:

no se que es deci, pero desde luego horas no es igual a segundos / 60

sino segundos / 3600 ¿no?

 :hola:

39
Visual Basic 6.0 e inferiores / Re: Acceso A Db Desde Vb
« en: Viernes 20 de Enero de 2006, 14:09 »
Gracias por los manuales jc_moty

Ya conocia esa pagina y me parece muy buena. La recomiendo a todo el mundo.

Ya voy abriendome camino con ADO.

Por cierto, otra dudilla. ¿Como puedo cambiar la contraseña para un usuario de mi BD Access desde mi aplicacion de VB? ¿Se puede?

Saludos :hola:

40
Visual Basic 6.0 e inferiores / Re: Acceso A Db Desde Vb
« en: Lunes 16 de Enero de 2006, 11:10 »
Vale.

 :comp: Entonces al lio. Como ya dije yo también veia más claro lo de usar ADO.

Solo una pequeñita cosa más:

¿No sabreis de algún manual o algo un poco más completo y claro sobre ADO que no sea lo que aparece en el MSDN del visual 6.0 o los tipicos tutoriales que aparecen rastreando Google?

bueno. Yo voy poco a poco con ello. pero hay cosas que aun me cuestan bastante trabajo y no encuentro ninguna ayuda clara donde apoyarme. En el MSDN, el tema de ADO es muy descriptivo. Hay un tema desarrollado sobre DAO, pero sobre ADO...

y en google, encuentro muchos tutoriales pero para hacer conexiones basicas y trabajando con el horribe control visual. ejemplos demasiado obvios.

Me costo muchisimo poder cambiar el contenido de un data report para que se llenara con otra tabla de al base de datos.

Bueno, no me enrollo más. Era solo eso ¿sabeis de alguna cosilla por ahi?

Muchas gracias

 :alien:    (Seguir opinando sobre cual metodo de acceso usais. me gustaría que alguien se pusiera a favor de DAO o que algun otro diese una alternativa. Ojala yo pudiese aportar mas  :blink: )

41
Visual Basic 6.0 e inferiores / Re: Acceso A Db Desde Vb
« en: Viernes 13 de Enero de 2006, 19:24 »
Gracias

Esa información ya la tenia mas o menos. He estado leyendo algun manual por ahi. Este post era algo más a nivel personal. Buscaba alguna recomendación.

Para el proyecto que pretendo me vale cualquiera de ellos pero ninguno me convence. era a ver con cual estabais vosotros mas comodos.

Yo personalmente siempre he preferido aquello que me de la posibilidad de trabajar más libremente. Que puedas tu hacer siempre lo que tienes en cabeza aunque cueste un poco mas de trabajo. Ya se q alguno dira que entonces me equivoque de lenguaje pero ...

Hasta ahora (y ya digo que no domino ninguno de ellos) yo prefiero moverme con ADO o simplemente Data Control.

¿Ustedes?

Saludos :hola:

42
Visual Basic 6.0 e inferiores / Acceso A Db Desde Vb
« en: Viernes 13 de Enero de 2006, 18:01 »
No tengo mucha esperiencia en esto:

      Para las Bases de Datos,
                            ¿Data environment, ADO o DAO?

Gracias         :angry::kicking::angry:

43
Visual Basic 6.0 e inferiores / Re: Propiedad De Color En Control Propio
« en: Viernes 13 de Enero de 2006, 17:37 »
Bueno, eso ya lo sabia.

Solo pretendia que el control que estoy creando tubiera el aspecto estandar que tienen los controles incluidos en el Visual Studio 6.0

Y para eso pretendia que la propiedad BackColor o ForeColor apareciera como la de controles como Button o Form o TextBox o tantos otros

La verdad es que no lo he conseguido y me he rendido de momento. Si alguien alguna vez sabe como hacer esto...

Muchas gracias a todos

44
Visual Basic 6.0 e inferiores / Re: Propiedad De Color En Control Propio
« en: Jueves 5 de Enero de 2006, 18:25 »
Un formulario muy parecido me aparece si expongo una propiedad como StandardPicture.

El formulario del color es el que adjunto.

¿No se puede conseguir que aparezca como en los controles estandard?

45
Visual Basic 6.0 e inferiores / Re: Propiedad De Color En Control Propio
« en: Jueves 5 de Enero de 2006, 17:28 »
Gracias:

pacegar

 En Herramientas->Atributos de procedimiento...

desplegando luego Avanzados>>

y escogiendo en el comboBox "Usar esta propiedad en el Examinador de propiedades"

la opcion StandardColor

consigo que en el Examinador se me presente un formulario con todas las opciones deshabilitadas pero no es el que aparece normalmente con la opcion BackColor

¿Debo definir en algun lado una paleta de colores o algo asi?

no consigo que aparezca como me gustaria
¿por qué?

 :scream:

46
C/C++ / Re: Evaluador De Expresiones
« en: Miércoles 4 de Enero de 2006, 17:39 »
:hola:

recorre el array con la expresion total y vete comparando cada caracter con los distintos operadores.

Estos son: '(', ')', '+'. '-', '^', '*', '=' y '/'
no se si se me queda alguno.

estos son los simbolos que separan los números

guarda en arreglos diferentes cada operacion que componga la expresion final y crea una estructura de capas.

ejemplo: (2+3)*(5-1)=

             arreglo1={3, +, 2}
             arreglo2={5, -, 1}
             arreglo3={soluciona(arreglo1), *, soluciona(arreglo2)}

consejo: en vez de arreglos puedes utilizar estructuras que facilitara el trabajo

tendras que tener cuidado con el orden (esto es lo mas dificil)

consejo: crea una gerarquia de prioridad en las operaciones (determina cuales se ejecutaran antes y cuales despues si no existen parentesis) piensa que si * es prioritario sobre +:
           2+3*2+1=9
           (2+3)*(2+1)=15
tambien puedes determinar una prioridad de izq a der. o viceversa pero yo te recomiendo una gerarquia como hacen por ejemplo los compiladores.

consejo: no almacenes los parentesis, solo utilizalos para ordenar las operaciones.

Como ves, el operador de alguna de las estructuras será un numero que resultara de resolver otra operacion. Este numero deberas asignarle luego. Como se ve arriba yo crearia una funcion que recoja como parametro una estructura de las que has creado ( que podria ser:
                                     struct operacion{
                                                              double operando1;
                                                              unsigned char operando;
                                                              double operando2;
                                                              }
           ).

Por supuesto esto solo es un idea. Hay miles de formas de hacerlo. Tu puedes basarte en esta o en otras para implementar tu programa.

Por supuesto nadie te va a hacer el codigo. Asique si de aqui en adelante te queda alguna duda, haz preguntas concretas diciendo como has ido trabajando y donde te has quedado atascado.

Suerte y espero que te sirva de ayuda.

Para cualquier duda, ya sabes...

47
Visual Basic 6.0 e inferiores / Propiedad De Color En Control Propio
« en: Miércoles 4 de Enero de 2006, 17:14 »
Hola :hola:

La cuestion es que al intentar añadir una propiedad de color a un control active X que estoy haciendo, no consigo que en la barra de propiedades del modo diseño me aparezca la paleta que aparece por ejemplo en la propiedad backcolor que tienen casi todos los controles.

La propiedad backcolor es por lo visto del tipo long ¿Como puedo hacer para que aparezca la paleta? ¿se puede?

Saludos y gracias

48
Microcontroladores / Interface Ethernet
« en: Miércoles 21 de Diciembre de 2005, 14:42 »
:hola:

Esa es la cuestion, he estado buscando por ahi, soluciones para incorporar a un microprocesador (32-64kB flash, 4-8kB Ram, 10-20Mhz, familia 8051...) una interface sencilla, pequeña y barata que permita realizar conexiones UDP/TCP.

he encontrado varias soluciones pero ninguna demasiado clara.

Si alguien se ha encontrado con este tipo de dilema alguna otra vez y quisiera compartir conmigo su experiencia estaria agradecido.

Entre mis primeras dudas está si implementar una pila del tipo Soft para el micro para un NIC del tipo RTL8019 o una pila Hard del tipo W3100A ¿alguien trabajo con alguno de ellos? Tambíen encontré en alguna pagina implementaciones que trabajaban sin ningun tipo de driver de red específico pero por mas que he indagado no he conseguido aclararme de como lo han hecho y de si realmente funcionaría de forma correcta.

La cuestion es salir de modulos predefinidos y micros con la interface incorporada que resultan ser muy caros y aparatosos.

Me gustaría poder implementar una interface propia en mis diseños y adaptarla a cada una de las PCB's que necesite.

¿Alguna idea?

Gracias por todo

49
C/C++ / Re: Duda Con Char
« en: Miércoles 7 de Diciembre de 2005, 11:39 »
En realidad da igual.

El hecho de una aplicacion devuelva un valor no indica nada al sistema operativo. Eres tu el que devería manejar el error asi que en realidad es algo subjetivo. Si no tienes la intencion de manejar el error no es necesario que devuelva nada.

El hacho de que algunas personas piensen que es mejor devolver un entero es porque el estandard ansi asi lo determina. Algunos compiladores incluso te advierten si no lo haces así.

Pero en realidad no es necesario que devuelva nada. E incluso no es cierto que no lo haga. Cuando haces un return; ya estas devolviendo un valor void (0x00) o un puntero a void.

Yo personalmente siempre retorno void cuando construyo aplicaciones de las cuales no voy a manejar el error. Si no voy a esperar nada hago que no devuelva nada. Asi de simple, para qeu complicarse

saludos

50
C/C++ / Re: Comocrear Porcedimientos Almacenados
« en: Lunes 5 de Diciembre de 2005, 19:05 »
¿No crees que te equivocaste de foro?

¿o me equivoque yo?

Páginas: 1 [2] 3 4 ... 6