我在windows下 用的虚拟机6.5.2, Linux用的是 Fedara 12   
我先前已经把 QextSerialPort-1.1 这个类 扩充到 QT下了  
这是我的 主文件 CheckComDialog.cpp
#include "ui_checkcomdialog.h"
#include "qextserialport.h"
 
CheckComDialog::CheckComDialog(QWidget *parent)
  :QDialog(parent), ui(new Ui::CheckComDialog)
{
  ui->setupUi(this);
  connect(ui->checkButton,SIGNAL(clicked()),this,SLOT(checkcom()));
  port = new QextSerialPort("/dev/ttyS0");
  port->setBaudRate(BAUD115200);
  port->setFlowControl(FLOW_OFF);
  port->setParity(PAR_NONE);
  port->setDataBits(DATA_8);
  port->setStopBits(STOP_1);
}
 
CheckComDialog::~CheckComDialog()
{
  delete ui;
}
 
void CheckComDialog::checkcom()
{
  QString s= "123";
  QString msg="";
  // 串口OPEN
  port->open(QIODevice::ReadWrite);
 
  //串口发送一个字符串
  if(port->isOpen())
  { port->write(s.toAscii(),s.lengh());
    
//串口接收
  char buff[1024];
  int numBytes;
 
  numBytes = port->bytesAvailable();
  if(numBytes > 0)
  {if(numBytes > 1024) numBytes = 1024;
 
  int i = port->read(buff,numBytes);
  buff = '\0';
  msg = buff;
  }
 
//比较判断
 
  if(s.toAscii() == msg.toAscii())
 
  ui->textBrowser->setText("com is ok!");
  else
 
  ui->textBrowser->setText("com is wrong.");  
  }
  else
  ui->textBrowser->setText("Can't open the COM!");
}
在ROOT用户下 运行 有时串口有时能收到 有时收不到,收不到时就是串口读不到,到numBytes = port->bytesAvailabl()时 numBytes=-1 , 郁闷。
请大家指教 谢谢!