경고:'serialAttr'는 이 기능에서 uninitialized 사용됩니다
1225 단어 Bug
int main_form::markSerialPort()
{
int fd=m_fd;
termios serialAttr;
serialAttr.c_cflag |= PARENB|CMSPAR;
serialAttr.c_cflag &= ~PARODD;
if(tcsetattr(fd, TCSANOW, &serialAttr) !=0) //
{
perror("serial error");
return -1;
}
return 0;
}
내 위치 검사에 이 문제가 생겼는데, 친절한 팔의 Open Serial Port () 에는 문제가 없었다.
int main_form::openSerialPort()
{
int fd = -1;
const char *devName = "/dev/ttyUSB0";
fd = ::open(devName, O_RDWR|O_NONBLOCK);
if (fd < 0) {
return -1;
}
termios serialAttr;
memset(&serialAttr, 0, sizeof serialAttr);
serialAttr.c_iflag = IGNPAR;
serialAttr.c_cflag = B9600 | HUPCL | CS8 | CREAD | CLOCAL;
serialAttr.c_cc[VMIN] = 0;
if (tcsetattr(fd, TCSANOW, &serialAttr) != 0) {
return -1;
}
return fd;
}
그들 두 사람의 지위 차이는 성명 안에 있다
private:
int openSerialPort();
private slots:
int markSerialPort();
하나는private이고 하나는privateslots이다.해결 기록:
일
private:
int openSerialPort();
int m_timeId;
int markSerialPort();
int spaceSerialPort();
실패!!