2010년 5월 19일 수요일

QextSerialPort

qt로 RS-232(시리얼) 프로그램을 하려면 소스포지(http://sourceforge.net/projects/qextserialport/)에서
QextSerialPort
QextSerialPort 라이브러리를 다운 받는 것이 편하다.
하지만 윈도우에서 그 소스를 그대로 사용했는데 심각한 버그가 있었다.
데이터 값이 올바로 전달되지 않는 것이다.
하지만 하이퍼터미널을 이용해서 포트를 열었다가 닫으면 그때부터는 정상적으로 동작한다.
이 버그로 이틀 정도 고생을 했다.
나의 경우는 EventDriven 으로만 사용했기 때문에 Polling 으로 사용하면 정상적으로 동작할지는 모르겠다.

이것 저것 해보다 우연히 그 원인을 찾았다.
초기 설정을 올바로 해주지 못하는 문제였다.

보통이라면 QextSerialPort 를 이렇게 사용하면 되고, 예제에서도 이렇게 되어있다.

    QextSerialPort * port;
    serialport = new QextSerialPort(setup.value("serialport", "COM1").toString(), pset, QextSerialPort::EventDriven);
    setup.endGroup();
    serialport->setBaudRate(BAUD9600);
    serialport->setFlowControl(FLOW_HARDWARE);
    serialport->setParity(PAR_NONE);
    serialport->setDataBits(DATA_8);
    serialport->setStopBits(STOP_1);
    serialport->setTimeout(500);
    if(!serialport->open(QIODevice::ReadWrite))
    {
        QMessageBox::warning(this, trUtf8("serial connection"), trUtf8("serial connection failed"));
        return;
    }

하지만 올바로 동작하려면 open 이후에 다음을 넣어줘야 한다.

    serialport->setBaudRate(BAUD9600);
    serialport->setDataBits(DATA_8);
    serialport->setStopBits(STOP_1);

아마도 이전에 설정했던 값은 open 할 때 영향을 미치지 못하는 것 같다.

2010년 4월 13일 화요일

Qt Creator 에서 Release mode가 안될 때

Qt Creator 를 사용하다 보면 종종 새로 만든 프로젝트에서 Release mode 선택이 안될 때가 있다.
메뉴에서 선택하려면 Debug 만 보인다.

먼저 한번 그런 적이 있어서 겨우 해결했는데, 오늘도 같은 현상이 생겨 고생을 했다.
한번 경험한 걸 또 잊어서 헤메는 꼴이라니...

오늘은 편법으로 해결을 했는데
.pro 파일을 열어 다음을 추가하는 것이다.

CONFIG += debug_and_release
CONFIG += build_all

이렇게 하면 어떤 컴파일 모드를 선택해도 Debug 폴더와 Release 폴더가 동시에 갱신되면서 두가지 모두 컴파일을 한다.
컴파일 시간에 구애받지 않는 정도의 시스템이거나 작은 프로젝트의 경우 이렇게 해결해도 상관은 없을 듯 하다.
하지만 컴파일 시간이 길어지니 문제의 근본적인 해결은 아니라고 할 수 있겠다.

결국 이것저것 해보다 방법을 찾았다.
정상적인 방법으로 Release 모드를 지원하려면
왼쪽에 Project 버튼을 눌러서 설정해야 한다.
그림과 같이 Build setting - Edit build configuration 에서
Add 버튼을 눌러 Clone selected 를 선택하면 Release 를 직접 써서 추가할 수 있다.


추가 후에 선택해 보면 잘 되는 걸 확인할 수 있다.

2010년 4월 7일 수요일

시작 - Windows에서 Qt Creator 를 써보자.

왜 이제서야 qt를 알게 되었을까 싶다.
암튼 여지껏 윈도우에서 C++을 쓰려면 ms 의 visual studio 만이 어쩔 수 없는 선택이라 여겼던 편견에서 벗어나, qt를 사용하면서 여러가지로 편리하면서 직관적으로 프로그램 할 수 있다는 사실에 놀라고 있다.

qt 다운로드는 qt.nokia.com 에서 download를 클릭하면 qt를 종류별로 다운 받을 수 있다.
이때 qt creator 로 쓰여진 파일을 받으면 ide 환경만 받게 된다.
꼭 LGPL 을 클릭하여 Qt SDK for Windows* (287 MB) 를 다운받아야 전체 파일을 설치할 수 있다.

다운받은 파일을 설치하는 것은 보통의 인스톨 과정을 따른다.
기본으로 설치되는 폴더가 이름이 상당히 길어서 나는 C:\Qt 에 설치했다.

설치된 이후에 Qt로 만들어진 프로그램들은 Qt의 dll 파일을 사용하는데, 해당 path가 설정되어 있지 않으면 dll을 찾을 수 없다는 에러가 뜨기 때문에 path 설정을 해 주는 것이 좋다.
내컴퓨터의 속성에서 사용자 변수중 path 에 (Qt폴더)\qt\bin 을 추가해준다.
다음 그림과 같이 하면 된다.


설치 후에 내가 또 애먹었던 것 중 하나가
demo 폴더와 example 폴더에 있는 예제들을 컴파일하지 못하는 문제였다.
여기 저기 해결 방법을 찾다가 겨우 방법을 찾았는데,
무슨 이유인지 몰라도 두개 폴더를 다른 곳으로 복사해서 각각의 프로젝트를 열면 컴파일이 잘 된다.

Qt creator 를 처음 접하는 사람을 위한 동영상 소개를 링크하겠다.


마지막 동영상을 보고 직접 해보려는 사람들은 글씨가 잘 안보여 힘들 것이다.
다음을 참조하길 바란다.

//mainwindow.h
public slots:
    void on_lineEdit_returnPressed();
...
//mainwindow.cpp
    ui->webView->load(QUrl(ui->lineEdit->text()));