当前位置: 技术问答>linux和unix
sos,为什么我在虚拟机下用linux串口接收到的数据最高位为0?
来源: 互联网 发布时间:2016-08-23
本文导语: 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; tc...
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,希望高手回答
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,希望高手回答
|
呵呵 代码太多 帮顶