Socorro mi impresora 3d no imprime


Su impresora 3D debe fundir y extruir muchos kilogramos de plástico durante su vida útil  lo cual  es muchísimo trabajo para una máquina que se mueve en los tres ejes con una  “pesada” carga ( la cabeza de extrusora ) pues para hacer las cosas más complicadas, todo este plástico debe salir de la extrusora a través de un pequeño agujero que es tan grande ( o tan pequeño más bien )  como un  grano de arena.

Inevitablemente, puede llegar un momento en que algo vaya mal con este complejo proceso hasta que finalmente  el extrusor ya no sea  capaz de empujar el plástico a través de la boquilla. Estos atascos suelen ser debidos a que algo dentro de la boquilla está bloqueando el plástico para su libre extrusión. Si bien esto puede ser desalentador la primera vez que sucede, vamos a analizar varios pasos de fácil solución para liberar una boquilla atascada pues tarde o temprano nuestra querida impresora 3D dejará de extruir filamento por la boquilla por los nos resultara una misión casi imposible imprimir una pieza en 3D  por insignificante y pequeña que sea

 

 

En este problema es muy común, y el más grave  en que nos enfrentamos  con impresoras 3D, pero afortunadamente, también es relativamente sencillo de resolver. Hay varias causas posibles para  que el extrusor de  una impresora no extruye el plástico  ,   pero lo importante es solucionarlo cuanto antes  metodos  para resolver el problema:

Volver a cargar  filamento nuevo 

Es  lo más obvio ¿verdad ?.  Si el filamento  no se mueve, lo siguiente que se  debería  hacer es descargar el filamento,verificando que el extrusor se calienta a la temperatura apropiada para  luego empujar el filamento hacia el extrusor hacia afuera  haciendo uso de la  palanca y extraerlo rápidamente (es posible que necesite aplicar alguna fuerza adicional si el filamento no se mueve). Una vez que el filamento se elimine, utilice un par de tijeras para cortar la parte fundida o dañada del filamento.  A continuación, vuelva a cargar el filamento (  recuerde cortar en inglete a 45º  para que entre más  fácil )  y vea si es capaz de extruir con la nueva sección de filamento sin daños.

Si no consigue resolver el problema no  se preocupe  todavía  puede solucionarlo  así que no pierda la esperanza  y por favor siga leyendo.

Empujar manualmente el filamento a la extrusora

Una de las primeras cosas que usted puede intentar cuando no extruye material , es empujar  el filamento para  que entre  en la extrusor. Hay dos métodos;

  • Manualmente empujando el filamento en la parte superior  y haciendo uso de la  palanca 
  • También se puede hacer abriendo el Panel de Control de su impresora  y calentando su extrusora a la temperatura adecuada para su plástico y a continuación, intente extruir  una pequeña cantidad de plástico: a medida que el motor del extrusor está girando, utilice ligeramente las manos para ayudar a empujar el filamento en el inicio del cabezal de  la extrusora

Tanto de  forma manual como por software ,en muchos casos, esta fuerza adicional será suficiente para hacer avanzar el filamento más allá del área problemática.

 

 

Observe que muchas impresoras  justo en la cabeza del extrusor tienen una pestaña  con un gran muelle : ese es precisamente el  que debemos  pulsar  para  intentar meter manualmente el filamento en la cabeza del extrusor

 

Cebado de la boquilla

La mayoría de las extrusoras tienen  problemas de fugas de plástico cuando se mantienen a una alta temperatura  debido a que el plástico caliente que  queda dentro de los conductos de la  boquilla tiende a exudarse fuera de la punta, lo que crea un vacío dentro de la boquilla donde el plástico se ha drenado lo que a la larga  con el paso del tiempo tenderá a quedar bloqueado  y no salir 

Para solucionar este problema, deberíamos  asegurarnos de cebar su extrusor justo antes de comenzar una impresión de modo que la boquilla esté llena de plástico y lista para extrudir. Una forma común de hacer esto en el programa  Cura es mediante la inclusión de una  falda o soporte ( círculo alrededor de su pieza)  lo que  no solo servirá para mejorar la adherencia de la pieza, sino   que en el proceso, cesará el extrusor con plástico.

Si necesita cebado extra, puede aumentar el número de contornos de falda en la pestaña Experto de Cura o también en caso de  usar  el  programa Easyprint de Geetech, cuando una vez se esté conectado  a la impresora,    usar la orden  de calentar la boquilla  para derretir el plástico manualmente   y así intentar expulsar el plástico empujando manualmente si es necesario con el filamento .

 

 

Limpieza de la boquilla

Si su impresora extruía correctamente al principio de su impresión, pero de repente dejó de extruir, por lo general sólo hay algunas cosas que podrían haber causado este problema  pero básicamente si ha seguido los pasos anteriores , es un claro indicio de que  el extrusor esta obstruido, por lo que deberemos proceder a su limpieza  para liberar el canal de extrusión

En primer lugar quitaremos el filamento ( si es necesario cortándolo )

,

Acto seguido procederemos a desmontar el motor del ventilador de la extrusora  , el cual suele ir acompañado de un pequeño radiador de aluminio  unido solidario a este

Ya podemos quitar el motor del extrusor   y nos quedar la base donde apoya el motor del extrusor , el radiador , el inyector  y el ventilador. En el caso de la Prusa de geetech esta pieza  va sujeta por abajo con dos tornillos ayen

Una  buena forma  de intentar liberar el exceso de mataerial es  calentar el extrusor manualmente  y después intentar limpiar la entrada de este por ejemplo con una llave allen introduciendo esta s por la abertura donde va el filamento

 

 

 

Si no se desatora podemos  desmontarla al completo  y meter una llave más fina a lo largo del tornillo de la boquilla

 

 

Si no conseguimos liberar  filamento por la cabeza todavía podemos quitar la boquilla e intentar limpiar por ese lado con una llave allen ese otro lado

Si   a pesar de todo  sigue sin extruir el filamento , es señal que la boquilla ha terminado su vida útil  por lo que o bien la limpiamos con herramienta    o bien  podemos  reemplazar esta por una nueva del mismo diámetro de abertura  que suele  rondar los 0.3mm

No es un pecio excesivo lo  que sopone una boquilla nueva , asi que sil legado a este punto se calienta el filamento , esta libre el canal   pero no sale por la punta , lo ideal es cambiar esta 

   

Una vez colocada   la nueva punta , procederemos a seguir el paso descrito pero en orden inverso:   colocaremos el soporte , colocaremos el motor con el extrusor , el radiador   y el  ventilador 

Obviamente volveremos a introducir el filamento,  en la apertura superior y forzaremos el calentamiento de la boquilla. Pasado unos minutos   iremos empujando el filamento hacia abajo hasta que poco a poco  vaya saliendo material por la boquilla, lo cual es señal de que se ha liberado la obstrucción

 

 

Una vez  hayamos cambiado la boquilla , si es diferente fabricante , deberemos reajustar la altura de la cama  para que vuelva a funcionar por completo( normalmente esto se ajusta variando el ajuste del fin de carrera del eje z)

 

Hay  otros errores que pueden ocurrir menos “graves” pero  que pueden ocurrir generando un mala  o nula impresión; 

  • La distancia entre la boquilla y la cama es demasiado estrecha.Si la boquilla está demasiado cerca de la cama, no habrá suficiente espacio para que el plástico salga de la extrusora. El agujero en la parte superior de la boquilla está esencialmente bloqueado para que no pueda salir plástico. Una manera fácil de reconocer este problema es si la impresión no extruye el plástico para la primera capa o dos, pero comienza a extruir normalmente alrededor de la 3ª o 4ª capas.La resolución de este problema pasa por el  ajuste  por excelencia de   casi todas las impresora:  el de la cama caliente ,  donde deberemos ajustar los cuatro tornillos en las 4 esquinas de la cama caliente   girando los tornillos para que quepa aproximadamente el grosor de un pedazo de papel A4 de tal manera que roce un poco pero que no se rompa o pase con facilidad  .
  • La boquilla se encuentra muy lejos de la cama , es el mismo problema anterior pero a la inversa , lo cual impedirá una impresión deficiente  porque literalmente se imprime sobre el “aire” sin soporte en determinadas zonas , lo cual solo puede generar problemas  normalmente desembocando en el temido estropajo cuando se deja desatendido el proceso y al no adherirse a la cama el filamento  , termina generando un revoltijo de plástico inútil
  • El filamento es mordido por el engranaje de accionamiento;Las impresoras de bajo coste domésticas utilizan un pequeño engranaje para empujar el filamento hacia adelante y hacia atrás. Los dientes de este engranaje muerden en el filamento y le permiten controlar con precisión la posición del filamento.Sin embargo si nota un montón de virutas de plástico o parece que haya alguna sección que falte parte, entonces es posible que el engranaje del extrusor esta quitando demasiado plastico. Ademas una vez que sucede esto el engranaje no tendrá nada que agarrar cuando trate de insertar el filamento en la boquilla  lo cual hará muy dificil la impresion
  • La impresora no se pega a la cama;Es muy importante que la primera capa de la impresión esté fuertemente conectada a la plataforma de construcción de la impresora para que el resto se pueda construir sobre esta base. Si la primera capa no se pega a la plataforma de construcción, creará problemas más adelante. Hay muchas formas diferentes de hacer frente a estos problemas de adhesión de la primera capa, por lo que examinaremos varias causas típicas a continuación y explicaremos cómo abordar cada una de ellas.
  • La plataforma no esta nivelada: normalmente todas la  impresoras utilizan 4 tornillos para regular la posición de la cama. Si tiene problemas para que su primera capa se pegue a la cama, lo primero que debe verificar es que la cama de su impresora es plana y nivelada. Si la cama no está nivelada, un lado de su cama puede estar demasiado cerca de la boquilla, mientras que el otro lado está demasiado lejos. Conseguir una primera capa perfecta requiere una cama de impresión de nivel.
  • El filamento ha desmontado el engranaje de accionamiento ; Durante una impresión, el motor del extrusor está constantemente girando tratando de empujar el filamento en la boquilla para que su impresora pueda mantener la extrusión de plástico. Si intenta imprimir demasiado rápido o intenta extruir demasiado plástico, este motor puede acabar mordiendo y afilando el filamento hasta que no queda nada para que el engranaje impulsor se agarre. Si su motor de extrusión está girando, pero el filamento no se mueve, entonces esta es la causa más probable. 
  • Motor del extrusor sobrecalentados:el motor del extrusor tiene que trabajar increíblemente duro durante su impresión. Se encuentra girando constantemente hacia adelante y hacia atrás, empujando y tirando de plástico hacia adelante y hacia atrás. Este movimiento rápido requiere un poco de corriente, y si la electrónica de la impresora no tiene enfriamiento suficiente, puede causar que la electrónica del controlador del motor se sobrecaliente. Estos conductores de motor suelen tener un corte térmico que hará que el conductor deje de funcionar si la temperatura es demasiado alta. Si esto sucede, los motores del eje X e Y girarán y moverán la boquilla del extrusor, pero el motor del extrusor no se moverá en absoluto. Muchas impresora incluye un ventilador de refrigeración para enfriar la temperatura del motor del extrusor. También puede apagar la impresora y dejar que la electrónica se enfríe.
Anuncios

Extracion de documentos en Oracle text


Oracle incorpora un tipo de datos llamado BLOB que permite almacenar documentos de cualquier tipo (imágenes, excel, word, access, comprimidos, vídeos, música, etc). En principio admite cualquier tipo de documento y de cualquier tamaño aunque aún sigue manteniendo el tipo de datos LONG RAW que está obsoleto, sustituido por BLOB. Las instrucciones que os mostramos a continuación admiten ambos tipos de datos: BLOB y LOB RAW.

 

Insertar o extraer documentos  desde Visual Basic

Para poder insertar documentos en un campo BLOB de Oracle con Visual Basic necesitaremos una librería (dll) llamada SAFileMgr Module (SAFileMgr.dll), esta librería está disponible de forma gratuita en la web http://www.softartisans.com. Tras descargar este fichero, deberemos copiarlo a la carpeta del sistema (normalmente C:/Windows/System32) y registrarlo con el comando:  regsvr32 C:/Windows/System32/SAFileMgr.dll .  Tras copiar y registrar el fichero SAFileMgr.dll, también necesitaremos disponer de una base de datos Oracle activa

Tras tener la tabla creada con el campo BLOB, procederemos a abrir Visual Basic y a crear un nuevo proyecto para insertar y extraer documentos en Oracle. En la ventana de “Nuevo proyecto” seleccionaremos “EXE estándar” y pulsaremos “Abrir”:Para que la aplicación funcione correctamente deberemos agregar las referencias necesarias. Para ello pulsaremos en el menú “Proyecto ” – “Referencias” de Visual Basic:Seleccionaremos la referencia FileMgr 1.1:Si no aparece en la lista, pulsaremos en Examinar y seleccionaremos el fichero .dll copiado y registrado anteriormente:C:/Windows/System32/SAFileMgr.dll y seleccionaremos también Microsoft ActiveX Data Objects 2.6 Library: Si no aparece en la lista, pulsaremos en Examinar y seleccionaremos el fichero ubicado en: C:/Archivos de programa/Archivos comunes/system/ado/msado26.tlb

 

Ahora veamos el código de cada uno de los tres  botones de un  formulario tipo para lanzar una consulta de inserción o extracción de un documento :

  • Para el botón “Insertar documento“:

Private Sub btInsertarDocumento_Click()

Dim Conn As New ADODB.Connection

Dim Rs As New ADODB.Recordset

Dim FileMgr As New FileManager

Dim SQL As String

On Error GoTo cError

‘ Conexión mediante OLEDB

Conn.Provider = “OraOLEDB.Oracle”

Conn.Open txtServicio.Text, _

txtUsuario.Text, txtContrasena.Text

‘ Ejecutamos una consulta SQL sobre la tabla  para activar el recordset

SQL = “Select * from ” + txtTabla.Text + ” where 1=2″

Rs.Open SQL, Conn, 2, 3

‘ Añadimos un nuevo registro con los datos indicados

Rs.AddNew

Rs(txtCampoTitulo.Text).Value = txtDocumentoTitulo.Text

Rs(txtCampoRutaDocumento.Text).Value = txtDocumento.Text

‘ Insertamos el documento en el campo BLOB/RAW

FileMgr.ExportToBlob txtDocumento.Text, Rs(txtCampoBLOB.Text)

Rs.Update

Rs.Close

Conn.Close

Set Conn = Nothing

MsgBox “Documento insertado correctamente en ” + “la base de datos: ” + vbCrLf + vbCrLf + txtDocumento.Text, vbOKOnly + vbInformation

cSalir:

Exit Sub

cError:

MsgBox Err.Description

GoTo cSalir

End Sub

  • Para el botón “Ejecutar“:

Private Sub btEjecutar_Click()

Dim Conn As New ADODB.Connection

Dim Rs As New ADODB.Recordset

On Error GoTo cError

‘ Conexión a Oracle mediante OLEDB

Conn.Provider = “OraOLEDB.Oracle”

Conn.Open txtServicio.Text,  txtUsuario.Text, txtContrasena.Text

‘ Ejecutamos consulta SQL introducida por el usuario

Rs.Open txtSQL.Text, Conn, 0, 1

txtExtraerTitulo.Text = Rs(txtCampoTitulo.Text)

txtDestino.Text = Rs(txtCampoRutaDocumento.Text)

Rs.Close

Conn.Close

Set Conn = Nothing

MsgBox “Consulta SQL ejecutada correctamente.”,  vbOKOnly + vbInformation

cSalir:

Exit Sub

cError:

MsgBox Err.Description

GoTo cSalir

End Sub

  • Para el botón “Ejecutar“:

Private Sub btExtraer_Click()

Dim Conn As New ADODB.Connection

Dim Rs As New ADODB.Recordset

Dim FileMgr As New FileManager

Dim continuar As Boolean

On Error GoTo cError

‘ Conexión a Oracle mediante OLEDB

Conn.Provider = “OraOLEDB.Oracle”

Conn.Open txtServicio.Text, _

txtUsuario.Text, txtContrasena.Text

‘ Ejecutamos consulta SQL introducida por el usuario 

Rs.Open txtSQL.Text, Conn, 0, 1

‘ Comprobamos si existe ya un fichero destino

‘ con el mismo nombre

continuar = False

If Dir(txtDestino.Text) <> “” Then

continuar = MsgBox(“Ya existe un documento ” + “con este nombre ¿desea reemplazarlo?”, vbYesNo + vbQuestion) = vbYes

Else

continuar = True

End If

‘ Extraemos el documento del primer   registro de la consulta SQL  en el destino especificado por el usuario

If continuar Then

FileMgr.ImportFromBlob Rs(txtCampoBLOB.Text), txtDestino.Text

MsgBox “Fichero extraído correctamente en: ” + vbCrLf + vbCrLf +  txtDestino.Text, vbOKOnly + vbInformation

End If

Rs.Close

Conn.Close

Set Conn = Nothing

cSalir:

Exit Sub

cError:

MsgBox Err.Description

GoTo cSalir

End Sub

 

Extracción desde java

 

Ahora  veamos  usando el lenguaje   Java un ejemplo de como podemos extraer  documentos almacenados en  CLOB’s   en una base de Datos Oracle Text 9 en Java

Necesitaremos tener instalado el cliente Oracle instalado en la maquina, las credenciales de acceso  ,    asi como referenciar en el proyecto desde el Eclipse las siguientes librerías

 

 

 

Y ahora veamos  un ejemplo de una clase de extracción de campos clob’s

La clase principal es Main , la cual debería seleccionarse al exportar el proyecto desde Eclipse

Se puede ejecutar en local  o crear un pequeño script para invocar el java

En este ejemplo es  obligatorio usar tres argumentos y en este orden  para llamar al programa:

  • nodo= número del nodo a exportar
  • tope = numero de orden donde se quedo la última exportación empezando por cero
  • topefinal= umbral donde termina

 

En el proyecto se han referenciado dos versiones de la MV Java porque puede ocurrir que la MV usada en local ( 1.6 ) sea diferente a la del host  donde se ejecute ( por ejemplo  la 1.4.2_08, razon por la habria que copiar tambien esa version 1.4.2.08  dedseel host  a una ruta local

También se hace referencia al driver de oracle classes12.jar , ruta que también existe en la maquina

 

 

Este proyecto debería exportarse situándose en la raiz del proyecto como un jar sin incluir tanto los ficheros .classspath como el de .project

Antes de compilar debe eliminar manualmente el war existente desde el propio eclipse asi como el log de ejecución (manualmente habría que ubicarse en c:\ users\xxx\workspace\application)

Asimismo por ultimo , al   compilarlo  no debemos incluir el classpath

 

Veamos el código completo;

 

/*
Main.java
*
* Created on 20 de Marzo de 20174, 11:43
*

*/

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import oracle.jdbc.driver.OracleDriver;

/**
* @author CRN
*
* EXTRACTOR DOCUMENTOS
*/

public class Main {

private static int nodo;

private static int tope;

private static int topefinal;

public static void main(final String[] args) {

System.out.println(“Inicializando programa …”);

Connection conn = null;

GestorDeConexiones gc = null;

try{

gc = new GestorDeConexiones(“xxxx”, “yyyyyy”); // credenciales de  acceso a la BBDD con el user y pwd de acceso 

conn = gc.getConnection();

// Comprueba si hay argumentos en la linea de comandos

final int nnodo=1;

if(args.length != 0)
//CON ARGUMENTOS

{
for(int counter = 0; counter < args.length; counter++)
{
System.out.println(“Argument index ” + counter + “: ” + args[counter]);
}

System.out.println(” fin argumentos”);

nodo = Integer.parseInt(args[0]); // primer argumento ( el nodo)

tope = Integer.parseInt(args[1]); //segundo argumento (inicio

topefinal = Integer.parseInt(args[2]); //tercer argumento ( tope)

System.out.println(“Argumento nodo= ” + nodo);
System.out.println(“Argumento conteo incial= ” + tope);
System.out.println(“Argumento numero de documentos= ” + topefinal);

}

else

//SIN ARGUMENTOS

{
System.out.println (“No se ha incluido ningún argumento”);
System.exit(0);
}

System.out.println(“NODO” + nodo);
System.out.println(“Valor inicial= ” + tope);
System.out.println(“Valor final= ” + topefinal);

final String path1 =”d:\”;

final String nfichero= path1+”previa_carga_jd_”+nodo+”tope“+tope+”topefinal_”+ topefinal;

//generacion del fichero de salida

File theDir = new File(nfichero);

if (!theDir.exists())
{
System.out.println(“..creando directorio: ” + theDir.getName()); // SI EL DIRECTORIO NO EXISTE ,. SE CREA
boolean result = false;
try{
theDir.mkdir();

result = true;
}
catch(SecurityException se){   //handle it
}
if(result) {
System.out.println(“Directorio creado”);
}
}

//Intentamos cambiar los permisos al directorio creado
System.out.println(“Cambiamos permisos 777 a “+nfichero);
Process theProcess = null;
try
{
theProcess = Runtime.getRuntime().exec(“chmod 777 “+ nfichero);
}
catch(IOException e)
{
System.out.println(“Error en el método exec()”);
}

//creacion fichero de log

final String log1=path1;

final String nfichero1= log1+”directorio_”+nodo+”tope“+tope+”topefinal_”+ topefinal+”.log”;

System.out.println(“Fichero Log de proceso :[” +nfichero1+”]”);
System.out.println(“+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”);

//generación del fichero de salida

File fichero = new File(nfichero1);

 

if (!fichero.exists())
{

// SI NO EXISTE , SE CREA
System.out.println(“..creando fichero de log: ” + fichero.getName());
boolean result = false;
try{
fichero.createNewFile();

result = true;
}
catch(SecurityException se){ //handle it
}
if(result) {
System.out.println(“Fichero creado”);
}
}

//abre fichero de log
File TextFile = new File(nfichero1);
FileWriter TextOut = new FileWriter(TextFile, true);
TextOut.write(“********************************************************************\r\n”);
TextOut.write(“INICIANDO PROCESO DE EXTRACCIÓN DE DOCUMENTOS r\n”);
TextOut.write(“Fichero Log de proceso :[” +nfichero1+”]\r\n”);
TextOut.close();

String path=nfichero +”/”;

System.out.println (“RUTA DESTINO FINAL”+ path);

//extraemos los objetos de texto
RecuperadorBD2.RecuperarBD2(conn,path, tope,topefinal,nodo,nfichero1);

}
catch (final SQLException sqle) {
System.out.println
(“Error de acceso a BD:” + sqle.getMessage());
sqle.printStackTrace();
}
catch (final IOException ioe){
System.out.println
(“Error de acceso a disco:” + ioe.getMessage());
ioe.printStackTrace();
}

try{
if (gc != null && conn != null)
gc.closeConnection();
}

catch (final SQLException sqle)
{
System.out.println
(“Error de acceso a BD:” + sqle.getMessage());
sqle.printStackTrace();
conn = null;
gc = null;
}
System.out.println(” **** Fin extraccion ****”);
}
}

class RecuperadorBD2
{
public static void RecuperarBD2 (final Connection cn, final String path , final int topec, final int topex, final int nodo ,final String path1)
throws SQLException, IOException
{

 

String topex1= String.valueOf(topex);

String topec1= String.valueOf(topec);

String nnodo= String.valueOf(nodo);

int contador=0;
FileOutputStream fos = null;

Statement st = null;
ResultSet rs = null;

 

final String sql=” SELECT “+
“FROM(SELECT to_number (rownum) cuenta,”+
” p.
“+
” FROM “+
” ( “+
“SELECT c.nodo_co_nodo, “+
” c.infi_nu_infi, “+
” c.docu_co_documento, “+
” d.docu_no_documento, “+
” d.docu_no_extension ,”+
” d.docu_nu_version, “+
” d.DOCU_FX_MODIFICACION fecha,”+
” e.doct_do_documento doc “+
” FROM tablametadatos c, “+
tablaauxiliar d, “+
tabladocumentos e “+
” WHERE c.nodo_co_nodo = ” + nnodo +
” AND c.docu_co_documento =d.docu_co_documento “+
” AND d.docu_co_documento =e.docu_co_documento “+
” AND e.docu_nu_version =d.docu_nu_version “+
” AND c.docu_nu_version =e.docu_nu_version “+
” ) “+
” where (cuenta >”+topec1 + ” and cuenta <” +topex1 +” )”;

 

//abre fichero de log
File TextFile = new File(path1);
FileWriter TextOut = new FileWriter(TextFile, true);

System.out.println(“”);
System.out.println(“********************************************************************”);
System.out.println(“COMENZANDO PROCESO INICIAL”) ;
System.out.println(“sql general=”+sql);
System.out.println(“”);

TextOut.write(“********************************************************************\r\n”);
TextOut.write(“COMENZANDO PROCESO INICIAL\r\n”);
TextOut.write(“sql general=”+sql+”\r\n”);

try
{

st = cn.createStatement();
rs = st.executeQuery(sql);

while (rs.next())
{
++contador;
//para blobs
final String verdocu= rs.getString(“docu_no_documento”) ;
System.out.println(“Ndocu =” + verdocu );

final String verinfi =rs.getString(“infi_nu_infi”);
System.out.println(“Infi =” + verinfi );

final String verloc = rs.getString(“docu_co_documento”);
System.out.println(“Cdocc =” + verloc );

final String vernombre= verinfi+”“+verloc + ““+ verdocu;

System.out.println(“Nombre =” + vernombre );

System.out.println(“+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”);
System.out.println(“Numero fichero a extraer =” + contador );

TextOut.write(“Numero fichero a extraer =” + contador+”\r\n”);

final String nfichero =vernombre; //LE PASAMOS COMO ARGUMENTO EL NOMBRE YA MONTADO:INFI_DOCU+LOC

System.out.println(” Fichero a extraer: ” +nfichero);
TextOut.write(“Fichero a extraer =” + nfichero+”\r\n”);

final String pathname= path + nfichero ;
System.out.println(” Extrayendo fichero multimedia : “+pathname);
TextOut.write(“Extrayendo fichero multimedia =” + pathname +”\r\n”);

//deberíamos comprobar si existe ese fichero
final File file = new File(pathname);

fos = new FileOutputStream(file);
final Blob bin = rs.getBlob(“doc”);
System.out.println(“…Extrayendo BLOB”);
TextOut.write(“Extrayendo BLOB \r\n”);

final InputStream inStream = bin.getBinaryStream();
final int size = (int)bin.length();
System.out.println(“Tamaño: “+size);
TextOut.write(“Tamaño =” + size+”\r\n”);

final byte[] buffer = new byte[size];
int length = -1;

while ((length = inStream.read(buffer)) != -1)
{
fos.write(buffer, 0, length);
}

if (fos != null)

{

//Intentamos cambiar los permisos al directorio creado
TextOut.write(“Fichero extraido ok \r\n”);

permisos777(pathname);
fos.close();
System.out.println(” Fichero extraido ok.”);
System.out.println(“+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++”);
TextOut.write(“+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n”);

}
}
}
catch (final IOException ioe)
{
throw new IOException(ioe.getMessage());

}
finally
{
if (fos !=null)
{
fos.close();
TextOut.write(“FIN DEL PROCESO \r\n”);
TextOut.close();

}
if (rs !=null)
{
rs.close();

TextOut.close();
}
rs=null;
st=null;

 

 

System.out.println(“Fin RecuperaBD2”);

System.out.println(“FIN PROCESO”) ;

TextOut.close();

}
}

 

//funcion para añadir permisos 777 a los ficheros extraidos 
public static void permisos777 (final String pathname)
{

Process theProcess = null;

//intentamos cambiar los permisos del fichero recién creeado
System.out.println(“Cambiamos permisos 777 a “+pathname);
try
{
theProcess = Runtime.getRuntime().exec(“chmod 777 “+ pathname);
}
catch(IOException e)
{
System.out.println(“Error en el método exec()”);
}
//fin de cambio de permisos

}

}

//clase para gestionar las conexiones con la BBDD

class GestorDeConexiones
{
private final String user;
private final String password;
private Connection conn = null;
private boolean conectado = false;

public GestorDeConexiones(final String usr, final String pwd){
user = usr;
password = pwd;
}

public void closeConnection() throws SQLException{
if (conectado)
conn.close();
}

private void conectar() throws SQLException {

String url;
DriverManager.registerDriver(new OracleDriver());

url = “jdbc:oracle:thin:@x.x.x.x:yyy:cadena”; ///ojo PROD

 

conn = DriverManager.getConnection(url,user, password);
System.out.println(“Conexion correcta”);
conectado = true;

}

public Connection getConnection() throws SQLException
{
if (!conectado)
conectar();
return conn;
}
}

 

 

 

 

superminipc retro


Hoy en día, gracias a las impresoras 3D, podemos encontrar todo tipo de carcasas personalizadas para las Raspberry Pi  qeu podemos descargar desde el famoso respositorio Thingverse   para luego intentar imprimirla  en nuestra impresora 3d ( en caso de ser el afortunado de poseer una  y que sea funcional), pero  lo que tenemos aquí es algo muy especial pues no es un Mini PC con Raspberry PI y una carcasa impresa en 3D :es una Raspberry Pi dentro de una radio en miniatura con forma de PC de los años 90.

El hack merece explicación, porque es una delicia. Ha sido creado por Senpailord1234, un usuario de Reddit. Como hemos comentado no se trata de un carcasa de PC impresa con una impresora 3D, sino que es una auténtica radio en miniatura de los años 90 0,muy a la moda de los 90’s ,pues  en aquella época a alguien le pareció interesante comercializar una radio de bolsillo con forma de PC… 

Inspirado  en esta  idea   Senpailord1234  decidió convertir esta vieja  radio dentro de un minipc falso  en un PC de verdad… La pega es que al ser  tan pequeña  ahí dentro no cabe una Raspberry Pi 4 o similar, así que utilizó una versión aún más miniaturizada, llamada Raspberry Pi Zero W, que apenas cuesta 17 euros

Esta placa  Raspberry Pi Zero W amplía la familia Pi Zero, el Pi Zero W tiene toda la funcionalidad del Pi Zero original, pero con conectividad añadida, pues e consta de LAN inalámbrica 802.11 b/g/n,  Bluetooth 4.1 y  Bluetooth de baja energía (BLE)

Raspberry Pi Zero W es una placa computacional en miniatura( su tamaño es de  7,5 x 6 x 4 cm) pues ,para que se haga una idea, es casi tres veces más pequeña que una Raspberry Pi 4…

Como el Pi Zero, también tiene: 

  • 1 GHz, CPU de un solo núcleo.
  • 512 MB de RAM.
  • Puertos Mini HDMI y USB On-The-Go
  • Alimentación micro USB.
  • Cabezal compatible con HAT de 40 pines.
  • Vídeo compuesto y encabezados de reinicio
  • Conector de cámara CSI


Senpailord1234 se  decidió a  convertir en funcional los periféricos de plástico de la radio en miniatura. Por ejemplo, el lector de floppy disk de imitacion de la carcasae  (los viejos discos que tenían los PC) lo ha convertido en la ranura de entrada para la tarjeta microSD, tal como se puede ver en la foto de apertura de la noticia .

Después ha introducido la Raspberry Pi Zero W dentro de la carcasa de la radio, ademas   la ha conectado a una pequeña pantalla LED que ha puesto en el monitor de plástico de la radio:

Raspberry Pi

 

Como nota curiosa   además no  quiso desaprovechar la radio AM/FM original, así que  conectó  a la Raspberry un DAC IS2  y  que a su vez conecto a  los pequeños altavoces incorporados , por lo  que  puede introducir música por el lector de discos del PC, en una micro SD, y escucharla por los altavoces.

Y aquí lo tenemos, una radio con forma de PC en miniatura convertida en un PC de verdad, capaz de ejecutar Doom. Pura genialidad, gracias a la magia de Raspberry Pi.

Raspberry PI PC