giovedì 7 febbraio 2013

ADB in Virtualbox

In alcuni casi puo' essere necessario installare una macchina virtuale per sviluppare in Android senza particolari controindicazione
Qualche problema potrebbe venire dall'utilizzo di Adb con un telefono reale a causa del livello di isolamento derivante dalla macchina virtuale

Nel caso in cui si usi Virtualbox la soluzione e' costuita da installare i driver adb nella macchina host (questo per Windows, in Linux il problema non si pone) e successivamente di aggiungere mediante l'icona con il segno + il device alla macchina virtuale (vedi immagine sottostante)




A questo punto si puo' accendere la macchina virtuale e configurare il dispositivo nella macchina guest

Ping su una intera classe di indirizzi

Questo post e' un piu' un promemoria per me stesso che altro
Regolarmente  (una volta all'anno) mi trovo a dover tirare fuori dal cassetto qualche apparato di rete (in particolare qualche access point..in particolare un ben preciso access point) di cui mi sono scordato l'ip e che devo riconfigurare

Per questo motivo e' necessario effettuare una scansione completa della rete alla ricerca dell'ip dell'access point...in generale la cosa e' ristretta alla classe 192.168.x.x e 10.0.x.x

Per fare cio' e' molto comodo fping (da installare con apt-get install fping) che automatizza il compito

in generale la sintassi e'
fping -g - a 10.0.2.0/24

per scansionare la classe determinata dalla netmask e visualizzare sotto gli host attivi



ovviamente tutto cio' funziona fino a quando non e' impostato il No Ping  ma in generale gli apparati di rete non sono cosi' configurati

martedì 5 febbraio 2013

CMake


Guardando un po' a giro mi sono reso conto di quanto sono arretrato ....ero rimasto al fatto che autotools e' una cosa figa mentre e' stata sorpassata da altri concorrenti come CMake ed ho deciso di provarlo con il programma descritto a questo post

Per provare Cmake (che non e' installato di default in Debian) si deve creare il file CMakeLists.txt dove sono contenute le informazioni di compilazione come nel Makefile come il link verso la libreria SDL

CMakeLists.txt
----------------------------------------

cmake_minimum_required(VERSION 2.8)
PROJECT(CMake_TEST)
FIND_PACKAGE(SDL REQUIRED)
ADD_DEFINITIONS(-Wall -O3)
INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR})
ADD_EXECUTABLE(cmake_test test.cpp)
TARGET_LINK_LIBRARIES(cmake_test ${SDL_LIBRARY})
----------------------------------------

a questo punto, con il solo file sorgente e il CMakeLists.txt nella directory, si lancia
cmake .   (attenzione al punto)
vengono generati automaticamente altri file e se non ci sono errori si puo' digitare
make 
per compilare l'eseguibile

L'aspetto piu' interessante di CMake e' di essere indipendente dalla piattaforma e dal compilatore e puo' generare file di compilazione di Linux e Windows per i diversi compilatori supportati

Ovviamente non ha senso di usare Cmake per un caso cosi' semplice come quello utilizzato nell'esempio (e' sempre piu' veloce utilizzare la linea di comando per lanciare gcc, anche bypassando make)

Scrivere e leggere file binario in Qt

Ed adesso in confronto il metodo Qt ed il metodo standard C++ per leggere un file binario di interi

Qt
-----------------------------------------------------------

#include <QFile>
#include <QDebug>



   QFile f("/home/luca/luca.dat");
    f.open(QIODevice::WriteOnly | QIODevice::Append);
    QDataStream out(&f);
    out<<quint16(270);
    f.close();

    QFile g("/home/luca/luca.dat");
    g.open(QIODevice::ReadOnly);
    QDataStream in(&g);
    qint16 letto;
    in >> letto;
    qDebug() << letto;


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

C++
-----------------------------------------------------------
#include <iostream>
#include <fstream>
using namespace std;
int main(void){
   float fnum[4{42.22, -42.44, 1.27.8};
   int i;

   ofstream out("numeri.dat", ios::out | ios::binary);
   if(!out){
       return 1;
   }
   out.write((char *&fnum, sizeof(fnum));
   out.close();

   for (i=0; i<4; i++)
      fnum[i0.0;
   ifstream in("numeri.dat", ios::in | ios::binary);
   if(!in) {
      cout << "Cannot open file.";
      return 1;
      ;
   }
   in.read((char *&fnum, sizeof(fnum));
   cout << in.gcount() << " bytes read." << endl;
   for (i=0; i<4; i++)
      cout << fnum[i<< " ";
   in.close();
   cout << endl;
}
----------------------------------------------------------------
  
-----

Debian on Android

Esempio di Linux in Android (Debian small image) su un tablet Mediacom 850i

Come si puo' vedere il sistema e' particolarmente lento ed al limite dell'usabile (sarebbe da provare anche con un puntatore ed una tastiera fisica)


Scrivere e leggere file testo in Qt

Un semplice esempio di come scrivere e leggere un file testo in Qt
L'esempio e' ripreso sostanzialmente dall'help in linea per cui non vengono fornite ulteriori spiegazioni



------------------------------------------------
//scrittura
    QFile mfile("/home/luca/prova.txt");
    if (!mfile.open(QFile::WriteOnly | QFile::Text))
        {
        return ;
    }

    QTextStream out(&mfile);
    out << "La risposta e': " << 42 << "\n";
    out << "Ma la domanda quale e'??";
    mfile.flush();
    mfile.close();

//lettura
    QFile rfile("/home/luca/prova.txt");
    if (!rfile.open(QFile::ReadOnly | QFile::Text))
            return;

    QTextStream in(&rfile);
    QString t;
    while (!in.atEnd()) {
            QString line = in.readLine();
            t = t +  line + "\n";
            }
    ui->textEdit->setText(t);

    rfile.close();
-------------------------------------------------

altrimenti in C++ classico

--------------------------------------------------
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
   string line;
   ofstream myfile ("prova.txt");
  if (myfile.is_open()){
    myfile << "This is a line.\n";
    myfile.close();
  }
  else 
    cout << "Unable to open file";
  

  ifstream myfile2 ("prova.txt");
  if (myfile2.is_open())
  {
    while (! myfile2.eof() )
    {
      getline (myfile2,line);
      cout << line << endl;
    }
    myfile2.close();
  }else 
    cout << "Unable to open file"; 
 }
--------------------------------------------------

lunedì 4 febbraio 2013

Modalita' scalata in VirtualBox

Una delle cose piu' fastidiose in VirtualBox e' la modalita' scalata che in pratica fa scomparire il menu' di Virtualbox dalla finestra dell'applicazione (impedendo cosi' di ripristinare la modalita' precedente via mouse)

Modalita' a finestra

Modalita' Scalata


per poter riconquistare il menu si deve premere la combinazione CTRL destro + F

FigSpec FS-60CL

A lavoro mi hanno rifilato questo sensore iperspettrale cinese (pushbroom 400-1000 nm con larghezza di banda di 0.5 nm compatibile con DJI M...