Instalar Windows 7, Windows 10, Debian11, Mint 21, MX 21, en el mismo ordenador. VIDEO
Mostrando entradas con la etiqueta windows. Mostrar todas las entradas
Mostrando entradas con la etiqueta windows. Mostrar todas las entradas
viernes, 12 de mayo de 2023
miércoles, 18 de marzo de 2020
Arduino Control salidas. wxwidgets - Portable - Linux _ Windows
Página principal
En un montaje anterior arseta.html había realizado un controlador de salidas mediante una placa Arduino.
Estaba realizado en Gambas (VB Linux), en esta ocasión lo realizo en wxwidgets, tanto en Linux como en Windows.
Además aprovechando la oportunidad he realizado una nueva versión de Linux, versión portable.
Esta versión funciona tanto en 32bits como en la versión 64bits.

Circuito.

Funcionando en Windows 10

Funcionando en Linux ,versión portable.
En algunos Windows, el puerto virtual Serie lo coloca muy alto, me encontrado en algunas ocasiones que estaba en Com23, el programa solo mira si existe entre el Com1 y Com5. Si es vuestro caso deberéis cambiar el lugar para que este en el rango buscado. Se hace como administrador y en configuración de los puertos serie.
En la versión Windows la detección de los puertos se hace un poco lenta, debéis esperar algo (3-4 segundos).
PROGRAMA LINUX -WINDOWS
Saludos.
Juan Galaz
Bibliografía:
Arduino_Uno 1.0.1 programado por Rolfdahl-skogstade
Arduino
Control salidas
wxwidgets
Portable - Linux _ Windows
Control salidas
wxwidgets
Portable - Linux _ Windows
En un montaje anterior arseta.html había realizado un controlador de salidas mediante una placa Arduino.
Estaba realizado en Gambas (VB Linux), en esta ocasión lo realizo en wxwidgets, tanto en Linux como en Windows.
Además aprovechando la oportunidad he realizado una nueva versión de Linux, versión portable.
Esta versión funciona tanto en 32bits como en la versión 64bits.
Circuito.
Funcionando en Windows 10
Funcionando en Linux ,versión portable.
En algunos Windows, el puerto virtual Serie lo coloca muy alto, me encontrado en algunas ocasiones que estaba en Com23, el programa solo mira si existe entre el Com1 y Com5. Si es vuestro caso deberéis cambiar el lugar para que este en el rango buscado. Se hace como administrador y en configuración de los puertos serie.
En la versión Windows la detección de los puertos se hace un poco lenta, debéis esperar algo (3-4 segundos).
PROGRAMA LINUX -WINDOWS
Saludos.
Juan Galaz
Bibliografía:
Arduino_Uno 1.0.1 programado por Rolfdahl-skogstade
miércoles, 19 de septiembre de 2018
Base de datos autores - SQLite y wxwidgets en Linux y windows
Página principal
En el anterior artículo había realizado una base de datos de autores utilizando la consola, ahora toca hacer un entorno gráfico con la librería wxwidgets.
Existe una librería llamada wxSQLite, pero no he querido utilizarla.
He utilizado parte del código realizado en el programa hecho para consola para no complicarme mucho.
El programa se realiza en Linux, y cuando funciona bien se intenta compilar en Windows.
El problema ocurre al utilizar las diferentes versiones de las librerías wxwidgets.
Ejemplo:
En la librería 3.1.1 simplemente se imprime un puntero de cadena con:
MiLista->SetItem(z, 1, sqlite3_column_text(resultado, 0));
Si utilizamos 2.8.12 debemos emplear:
sprintf(Stemporal,"%s ",sqlite3_column_text(resultado, 0));
StringTmp=wxString::FromUTF8(Stemporal);
MiLista->SetItem(z, 1, StringTmp);
Esto es solo lo que he tenido que cambiar para compilar en las dos librerías.
He visto que en Windows y con la librería 3.1.1 el repintado de wxListCtrl no funciona bien.
Por lo demás funciona todo bien y se puede ver el resultado en las imágenes.

Windows.

Linux en Debian 9

En Linux pero bajo Wine.
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/
Base de datos autores
SQLite y wxwidgets
Linux y windows
SQLite y wxwidgets
Linux y windows
En el anterior artículo había realizado una base de datos de autores utilizando la consola, ahora toca hacer un entorno gráfico con la librería wxwidgets.
Existe una librería llamada wxSQLite, pero no he querido utilizarla.
He utilizado parte del código realizado en el programa hecho para consola para no complicarme mucho.
El programa se realiza en Linux, y cuando funciona bien se intenta compilar en Windows.
El problema ocurre al utilizar las diferentes versiones de las librerías wxwidgets.
Ejemplo:
En la librería 3.1.1 simplemente se imprime un puntero de cadena con:
MiLista->SetItem(z, 1, sqlite3_column_text(resultado, 0));
Si utilizamos 2.8.12 debemos emplear:
sprintf(Stemporal,"%s ",sqlite3_column_text(resultado, 0));
StringTmp=wxString::FromUTF8(Stemporal);
MiLista->SetItem(z, 1, StringTmp);
Esto es solo lo que he tenido que cambiar para compilar en las dos librerías.
He visto que en Windows y con la librería 3.1.1 el repintado de wxListCtrl no funciona bien.
Por lo demás funciona todo bien y se puede ver el resultado en las imágenes.
Windows.
Linux en Debian 9
En Linux pero bajo Wine.
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, 18 de septiembre de 2018
Lenguaje C - Base de datos autores - Compilar SQLite bajo windows
Página principal
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/
Lenguaje C
Base de datos autores
Compilar SQLite bajo windows
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/
sábado, 12 de mayo de 2018
Librería wxwidgets Crear programas multiplataforma
Página principal
Al crear un programa, lo primero que queremos es que sea utilizado por la mayor cantidad de gente. La plataforma que predomina es Windows, Linux y Mac solo es una pequeña parte de usuarios. Para el caso de querer que nuestro programa corra en las diferentes plataformas, debemos utilizar librerías multiplataforma, que con solo recompilar los archivos fuente, puedan ser utilizados los programas.
Para este caso vamos a utilizar la librería wxwidgets https://www.wxwidgets.org/.
En un anterior artículo wxtutor.html , había explicado como instalar y configurar wxWidgets en CodeBlocks bajo windows.
En este artículo he creado un monitor de temperatura externa, anteriormente lo había realizado en Gambas (VB para linux), pero bajo Windows no funciona. ard433.html
Para este programa he realizado varios makefiles para crear ejecutables para las diferentes versiones de librerías y modos, estaticas o DLL.
Al ser multiplataforma se recompila todo en Linux o Windows sin retocar ni una sola línea de código, salvo modificar el archivo define.h y poner:
#define YesWindows 0
o
#define YesWindows 1

Programa bajos Linux.

Programa bajos Windows.
Podemos observar los diferente ejecutables bajo Windows.
Los programas programa311.exe y programa1812.exe son pequeños, pero utilizan las DLL , que se tienen que colocar directorio system32 del directorio windows, o junto con cada uno de los ejecutables.
Los programas programa311s.exe y programa1812s.exe no necesitan las DLL, las llevan incorporadas en el propio programa. Son de mayor tamaño, pero quedan mejor en la distribución de un solo fichero para la utilización del programa. Se puede observar que dependiendo de la versión de la librería puede ser su tamaño más del doble.
Para reducir los programas ejecutables, se puede usar el programa upx.exe. Este programa comprime los ejecutables a la tercera parte. Se puede observar en los ficheros programa2812sz.exe y programa311sz.exe.
Para diferenciar entre programas, dll, y fuentes, los he distibuido en diferentes ficheros.
dll.zip
binarios.zip
fuentes.zip
Hasta pronto.
JUAN GALAZ
Librería wxwidgets
Crear programas multiplataforma
Crear programas multiplataforma
Al crear un programa, lo primero que queremos es que sea utilizado por la mayor cantidad de gente. La plataforma que predomina es Windows, Linux y Mac solo es una pequeña parte de usuarios. Para el caso de querer que nuestro programa corra en las diferentes plataformas, debemos utilizar librerías multiplataforma, que con solo recompilar los archivos fuente, puedan ser utilizados los programas.
Para este caso vamos a utilizar la librería wxwidgets https://www.wxwidgets.org/.
En un anterior artículo wxtutor.html , había explicado como instalar y configurar wxWidgets en CodeBlocks bajo windows.
En este artículo he creado un monitor de temperatura externa, anteriormente lo había realizado en Gambas (VB para linux), pero bajo Windows no funciona. ard433.html
Para este programa he realizado varios makefiles para crear ejecutables para las diferentes versiones de librerías y modos, estaticas o DLL.
Al ser multiplataforma se recompila todo en Linux o Windows sin retocar ni una sola línea de código, salvo modificar el archivo define.h y poner:
#define YesWindows 0
o
#define YesWindows 1
Programa bajos Linux.
Programa bajos Windows.
Podemos observar los diferente ejecutables bajo Windows.
Los programas programa311.exe y programa1812.exe son pequeños, pero utilizan las DLL , que se tienen que colocar directorio system32 del directorio windows, o junto con cada uno de los ejecutables.
Los programas programa311s.exe y programa1812s.exe no necesitan las DLL, las llevan incorporadas en el propio programa. Son de mayor tamaño, pero quedan mejor en la distribución de un solo fichero para la utilización del programa. Se puede observar que dependiendo de la versión de la librería puede ser su tamaño más del doble.
Para reducir los programas ejecutables, se puede usar el programa upx.exe. Este programa comprime los ejecutables a la tercera parte. Se puede observar en los ficheros programa2812sz.exe y programa311sz.exe.
Para diferenciar entre programas, dll, y fuentes, los he distibuido en diferentes ficheros.
dll.zip
binarios.zip
fuentes.zip
Hasta pronto.
JUAN GALAZ
jueves, 10 de mayo de 2018
Configurando wxWidgets en CodeBlocks
Página principal
Configurando wxWidgets en CodeBlocks
xsetaseta@gmail.com
El otro día estuve viendo un magnífico video donde explicaba como configurar wxWidgets en CodeBlocks bajo windows.
https://www.youtube.com/watch?v=LZacAgSBWa0
Son 26 minutos donde explica muy bien como configurar todo para poder compilar programas en windows.
En mi caso he utilizado:
Versiones de programas usadas
wxWidgets-3.1.1 - wxWidgets-2.8.12 - CodeBlocks 17.12 - tdm-gcc-5.1.0-3
He añadido el el Path de busqueda de windows el lugar de binarios del compilador.
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\TDM-GCC-32\bin
Entrando en la consola y cambiando de directorio.
cd c:\wxWidgets-3.1.1\build\msw\
o
cd c:\wxWidgets-2.8.12\build\msw\
Para realizar las compilaciones de las librerías he utilizado la opción del compilador -j4 (4 procesadores) , que utiliza todos los procesadores de la máquina, reduciéndose bastante el tiempo de compilación. También en mi caso lo hago para una máquina de 32bits.
-Para compilar las librerías estáticas usar lo siguiente:
mingw32-make -j4 -f makefile.gcc RUNTIME_LIBS=static USE_XRC=1 MONOLITHIC=1 SHARED=0 UNICODE=1 BUILD=release TARGET_CPU=X32 CXXFLAGS="-std=gnu++11"
-Para compilar las librerías dinámicas usar lo siguiente:
mingw32-make -j4 -f makefile.gcc RUNTIME_LIBS=dynamic USE_XRC=1 MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release TARGET_CPU=X32 CXXFLAGS="-std=gnu++11"
Esto suele tardar bastante, dependiendo del tipo de procesador que tenga vuestro ordenador.
He realizado la compilación para las dos versiones de las librerías wxWidgets (3.1.1 y 2.8.12) , por lo cual el trabajo ha sido doble.
Para los que no se quieran complicar mucho he creado un fichero donde se encuentran compiladas las dos librerías (wxWidgets-3.1.1 - wxWidgets-2.8.12) junto con el compilador tdm-gcc.
Solo tendrás que descomprimirlo en C:\ y empezar a utilizarlo. Tamaño 129M.
https://drive.google.com/file/d/1idPA5NczyadfQ4gUThiLbyIYrYJEkj05/view?usp=sharing
Para que el CodeBlocks no de errores en la compilación por falta de librerías he tenido que cambiar varias cosas en el menú del proyecto en Opciones de construcción.
Si compilamos programas en estático, cambiar C:\wxWidgets-3.1.1\lib\gcc_dll por C:\wxWidgets-3.1.1\lib\gcc_lib
Listado de la consola de construcción
-------------- Build: Release in borrawx311 (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DwxUSE_UNICODE -Wall -O2 -IC:\wxWidgets-3.1.1\include -IC:\wxWidgets-3.1.1\lib\gcc_dll\mswu -c "C:\Documents and Settings\Administrador\Mis documentos\borrawx311\borrawx311App.cpp" -o obj\Release\borrawx311App.o
mingw32-g++.exe -pipe -mthreads -D__GNUWIN32__ -D__WXMSW__ -DwxUSE_UNICODE -Wall -O2 -IC:\wxWidgets-3.1.1\include -IC:\wxWidgets-3.1.1\lib\gcc_dll\mswu -c "C:\Documents and Settings\Administrador\Mis documentos\borrawx311\borrawx311Main.cpp" -o obj\Release\borrawx311Main.o
windres.exe -IC:\wxWidgets-3.1.1\include -IC:\wxWidgets-3.1.1\lib\gcc_dll\mswu -J rc -O coff -i C:\DOCUME~1\ADMINI~1\MISDOC~1\BORRAW~1\resource.rc -o obj\Release\resource.res
mingw32-g++.exe -LC:\wxWidgets-3.1.1\lib\gcc_dll -o bin\Release\borrawx311.exe obj\Release\borrawx311App.o obj\Release\borrawx311Main.o obj\Release\resource.res -s -mthreads -lwxmsw31u -lwxpng -lwxjpeg -lwxtiff -lwxzlib -lshlwapi -lversion -loleacc -lUxTheme -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lcomctl32 -lwsock32 -lodbc32 -lshlwapi -lversion -mwindows
Output file is bin\Release\borrawx311.exe with size 774.50 KB
Process terminated with status 0 (0 minute(s), 8 second(s))
0 error(s), 0 warning(s) (0 minute(s), 8 second(s))
El tamaño de los ejecutables resultan ser mas del doble en las dos en las diferentes versiones de las librerías.
He realizado un video de un programa realizado con CodeBlocks
https://youtu.be/E6WA2n_Uib0
Para una mejor visión de todas las opciones de compilación, muestro el fichero resource.rc.
| resource.rc |
| <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <CodeBlocks_project_file> <FileVersion major="1" minor="6" /> <Project> <Option title="borrawx311" /> <Option pch_mode="2" /> <Option compiler="gcc" /> <Build> <Target title="Release"> <Option output="bin/Release/borrawx311" prefix_auto="1" extension_auto="1" /> <Option object_output="obj/Release/" /> <Option type="0" /> <Option compiler="gcc" /> <Option projectLinkerOptionsRelation="2" /> <Compiler> <Add option="-O2" /> <Add directory="C:/wxWidgets-3.1.1/lib/gcc_dll/mswu" /> </Compiler> <ResourceCompiler> <Add directory="C:/wxWidgets-3.1.1/lib/gcc_dll/mswu" /> </ResourceCompiler> <Linker> <Add option="-s" /> <Add library="libwxmsw31u.a" /> <Add library="libwxpng.a" /> <Add library="libwxjpeg.a" /> <Add library="libwxtiff.a" /> <Add library="libwxzlib.a" /> <Add library="libshlwapi" /> <Add library="libversion" /> <Add library="liboleacc" /> <Add library="libUxTheme" /> <Add directory="C:/wxWidgets-3.1.1/lib/gcc_dll" /> </Linker> </Target> </Build> <Compiler> <Add option="-pipe" /> <Add option="-mthreads" /> <Add option="-D__GNUWIN32__" /> <Add option="-D__WXMSW__" /> <Add option="-DwxUSE_UNICODE" /> <Add option="-Wall" /> <Add directory="C:/wxWidgets-3.1.1/include" /> </Compiler> <ResourceCompiler> <Add directory="C:/wxWidgets-3.1.1/include" /> </ResourceCompiler> <Linker> <Add option="-mthreads" /> <Add library="libkernel32.a" /> <Add library="libuser32.a" /> <Add library="libgdi32.a" /> <Add library="libwinspool.a" /> <Add library="libcomdlg32.a" /> <Add library="libadvapi32.a" /> <Add library="libshell32.a" /> <Add library="libole32.a" /> <Add library="liboleaut32.a" /> <Add library="libuuid.a" /> <Add library="libcomctl32.a" /> <Add library="libwsock32.a" /> <Add library="libodbc32.a" /> <Add library="libshlwapi.a" /> <Add library="libversion.a" /> </Linker> <Unit filename="borrawx311App.cpp" /> <Unit filename="borrawx311App.h" /> <Unit filename="borrawx311Main.cpp" /> <Unit filename="borrawx311Main.h" /> <Unit filename="resource.rc"> <Option compilerVar="WINDRES" /> </Unit> <Unit filename="wxsmith/borrawx311frame.wxs" /> <Extensions> <code_completion /> <envvars /> <debugger /> <lib_finder disable_auto="1" /> <wxsmith version="1"> <gui name="wxWidgets" src="borrawx311App.cpp" main="borrawx311Frame" init_handlers="necessary" language="CPP" /> <resources> <wxFrame wxs="wxsmith/borrawx311frame.wxs" src="borrawx311Main.cpp" hdr="borrawx311Main.h" fwddecl="0" i18n="1" name="borrawx311Frame" language="CPP" /> </resources> </wxsmith> </Extensions> </Project> </CodeBlocks_project_file> |
Hasta pronto.
JUAN GALAZ
Bibliografía:
https://www.youtube.com/watch?v=LZacAgSBWa0
Suscribirse a:
Entradas (Atom)