도와주세요!!
글 수 15,339
2006.06.26 23:00:57 (*.237.123.113)
6671
현재 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문 전체를 주석처리해봤더니
그랬더니...
버튼한번만 클릭하면 아예 프로그램을 빠져나가버리더군요...
어떤 오류인지 모르겠습니다...
제가 시리얼 통신을 짜서 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문 전체를 주석처리해봤더니
그랬더니...
버튼한번만 클릭하면 아예 프로그램을 빠져나가버리더군요...
어떤 오류인지 모르겠습니다...