Qt 串口学习3

时间:2023-03-09 17:28:44
Qt 串口学习3

1.怎样将选择波特率


1)使用if else 的方法
    if(ui->BaudRate->currentText()==tr("9600"))   //根据组合框内容对串口进行设置
       my_serialport->setBaudRate(QSerialPort::Baud9600);
    else if(ui->BaudRate->currentText()==tr("115200"))

2)使用 switch case 的方法
一般使用 if else的方法

2何时去读缓冲区
1)定时器的方法
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(updateserial()));
// 1s
timer->start(1000);

void Widget::updateserial()
{
requestData = my_serialport->readAll();
if(requestData!= NULL)
{
ui->recivetxt->append(requestData);
}
requestData.clear();
}

2)利用SLOT 函数
connect(my_serialport,SIGNAL(readyRead()),this,SLOT(updateserial()));

一般选用定时器的方式
3怎样将数据显示在文本框中
requestData = my_serialport->readAll();
if(requestData!= NULL)
{
ui->recivetxt->append(requestData);
}


4怎样从文本框中读数据后发送
myCom->write(ui->SendLineEdit->text().toAscii());//在Qt 5中没有toascii

QByteArray TxData;
QString string;
string=ui->sendtxt->toPlainText();
TxData=string.toLocal8Bit();
my_serialport->write(TxData);

5定时发送
int interval = ui->lineEditTime->text().toInt(&ok); //从文本框中获取定时时间
timer = new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(timeout()));
timer->setInterval(interval);
timer->start();

6如何存储数据
QString fileName = QFileDialog::getSaveFileName(this, tr("保存数据"),"./",tr("文本文件 (*.txt *.dat);;所有文件 (*.*)"));//获得filename
QFile file(fileName); //新建file对象
file.open(QIODevice::WriteOnly);//打开
file.write(ui->textEditRecv->toPlainText().toAscii());//写入
file.close();//关闭
和串口的操作相同
在linux中建设别当作文件处理,相比Qt 也将设备和文件的操作方式封装成一样