• Sábado 20 de Abril de 2024, 06:04

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 - edurne

Páginas: [1] 2
1
Programación en C / Re: He Vuelto!! Y Con Dudas Frescas
« en: Viernes 17 de Junio de 2005, 10:31 »
Pues realmente me sería muy de utilidad que me pasaras la rutina en C para el reloj... te lo agradecería mucho, estamos un poco atascadas y toda ayuda es poca. Ya hemos comprado los componentes porque nos interesa empezar a verificar por partes, y lo primero que tenemos pensado es conectar el rejoj, lcd y pic para visualizar la hora.

Si hay algún problema, dejo aquí mi dirección de correo. Mil gracias a todos!!!
edurne_dehesa@hotmail.com

2
Python / Python Y Php
« en: Martes 7 de Junio de 2005, 09:27 »
Hola a todos!

He vuelto a mis andadas con python después de una temporadita haciendo un programa sencillo en php y html... el problema es que mi programa tiene que calcular algunos valores estadísticos y es muy lento. Me gustaría saber si hay alguna forma de comunicar php con python, mandarle los parámetros necesarios, y que sea python quien calcule esos valores para después visualizarlos en la página que he hecho con php.

Otra cosita... para calcular estadísticas y cosas de estas... he leído que se usa el stats.py, pero realmente no entiendo qué tiene que ver:

strip_dirs ()
add (filename[, ...]
sort_stats (key[, ...]
etc, etc, etc....

yo solo quiero calcular una varianza a partir de unos datos de mi base de datoss!!! (conexión a la cual, he hecho antes de querer llamar a python para que calcule, sino antes, con el php).

Gracias a todos por vuestro tiempo, un saludo, Edurne.

3
XHTML / Ayuda Con Los Headers
« en: Lunes 30 de Mayo de 2005, 12:27 »
Hola a todos, he creado una paginilla web mediante php, html y css. Al final, el fin de la página es visualizar una gráfica  que se crea mediante la salida estándar . Esta gráfica puede aparecer directamente en pantalla :

        header("Content-type: image/png");
        $name = tempnam("/tmp","SMTUPLOT");
        $out = fopen($name,"w");
        fputs($out, $plotstr);
        fclose($out);
        passthru("gnuplot ".$name);
        unlink($name);

o en un documento pdf:

        header("Content-type: application/pdf");
        $pargnuplot = tempnam("/tmp","SMTUPLOT");
        $ps = tempnam("/tmp","PS_");
        $out = fopen($pargnuplot,"w");
        fputs($out, "set output \"".$ps."\"\n");
        fputs($out, $plotstr);
        fclose($out);
        exec("gnuplot ".$pargnuplot);
        unlink($pargnuplot);
        passthru("ps2pdf ".$ps." -");
        unlink($ps);

El problema me surge, porque quiero visualizar la gráfica y un cuadro de texto que contenga algunos datos que podrian ser de interés a la hora de analizar dicha imagen. Me han dicho que se hace con multipart, pero no tengo ni idea de cómo hacerlo y por la red no encuentro información clara, ni sobre lo que creo que estoy buscando.

Muchas gracias por vuestra ayuda!
Saludos, Edurne.

4
Programación en C / He Vuelto!! Y Con Dudas Frescas
« en: Jueves 26 de Mayo de 2005, 12:05 »
Hola a todos!!! durante un tiempo estuve muy centrada con mi compañera intentando determinar exactamente qué queríamos que hiciera nuestro proyecto. Después de eso y de mucho marear a los profesores...creemos que lo tnemos claro, pero nuestro programa en C es tan grande que es imposible verificarlo entero, así que por fin vamos a comprar el hardware y a verificar por partes, para así tener más claro como actuar con los registros (que nos parece un poco locura).

Alguno de vosotros tiene información precisa de cómo se guardan los datos de un reloj de tiempo real en la memoria?? de cómo se tratan esos datos para por ejemplo restar dos fechas (para llevar un contaje de tiempo) o para visualizarlo en una lcd???

Os estaría muy agradecida. Esta misma noche pongo lo que vamos consiguiendo por si a alguien le puede ayudar, y por supuesto por si vosotros me podeis ayudar.

Saludos desde España de una alumna un poco desesperada ya con esto!! jeje.

5
PHP / Cómo Crear Correctamente Un Pdf
« en: Jueves 26 de Mayo de 2005, 09:07 »
Hola a todos:

Estoy trabajando en un proyecto y quiero visualizar unas gráficas previamente generadas con gnuplot. La gráfica la creo correctamente y en la página doy dos opciones: verla en la pantalla, o verla mediante un pdf por si el usuario quiere imprimirla, guardarla o lo que sea. Fijo un tamaño amplio de la imagen para que se vea bien. Si sale en pantalla no hay problemas, pero a la hora de generar el documento pdf a un tamaño grande también, solo se ve una parte de la gráfica, las barras de desplazamiento no me dejan moverme para verla totalmente, de hecho, si disminuyo el tamaño veo el trozo que veía antes en grande solamente.
¿Alguien puede ayudarme con mi problema? El código que utilizo para esto es:

if ($vista == "documento")
    {
        header("Content-type: application/pdf");
        $pargnuplot = tempnam("/tmp","SMTUPLOT");
        $ps = tempnam("/tmp","PS_");
        $out = fopen($pargnuplot,"w");
        fputs($out, "set output \"".$ps."\"\n");
        fputs($out, $plotstr);
        fclose($out);
        exec("gnuplot ".$pargnuplot);
        unlink($pargnuplot);
        passthru("ps2pdf ".$ps." -");
        unlink($ps);
    } else
    {
        header("Content-type: image/png");
        $name = tempnam("/tmp","SMTUPLOT");
        $out = fopen($name,"w");
        fputs($out, $plotstr);
        fclose($out);
        passthru("gnuplot ".$name);
        unlink($name);
    }
?>


Saludos y gracias por vuestra ayuda

6
Python / Re: Por Favor!!!sin Esto No Puedo Avanzar!!!
« en: Lunes 18 de Abril de 2005, 09:36 »
Gracias!! pero para mi problemilla me ha venido mejor esta solución: la dejo aquí por si a alguien le pudiera servir:

import time
f = "2005-04-06 12:30:55"  ·siendo el formato: año-mes-dia horas:minutos:segundos
t = time.strptime(f, "%Y-%m-%d %H:%M:%S")
segundos = time.mktime(t)

Ahí tenéis, saludos!

7
Python / Por Favor!!!sin Esto No Puedo Avanzar!!!
« en: Viernes 15 de Abril de 2005, 12:04 »
Hola!!! por favor... estoy desesperada, ahora sí que no puedo avanzar... tengo que hacer un fichero con una serie de fechas y datos... hasta ahí no hay problema. El problema es que después quiero representarlo con el gnuplot, y la fecha debe ser un número. Por eso tengo que pasarla a epoch. El problema es que de donde saco la fecha, sólo me da año-mes-dia y hora-minuto-segundo. Y por lo que he visto por ahí.... me harían falta también el día de la semana, el día del año que es y alguna cosilla más.

Cómo puedo calcular esos segundos sin los datos que me faltan??? alguien conoce alguna forma???

Muchas gracias!!

8
Python / Cómo Puedo Recorrer Una Base De Datos??
« en: Jueves 14 de Abril de 2005, 12:40 »
Hola, alguien sabe cómo recorrer una base de datos y crear un fichero solo con los elementos que me interesen?? es para después crear una gráfica con esos datos.
Gracias si alguien puede ayudarme!!

9
Python / Re: Manejando Python Y Gnuplot
« en: Miércoles 13 de Abril de 2005, 10:44 »
Muchas gracias!! me ha sido de mucha ayuda.
Saludos, Edurne.

10
Python / Manejando Python Y Gnuplot
« en: Martes 12 de Abril de 2005, 12:18 »
Si alguien sabe cómo relacionar estos programas.... se lo agradecería. Mi intención es: desde python, acceder o abrir el programa gnuplot y poder pasarle una serie de variables, que éste capte y mediante ellas que dibuje las gráficas pertinentes.
Sabéis si hay mucho problema en hacerlo??
Mil gracias.

11
Programación en C / Parece Que El Subforo Funciona!
« en: Lunes 11 de Abril de 2005, 13:08 »
Hola a todos!  parece que el foro ha comenzado con aceptación y con preguntas fuertes!! espero que también haya gente como yo que plantee dudas y respuestas más sencillas. Ánimo a todos con sus proyectos!
Saludos, Edurne.

12
Microcontroladores / Se Puede Compaginar Ensamblador Y C?
« en: Viernes 8 de Abril de 2005, 10:57 »
Hola a todos otra vez!! Como no domino ni el ensamblador ni el lenguaje C, de momento lo perfecto para mí sería combinar los dos. Si programo en CCS sé que puedo combianarlo, pero no sé si puedo hacer lo mismo programando en ensamblador. Supongo que no, pero agradecería que me respondiérais.

En caso de hacerlo en CCS, podría hacer la mayor parte del programa en ensamblador?? qué tendría que declarar como primeras líneas de código?? el problema es, que en este lenguaje los cambios de banco se hacen automáticamente, y en ensamblador hay que hacerlo manualmente, me equivoco? entonces.... tengo que definir los registros como si fuera a tratarlos en CCS y luego en las líneas de código ensamblador tratarllos como si no los hubiera declarado antes?

Ayuda por favor.f
Muchas gracias por adelantado por vuestro tiempo.
Un saludo. Edurne!

13
Microcontroladores / Re: Qué Uso Para Grabar Mi Pic??
« en: Jueves 7 de Abril de 2005, 09:31 »
Y conmigo ya somos tres!! jeje, me parece estupenda la idea del foro. Aunque de momento, solo agradeceros vuestras respuestas. Intentaré empezar con Asembler e ir ampliando las posibilidades practicando también en C. Ya os iré contando los progresos.
Gracias otra vez!! :)

14
Microcontroladores / Qué Uso Para Grabar Mi Pic??
« en: Miércoles 6 de Abril de 2005, 12:28 »
Hola a todos!! Hace tiempo que no puedo escribiros, pero ahora ya tengo algo más claras las cosas. Me voy enterando del funcionamiento del pic, y lo que es mejor, empiezo a entender poco a poco esas laaaaaaaaaaaargas hojas de características!!  :P

Solo me ha surgido una duda. Un profesor me ha comentado que si programo el pic con el lenguaje CCS (programación en C orientada a los pic, verdad??) que necesito dos programas para poder compilar adecuadamente. Me ha parecido entenderle que por las pruebas que ha hecho él, uno no funciona sin el otro, puede ser??? tampoco me hagan mucho caso, porque no le entendí demasiado bien.

Me pueden resolver la duda? Muchas gracias una vez más!!!
Saludos. Edurne. :D

15
Python / Re: Un Error Que No Consigo Solucionar
« en: Viernes 1 de Abril de 2005, 11:46 »
Ya he encontrado el problema. Lo primero, aclarar que el programa qwue había puesto no era el correcto. Mi problema era que había puesto un bucle while 1 en mi programa principal con un server.handle_request, y el bucle daba error. Ha bastadio con quitar el bucle.

16
Python / Un Error Que No Consigo Solucionar
« en: Viernes 1 de Abril de 2005, 10:31 »
Hola de nuevo. Volví a perfeccionar mi servidor, y todo marcha bien, salvo un error que no entiendo. El programa funciona correctamente, si meto los datos correctos, almacena lo que deseo, si meto datos incorrectos, intenta comprobarlos 5 veces hasta que finalmente me da el mensaje de fallo.
Sin embargo, haga lo que haga, siempre sale en la pantalla del servidor el siguiente mensaje:

Traceback (most recent call last):
  File "./servidorcompleto.py", line 250, in ?
    server = SocketServer.TCPServer(('khaos',port), BaseRequestHandler)
  File "/usr/lib/python2.1/SocketServer.py", line 329, in __init__
    self.server_bind()
  File "/usr/lib/python2.1/SocketServer.py", line 340, in server_bind
    self.socket.bind(self.server_address)
socket.error: (98, 'Address already in use')                                                                                                      



Éste es mi servidor:




#!/usr/bin/python

from pyPgSQL import PgSQL
import SocketServer
import sys, os, string
from syslog import *
import md5
import whrandom
import time

def conectar_db():
   global cnx
   try:
      #syslog(LOG_DEBUG,'\nConectando a la base de datos...')
      cnx = PgSQL.connect(user ='kemdb', host ='khaos', database ='smtu')
      syslog(LOG_DEBUG,'\nConectado a la base de datos, comprobando datos recibidos...')
   except PgSQL.Error:
      sys.exit(1)

def crear_configuracion():
   conf = '%c%c%c%c%c' %(3,5,0x23,0xc2,5)
   return conf

def crear_challenge():
   id = whrandom.randint(0,255)
   syslog(LOG_INFO,'id_cliente:'+str(id))
   a = whrandom.randint(0, 255)
   syslog(LOG_INFO, 'challenge_value=a:'+str(a))
   challenge_value = '%c%c%c%c%c%c' % (whrandom.randint(0, 255),whrandom.randint(0, 255),whrandom.randint(0, 255),whrandom.randint(0, 255),whrandom.randint(0, 255),whrandom.randint(0, 255))
   len_cha = len(challenge_value)
   value_size =1
   name = 'mrpfd'
   len_name = len(name)
   length =11+len_name
   lengthb = length >> 8
   challenge = '%c%c%c%c%c' % (1,id,length,lengthb,len_cha)
   challenge += challenge_value+name
   return challenge
   #print 'identidad:', challenge[1:2]
   #print 'challenge_value:', challenge[5:11]

def analizar_nombre_response(cursor, response, error_com):
   global nombre
   nombre = response[21:]
   #print 'nombre recibido de la respuesta: ', nombre
   query="select * from idip where nombre='" + nombre + "'"
   syslog(LOG_DEBUG,query)
   try:
      cursor.execute(query)
   except PgSQL.Error:
      error_com =1
      syslog(LOG_ERR,'error al buscar usuario en base de datos')
      #sys.exit()
   dat = cursor.fetchall()
   #syslog(LOG_DEBUG,'\nLocalizando datos...')
   n = 0
   for elemento in dat:
      n = n+1
   if n >= 2:
      duplicado = 1
      error_com = 0
      datos = 'duplicado'
      return (duplicado, datos, error_com)
   elif n == 0:
      duplicado = 0
      error_com = 0
      datos  =  ''
      return (duplicado, datos, error_com)
   else:
      duplicado = 0
      error_com = 0
      dato= dat[0]
      datos = dato[0]
      return (duplicado, datos, error_com)

def localizar_nombre_db(datos):
   if datos == '':
      syslog(LOG_ERR,'\nNo se encuentra en la base de datos ')
      encontrado = 0
      return encontrado
   else:
      syslog(LOG_DEBUG,'\nLocalizado en la base de datos')
      encontrado = 1
      return encontrado

def buscar_contrasena(datos, cursor, error_com):
   query = "select password from idip where nombre='" + datos + "'"
   #syslog(LOG_DEBUG,query)
   try:
      cursor.execute(query)
   except PgSQL.Error:
      #sys.exit()
      syslog(LOG_ERR,'\nError al buscar la contrasea')
      error_comunicacion = 1
   contr = cursor.fetchall()
   #print contr
   contras = contr[0]
   return (contras[0], error_com)

def comprobar_encriptamientos(response, password):
   response_value = response[5:21]
   cadena = challenge[1]+password+challenge[5:11]
   #print 'cadena a la que voy a aplicar yo el md5 formada por id+passw de la db+challengevalue: ', cadena
   value = md5.new(challenge[1]+password+challenge[5:11]).digest()
   hexvalue = md5.new()
   hexvalue.update(challenge[1]+password+challenge[5:11])
   imprimir = hexvalue.hexdigest()
   syslog(LOG_INFO,imprimir)
   if value == response_value:
      exito = 1
      syslog(LOG_DEBUG,'\nSuccess')
   else:
      exito = 0
      syslog(LOG_DEBUG,'\nFailure')
   return  exito

def funcion_success(response):
   success = '%c'  % (3)+ response[1]+ '%c%c' % (0x18, 0x00)+ 'success'
   #print success
   return success

def funcion_failure(response):
   failure = '%c'  % (4)+ response[1]+ '%c%c' % (0x1b, 0x00) + 'failure'
   #print failure
   return failure

def almacenar_ip_date_validez(self, cursor, nombre, password, error_com):
   dirip = string.split(self.client_address[0], '.')
   ip = string.atoi(dirip[0])
   ip  <<= 8
   ip |= string.atoi(dirip[1])
   ip <<= 8
   ip |= string.atoi(dirip[2])
   ip <<= 8
   ip |= string.atoi(dirip[3])
   syslog(LOG_INFO, 'ip en su valor verdadero es: %x' %ip)
   strip = str(ip)
   strvalidez = str(1)
   query ="update idip set ip ='" + strip + "'where nombre='" + nombre + "'and password='" + password + "'"
   #syslog(LOG_DEBUG, query)
   error = 0
   try:
      cursor.execute(query)
   except PgSQL.Error:
      syslog(LOG_ERR,'\nError al actualizar  ip')
      #sys.exit()
      error_com = 1
   query = "update idip set date ='" + time.asctime() + "'where nombre='" + nombre + "'and password='" + password + "'"
   #syslog(LOG_DEBUG, query)
   error = 0
   try:
      cursor.execute(query)
   except PgSQL.Error:
      syslog(LOG_ERR, '\nError al  actualizar la fecha')
      #sys.exit()
      error_com =1
   query = "update idip set validez ='" + strvalidez + "'where nombre='" + nombre + "'and password='" + password + "'"
   #syslog(LOG_DEBUG, query)
   try:
      cursor.execute(query)
   except PgSQL.Error:
      syslog(LOG_ERR, '\nError al actualizar la validez')
      #sys.exit()
      error_com = 1
   query = "select * from idip where nombre='" + nombre + "' and password ='" + password + "'"
   #syslog(LOG_DEBUG, query)
   error = 0
   try:
      cursor.execute(query)
   except PgSQL.Error:            
      syslog(LOG_ERR, '\nError al visualizar los datos')
      #sys.exit()
      error_com =1
   datos = cursor.fetchall()
   syslog(LOG_INFO, '\nLos datos introducidos son: '+str(datos))
   return error_com

def desconectar (cursor, cnx):
   cursor.close()
   cnx.commit()
   cnx.close()
   syslog(LOG_DEBUG, '\nDesconectado de la DB')

def chap_simple(self):
   global cursor
   global response
   global challenge
   global conf
   conf = crear_configuracion()
   self.request.send(conf)
   challenge = crear_challenge()
   self.request.send(challenge)
   response = self.request.recv(1024)
   cursor = cnx.cursor()
   error_comunicacion = 0
   cuenta_errores = 1
   while cuenta_errores !=0 and cuenta_errores <6:
      duplicado, datos, error_comunicacion = analizar_nombre_response(cursor, response, error_comunicacion)
      #print 'datos, o nombre a buscar en la db:', datos
      #print 'error de comunicacin antes de ver duplicado:', error_comunicacion
      if error_comunicacion == 0:
         if duplicado == 1:
            syslog(LOG_ERR, '\nSe ha encotrado a ms de un usuario con el mismo nombre.')
            #self.request.send('\nError')
            error_comunicacion = 1
            cuenta_errores = cuenta_errores +1
         else:
            encontrado = localizar_nombre_db(datos)
            if encontrado ==1:
               password, error_comunicacion = buscar_contrasena(datos, cursor, error_comunicacion)
               if error_comunicacion == 0:
                  if password == []:
                     syslog(LOG_ERR, '\nHa habido algn error al tomar el password')
                     error_comunicacion = 1
                     cuenta_errores = cuenta_errores +1
                  else:
                     exito = comprobar_encriptamientos(response, password)
                     if exito ==1:
                        success = funcion_success(response)
                        self.request.send(success)
                        error_comunicacion = almacenar_ip_date_validez(self, cursor, nombre, password, error_comunicacion)
                        syslog(LOG_DEBUG, ' actualizando ip, fecha y validez...')
                        if error_comunicacion == 0:
                           cuenta_errores = 0
                        else:
                           cuenta_errores = cuenta_errores +1
                     else:
                        cuenta_errores = cuenta_errores +1
               else: cuenta_errores = cuenta_errores +1
            else:
               cuenta_errores = cuenta_errores + 1
               #self.request.send('\nError, no localizado en la base de datos')
      else: cuenta_errores = cuenta_errores +1
      print "cuenta_err = ",cuenta_errores,"\n"
      if cuenta_errores == 6 or cuenta_errores == 0:
         failure = funcion_failure(response)
         self.request.send(failure)
         desconectar(cursor, cnx)
      else: pass

class BaseRequestHandler(SocketServer.BaseRequestHandler):
   def handle(self):
      conectar_db()
      chap_simple (self)
      #if cuenta_errores == 0: break
while 1:
   puerto = sys.argv[1]
   port = int(puerto)
   #print "argv[1]=",puerto,"\n"
   server = SocketServer.TCPServer(('',port), BaseRequestHandler)
   #server.BaseRequestHandler
   #server.handle_request()
   server.serve_forever()







y éste es mi cliente:




#!/usr/bin/python
from pyPgSQL import PgSQL
import SocketServer
import sys, os, string
import md5
import whrandom
import socket
def comprobar_nombre_contrasena(so, cuenta_errores):
   while cuenta_errores !=0 and cuenta_errores <6:
      nombre = raw_input('Usuario:')
      contrasena = raw_input('Contrasea:')
      if len(nombre)>20 or len(contrasena)>20 or nombre == '' or contrasena == '':
         cuenta_errores = cuenta_errores + 1
      else:
         for letra in nombre:
            error_nombre = 0
            if letra in string.uppercase or letra in string.digits: pass
            else: error_nombre = error_nombre +1
         for nuevaletra in contrasena:
            error_contrasena = 0
            if nuevaletra in string.uppercase or nuevaletra in string.digits: pass
            else: error_contrasena = error_contrasena +1
         if error_nombre == 0 and error_contrasena == 0 : cuenta_errores = 0
         else: cuenta_errores = cuenta_errores +1
   return (cuenta_errores, nombre, contrasena)
def crear_response(so, contrasena, nombre, challenge):
   response_length=21+len(nombre)
   response_lengthb=response_length>>8
   if response_length > 65535:
      #print '\nError'
      so.close()
   else:
      id = challenge[1]
      #print 'id recibida del challenge: ', challenge[1:2]
      cadena=challenge[1]+contrasena+challenge[5:11]
      #print 'cadena para hacer en md5 de la respuesta formada por: id+contrasea+challengevalue: ', cadena
      value=md5.new(challenge[1]+contrasena+challenge[5:11]).digest()
      hexvalue=md5.new()
      hexvalue.update(challenge[1]+contrasena+challenge[5:11])
      imprimir = hexvalue.hexdigest()
      response = '%c%c%c%c%c' %(2, id, response_length, response_lengthb, 16) + value + nombre
      return response
puerto = raw_input('Puerto:')
port = int(puerto)
so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
so.connect (('', port))
configuration = so.recv(2048)
challenge = so.recv(2048)
cuenta_errores = 1
error = 1
cuenta_errores, nombre, contrasena = comprobar_nombre_contrasena(so, cuenta_errores)
if cuenta_errores == 0:
   response = crear_response(so, contrasena, nombre,  challenge)
   #print 'response mandada formada por: code+id+long+valuesize+value+name: ', response
so.send(response)
resultado = so.recv(1024)
code = ord(resultado[0])
if code == 3: print 'success'
elif code == 4: print 'failure'
else: print 'fallo al recibir estado'
so.close()




Si alguien me puede ayudar me sería muy útil. Gracias!!
Saludos, Edurne

17
Python / Re: Libglade En Python
« en: Viernes 1 de Abril de 2005, 10:24 »
Hola, muchas gracias por tu respuesta, sin embargo, ya había consultado esas páginas, pero sigo sin entender muy bien el funcionamiento. Seguiré buscando y si encuentro alguna información más clara la pondré aquí por si a alguien más le pueda ayudar.
Saludos, Edurne

18
Python / Libglade En Python
« en: Viernes 18 de Marzo de 2005, 09:35 »
Hola!! me gustaría que me dijérais dónde puedo encontrar información o ejemplos de aplicación de la librería libglade. Estoy muy perdida, en glade ya he hecho mi pequeña interfaz, sencilla, y con algunas dudas a la hora de asignar señales a los botones, pero más o menos entiendo. El problema es a la hora de pasar a python y completarlo, porque solo puedo usar la librería libglade y no tengo ni idea de por dónde cogerlo.
Me podéis ayudar??
Gracias!!!
Edurne.

19
Python / Re: Implementar Un Interfaz De Usuario
« en: Martes 8 de Marzo de 2005, 12:00 »
Gracias por la ayuda, el manual parece completo, al menos, he encontrado por fin una lista donde bscar las instrucciones que me hacen falta.... pero no entiendo nada una vez que abro cualquiera de ellas! Me está hablando de funciones, de clases, de sublcases, y los ejemplos sencillos que aparecen junto a las explicaciones.... me lo parece a mí, o no tienen nada que ver con cómo se supone que dice que hay que hacerlo???

Solo tengo líneas sueltas de un código mal escrito seguro!! por favor, alguien que pueda ayudarme??? esto es lo que tengo:

import gtk
def imprimir(*args):
    ....
def indicar_puerto(*args):
    ....    
   
window=new(GTKwindow, type=WINDOW_TOPLEVEL, title='Cliente', allow_grow=FALSE, allow_shrink=FALSE, border_width=5)
window.connect('pressed', imprimir)
button=new(GTKButton, label='Conectar a servidor', parent=window, visible=TRUE)
button.connect('pressed', indicar_puerto)

puerto=gtk.SpinButton('digits'=5, 'numeric'=TRUE, 'snap-to-ticks'=FALSE)
gtk.SHADOW_NONE
adjustment.upper=9999
au=adjustment.upper
adjustment.lower=0000
al=adjustment.lower

dialog=gtk.dialog('Comunicaci�n con el servidor', gtk.DIALOG_MODAL|gtk_.DIALOG_DESTROY_WITH_PARENT,(gtk.STOCKE_OK, gtk.RESPONSE_ACCEPT, gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT)))


SOCORRO!!!!

20
Microcontroladores / Re: Un Proyecto Con Dos Pic
« en: Lunes 7 de Marzo de 2005, 11:09 »
Hola! exactamente era eso lo que quería decir con sincronizados, que la señal de reloj tuviera que ir perfectamente a la par. Y también entendiste bien en el sentido de que la señal que va de un pic al otro, servirá simplemente para que el segundo haga una u otra cosa, pero no en un diagrama de tiempos preciso, sino que cada uno tendrá su bucle infinito y en función de la señal que produzca el primer pic, el segundo actuará.

Muchas gracias por vuestra colaboración, está siendo una grandísima ayuda!

21
Python / Implementar Un Interfaz De Usuario
« en: Lunes 7 de Marzo de 2005, 11:03 »
Hola a todos! después de hacer mi servidor y después de mucho marear la perdiz, ha llegado el momento de implementar un interfaz de usuario sencillo. Creo que voy a hacerlo con gtk, el problema es que no sé dónde puedo encontrar todas las instrucciones o documentación completa para empezar con ello. De momento estoy echando un vistazo a algunos ejemplos.

Si alguien puede ayudarme, se lo agradecería mucho!
Saludos.

22
Microcontroladores / Un Proyecto Con Dos Pic
« en: Viernes 4 de Marzo de 2005, 09:49 »
Hola a todos!!! finalmente, después de analizar nuestro proyecto y plantearnos usar un pic 16f877, vimos que las patillas se nos quedaban muy cortas. Intentamos incluso multiplexando varias entradas y salidas... pero se nos ocurrió algo mucho más sencillo.

Con uno de los pic vamos a controlar la lcd, el teclado matricial y la temperatura exterior e interior de la casa(y vamos a visualizarlo constantemente). Y en función de en qué estado se encuentre (lectura de un código introducido por el teclado), una patilla configurada como salida del primer pic, se configurará como entrada del otro. De esta manera, para controlar el resto de las funciones que queremos automatizar en la casa...se simplifica mucho.

Mi compañera y yo hemos pensado que como los pic hacen labores independientes, aunque sí que se comunican, pero no escrupulosamente, no será necesario que estén sincronizados. Creemos que simplemente los programas que grabemos en cada pic van a ser independientes aunque a la salida, antes de la etapa de potencia, usemos puertas lógicas para relacionar salidas de un pic y del otro, no???

Al final, la pregunta es sencilla, más o menos leyendo lo que he intentado explicar lo más claro posible... estáis de acuerdo conmigo en que en este proyecto no es requisito imprescindible en que los dos pic vayan sincronizados??? y en caso de sí ser necesario... alguien puede decirme cómo hacerlo??

Gracias a todos por vuestro tiempo y vuestra ayuda!!!

23
Python / Re: Ya Lo Terminé Por Fin
« en: Martes 1 de Marzo de 2005, 12:53 »
Muchas gracias, al final había optado por convertir primero cada cadena a int, luego cada int a hexadecimal y luego elemininar los dos primero caracteres de cada string hexadecimal y juntarlos en una nueva cadena.
Pero así es todo mucho más sencillo. Me ha sido de gran ayuda!!

24
Python / Ya Lo Terminé Por Fin
« en: Lunes 28 de Febrero de 2005, 09:19 »
Holaaa!! ya conseguí hacer mi servidor como deseaba. He utilizado el protocolo md5 y aunque sé que no se pueden transformar los mensajes de md5 para que sean entendibles (claramente ese es el fin del encriptamiento....) me gustaría visualizar la cadena de md5 en hexadecimal. Lo he intentado con infinidad de instrucciones, pero no tengo claro si al transformar una cadena a md5, lo que resulta es otro string, porque parece que las instrucciones para un string no valen en este caso.
Esto es lo que tengo:


      value=md5.new(challenge[1:2]+contrasena+challenge[5:11]).digest()
      print 'value resultado de aplicar el md5 a la response:', value
      for c in range (0,len(value)-1):
         print '%02X' % int(value[c])

pero me da el siguiente error:

value resultado de aplicar el md5 a la response: `¤ÞDãÕxÊò×þþ!M
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "cliente.py", line 64, in ?
    crear_response()
  File "cliente.py", line 53, in crear_response
    print '%02X' % int(value[c])
ValueError: invalid literal for int():


Y si en lugar de eso, pongo simplemente:

 value=md5.new(challenge[1:2]+contrasena+challenge[5:11]).digest()
      print 'value resultado de aplicar el md5 a la response:', value
           string.atoi(value, 2)


el error es el siguiente:
value resultado de aplicar el md5 a la response: `¨ëjanyÂÔ4#t~¸·9
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "cliente.py", line 63, in ?
    crear_response()
  File "cliente.py", line 52, in crear_response
    string.atoi(value, 2)
  File "/usr/lib/python2.1/string.py", line 214, in atoi
    return _int(s, base)
ValueError: invalid literal for int(): `¨ëjanyÂÔ4#t~¸·9

Si alguien me puede ayudar se lo agradecería, qué tipo de resultado da el md5.new('').digest()?? cómo puedo cambiarlo a hexadecimal si es que se puede para visualizar esos caracteres de forma legible??

25
Microcontroladores / Re: Iniciándome A La Fuerza En Los Pics
« en: Viernes 25 de Febrero de 2005, 20:55 »
Muchas gracias por las aclaraciones!!! realmente vais a ser una ayuda para mi. Ya estoy mirando las conexiones de mi LCD y de mi teclado matricial, así que.... determinando ya los puertos que voy a utilizar. Después de terminar eso... a por todas!!! jejeje.
Posiblemente vosotros estais ya muy avanzados en esto, pero he encontrado alguna página interesante y os la dejo por aquí, de acuerdo? Son introducciones básicas a los microcontroladores, pero bueno, me ha parecido lo suficientemente claro como para que pueda servir a alguien tan novatillo como yo.

Muchas gracias, y nos vemos por aquí!!!
Edurne.

http://dac.escet.urjc.es/docencia/Micros/?documentacion.html
http://www.x-robotics.com/rutinas.htm#Tecl...Matricial%204x4

Páginas: [1] 2