[Ubuntu] 시리얼 통신

2013. 4. 12. 11:29OS/Ubuntu

우분투 시리얼 통신 하는법



AsyncSerial.cpp

AsyncSerial.h

QAsyncSerial.cpp

QAsyncSerial.h



1. 클래스를 추가한다.

- 추가후 헤더를 인클루드 해준다.

#include "QAsyncSerial.h"


2. 라이브러리를 추가한다.

LIBS += -L/usr/local/lib \
    -lboost_system \
    -lboost_thread \
    -lboost_date_time \


3. 시리얼 변수를 생성한다.

 QAsyncSerial Serial1;


4. 이벤트를 연결할 slot을 생성해준다.

//명칭은 아무거나 해도된다.

private slots:

void onLineReceived_Serial(QString strData);//


5. 슬롯을 연결해준다.

  connect(&Serial1, SIGNAL(lineReceived(QString)), this, SLOT(onLineReceived_Serial(QString)));

 

6. 시리얼 오픈

void MainWindow::Serial1_Port_Open()
{
    if (Serial1.isOpen() == true)
    {
        Serial1.close();
    }
    else
    {
        Serial1.open("/dev/ttyUSB0",9600); //USB  젠더를 사용할 경우
        //Serial1.open("/dev/ttyS0", 9600);// 내장 시리얼 포트를 활용할 경우


        if (!Serial1.isOpen() || Serial1.errorStatus())

        {
            Display_Log("Error : COM 1 Open Failed");
            return;
        }
        else
        {
                       // m_bPort_Open[COM1] = true;
                        //ui->label_RS232->clear();
                        //ui->label_RS232->setText("RS-232 :: COM 1");
        }
    }
}


7. 수신 부분

void MainWindow::onLineReceived_Serial(QString strData)
{
     if (strData != "")
    {
         //Todo: 데이터 수신
         switch(strData.at(0).toAscii())
         {
         case STX:
             RXDATA.clear();
             RXDATA.append(strData);
             break;
         case ETX:

             break;
         default:
             RXDATA.append(strData);
             if(RXDATA.length()>1024)
             {
                 RXDATA.remove(0,1);
             }
             break;
         }
     }
}


'OS > Ubuntu' 카테고리의 다른 글

[Ubuntu] 레이블 색 변경  (0) 2013.04.12
[Ubuntu] 소리 출력  (0) 2013.04.12
[Ubuntu] NAS 설치법  (0) 2013.04.08
[우분투] root권환  (0) 2013.04.02
[우분투] chrom root 권한 실행  (0) 2013.02.01