日期:2014-05-16  浏览次数:20723 次

sos,为什么我在虚拟机下用linux串口接收到的数据最高位为0?
rt,这是我设置串口的代码:

inline bool config( int fd )
/**
*@brief config the system
*@param fd type int handle of the port
*@param speed type int the speed you want
*@return true if seted successfully, vice false
*/
{
struct termios opt;
tcgetattr( fd, &opt );
cfsetispeed( &opt, B1200 );
cfsetospeed( &opt, B1200 );
tcgetattr( fd, &opt );
opt.c_cflag |= CREAD;
opt.c_cflag |= CLOCAL;
opt.c_cflag &= ~CSIZE;
opt.c_cflag |= PARENB; //even
opt.c_cflag &= ~PARODD; //even
opt.c_iflag |= INPCK; //
opt.c_iflag |= ISTRIP;
opt.c_iflag &= ~INLCR;
opt.c_iflag &= ~IGNCR;
opt.c_iflag &= ~ICRNL;
opt.c_iflag &= ~IUCLC;
opt.c_iflag |= IGNBRK;
opt.c_cflag &= ~CSTOPB; //stop enable
opt.c_lflag &= ~( ICANON | ECHO | ECHOE | ISIG );
opt.c_oflag &= ~OPOST;
opt.c_cc[VTIME] = 0;
opt.c_cc[VMIN] = 1;
tcflush( fd, TCIOFLUSH );
if( tcsetattr( fd, TCSANOW, &opt ) )
{
perror( "Config setting fail!" );
return false;
}
tcgetattr( fd, &opt );
opt.c_cflag |= CS8; //8 bits data
if( tcsetattr( fd, TCSANOW, &opt ) )
{
perror( "Bits setting fail!" );
return false;
}
tcflush( fd, TCIOFLUSH );
return true;
}

接收到的最高位一直是0,希望高手回答

------解决方案--------------------
呵呵 代码太多 帮顶