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;
}
我的置位校验就出这个问题,友善之臂的openSerialPort()中的却没有问题……
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,一个是private slots;
解决记录:
1
private: int openSerialPort(); int m_timeId; int markSerialPort(); int spaceSerialPort();
失败!!