martes, 18 de septiembre de 2018

Lenguaje C - Base de datos autores - Compilar SQLite bajo windows

Página principal


Lenguaje C
Base de datos autores
Compilar SQLite bajo windows


En el anterior artículo había realizado una base de datos de autores dbautor.html .
Estaba realizado y compilado bajo Linux, ahora toca explicar como se compila bajo Windows.
No es que sea difícil, pero hay que realizar unas pequeñas modificaciones para que el compilador funcione.
La página donde he sacado la información es esta:
http://www.aprendoencasa.com/index.php/2014/02/12/base-de-datos-sqlite-con-el-lenguaje-de-programacin-c/

Se descarga de la página de descargas de SQLite  https://www.sqlite.org/download.html?  los siguientes ficheros:
sqlite-amalgamation-3250000.zip   y   sqlite-dll-win32-x86-3250000.zip
Pueden variar la versión de descarga.

Se descomprimen en un directorio.
Copiar sqlite3.dll a Windows/system  o en mismos directorio del ejecutable.
Creamos la librería  con la orden:  dlltool -D sqlite3.dll -d sqlite3.def -l libsqlite3dll.a
La librería creada libsqlite3dll.a se copia a   C:\TDM-GCC-32\lib
Se copia sqlite3.h a C:\TDM-GCC-32\include
Para crear el programa ejecutable se utiliza la orden: gcc autorw.c  -lsqlite3dll  -o autorw.exe


Captura del programa funcionado bajo windows.

Debido a que windows no tiene la librería #include <termios.h>  que dispone Linux , he eliminado las rutinas correspondientes.
Estas rutinas solo hacían que no se necesitase pulsar ENTER cada vez que pulsáramos una tecla.

PROGRAMA

Saludos.
Juan Galaz

Bibliografía:

https://poesiabinaria.net/2015/03/usando-sqlite-en-nuestros-programas-en-cc/
http://apuntes-para-no-olvidar.blogspot.com/2012/01/conectar-con-una-bd-de-sqlite-en-c.html
http://www.aprendoencasa.com/index.php/2014/02/12/base-de-datos-sqlite-con-el-lenguaje-de-programacin-c/

martes, 7 de agosto de 2018

Base de datos autores en Lenguaje C y con SQLite, terminal linux


Página principal


Lenguaje C
Base de datos autores
SQLite


En el anterior artículo había realizado una base de datos de libros librosx.html . La había programado en Gambas(Visual Basic para linux) con una extensión que tiene gambas para manejar SQLite.
La programación en Basic es muy fácil, los que tenemos algunos años hemos crecido con el Basic que venía integrado en la mayoría de los ordenadores.
Algunos el lenguaje Basic miran como lenguaje de segunda, pero para la mayoría de las aplicaciones es suficiente.
Como otro de los lenguajes que mas me gustan es el C, he intentado realizar un pequeño programa de consultas que funcione en terminal Linux y en lenguaje C.
Lo que en principio pensé fácil se convirtió en complicado, no había muchos ejemplos, y los que había mezclaban C++  con la utilización de librerías.
Todo es romperse la cabeza, mirar de un lado a otro buscando y buscando, prueba error hasta encontrar la solución.
El programa es simple, búsqueda de autores, búsqueda por IdAutor (único para cada autor), y listado desde un   registro.





  VIDEO DE FUNCIONAMIENTO



PROGRAMA

Saludos.
Juan Galaz

Bibliografía:

https://poesiabinaria.net/2015/03/usando-sqlite-en-nuestros-programas-en-cc/
http://apuntes-para-no-olvidar.blogspot.com/2012/01/conectar-con-una-bd-de-sqlite-en-c.html

miércoles, 1 de agosto de 2018

Gambas - Base de datos de libros con SQLite

Página principal


Gambas
Base de datos de libros
SQLite


Hace unos años realicé una base de datos sobre películas que tenía grabadas. Estaba realizado en Gambas (visual Basic para Linux), y utilizaba SQLite para manejar los datos.
Buscando por internet encontré una base de datos de libros, estaba realizada para access microsoft. Era del programa abies 2 que se utilizaba para una gestión de  bibliotecas escolares.
La página del proyecto es http://www.abies.es/web/ , ahora el proyecto se basa en web, por lo que faltan en mi base de datos muchos libros desde hace 10 años hasta ahora.
Me puse manos a la obra y la base de datos en formato mdb la pase a formato sqlite.
La base de datos consta de 388.000 libros, 200.000 autores, y 50.000 editoriales.
Por lo que podéis ver es bastante grande, era una experiencia nueva trabajar con tanta cantidad de libros, por lo que lo tome como un reto.
En primer lugar hice pruebas con los autores, y me dí cuenta que era un problema las mayúsculas y  los acentos, en las búsquedas.
Había autores que los habían escrito de diferentes formas, Garcia, García, GARCIA, GARCÍA.
En MySQL había una solución, pero en SQLite no funcionaba.
Esto era un problema en las búsquedas, por lo que tome la solución mas drástica, poner todo en mayúsculas y quitar acentos.
También me pasó con las editoriales, por lo que también pasé todo a mayúsculas y quitar acentos.
El programa lo he realizado solo para consultas, por lo que no se puede añadir nada a la base de datos.


La base de datos consta de 3 tablas o bases de datos, Fondos,Autores,Editoriales.
La base de datos principal es Fondos, en esta se encuentran los los libros con su  IdAutor y IDEDITORIAL, que son numeros enteros.
Los  campos IdAutor y IDEDITORIAL enlazan a las bases de datos o tablas, de Autores y Editoriales, donde se encuentran los nombres de cada autor y editorial.
En resumen son 3 bases de datos con datos enlazados o datos vinculados.
El programa me ha quedado digno, aunque con una espina en la velocidad al inicio. Cuando se emplea la orden TablaFondos = Conexion.Exec("Select * from Fondos") tarda unos 5 segundos en actualizar la base de datos. Ya sé que es grande pero he visto en otros programas que lo hacen mas rápido. Existe un truco, pero no lo he querido emplear de momento.


Los dos diferentes diálogos para seleccionar autor y editorial.

El que quiere ver como funciona el programa antes de bajarlo, he realizado un video de funcionamiento.
VIDEO

PROGRAMA BINARIO CON BASE DE DATOS DE LIBROS

PROGRAMA FUENTE

Saludos.
Juan Galaz




Como curiosidad existe una página web donde se encuentra una base de datos de libros inmensa.
REBECA: registros bibliográficos para bibliotecas públicas españolas


Bibliografía:

Para aprender utilizar SQLite con gambas he utilizado los siguientes enlaces:
http://gambas.sourceforge.net/es/main.html  Página oficial de gambas
http://www.gambas-es.org/index.php  Foro de gambas
http://help-gambas.blogspot.com/  Página con algún tutorial de gambas
https://jsbsan.blogspot.com/  Blog Mis Proyectos en Gambas
http://gambeando.wordpress.com/  Página donde existen buenos tutoriales explicados de gambas.
http://www.fidojones.com/category/gambas/  Página sobre programas en gambas y algún otro programa relacionado con facturación. Me mando un programa hecho en gambas que me ayudo mucho en la realización del mio, gracias.
http://gambaswiki.org/wiki/howto/databasesqlite

martes, 24 de julio de 2018

Arduino nano Radio RDA5807 Control mediante un PC con RDS

Página principal


Arduino nano
Radio RDA5807
Control mediante un PC con RDS


Hace uno años hice raardu.html pero no había realizado la decodificación del RDS.
En este montaje realizo la decodificación del RDS, parecido a lo que hice en rards.html visualizando los datos en un LCD, pero ahora los datos los muestro en un PC.


Circuito.

El programa se ha realizado en Gambas una especie de Visual Basic para Linux.
Debido a que la codificación de caracteres en el RDS es un diferencia al código ascii he quitado acentos y cambiado las Ñ por N.



El programa se ha realizado en Gambas una especie de Visual Basic para Linux.
Cuando tenga tiempo y ganas lo realizaré en C para Windows y Linux


La programación se ha realizado con Arduino 1.05 y bajo Debian 9 .
He detectado que con versiones de Arduino 1.6 y 1.8 se producen errores en la compilación debido al cambio en la librería  Wire.
No he querido buscar la solución, por lo cual el que quiera probar el circuito deberá utilizar la versión 1  de arduino.

PROGRAMA

Saludos.
Juan Galaz


Bibliografía:

radiofm.html
rards.html
ardura.html
 
http://arduino.vom-kuhberg.de/index.php
RADIO DATA SYSTEM- RDS- Por: Aitzol Zuloaga Izaguirre.
http://www.rds.org.uk/2010/Overview.htm

jueves, 19 de julio de 2018

Programando aplicaciones X windows system - Radio RDA5807

Página principal


Programando aplicaciones
X windows system
Radio RDA5807


El otro día estuve revisando alguna aplicación gráfica que había realizado en linux y tuve la desagradable sorpresa que no funcionaba.
Era debido a las diferentes bibliotecas dinámicas que utilizaban los diferentes programas. Habían cambiado de versiones muchas de ellas, o en el peor de los casos habían cambiado de nombre o desaparecido. Como ejemplo la versión de las librerías wxwidgets que viene en Debian 8 y Debian 9, los programas o los vuelves a compilar o no funcionan.
Era triste ver como no funcionaban los programas que has hecho hace 2 años, en cambio un programa realizado en Windows 95 si funciona en Windows XP o W7.
Es una de las buenas cosas que hizo Windows, la retrocompatibilidad, aunque no funciona en el 100% de los programas.

Había una excepción en programas realizados por mi, eran los programas realizados basados en X windows system que  hacen uso de una biblioteca llamada Xlib, estos programas si funcionan.
Los programas como xcolu1.zip , reten.zip realizados en 1999 funcionan perfectamente en 2018, y esto es debido a emplear librerías X Windows.

Aprovechando que estaba metido en el aprendizaje de C++, me propuse hacer Clases con las librerías X Windows.
Hace tiempo hice raardu.html  una radio con Arduino nano y el chip RDA5807, también había realizado diferentes programas para manejar la radio mediante el PC.
Los programas se habían realizado en C y C++ , con la librerías SDL y wxwidgets, también lo había realizado en diferentes lenguajes Basic.
Ahora he realizado el programa que maneja la radio utilizando las librerías X Windows.



PROGRAMA.

Para probar el programa en una versión vieja de linux, cree una maquina virtual con VBox he instalé Mandriva 2005.
Efectivamente el programa compilado en Debian 9 no funcionaba en Mandriva 2005, pero si lo compilaba en Mandriva 2005 si funcionaba en Debian 9.
Ahora sé que mi programa, sí lo podré usar perfectamente dentro de unos años.
Como curiosidad solo tuve un problema con el g++ del año 2005, resultó que el binario literal 0B00001111 no era admitido, debía ponerlo en hexadecimal 0x0F.
La apariencia es de los interfaces gráficos de Atari años 80, o eso me parece a mi.
Para dejar un solo archivo he incluido las font en el archivo fuente con font.h .

Saludos.
Juan Galaz


Bibliografía:

http://arduino.vom-kuhberg.de/index.php
http://www.seta43.netau.net/radiofm.html
http://www.seta43.netau.net/rards.html

martes, 10 de julio de 2018

Dron BAYANGTOYS X21 Fotos del interior Características

Página principal

Dron

BAYANGTOYS X21

Fotos del interior

Características y opinión


xsetaseta@gmail.com

El otro día tuve la necesidad de desmontar el dron X21 debido a un golpe, los arboles son mi principal enemigo, es el segundo golpe que le doy debido a los árboles.
El primer golpe tuve suerte y cayó sobre maleza y no tuvo el menor desperfecto, solo un par de rayones.
El segundo no tuve tanta suerte, cayo sobre asfalto, esta vez se rompió  la parte de carcasa de plástico que recubre a un motor.
Debido a esto tuve que desarmarlo para pegar las piezas mejor.
No hay mal que por bien no venga, podía ver las partes internas del X21.
Con la cámara empece hacer fotos y a tomar datos de todos los componentes.

Procesador        -  STM32F302
Placa 2.4GHz    -    2402E  y XN297L8W (módulo RF297RX-1)
GPS                - CIROCOMM  EPP1NM0 (conexión serie)
Giroscopio        -  MPU-6050A  (comunicación I2C)
Brújula            - módulo QYJ01-A  (comunicación I2C)
Control de motores - OBM3020



Imagen general del dron X21. Se pueden ampliar todas las imágenes con el menú ver imagen.

En la parte superior de la tapa del dron se encuentra el gps con su antena y la brújula.
Podéis comprobar en la foto, que la especie de antena que tiene el dron no sirve para nada, yo se la he quitado.
No entiendo la necesidad de colocar adornos que no sirven para nada.


En la placa principal se encuentra el microprocesador que lo controla todo es un STM32F302.
A su lado se encuentra el Giroscopio en el chip  MPU-6050A.
El módulo de RF se encuentra soldado a la placa mediante patillas.
También se puede ver todos las conexiones a los motores( control y potencia), y led de indicación.
La batería también se conecta aquí (B-,B+), pero soldada igual que los cables de potencia de los motores.
Como se puede ver en la foto la placa es la de un X16 con GPS, aunque le han cambiado el programa de tal manera que no funciona el mando del X16.
Existen dos conectores que proporcionan tensión a la cámara del X21 y a una cámara que se colocaba en el X16.

Detalle de la placa principal y de los chips.


Placa de potencia que maneja los motores, 1 placa para cada motor.

Un poco de historia de mi experiencia con el dron X21.
Lo pedía a la tienda GearBest , y me llego en un tiempo razonable.
Cuando abrí la caja me encontré que la cámara estaba suelta debido algún golpe en el transporte, hice fotos por lo que pudiera pasar.
Efectivamente, montado todo la cámara parecía muerta, no encendía ninguna luz.
Como yo no disponía de un móvil con WIFI 5.8 GHz que es el que utiliza la cámara para transmitir imágenes al móvil, pedí el móvil a un amigo para probarla, y resultó lo que me temía, estaba rota.
Reclamé y me devolvieron 30€, no es lo que vale la cámara (45€) pero menos es nada.
Mientras  me llegaba una cámara deportiva  EKEN H9 para colocarla en el dron, utilicé viejos móviles los cuales hacían buenas fotos colocados en el soporte de la cámara.
El dron he de decir que tiene potencia suficiente para elevar hasta cámaras digitales no muy grandes.
Antes de dada debemos comentar que los videos obtenidos tienen bastante vibración, debemos de pasarlos por un estabilizador digital.
El vuelo con GPS es bastante bueno, y el retorno a casa es perfecto , 1 m de error.
Lo primero que probé fue desconectar el mando para comprobar si retornaba automáticamente, y el retorno fue perfecto.
La distancia de control está entre 800 y 1000 m , y en cuanto altura está  bloqueado para no subir a mas de 120 m debido a la legislación. Mi intención es descubrir como desbloquear los 120 m de altura.
Tiene varios botones, punto de interés,  seguir al mando, vuelo sin cabeza, despegue automático, modo easy-3D.
También dispone de botón de foto y video, pero es solo es válido si conectas la cámara de X16.
Posteriormente he alimentado una mini cámara  FPV  TX02 al conector jack  donde se conecta la cámara X16( proporciona 5V), dándome muy buenos resultados.

Hay que indicar varias cosas:
El Wifi de la cámara es de 5.8GHz, la mayoría de los móviles son de 2.4GHz, no os extrañe si no podéis utilizar la cámara con vuestro móvil, deberían indicarlo mejor.
El tiempo de vuelo es raro que llegue a los 13 minutos , de los cuales 3 minutos serán cerca del lugar de despegue, debido a que automáticamente el dron no se aleja o vuelve, cuando la batería baja del 30%. Cuidado con los arboles, el dron no sabe que existen cuando se acerca automáticamente al bajar el voltaje de la batería( a mi me paso).
El vuelo con GPS  es perfecto, pero cuando se desactiva el GPS mediante el botón, el dron se vuelve inestable  y difícil de dejarlo quieto, debería ser mucho mas estable.
El orificio donde se mete la batería es demasiado justo, entran los cables un poco apelotonados.

Por lo general estoy contento con el X21, pero no es un juguete, tienes que tener cuidado con la hélices.
Podría ser mejor dron si se pudiera configurar el software de algún modo, el hardware está bien, y aguanta bien los golpes, lo he comprobado en mis propias carnes.


Un saludo.
Juan Galaz