안녕하세요..

저희가 qt 프로그램은 해 보지 않았어 정확한 답변을 드리기가 힘드네요..

>        //if(fd < 0)
>        //{
>         //       perror(MODEMDEVICE);
>          //      exit(-1);
>        //}

에서 에러가 발생한다는 것은 시리얼 장치 파일을 열때 에러가 발생하는 것 같습니다.
정말로 장치파일의 반환값이 0보다 작은지 확인해 보세요..

if(fd < 0)
{
     qDebug("Error %s",strerror(errno));
     return;
}

이렇게 해서 Error 메세지가 뜨면 시리얼 장치 파일을 열때 문제가 발생한것입니다.
즉, open함수를 뭔가 잘못 사용하고 있는 것입니다.


QT에서 open 할때 다음과 같이 하나요??
fd = ::open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK);

터치스크린의 장치파일을 open할때하고 다르네요... 다음과 같이 한번 해 보세요..
fd = open( "/dev/ttyS00", O_RDWR | O_NOCTTY | O_NONBLOCK);

그럼 수고하세요..





>현재 ez-x5보드위에 qte-3.3.3을 올려서 터치를 구동시켰는데요..
>
>제가 시리얼 통신을 짜서 arm용으로 컴파일해서
>
>올리면 시리얼 통신이 되질 않습니다..
>
>qtx로 했을때는 잘되됐습니다..
>
>그리고 qvfb로 호스트에서 테스트 했을때도 잘됐는데..
>
>arm용으로 해서 보드에 올리니 아예 포트에서 신호가 나가질않습니다..
>
>상대방에서 아예 안받는다는거죠..
>
>셋팅은 /dev/ttyS00으로 하구요
>
>보드레이트는 9600입니다..
>
>혹시나 해서 소스한번 올려봅니다...
>
>======헤더부분입니다..
>
>#ifndef TAB_H
>#define TAB_H
>                                                                                
>                                                                                
>#include <sys/types.h>
>#include <sys/stat.h>
>#include <fcntl.h>
>#include <termios.h>
>#include <stdio.h>
>#include <qpushbutton.h>
>#include <qapplication.h>
>#include <qwidget.h>
>#include <unistd.h>
>#define BAUDRATE B115200
>#define MODEMDEVICE "/dev/ttyS0"
>#define _POSIX_SOURCE 1
>                                                                                
>#define FALSE 0
>#define TRUE 1
>                                                                                
>#include <qtabdialog.h>
>#include <qstring.h>
>//#include <qfileinfo.h>
>class TabDialog : public QTabDialog
>{
>    Q_OBJECT
>                                                                                
>public:
>    TabDialog(QWidget *parent, const char *name, const QString &_filename );
>
>                                                                                
>protected:
>   // QString filename;
>   // QFileInfo fileinfo;
>                                                                                
>    void setupTab1();
>    void setupTab2();
>    void setupTab3();
>private slots:
>        void slotClicked1();
>        void slotClicked2();
>};
>                                                                                
>                                                                                
>                                                                                
>#endif
>
>===cpp파일입니다.....
>
>#include "tab.h"
>                                                                                
>#include <qvbox.h>
>#include <qlineedit.h>
>#include <qdatetime.h>
>#include <qapplication.h>
>#include <qpushbutton.h>
>#include <qbuttongroup.h>
>    
>//윗부분생략..
>//버튼을 클릭하면 0x31이라는 신호가 가는 프로그램
>                                                                          
>void TabDialog::slotClicked1()
>{
>        int fd, res;
>        struct termios oldtio, newtio;
>       unsigned char rx_buff[1] = {0x31};
>                                                                              
>        fd = ::open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK);
>        //if(fd < 0)
>        //{
>         //       perror(MODEMDEVICE);
>          //      exit(-1);
>        //}
>        fcntl(fd, F_SETFL,FASYNC);
>        tcgetattr(fd, &oldtio);
>                                                                                
>                                                                                
>        newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD;
>        newtio.c_iflag = IGNPAR | ICRNL;
>        newtio.c_oflag = 0;
>        newtio.c_lflag = ICANON;
>                                                                                
>        tcflush(fd, TCIFLUSH);
>        tcsetattr(fd, TCSANOW, &newtio);
>                                                                                
>        res =::write(fd, rx_buff,1);
>                                                                                
>                                                                                
>        ::close(fd);
>}
>
>
>그런데 컴파일 도중
>
>exit undeclared 오류가 나더군요..
>
>그래서 그 부분을 주석 처리햇습니다..
>
>fd가 열리지 않으면 빠져나오는 거니까요...
>
>그래도 마찬가지 이길래..
>
>그냥 exit가 들어있는 if문 전체를 주석처리해봤더니
>
>그랬더니...
>
>버튼한번만 클릭하면 아예 프로그램을 빠져나가버리더군요...
>
>어떤 오류인지 모르겠습니다...