• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: 其他
  • 标签: linux  QT  串口  

资源简介

Linux下用qt写的串口通信类,希望对大家有帮助

资源截图

代码片段和文件信息

int MyMainWindow :: setserial( int nSpeed int nBits char nEvent int nStop )
{
struct termios oldtionewtio;
//保存现有串口参数设置
if  ( tcgetattr( fd&oldtio)  !=  0) { 
msg -> setText( tr(“SetupSerial 1“) );
return -1;
}
bzero( &newtio sizeof( newtio ) );
//设置字符串大小
newtio.c_cflag  |=  CLOCAL | CREAD; 
newtio.c_cflag &= ~CSIZE; 
newtio.c_iflag &= ~(ICRNL | IXON);
//设置数据位
switch( nBits )
{
case 7:
newtio.c_cflag |= CS7;
break;
case 8:
newtio.c_cflag |= CS8;
break;
}
//设置奇偶校验位
switch( nEvent )
{
case ‘O‘:
newtio.c_cflag |= PARENB;
newtio.c_cflag |= PARODD;
newtio.c_iflag |= (INPCK | ISTRIP);
break;
case ‘E‘: 
newtio.c_iflag |= (INPCK | ISTRIP);
newtio.c_cflag |= PARENB;
newtio.c_cflag &= ~PARODD;
break;
case ‘N‘:  
newtio.c_cflag &= ~PARENB;
break;
}
//设置波特率
switch( nSpeed )
{
case 2400:
cfsetispeed(&newtio B2400);
cfsetospeed(&newtio B2400);
break;
case 4800:
cfsetispeed(&newtio B4800);
cfsetospeed(&newtio B4800);
break;
case 9600:
cfsetispeed(&newtio B9600);
cfsetospeed(&newtio B9600);
break;
case 115200:
cfsetispeed(&newtio B115200);
cfsetospeed(&newtio B115200);
break;
case 460800:
cfsetispeed(&newtio B460800);
cfsetospeed(&newtio B460800);
break;
default:
cfsetispeed(&newtio B9600);
cfsetospeed(&newtio B9600);
break;
}
//设置停止位
if( nStop == 1 )
newtio.c_cflag &=  ~CSTOPB;
else if ( nStop == 2 )
newtio.c_cflag |=  CSTOPB;
//设置等待时间和最小接收字符
newtio.c_cc[VTIME]  = 0;
newtio.c_cc[V

评论

共有 条评论