lunedì 1 aprile 2013

Allineare i widgets in Qt

In condizioni normali se si ridimensiona una finestra Qt i widgets in essa contenuti non si dimensionano a loro volta con effetti grafici piuttosto sgradevoli

Per evitare questo effetto si puo' cliccare destro sul form e selezionare Layout/(...) per ottenere un ridimensionamento automatico


venerdì 29 marzo 2013

Sqlite Manager su Windows

Per gestire i file generati da Sqlite su Windows puo' essere utile usare il programma che si scarica gratuitamente da questo link


QTimer in Qt

Questo componente non visuale permette di gestire eventi a tempi predefiniti

La sintassi e' piuttosto semplice: si crea l'oggetto e si associa una funzione che viene richiamata ogni volta che l'oggetto genera un evento


Nell'esempio seguente gli eventi vengono generati ogni secondo
------------------------------------------

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();
    void TimerEvent();

private:
    Ui::MainWindow *ui;
    QTimer timer;
    unsigned contatore;
};

#endif // MAINWINDOW_H
------------------------------------------

------------------------------------------
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    contatore = 0;
    connect(&timer, SIGNAL(timeout()), this, SLOT(TimerEvent()));
    this->timer.start(1000);
}


void MainWindow::TimerEvent()
{
    contatore++;
    QString str;
    str.append(QString("%1").arg(contatore));
    ui->pushButton->setText(str);
    qDebug()<< contatore;
}
------------------------------------------

Importare Progetti Qt in QtCreator da Windows a Linux

Per poter spostare un progetto in Qt/QtCreator sviluppato su Windows in una Linux Box non e' sufficiente copiare la directory dei sorgenti in quanto una volta aperto il file .pro in QtCreator si avranno errori in particolare sul file Make

e' quindi necessario, prima di aprire il file .pro
1) Cancellare la directory di debug/release
2) Cancellare Makefile, Makefile.debug, Makefile.Release
3) cancella object_script*.*
4) cancellare il file *.pro.user (attenzione non file .pro)

a questo punto si puo' aprire il file .pro e compilare.
I file mancanti verranno ricostruiti sulla base delle impostazione Linux

(informazione ripresa da qui)

Spedire pacchetti UDP con Netcat

Per fare delle prove di server UDP puo' essere utile il programma netcat (che non e' installato di default in Debian ma deve essere aggiunto con apt-get install netcat)

una volta avviato il server UDP si puo' inviare pacchetti UDP con la seguente sintassu
dove localhost e' l'indirizzo del server (in questo caso in locale) e 21567 e' la porta di ascolto del server

echo -n "hello" | nc -u -w1 localhost 21567

giovedì 28 marzo 2013

Deploy Application in Qt su Windows

Una volta creata una applicazione Qt funzionante in Window puo' venire il momento di distribuirla

Per prima cosa si deve creare il file eseguibile dentro a QtCreator  selezionando l'opzione Release nei metodi di compilazione. Nella cartella del progetto viene quindi creata una sottocartella Release con l'eseguibile

Per visualizzare le dipendenza si puo' usare il programma Depend (scaricabile a questo link)


Si copiano quindi nella directory release dell'eseguibile le DLL necessarie copiandole da C:\QtSDK\Desktop\Qt\4.7.3\mingw\bin
che nel caso in esame sono
QtCore4.dll
QtGui4.dll
QtSql4.dll

a queste vanno aggiunte
libgcc_s_dw2-1.dll
mingwm10.dll

si zippa il contenuto della directory e tramite il software NSIS si crea un installer scegliendo l'opzione "Installer based in Zip File"


Mouse Bluetooth su Debian

Questa e' una delle classiche cose che ti fa odiare Linux



Ho provato a connettere il mouse Bluetooth (recuperato di regalo) Sony VGP-BMS30 alla mia Debian Box e sono iniziati i problemi
La connessione e' piuttosto semplice da eseguire

apt-get install bluez-compat bluetooth
hcitool scan


si legge l'ID del mouse (in questo caso 00:03:C9:D1:61:B3) e poi si lancia
hidd --connect 00:03:C9:D1:61:B3

a questo punto sono iniziati i problemi
L'accoppiamento e' stato eseguito in modo corretto ma lasciando il mouse fermo per qualche decina di secondi questo sembrava essersi messo in modalita' sleep e non dava segni di vita

lanciando il comando
echo on > `readlink -f /sys/class/bluetooth/hci0`/../../../power/level 
e' possibile disattivare l'autosospend 
Problemi finiti ??? Nemmeno per idea
Il mouse a questo punto ha iniziato a muoversi con un ritardo notevole ed anche erratico sullo schermo senza un ragione precisa. Consultando questa pagina ho potuto verificare che si tratta di un bug conosciuto dello stack bluez quindi...mi compro un Logitech wireless da 2.4GHz




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...