基本构图
前置条件
安装QSerialPort部件
完成路线
0-引用
打开help,查看
引用放在weight.hqmake放在pro文件下
1-画图,
首先构思出要干些啥,哪些功能配哪些部件比较好,等等,重命名一下方便调用,这儿使用cambo组件,能更清晰的显示端口号等信息。
等等,没有全截图下来,差不多是这个意思,有的是自己写的选择的,但是如串口端口等是系统检查后,添加到这里面的,在下文中有体现。
2读取端口信息,并新建端口对象
用此函数来读取,并通过遍历显示在在combo下面,同时,创建一个指向QSerialPort类型的weight里的全局变量,因为接下来的读取打开等操作都要用到(不可以单独创建,要不然读不到东西)
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QList<QSerialPortInfo> List= QSerialPortInfo::availablePorts();
for (int i=0;i<List.size();i++){
ui->comboBox_com->addItem(List.at(i).portName());
}
serial = new QSerialPort;
connect(serial,&QSerialPort::readyRead,this,&Widget::recvSlot);
}
打开串口
使用push_button的槽函数,读取屏幕当前被选择的内容(端口号,波特率等等),并打开
应该能看懂吧
void Widget::on_pushButton_clicked()
{
//选择你要打开的串口
serial ->setPort(QSerialPortInfo(ui->comboBox_com->currentText() ));
//设置波特率
if(ui->comboBox__bote->currentText()=="115200"){
serial->setBaudRate(QSerialPort::Baud115200);
}
else if(ui->comboBox__bote->currentText()=="9600"){
serial->setBaudRate(QSerialPort::Baud9600);
}
//设置奇偶校验位
if(ui->comboBox_->currentText()=="None"){
serial->setParity(QSerialPort::NoParity);
}else if(ui->comboBox_->currentText()=="Odd"){
serial->setParity(QSerialPort::OddParity);
}else if(ui->comboBox_->currentText()=="Even"){
serial->setParity(QSerialPort::EvenParity);
}
//设置停止位
if(ui->comboBox_stop->currentText()=="1"){
serial->setStopBits(QSerialPort::OneStop);
}else if(ui->comboBox_stop->currentText()=="1.5"){
serial->setStopBits(QSerialPort::OneAndHalfStop);
}
//打开串口
bool info = serial->open(QIODevice::ReadWrite);
if(info== true){
qDebug()<<"success";
}else if(info == false){
qDebug()<<"faild";
}
//调试信息
}
好的,现在如果打开成功的话,应该就会在调试界面打印success
最后一步:写读取内容并打印到文本框的槽函数(信号与槽):
1、在weight.h声名槽函数
void recvSlot(void);
2.将信号与槽进行连接
connect(serial,&QSerialPort::readyRead,this,&Widget::recvSlot);
3.写槽函数
void Widget::recvSlot()
{
//接收
QByteArray data=serial->readAll();
//显示
ui->textEdit->append(data);
}
成品
#初版,需要增添的内容有:每个程序代码写的原因以及语法(!!!基础薄弱)
太累了,今天不想干了,看懂了再干吧