1

NeoIndent 2.0

sshot-1Buenas hoy les traigo NeoIndent 2.0, una actualización que tenia archivada hace tiempo en un DVD con algo de polvo.

Que tiene de nuevo?

  • Super rápido. Si, rapidísimo ya que utiliza NeoPHP para realizar el indent.
  • Nueva interfaz simulando una app de win 8.
  • Editor actualizado a hpwPlusmemo con un tema similar al sublime text.

Que más puedo esperar de NeoIndent?

Pues tengo pensado unas funcionalidades para tratar de integrarlo a neobook, pero está en pruebas y no prometo nada jeje

Está genial…de donde lo descargo?

Acá abajo

  NeoIndentSetup.exe (8,9 MiB, 3.359 hits)

 

6

Neobook y Arduino

arduino-b

Buenas hoy  voy a mostrarles un ejemplo de conexión con arduino pedido por Cheolucho.

Plugins utilizados:

gtComms (G Turner) (Descargar)

Lado Neobook:

Para conectarnos al puerto serie tendremos que utilizar la función

gtCommOpenStd "14,9600"

Como vemos la función recibe 1 parámetro pero separa por “,” y los transforma en 2 lo que seria:

14 > El puerto COM al cual queremos conectarnos

9600 > Velocidad (baudios)

Para cerrar la conexión debemos usar la función gtCommClose pasandole como parámetro solo el puerto que deseamos cerrar.

Para mandar datos:

Usamos gtCommSend con los siguientes parámetros

gtCommSend "14,3"

14 > El puerto COM

3 > Dato a enviar

Tambien podriamos enviar el contenido de una variable con lo que quedaria:

gtCommSend "14,[enviar]"

Para recibir datos de arduino:

Usamos gtCommRxS con los siguientes parámetros

gtCommRxS "14,1,return"

14 > El puerto COM

1 > Numeros de bytes a leer

return > Nombre de la variable donde almacenara la lectura (sin las [])

Si tenemos errores estos aparecerán en las variables [gtOpenCommErr] y [gtCommErr].

Lado Arduino:

Para este ejemplo use 1 Display de 7 segmentos (Common Cathode) siguiendo el siguiente esquema

arduino-7-segment-LED-display-circuit

Por ultimo utilzamos el siguiente sketch

//Creamos el array de numeros
const byte numeros[11] = {
    B11111100, //0
    B01100000, //1
    B11011010, //2
    B11110010, //3
    B01100110, //4
    B10110110, //5
    B00111110, //6
    B11100000, //7
    B11111110, //8
    B11100110, //9
    B00000000, //nada
};
const int pins[8] = {
    5, 8, 9, 7, 6, 4, 3, 2
};
void setup() {
    //iniciamos el puerto serie
    Serial.begin(9600);
    //iniciamos los pines en modo salida
    for (int i = 0; i & lt; 8; i++) {
        pinMode(pins[i], OUTPUT);
    }
}
void loop() {
    //si existe algo en el serie
    if (Serial.available()) {
        //leemos lo que mandamos por serie
        int r = Serial.read() – ’0′;
        //enviamos respuesta lo que leimos (a modo debug)
        Serial.print((int) r);
        //y por ultimo mostramos el numero correspondiente del array
        mostrarDigito((int) r);
        delay(100);
    }
}
void mostrarDigito(int numero) {
    boolean BitSet;
    for (int segmento = 0; segmento & lt; 8; segmento++) {
        BitSet = bitRead(numeros[numero], segmento);
        digitalWrite(pins[segmento], BitSet);
    }
}

Screenshots

sshot-1

sshot-2

Utilizando el mismo ejecutable con otro proyecto

IMG_20130818_151253

Descarga

  ejarduino.rar (1,6 MiB, 2.679 hits)

Espero que sea útil

Saludos

3

Bases de Datos (III)

Antes de comenzar hice unos cambios:

* Agregue 1 campo Código (Puede ser un código interno que tengamos puestos en nuestros cds).
* Se puso el nombre de la db en una variable [DBNombre].
* Se puso la ruta de la db en una variable [DBRuta].
* Los botones con color celeste son los nuevos.

En esta entrega veremos como realizar búsquedas.

Para qué realizar búsquedas? 

Las búsquedas nos permiten filtrar la información de la base de datos. Si tenemos una agenda de contactos en algún momento tendremos que buscar el numero de una persona. O simplemente son necesarias, pues cuando ya tenemos muchos registros no podemos estar recorriendo uno por uno para encontrar el deseado.

NeobookDB nos ofrece 2 acciones para buscar pero nosotros usaremos dbfQuery ya que ésta nos permite realizar búsquedas que involucren a varios campos.

Por ejemplo si queremos evitar registros duplicados (utilizaremos un campo código) tendremos que realizar una búsqueda para ver si existe y mostrar un mensaje (ver ejemplo).

Operadores

Podremos crear búsquedas complejas con los siguientes operadores:
= Busca al menos parte del contenido (ej. … “Tipo=Auto” … Encontraría registros como auto, automático, automotor,etc.)
== El contenido del campo es exactamente igual a lo que se busca.
< El contenido del campo es menor a lo que se busca. > El contenido del campo es mayor a lo que se busca.
<> El contenido del campo es distinto a lo que se busca.
Los conectores AND (y) y OR (ó) nos permiten unir varios criterios.

Ejemplo

dbfQuery “[DB]” “Nombre=Pedro AND Edad>21 AND Edad<57”

Con eso estaríamos buscando en nuestra base todos los registros de personas que se llamen Pedro y que tengan entre 21 y 57 años de edad.

A tener en cuenta

Cuando hacemos búsquedas nuestra vista de la tabla se actualizara mostrando sólo los registros que devolvió dicha búsqueda. Para volver a mostrar todos los registros deberemos usar dbfShowAll.

Otro punto importante es que si la búsqueda dio como resultado varios registros queda seleccionado automáticamente el primero de éstos, para acceder a los siguientes deberemos usar las acciones  dbfNext, dbfPrev, dbfFirst, dbfLast. Lo recomendable es proveerle al usuario una forma cómoda para seleccionar el registro deseado (una vista podría ser).

Screenshot

sshot-5

Descarga

  db-MisCds-3.rar (1,3 MiB, 2.993 hits)

0

Ejemplo reiniciar publicacion

Hola este ejemplo es para responder a Jorgesp que tenia la siguiente consulta:

Hola!! ¿alguien sabe qué función puedo crear para reiniciar la aplicación? Cerrar y abrir de nuevo el ejecutable sin necesidad de plug-ins, ¿hay alguna función? Gracias!!!

Para resolver esto hice la función ReiniciarPub:

.Separamos la variable commandline
StrParse "[CommandLine]" "[#13]" "[Parametro]" ""
.El primer parametro es el la ruta a nuestro ejecutable
setvar "[DirNombreExe]" "[Parametro1]"
DeleteArray "[Parametro]" "All"
.Separamos para obtener solo el nombre
StrParse "[DirNombreExe]" "\" "[NombreExePartes]" "[NombreExePartes.C]"
setvar "[NombreExe]" "[NombreExePartes[NombreExePartes.C]]"
DeleteArray "[NombreExePartes]" "All"
clearvariables "[NombreExePartes.C]"
.Aca escribimos en temp un simple .bat que nos ayudara
.Escribimos el comando taskkill que cerrara nuestra app
FileWrite "[TempDir]reinip.bat" "All" "start /B /WAIT taskkill /f /im [NombreExe]"
.Si le pasamos un numero como parametro escribira el comando timeout que esperara los segundos que le pasemos
if "[%1]" ">" "0"
FileWrite "[TempDir]reinip.bat" "Append" "start /B /WAIT timeout [%1]"
endif
.Escribimos el comando start que se encargara de ejecutar nuevamente nuestra app
FileWrite "[TempDir]reinip.bat" "Append" "start [DirNombreExe]"
.Por ultimo ejecutamos el .bat que escribimos
Run "[TempDir]reinip.bat" "" "RunOnce+Hidden" "" ""

Entonces para llamarla hacemos :

Call "ReiniciarPub" "10"

La función recibe 1 parámetro que es la cantidad de segundos que queremos que espere antes de reabrir la aplicación.

Por lo que si queremos que el reinicio sea instantáneo seria:

Call "ReiniciarPub" "0"

Screenshots

sshot

Descarga:

  ejReiniciarPub.rar (1.019,1 KiB, 2.214 hits)

NOTA: La función ReiniciarPub (incluida en el .rar) debe estar en la carpeta functions donde esta instalado neobook.

Espero que sirva.

BuNKeR

 

1

Bases de Datos (II)

Antes de comenzar hice unos cambios:

* Agregue 2 campos NTemas (cantidad de canciones en el cd) y Temas (la lista de temas).
* Las acciones de crear (o abrir) la base las pase al startup de la aplicación.
* La vista de la tabla es para ver los cambios que realizamos y por ese motivo esta en modo solo lectura (pero actualiza los datos del registro seleccionado).

Siempre que trabajemos con base de datos vamos a tener que hacer un ABM (Alta, Baja y Modificación).

Lo mas fácil es la Baja pues ejecuta la función dbfDeleteRecord que como dije arriba eliminará el registro que tengamos seleccionado en la vista (mas adelante podremos eliminar haciendo búsquedas).

Algo que tienen que saber que al trabajar con dbfs si eliminamos un registro en realidad queda marcado como eliminado, por ej.

Si tenemos

Registro A
Registro B
Registro C
Registro D

Y hacemos dbfDeleteRecord a los registros B y C, éstos quedaran marcados como eliminados, dándonos como total 4 registros. Para eliminarlos completamente y que la cantidad total de registros nos de correcta debemos usar la función dbfPack.

Para realizar Alta y Modificación hice un container con entradas de texto para cada uno de los campos. También utilizo una variable [form1.accion] para saber que acción (nuevo ó modificar) estamos realizando y hacer lo correspondiente.

Al trabajar con dbfs si seleccionamos un registro se actualiza las variables del registro seleccionado ([NombreDB.Campo]), esto quiere decir que tendría las siguientes variables:

[MisCds.Titulo]
[MisCds.Artista]
[MisCds.Genero]
[MisCds.Año]
[MisCds.Discog]
[MisCds.NTemas]
[MisCds.Temas]

Osea que si tengo seleccionado un registro estos campos se llenaran con la información del registro y si modifico alguna estoy haciendo una modificación del registro (es por esto que uso una variable auxiliar para saber si es nuevo o estoy modificando).

Entonces al dar Alta a un registro debemos usar dbfAddRecord que nos crea un registro nuevo (en blanco) y luego asignamos los contenidos de las entradas de texto (ej [form1.Titulo]) a las variables (ej [MisCds.Titulo]) y por ultimo ejecutamos dbfSaveEdits para confirmar esas modificaciones.

Al modificar debemos mostrar el contenido del registro que estamos modificando por lo cual hago:

SetVar "[form1.campo]" "[NombreDB.campo]"
.ej
SetVar "[form1.Titulo]" "[MisCds.Titulo]"

Con ésto lleno el formulario con los datos del registro y al cambiarlos como ya expliqué arriba ya estaríamos modificandolos por lo cual solo resta hacer dbfSaveEdits.

Screenshots

sshot-2

Descarga:

  db-MisCds-2.rar (1,3 MiB, 2.491 hits)

 

Cualquier duda me consultan

NOTA: Ésta es una forma de realizar un ABM, puede haber otras mejores (o peores =P).

Espero que sirva.

BuNKeR

0

Visor de Atajos de Teclado

Buenas… hice esta pequeña utilidad luego de leer el post de gusgul en el foro oficial, en el cual pregunta si es posible obtener la lista de asignaciones de teclas que hayamos hecho a los botones en nuestras publicaciones.

Es exactamente lo que hace esta aplicación, seleccionamos el archivo que queremos analizar y nos mostrará la lista de botones con su correspondiente asignación de teclas.

Espero que les sirva.

Captura

 

Descarga:

  VisorAT.rar (4,3 MiB, 2.329 hits)

 

 

1

ReDan Radio

Hoy voy a compartir con ustedes Redan Radio, un programa realizado por Quili García (un gran neobookero) en base a una entrada del blog. Si te gusta escuchar radio mientras estas trabajando en la PC, no busques más, éste es el programa que necesitas. Pueden visitar su pagina web para ver otras utilidades creadas por él.

Que es Redan Radio?

Es un programa gratuito que sirve para escuchar la radio por Internet aprovechándose, de esta manera, de todos los beneficios de la red.

Existen muchos programas para escuchar radio, pero este, dispone de características que le hacen especial:

  • Base de datos de emisoras totalmente accesible.
  • Se pueden agragar nuevas emisoras muy facilmente.
  • Interface configurable por usuario gracias a sus mascaras.
  • Activación desactivación de partes del interface grafico.
  • Filtrado de emisoras por idioma.
  • 6 memorias de acceso rápido.
  • Función “AutoPlay”.
  • Función “Sleep”
  • Temporizador de apagado.
  • Traducido a 7 idiomas.
  • Programación para grabado automático de programas
  • Consumo mínimo de recursos del PC.
  • Sujeto a modificaciones solicitadas por los usuarios.

Capturas:


Descarga:

http://personales.ya.com/redan/programas/Rradio.exe

6

Acceso directo a Compilar (Botón Compilar)

Buenas, hoy voy a compartir (luego de ver un tema en el foro oficial) con ustedes un truco que hacia antes para no tener que ir tantas veces a Book>Compile/Publish y era una aplicación realizada con autohotkey que al presionar la tecla F3 me abre el cuadro compilar.

Pero ahora fui un poco mas allá (luego de leer en el tema que estaría bien un icono en la barra de herramientas) y decidí , ademas de la tecla F3, insertar un botón a neobook que facilite el acceso directo a compilar.

Como lo instalo?

Botón Compilar tiene un instalador que te facilitará las cosas. Tienes que seleccionar el directorio donde tengas instalado el neobook y listo.

Una vez instalado abre el neobook como lo haces siempre y ya podrás usar tu botón compilar o la tecla F3 para acceder  rápidamente a compilar publicación.

Espero que les sirva y me avisan si encuentran bugs.

Descarga

  botoncompilar.rar (1,3 MiB, 2.254 hits)

 

NOTA: El Programa NeoBook esta desarrollado por NeoSoft y es marca registrada de NeoSoft Corporation. Neobookeros.com.ar no tiene relación con Neosoftware.

8

Ejemplo Reproductor de Radio

Buenas … En estos días recibí un mail de Nelson donde que me pregunta “si es posible crear una especie de reproductor para reproducir una radio online”.

La respuesta es SI.

¿Como?

Tendremos que crear una pagina html donde incluiremos el reproductor de WMP y luego lo controlaremos a través de javascript.

Código para incluir WMP.

Luego creamos las funciones en JS para controlarlo.

function abrir(archivo){ MC1.filename=archivo;}
function play() {MC1.play();}
function subirv() {var volumen = MC1.Volumevar sube = volumen + 100;if(sube < 0) {MC1.Volume = sube;}} function bajarv() {var volumen = MC1.Volumevar baja = volumen - 100;if(baja >= -4002) {MC1.Volume = baja;}}
function mutev(muteval) {MC1.mute = muteval;}
function stop() {MC1.stop();}

Lo demás es fácil. Incrustamos el objeto navegador donde cargaremos el html. Creamos los botones y llamaremos a las funciones JS con el comando BrowserExecScript de neobook.

Les recomiendo que vean el codigo del ejemplo.

Captura

Descarga

Ejecutable y código fuente:

  ejRadio.rar (1,3 MiB, 2.409 hits)

 

0

NeoPhp Watermark

NeoPhp Watermark es una aplicación de código abierto (creada con NeoPhp) que permite realizar marcas de aguas a imágenes.

Por ahora tiene las funciones básicas que necesita todo programa de generación de marcas de agua, pero si todos contribuimos podemos crear una aplicación completa.

Si tenes ideas no dudes en comentarme y vemos si son posibles de agregarlas.

Nota: Por favor lee el archivo Instrucciones.txt

Plugins necesarios:

NeoPhp v1.1

Captura

Descarga

Ejecutable y código fuente:

  NeophpWatermark_incfuentes.rar (4,4 MiB, 3.168 hits)