• 4444阅读
  • 0回复

Linux下qextserialport类编程 串口打不开 [复制链接]

上一主题 下一主题
离线wendaotao
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-22
我在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 , 郁闷。
请大家指教 谢谢!
快速回复
限100 字节
 
上一个 下一个