archive-es.com » ES » S » SISTEMASORP.ES

Total: 315

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".
  • SISTEMAS O.R.P » 2006 » marzo
    Por ello la interfaz esta diseñada para recibir información cuando se hace la petición http al servidor y no se refresca hasta que no se vuelva a seleccionar otro estado eligiendo el aparato y pulsando Enviar o ver el estado actual pulsando el botón Ver Estado Si el usuario es administrador además de poder visualizar los aparatos e interactuar con ellos como otro usuario con permisos también es capaz de manejar los comandos privilegiados además de poder hacer consultas sql a la base de datos El fichero ASP es el encargado de hacer la conexión TCP IP al programa Luces tanto Luces como el IIS residen en la misma máquina para ello usé un componente ActiveX llamado vbwinsock y que lo podeis descargar aquí La sección java es similar a la de HTML pero orientada a usuarios que tienen acceso directo a Internet Se llama así porque la parte donde estan representados los aparátos es un applet de java con conexión directa al servidor de Luces la seguridad de java solo deja conectarse al mismo dominio desde que se pidió la página Por ello si pulsamos en cualquiera de los botones se actualiza rápidamente el estado incluso si otro usuario cambia el estado de alguno de los aparatos también se vería reflejado Sería como conectarse por telnet pero de una forma mucho más sencilla y amigable Ha habido gente que me ha preguntado por qué tardo tanto en escribir entre artículo y artículo la razón es que tengo poco tiempo y otras veces no tengo ganas de salir del trabajo para ponerme otra vez en frente del ordenador por eso os pido un poco de paciencia Otras personas me han preguntado si voy a dejar accesible el código fuente de las aplicaciones que aquí menciono y si efectivamente lo liberaré

    Original URL path: http://www.sistemasorp.es/2006/03/ (2013-05-07)
    Open archived version from archive


  • SISTEMAS O.R.P » 2006 » febrero » 12
    distintos por otra parte los cuatro bornes de entrada van conectados a cuatro de los ocho cables de datos de un cable paralelo Aprovechando que es muy sencillo acceder al puerto paralelo del ordenador y que las señales son de 5 voltios más que suficiente para activar los optoacopladores es posible mandar un byte al puerto de datos del paralelo 0 378 para que llegue a los bornes del circuito y posteriormente active los relés Como funciona la lógica de encender y apagar relés pues cuando se manda un byte a través del puerto paralelo los bits que esten a 1 hacen que los correspondientes pines del puerto paralelo se activen a 5 voltios lo que en el circuito provoca finalmente que se activen los relés asociados Asi por ejemplo si enviamos un 3 en binario es 0011 activándose los dos primeros relés Con este sistema se pueden encender lámparas calefacciones microondas lavadoras persianas eléctricas sistemas de riego etc En windows 95 98 y Millenium se puede acceder directamente al puerto paralelo sin embargo en windows nt 2000 y xp se necesita crear un driver que se ejecute en el nivel ring privilegiado 0 porque en el nivel 3 no se permite hacer directamente Como tampoco quise perder tiempo en crear mi propio driver usé un programa que ya hace todo eso de una forma muy sencilla Port Talk el cual una vez instalado da permiso a una aplicación proceso para que acceda a un puerto determinado o a todos desde la linea de comandos Finalmente solo basta usar el método outp en C para enviar datos al puerto paralelo outp 0 378 3 Manejar aparatos eléctricos desde el PC domótica 2 5 Categories Electrónica Informática Proyectos Reseñas Sin categoría Uncategorized Calendar febrero 2006 L M X J V S

    Original URL path: http://www.sistemasorp.es/2006/02/12/ (2013-05-07)
    Open archived version from archive

  • SISTEMAS O.R.P » 2006 » febrero » 21
    usuarios no administradores manejar los aparatos QUIT Cierra la aplicación BYE Apaga el equipo En primer lugar el orden que se debe seguir es Servidor Mensaje de Saludo Cliente Enviar USER y el nombre de usuario Servidor Mensaje de Usuario Introducido Cliente Enviar PASS y la contraseña del usuario Servidor Mensaje de Contraseña Introducida Si el usuario introduce una contraseña incorrecta el servidor le mostrará un fallo en la autentificación 302 y cerrará la conexión Si el usuario introduce un comando no reconocido cuando se está validando el servidor le mostrará un comando no reconocido 301 y le cerrará la conexión en cambio cuando este validado solo le mostrará el estado de los aparatos 101 Si el usuario introduce antes el comando PASS que el USER el servidor le mostrará estado no identificado 300 y le cerrará la conexión En segundo lugar cuando el usuario ya esta validado puede introducir o bién los comandos OPEN CLOSE QUIT y BYE o bién un número de 0 a 15 que actuaría como máscara para encender o apagar los aparatos si el número es mayor que 15 se usa el módulo de 16 Haciendo un telnet lo anterior comentado se vería de la siguiente forma Y en la aplicación Luces se vería así Si ahora cometemos un error por ejemplo metemos mal el usuario el resultado quedaría así Como se puede observar la segunda conexión la he hecho a través de otro ordenador Gracias a que se usa el protocolo el tcp ip se puede conectar desde cualquier programa independientemente del sistema operativo arquitectura de ordenador etc Por otro lado el sistema se basa en una base de datos para gestionar los usuarios los eventos y los aparatos En mi caso usé una base de datos access pero como es lógico pensar se puede usar cualquier tipo de base de datos relacional Las tablas son sólo 4 y se detallan a continuación tblUsuarios Donde se almacenan los usuarios del sistema y sus permisos intID Autonúmerico o secuencia que identifica al usuario inequivocamente strNombre Nombre del usuario strApellidos Apellido o apellidos del usuario strLogin Identificador del usuario para validarse en el sistema strPassword Contraseña del usuario para validarse en el sistema blnActivo Bandera que indica si un usuario puede validarse en el sistema o no bytNivel Nivel del usuario 100 administrador 50 usuario normal 0 visitante bytMascara Máscara de permiso para aparatos Si el usuario tiene por ejemplo 10 1010 en binario sólo puede utilizar los aparatos 2 y 4 en cambio los aparatos 1 y 3 únicamente puede ver su estado tblAcciones Donde se almacenan las distintas acciones del usuario bytID Autonúmerico o secuencia que identifica la acción inequivocamente strAccion Nombre de la acción Usuario Validado Usuario Desconectado Orden y Comando tblLog Donde se almacena la actividad que lleva a cabo el usuario intID Autonúmerico o secuencia que identifica la acción del usuario intUsuario Campo relacionado con el intID de la tabla tblUsuarios bytAccion Campo relacionado con el bytID de la tabla tblAcciones

    Original URL path: http://www.sistemasorp.es/2006/02/21/ (2013-05-07)
    Open archived version from archive

  • SISTEMAS O.R.P » 2005 » noviembre
    memset destino sin zero 8 if connect sock struct sockaddr destino sizeof struct sockaddr SOCKET ERROR fprintf stderr No se pudo conectar al servidor else sprintf sPeticion GET cddb cddb cgi cmd cddb read misc s hello sistemasorp sistemasorp blogspot com testeoCDDB 1 0 proto 1 HTTP 1 0 r n sIDDisco strcat sPeticion Host freedb freedb org r n r n nEnviados send sock sPeticion strlen sPeticion 0 if nEnviados SOCKET ERROR fprintf stderr No se pudo enviar la peticion al servidor nRecibidos 0 while strstr sBuffer r n r n NULL nRecibidos recv sock sBuffer nRecibidos 1024 0 sBuffer nRecibidos WSACleanup else fprintf stderr No se puedo inicializar la conexion return sBuffer Funcion cddb Suma Devuelve un número sacado a través de una suma de cifras Parámetros nDuracion Duración en segundos de una pista Descripción Esta función se encarga de sumar todas las cifras de distinto peso entre si para posteriormente devolver el resultado int cddb Suma int nDuracion int nSuma 0 while nDuracion 0 nSuma nSuma nDuracion 10 nDuracion nDuracion 10 return nSuma Funcion cddb IDDisco Devuelve en número que identifica al CD inequivocamente Parámetros toc Información de la tabla de contenidos del CD Descripción Esta función se encarga de calcular el identificador único de un CD a través de su tabla de contenidos unsigned long cddb IDDisco CDROM TOC toc int nIndice 0 nTotalTiempo 0 nSumatorio 0 int nTotalPistas nTotalPistas toc LastTrack toc FirstTrack 1 while nIndice nTotalPistas nSumatorio nSumatorio cddb Suma toc TrackData nIndice Address 1 60 toc TrackData nIndice Address 2 nIndice nTotalTiempo toc TrackData toc LastTrack Address 1 60 toc TrackData toc LastTrack Address 2 toc TrackData 0 Address 1 60 toc TrackData 0 Address 2 return nSumatorio 0xff 24 nTotalTiempo 8 nTotalPistas int main int argc char argv CDROM TOC toc char sIDDisco 9 char sBuffer if argc 2 memset toc 0 sizeof CDROM TOC lee CDTOC argv 1 toc if toc LastTrack 0 sprintf sIDDisco 08x cddb IDDisco toc printf El ID del disco es s n sIDDisco sBuffer char malloc 4096 if sBuffer NULL fprintf stderr No se pudo alojar memoria return 1 sBuffer lee InfoCDDB sIDDisco sBuffer if sBuffer return 1 printf La información del disco es n s sBuffer free sBuffer else return 1 else fprintf stderr La sintaxis es s unidad de cd n Ejemplo s d n argv 0 argv 0 return 1 return 0 LINUX ejecutable y fuentes include stdio h include stdlib h include fcntl h include stdarg h include errno h include netdb h include unistd h include string h include sys ioctl h include sys types h include sys socket h if defined linux include linux cdrom h elif defined sun include sys cdio h endif typedef struct int minutos segundos TRACK DATA typedef struct unsigned char FirstTrack unsigned char LastTrack TRACK DATA TrackData 100 CDROM TOC Funcion lee CDTOC Parámetros sDispositivo ruta del dispositivo de CD toc estructura donde se almancena la tabla de contenidos del CD Descripción Esta función se encarga de guardar en la variable toc la información de la tabla de contenidos del CD ubicado en el dispostivo lector de cdrom void lee CDTOC char sDispositivo CDROM TOC toc struct cdrom tochdr tochdr struct cdrom tocentry tocentry int nIndice manejador manejador open sDispositivo O RDONLY O NONBLOCK if manejador 1 fprintf stderr No se pudo acceder al disco de la unidad de CD n return if ioctl manejador CDROMREADTOCHDR tochdr 1 fprintf stderr No se pudo leer el contenido del CD n else toc FirstTrack tochdr cdth trk0 toc LastTrack tochdr cdth trk1 for nIndice toc FirstTrack nIndice toc LastTrack nIndice tocentry cdte track nIndice tocentry cdte format CDROM MSF ioctl manejador CDROMREADTOCENTRY tocentry toc TrackData nIndice 1 minutos tocentry cdte addr msf minute toc TrackData nIndice 1 segundos tocentry cdte addr msf second tocentry cdte track 0xAA tocentry cdte format CDROM MSF ioctl manejador CDROMREADTOCENTRY tocentry toc TrackData toc LastTrack minutos tocentry cdte addr msf minute toc TrackData toc LastTrack segundos tocentry cdte addr msf second close manejador Funcion lee InfoCDDB Devuelve una cadena con los resultados de la petición Parámetros sIDDisco identificador único del cd sBuffer buffer donde almacenar los resultados de la petición Descripción Esta función se encarga de pedir a freedb la información relacionada con un identificador de cd determinado y devolver todo el contenido de la petición char lee InfoCDDB char sIDDisco char sBuffer int sock struct hostent servidor struct sockaddr in destino char sPeticion 256 int nEnviados nRecibidos if sock socket PF INET SOCK STREAM 0 1 fprintf stderr No se pudo crear la conexion else if servidor gethostbyname freedb freedb org NULL fprintf stderr No se pudo obtener la IP del servidor else destino sin family AF INET destino sin port htons 80 destino sin addr struct in addr servidor h addr list 0 memset destino sin zero 8 if connect sock struct sockaddr destino sizeof struct sockaddr 1 fprintf stderr No se pudo conectar al servidor else sprintf sPeticion GET cddb cddb cgi cmd cddb read misc s hello sistemasorp sistemasorp blogspot com testeoCDDB 1 0 proto 1 HTTP 1 0 r n sIDDisco strcat sPeticion Host freedb freedb org r n r n nEnviados send sock sPeticion strlen sPeticion 0 if nEnviados 1 fprintf stderr No se pudo enviar la peticion al servidor nRecibidos 0 while strstr sBuffer r n r n NULL nRecibidos recv sock sBuffer nRecibidos 1024 0 sBuffer nRecibidos return sBuffer Funcion cddb Suma Devuelve un número sacado a través de una suma de cifras Parámetros nDuracion Duración en segundos de una pista Descripción Esta función se encarga de sumar todas las cifras de distinto peso entre si para posteriormente devolver el resultado int cddb Suma int nDuracion int nSuma 0 while nDuracion 0 nSuma nSuma nDuracion 10 nDuracion nDuracion 10 return nSuma Funcion cddb IDDisco Devuelve en número que identifica al CD inequivocamente Parámetros toc Información de la tabla de contenidos del CD Descripción Esta función se encarga de calcular el identificador único de un

    Original URL path: http://www.sistemasorp.es/2005/11/ (2013-05-07)
    Open archived version from archive

  • SISTEMAS O.R.P » 2006 » enero » 08
    se muestra como inicializa el puerto a 1200 baudios 8 bits de datos ninguna paridad y 1 bit de stop A continuación vienen los datos propiamente dichos Para la prueba he pulsado el botón 1 del mando a distancia y el resultado es FE 9F 31 si hubiese pulsado el 2 el resultado sería FE 3D 32 Si lo observamos veremos que el 1 y el 2 y el resto de números coinciden con su representación ASCII en hexadecimal 31 y 32 En otros casos como la pulsación de las teclas de subir FE F1 3B y bajar FE 64 3D volumen o subir FE 17 3F y bajar FE C6 3E de canal muestran otros caracteres En el caso de que dejáramos una tecla pulsada los códigos varían ligeramente como en la imágen que aparece el triplete FE 77 71 cuando se deja pulsado el botón 1 del mando a distancia En definitiva da igual que sea en linux o en windows podemos capturar estos tripletes y actuar en consecuencia con cada pulsación recibida si se pulsa el botón de off apagamos el equipo si pulsamos los botones de subir y bajar el volumen y los canales podemos manejar el puntero del ratón con el mute podemos apagar el altavoz del equipo con el botón de play podemos enviar un tabulador con los números podemos escribir letras estilo sms etc Por supuesto que esa información venga así en mi receptor de infrarojos no significa que sea igual en otros de ahi que haya que mirar como funciona con utilidades como el portmon Categories Electrónica Informática Proyectos Reseñas Sin categoría Uncategorized Calendar enero 2006 L M X J V S D nov feb 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

    Original URL path: http://www.sistemasorp.es/2006/01/08/ (2013-05-07)
    Open archived version from archive

  • SISTEMAS O.R.P » 2006 » enero » 26
    usarlo como transmisor receptor de sms por lo que leyendo un poco la documentación del móvil veo que para enviar sms se usa el comando AT CMGS Sin embargo mi móvil no permite mensajes de texto de forma directa sino que necesita enviarlos en formato estandar PDU también cuando muestra los recibidos Buscando por ahí no he encontrado mucho código fuente en java smstools por lo que me hice una rutina en C para pasar de texto a PDU y viceversa Transforma un texto normal pchOriginal en PDU pchTransformado devolviendo pchTransformado char formatoMensaje char pchOriginal char pchTransformado char pchTablaHex 0 1 2 3 4 5 6 7 8 9 A B C D E F unsigned char chrCaracter int intContador int intIndice int intTamano int intMascara int intDesplaza intTamano strlen pchOriginal intMascara 1 intContador 0 intIndice 2 strcpy pchTransformado 00 intDesplaza 7 while intContador intTamano chrCaracter pchOriginal intContador 1 intMascara intDesplaza pchOriginal intContador 7 intDesplaza pchTransformado intIndice pchTablaHex chrCaracter 0xF0 4 intIndice pchTransformado intIndice pchTablaHex chrCaracter 0x0F intIndice intContador intMascara 1 intMascara intDesplaza if intDesplaza 1 intMascara 1 intDesplaza 7 intIndice 2 pchTransformado intIndice chrCaracter char intTamano pchTransformado 0 pchTablaHex chrCaracter 0xF0 4 pchTransformado 1 pchTablaHex chrCaracter 0x0F return pchTransformado Transforma un texto PDU pchOriginal en texto normal pchTransformado devolviendo pchTransformado char decodificaMensaje char pchOriginal char pchTransformado char pchLetras 5 unsigned char chrCaracter int intTamano int intContador int intArrastre int intDesplaza int intIndice int intMascara intMascara 128 intIndice intContador intArrastre intDesplaza 0 strcpy pchLetras 0x strncat pchLetras pchOriginal intIndice 2 sscanf pchLetras x intTamano intIndice 2 while intContador intTamano strcpy pchLetras 0x strncat pchLetras pchOriginal intIndice 2 sscanf pchLetras x chrCaracter pchTransformado intContador chrCaracter intMascara intDesplaza intArrastre intArrastre chrCaracter intMascara 7 intDesplaza intIndice 2 intMascara 1 intMascara 128 intDesplaza if intMascara 255 intContador pchTransformado intContador chrCaracter 1 intMascara 128 intDesplaza

    Original URL path: http://www.sistemasorp.es/2006/01/26/ (2013-05-07)
    Open archived version from archive

  • SISTEMAS O.R.P » 2005 » septiembre
    un poco grandes para la sección de la web por lo que elijo la opción Medianas ahora pulsaremos por ejemplo sobre la página 3 del catálogo Si os fijais a medida que he ido pulsando enlaces la url aparece con más datos http images google es images q star wars imgsz small 7Cmedium 7Clarge 7Cxlarge svnum 10 hl es lr start 40 sa N Esto es lo que nos servirá como primer punto para la busqueda de imágenes relacionadas con un tema determinado Si os fiajis en los parámetros de la url está la letra q donde se almacena el criterio de la búsqueda en mi caso star wars imgsz que indica el tamaño de las imágenes a buscar puede ser también xxlarge e icon aunque en mi caso es small 7Cmedium 7Clarge 7Cxlarge svnum que no se para que sirve ya que si lo quito funciona igual hl para el idioma de los resultados lr que tampoco sé para que sirve start que indica desde que indice empezar este es muy importante ya que aqui usaremos el primer número aleatorio sa N que no se para que sirve Como os comentaba con start se puede indicar desde que índice de las imágenes empezar a mostrar 0 sería desde la primera página 20 desde la segunda página 40 desde la tercera etc También podemos poner valores intermedios pero yo sigo el camino de google con sus enlaces Una vez que ya podemos elegir que página de imágenes queremos cargar ya solo queda elegir que imagen de las 20 que aparece en esa página mostrar momento por el cual debemos usar el segundo número aleatorio Pero claro lo que nos interesa son las imágenes de google no las originales a las que apunta el enlace de cada una de ellas Por eso debemos recorrer el codigo fuente HTML de la página que hemos recuperado para ir etiqueta por etiqueta IMG hasta alcanzar el número aleatorio que habiamos solicitado Sin embargo no podemos empezar desde el principio puesto que google tiene en su página un logo unas imagenes de 1 pixel de grosor etc Es por ello que debemos comenzar a partir de un punto donde sepamos que a continuación todas las etiquetas IMG son las de los thumbnails En mi caso uso la cadena Solamente se muestran las A partir de entónces cuando ya obtengamos el atributo src de la etiqueta IMG requerida ya podremos recuperar los bytes de la imagen thumbnail de google a través de su url Posteriormente solo queda mostrarla a través del PHP El siguiente código fuente muestra como lo hacer lo que he comentado anteriormente desde una página php Hacemos que nunca se cachee ninguna imagen header Expires Mon 26 Jul 1997 05 00 00 GMT header Last Modified gmdate D d M Y H i s GMT header Cache Control no store no cache must revalidate header Cache Control post check 0 pre check 0 false header Pragma no cache elegimos una sección al azar

    Original URL path: http://www.sistemasorp.es/2005/09/ (2013-05-07)
    Open archived version from archive

  • SISTEMAS O.R.P » 2005 » noviembre » 01
    YEAR NOW ORDER BY IDMensaje or die No se puede realizar la consulta En mi caso guardo los mensajes en una base de datos mysql por lo que con la consulta SQL compruebo aquellos mensajes cuyo ID sea mayor que el último ID de mensaje que se ha mostrado solo aquellos dentro de la semana actual del año en curso if mysql num rows rs 0 while fila mysql fetch array rs MYSQL ASSOC Compruebo si hay nuevos mensajes y los recorro id fila IDMensaje Voy actualizando la variable id para que contenga al final el último ID y así en la siguiente pasada del bucle solo recoger los últimos mensajes escritos a partir del indicado echo div n echo span fila DatFecha span echo span fila StrUsuario gt span echo span fila StrMensaje span echo div n Se va mostrando el contenido de los mensajes fecha remitente y mensaje echo script scrollTo 0 999999999 script n ob flush flush Con un pequeño truco en javascript logramos desplazar la ventana del navegador siempre hasta el final del contenido A continuacuón vaciamos el buffer hacia el navegador del cliente sleep 1 Para no recargar mucho el servidor mysql haciendo constantemente consultas pausamos durante un segundo la ejecución para después continuar con la siguiente iteración del bucle Quizá penseis que esta solución recarga mucho el servidor tanto el web como el de mysql pero el impacto es mínimo y si teneis un hosting esto os ahorrará ancho de banda puesto que gasta más por usuario el estar haciendo peticiones al servidor web cada X tiempo que una sola petición que dure eternamente solo gasta lo que envia como una petición normal en cuanto al servidor mysql si este esta en localhost como el 99 de los hosting el impacto es mínimo porque

    Original URL path: http://www.sistemasorp.es/2005/11/01/ (2013-05-07)
    Open archived version from archive



  •