You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

91 line
2.3 KiB

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <QSerialPortInfo>
  4. #include <QDebug>
  5. #include <QSerialPort>
  6. #include <QByteArray>
  7. Widget::Widget(QWidget *parent) :
  8. QWidget(parent),
  9. ui(new Ui::Widget)
  10. {
  11. ui->setupUi(this);
  12. serialPort = new QSerialPort(this);
  13. connect(serialPort,&QSerialPort::readyRead,this,&Widget::on_SerialData_ReadyToRead);
  14. ui->comboBox_baudRate->setCurrentIndex(3);
  15. ui->comboBox_dataBit->setCurrentIndex(3);
  16. ui->comboBox_xiaoyan->setCurrentIndex(2);
  17. QList<QSerialPortInfo> serialList = QSerialPortInfo::availablePorts();
  18. for(QSerialPortInfo serialInfo : serialList)
  19. {
  20. ui->comboBox_serialNum->addItem(serialInfo.portName());
  21. }
  22. }
  23. Widget::~Widget()
  24. {
  25. delete ui;
  26. }
  27. void Widget::on_btnConnect_clicked()
  28. {
  29. if (ui->btnConnect->text() == "连接")
  30. {
  31. //配置串口号
  32. serialPort->setPortName(ui->comboBox_serialNum->currentText());
  33. //配置波特率
  34. serialPort->setBaudRate(ui->comboBox_baudRate->currentText().toInt());
  35. //配置数据位
  36. serialPort->setDataBits(QSerialPort::DataBits(ui->comboBox_dataBit->currentText().toInt()));
  37. //配置校验位
  38. switch (ui->comboBox_xiaoyan->currentIndex())
  39. {
  40. case 0:
  41. serialPort->setParity(QSerialPort::NoParity);
  42. break;
  43. case 1:
  44. serialPort->setParity(QSerialPort::OddParity);
  45. break;
  46. case 2:
  47. serialPort->setParity(QSerialPort::EvenParity);
  48. }
  49. //配置停止位
  50. serialPort->setStopBits(QSerialPort::StopBits(ui->comboBox_stopBit->currentText().toInt()));
  51. //打开串口
  52. if (serialPort->open(QIODevice::ReadWrite))
  53. {
  54. qDebug() << "Serial open success";
  55. ui->btnConnect->setText("断开");
  56. }
  57. else
  58. {
  59. qDebug() << "error";
  60. }
  61. }
  62. else
  63. {
  64. serialPort->close();
  65. ui->btnConnect->setText("连接");
  66. }
  67. }
  68. void Widget::on_pushWrite_clicked()
  69. {
  70. const char *sendData = ui->lineEdit->text().toStdString().c_str();
  71. serialPort->write(sendData);
  72. qDebug() << "SenOk" <<sendData;
  73. }
  74. void Widget::on_SerialData_ReadyToRead()
  75. {
  76. QByteArray revMessage = serialPort->readAll();
  77. QString hexData = revMessage.toHex().toUpper();
  78. qDebug() << hexData;
  79. ui->textEdit->append(hexData);
  80. }