Implementasi SerialPort di Qt

2 menit

Sampai saat ini aplikasi serial port di Qt masih dikembangkan oleh programmer komunitas, belum merupakan bagian integral dari frameworknya. Dari pencarian yang dilakukan ada terdapat beberapa implementasi librari serial port yang ditemukan, yakni :

QextSerialPort – merupakan librari yang dikembangkan dengan mentargetkan operasinya pada Mac OS X, Windows, Linux dan FreeBSD. Pengembangannya diawali dari sourceforge, namun kemudian beralih ke Google Code. Metode implementasinya menggunakan komunikasi sinkron dan asinkron melalui mekanisme signal-slot.

QSerialDevice – librari ini dikembangkan dengan mereview kembali apa yang sudah dilakukan oleh QextSerialPort. Dapat berjalan dengan menggunakan mekanisme sinkron ataupun asinkron. Librari ini dapat didownload di fireforge.net, gitorious.org, atau di qt-apps.org.

QSerialPort @sourceforge– Ini juga merupakan aplikasi serial yang dikembangkan untuk berjalan pada Mac, Windows, Linux, dan FreeBSD. Di implementasikan secara asinkron melalui mekanisme signal-slot. Selain dari sourceforge ada juga librari serial port yang dikembangkan di situs gitorious.org.

Oleh karena yang sudah diuji adalah QextSerialPort maka tulisan ini akan membicarakan bagaimana penggunaan QextSerialPort dalam aplikasi melalui panduan dibawah ini. Sebagai permisalan, pada kasus ini librari QextSerialPort ditempatkan pada lokasi E:\QtComponents\qextserialport.

Modifikasi file *.pro, untuk menyertakan librari QextSerialPort
LIBS += -L”E:\QtComponents\qextserialport\build”
LIBS += –lqextserialport
INCLUDEPATH += E:\QtComponents\qextserialport
DEPENDPATH += E:\QtComponents\qextserialport


Deklarasi obyeknya dapat dilakukan dengan skrip :
#include <qextserialport.h>
QextSerialPort *port;

Skrip berikut dapat digunakan untuk melakukan inisialisasi obyek port :
port = new QextSerialPort();
port->setPortName(“COM3”);
port->setBaudRate(BAUD115200);
port->setDataBits(DATA_8);
port->setFlowControl(FLOW_OFF);
port->setParity(PAR_NONE);
port->setStopBits(STOP_1);

Selanjutnya untuk membuka dan menutup portnya cukup dengan menggunakan skrip :
port->open();
dan
port->close();

kemudian agar dapat berkomunikasi kita dapat menggunakan metode berikut :
port->send(“request…”); //untuk mengirimkan request ke perangkat eksternal
dan
QString port->receive(); // untuk menerima balasan dari perangkat eksternal

implementasi ini merupakan metode-metode yang ditambahkan oleh pengembang untuk menambah variase mekanisme komunikasinya.

librari hasil modifikasinya dapat didownload di alamat :

http://www.mediafire.com/?m0w1vv3irtt344j 426.79 KB

Berikut ini contoh aplikasi sederhana yang dapat dikembangkan…

image

Good luck 😉 …

 

Referensi:
http://stackoverflow.com/questions/1459344/qt-and-serial-port-programming
https://projects.forum.nokia.com/ThinkContacts/browser/thinkContacts/serialCommHandler?order=name
http://www.qtcentre.org/threads/28581-QSerialDevice-v-0.2.0-released
http://stackoverflow.com/questions/2698261/how-to-use-qserialdevice-in-qt
http://automon.donaloconnor.net/qt-and-qextserialport/34/

9 tanggapan untuk “Implementasi SerialPort di Qt”

  1. Can you share the code on how you made the serial communication example (MainWindow)?

    Suka

    1. Thank you very much……

      Suka

  2. ok nilavarasan, hope this snippet code can help you :

    this is a sample program that is created with 3 button to connect, disconnect and send a message to a serial device.

    in mainwindow.h :

    #include
    #include

    class MainWindow : public QMainWindow
    {


    private slots:
    void on_connectButton_clicked();
    void on_disconnectButton_clicked();
    void on_sendButton_clicked();

    private:
    Ui::MainWindow *ui;
    QextSerialPort *port;


    };

    and in mainwindow.cpp:


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

    //menginisialisasikan port serial
    port = new QextSerialPort();
    port->setPortName(“COM3”);
    port->setBaudRate(BAUD9600);
    port->setDataBits(DATA_8);
    port->setStopBits(STOP_1);
    port->setFlowControl(FLOW_OFF);
    port->setParity(PAR_NONE);
    }

    void MainWindow::on_connectButton_clicked()
    {
    // membuka komunikasi ke port serial
    port->open();
    }

    void MainWindow::on_disconnectButton_clicked()
    {
    // menutup koneksi ke port serial
    port->close();
    }

    void MainWindow::on_sendButton_clicked()
    {
    // ambil pesan yang akan dikirim dari lineedit
    QString request = ui->lineEdit->text();

    // kirim pesan ke perangkat serial
    port->send(request + “\r\n”);

    // baca balasan dari perangkat serial
    QString reply = port->receive();

    // tampilkan balasan di textedit
    ui->textEdit->append(reply);
    }


    Suka

  3. Hallo mas,,contoh program ini bisa jalan dilunx gak, saya nyoba kok gk jalan ya, mohon pencerahannya,, terimaksaih

    Suka

    1. maksudnya linux mas,,terimakasih

      Suka

  4. terima kasih masukkannya aziz… kalo di linux yang perlu dirubah konfigurasi file .pro nya.
    bisa dengan menyesuaikan lokasi librari untuk pengalamatannya misalnya seperti ini.

    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../qextserialport/build/src/build/ -lqextserialport
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../qextserialport/build/src/build/ -lqextserialportd
    else:symbian: LIBS += -lqextserialport
    else:unix: LIBS += -L$$PWD/../qextserialport/build/src/build/ -lqextserialport

    INCLUDEPATH += $$PWD/../qextserialport/src
    DEPENDPATH += $$PWD/../qextserialport/src

    atau kalau di QtCreator bisa lewat klik kanan di project-nya trus pilih Add Library > External Library > tentukan lokasi library QextSerialPort-nya disana, termasuk lokasi file-file *.h-nya.

    Semoga ini bisa membantu aziz…

    Suka

  5. Mas setelah saya coba muncul :
    C:\Documents and Settings\Axioo\GUI_serialport-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK__Debug\debug\GUI_serialport.exe exited with code -1073741515

    mohon pencerahannya mas,terima kasih

    Suka

    1. ok, langsung saja, Edi…

      untuk konfigurasi librarynya apakah sudah sesuai?

      LIBS += -L”E:\QtComponents\qextserialport\build”
      LIBS += –lqextserialport
      INCLUDEPATH += E:\QtComponents\qextserialport
      DEPENDPATH += E:\QtComponents\qextserialport

      kalo ia, coba kompail ulang library qextserialport menggunakan QtSDK yang Edi punya…

      semoga bisa membantu…

      Suka

  6. Saat saya running qt pada linux ubuntu 2 file dibawah ini tidak ada:

    error: objbase.h: No such file or directory
    error: initguid.h: No such file or directory

    Mohon bantuannya.

    Suka

Tinggalkan komentar

Trending