Visualizzazione post con etichetta Netbeans. Mostra tutti i post
Visualizzazione post con etichetta Netbeans. Mostra tutti i post

lunedì 16 maggio 2016

Opzioni di compilazione gcc in Eclipse e Netbeans

Un promemoria su come configurare gli switch di compilazione di gcc con Eclipse e Netbeans
In entrambi i casi si deve cliccare destro sul nome del progetto ed aprire le proprieta'

Eclipse

Optimizzazione e debug -O3 -Wall

 Include switch -I
Per lo switch -lm per esempio si scrive sono m omettendo -l
Library switch -l -L


Netbeans

Inclusione di librerie ed headers


Per aggiungere lo switch -l in Netbeans si apre Add Option/Other Option e si digita lo switch completo (al contrario di Eclipse)


giovedì 7 marzo 2013

Creare file Jar con Netbeans

Per ottenere dei file jar da distribuire di una propria applicazione da NetBeans e' sufficiente effettuare una Build del progetto (F11)

In questo modo viene creata una sottodirectory build nella quale sono contenuti tutti i file (librerie comprese) necessari per la redistribuzione dell'eseguibile


Creazione automatica QrCode in Java/Netbeans

Per generare QrCode in modo automatico in modo semplice si puo' utilizzare il metodo presentato a questo indirizzo

 Si deve scaricare la libreria XZing e si devono aggiungere al progetto le librerie core e javase contenute nelle sottodirectory del file zip


il codice e' stato modificato in modo da accettare in input sulla riga di comando (nella variabile args) il contenuto del QrCode. Questa motiva permette mediante una procedura batch di creare in automatico quanti QrCode si desiderino

-----------------------------------------
package qrcode;


import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.CharacterCodingException;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
import java.util.Hashtable;

import com.google.zxing.client.j2se.MatrixToImageWriter;


/**
 *
 * @author l.innocenti
 */
public class QrCode {

    public static void main(String[] args) {
        Charset charset = Charset.forName("UTF-8");
        CharsetEncoder encoder = charset.newEncoder();
        byte[] b = null;
            try {
                // Convert a string to UTF-8 bytes in a ByteBuffer
                ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(args[0]));
                b = bbuf.array();
            } catch (CharacterCodingException e) {
                System.out.println(e.getMessage());
            }

            String data;
            try {
                data = new String(b, "UTF-8");
                // get a byte matrix for the data
                BitMatrix matrix = null;
                int h = 100;
                int w = 100;
                com.google.zxing.Writer writer = new MultiFormatWriter();
                try {
                    Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(2);
                    hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
                    matrix = writer.encode(data,
                    com.google.zxing.BarcodeFormat.QR_CODE, w, h, hints);
                } catch (com.google.zxing.WriterException e) {
                    System.out.println(e.getMessage());
                }

                // change this path to match yours (this is my mac home folder, you can use: c:\\qr_png.png if you are on windows)
                        String filePath = args[0]+".png";
                File file = new File(filePath);
                try {
                    MatrixToImageWriter.writeToFile(matrix, "PNG", file);
                    System.out.println("printing to " + file.getAbsolutePath());
                } catch (IOException e) {
                    System.out.println(e.getMessage());
                }
            } catch (UnsupportedEncodingException e) {
                System.out.println(e.getMessage());
            }
            }
}
-----------------------------------------
Il risultato e' una immagine Png con nome uguale al contenuto del QrCode 
Per creare in automatico 1000 numeri QrCode di numeri progressivi si puo' creare un file batch su Windows con la seguente linea
-------------------------------------------------------------

FOR /L %%A IN (1,1,1000) DO java -jar Qrcode.jar %%A
-------------------------------------------------------------

mentre in Linux
-------------------------------------------------------------

#!/bin/bash
for i in {1..1000}
do
   java -jar Qrcode.jar $i
done
--------------------------------------------------------------


mercoledì 2 gennaio 2013

Uso di JFreeChart in Java/NetBeans

L'utilizzo di JFreeChart in NetBeans/Java e' sostanzialmente identico a quello di Android

Per prima cosa si deve creare un progetto come New Java Application e poi si devono linkare le librerie jcommon e jfreechart (le altre librerie comprese nel file zip si possono omettere)


In seguito si deve editare la funzione main come segue
Barre
----------------------------------------

package barre;

import java.awt.Color;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

/**
 *
 * @author l.innocenti
 */
public class Barre {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
       DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  dataset.setValue(2, "classe1", "1");
  dataset.setValue(7, "classe1", "2");
  dataset.setValue(4, "classe1", "3");
  dataset.setValue(9, "classe1", "4");
  dataset.setValue(6, "classe1", "5");
  JFreeChart chart;
 chart = ChartFactory.createBarChart
("Grafico a barre","Classe", "Valore", dataset,
PlotOrientation.VERTICAL, false,true, false);
  //chart.setBackgroundPaint(Color.yellow);
  //chart.getTitle().setPaint(Color.blue); 
  CategoryPlot p = chart.getCategoryPlot(); 
  p.setRangeGridlinePaint(Color.red); 
  ChartFrame frame1=new ChartFrame("Bar Chart",chart);
  frame1.pack();
  frame1.setVisible(true);
  
//  frame1.setSize(400,350);
    }
}

----------------------------------------


Linee
----------------------------------------

package javaapplication7;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

/**
 *
 * @author l.innocenti
 */
public class JavaApplication7 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
   XYSeries series = new XYSeries("XYGraph");
   series.add(1, 1);
   series.add(1, 2);
   series.add(2, 1);
   series.add(3, 9);
   series.add(4, 10);

// Add the series to your data set
   XYSeriesCollection dataset = new XYSeriesCollection();
   dataset.addSeries(series);

// Generate the graph
   JFreeChart chart;   
        chart = ChartFactory.createXYLineChart(
"Grafico XY", // Title
"asse X", // x-axis Label
"asse Y", // y-axis Label
dataset, // Dataset
PlotOrientation.VERTICAL, // Plot Orientation
false, // Show Legend
false, // Use tooltips
false // Configure chart to generate URLs?
);
        
ChartFrame frame = new ChartFrame("Esempio", chart);
frame.pack();
frame.setVisible(true);
    }
}


----------------------------------------





FFT in Android e Java/NetBeans

Per elaborare i dati derivanti dai sensori posti sul telefono puo' essere utile una elaborazione della trasformata in Fourier; per il caso in esame sara' impiegata la libreria JTransform

La libreria si inserisce normalmente all'interno del progetto di NetBeans od Android

Per l'esempio non sono stati usati dati reali ma quelli calcolati dalla funzione

10sin(x)+5sin(x/2(

Grafici da WolframAlpha

il codice Java (quello Android e' identico) e'
------------------------------

package javaapplication1;

import edu.emory.mathcs.jtransforms.fft.DoubleFFT_1D;


/**
 *
 * @author l.innocenti
 */
public class JavaApplication1 {
   

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       int k;
        // numero dei dati 
        int N = 1002;

       DoubleFFT_1D dfft = new DoubleFFT_1D(N);

       double[] data = new double[N];
       double[] outputData = new double[N];

//crea il segnale
       for (k=0;k<N-1;k++) {
            data[k] = 10*Math.sin(Math.toRadians(k))+5*Math.sin(Math.toRadians(k/2));
            //System.out.println(k+";"+data[k]);
        }
     
       
        // si usa Real FFT perche' dati sono reali
        dfft.realForward(data);  
        
        // il risultato viene messo nella matrice dei risultati secondo il formato
        // data[0] = somma di tutti gli input
        // se il numero di dati e' pari a partire dall'indice data[2] si ha la parte reale nell'indice pari e 
        // la parte immaginaria nell'indice dispari
        // data[2*k] = Re[k], 0 <= k < n / 2
        // data[2*k+1] = Im[k], 0 < k < n / 2
        // altrimenti se i dati sono dispari
        // data[2*k] = Re[k], 0 <= k < (n+1)/2
        // data[2*k+1] = Im[k], 0 < k< (n-1)/2
        // per calcolare il valore di frequenza di ogni array 
        // Fs = valore di campionamento in Hz
        // N = numero di punti
        // k = indice della matrice
        // Frequenza = (k*Fs) / n
        //
        //La potenza dello spettro e' data da 
        //sqrt(parte_reale*parte_reale+parte_immaginaria*parte_immaginaria)
        
        if(data.length%2==0){
            for(int i = 0; i < data.length/2; i++){
                outputData[i]= (float) Math.sqrt((Math.pow(data[2*i],2))+(Math.pow(data[2*(i)+1], 2)));
            }
        }else{
            for(int i = 0; i < data.length/2-1; i++){
                outputData[i]= (float) Math.sqrt((Math.pow(data[2*i],2))+(Math.pow(data[2*i+1], 2)));
            }
        }
    }
}
-------------------------------------
Il risultato e' il seguente



giovedì 4 ottobre 2012

Creare progetti Swing/Java con Eclipse e NetBeans

Eclipse
La procedura per creare un progetto Swing con Eclipse ripercorre per le prime fasi quelle descritte nel precedente post

Per creare le interfacce Swing in Eclipse e' necessario utilizzare un Plugin (Window Builder) che comunque e' gia' presente sia nella versione Java di Eclipse sia nel pacchetto dei Google Plugins (http://dl.google.com/eclipse/plugin/4.2 per la versione di Eclipse Juno)
Si deve creare un Nuovo Progetto Java Application, dopo si seleziona il progetto nella colonna a sinistra del Package Explorer e si crea un nuovo package. A questo punto si clicca sul package e si seleziona New/Other/Swing Designer/Jframe

Al di sotto della finestra di Editor del codice ci sono due tab; tramite questi si puo' accedere all'editor visuale di Swing



NetBeans
Si deve creare un Nuovo Progetto/Java Application. Successivamente si sceglie il nome del progetto e si lascia il flag su Create Main Class ma si cancella il nome della class


A questo punto in Source Packages si legge <default package>. Si clicca destro e si seleziona nuovo JFrame e compare l'editor visuale


Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...