找回密码
 立即注册

串口数据接收不了

发表于 2018-5-16 20:21:36 | 显示全部楼层 |阅读模式
5Qter豆


#include "ort.h"

Port:ort(QWidget *parent)
        : QMainWindow(parent)
{
        ui.setupUi(this);
        connect(ui.pushButton_SearchPort, SIGNAL(clicked()), this, SLOT(SearPort()));
        connect(ui.pushButton_OpenPort, SIGNAL(readyRead()), this, SLOT(PortOpen()));//这里‘’打开串口‘’的按钮,点击它跳不到PortOpen()里;
        connect(ui.pushButton_CleaReceiveDate, SIGNAL(clicked()), this, SLOT(Set_ClearReceiveDate()));
        connect(ui.pushButton_ClearSendDate, SIGNAL(clicked()), this, SLOT(Set_ClearSendDate()));
        isOpenSearPort = false;
}

void Port::Set_ClearReceiveDate()
{
        ui.ReceiveTextEdit->clear();
}


void Port::Set_ClearSendDate()
{
        ui.SendTextEdit->clear();
}

void Port::SearPort()
{
       
        foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
        {
                ui.ReceiveTextEdit->setText(tr("sear port succeed"));
                qDebug() << "Name : " << info.portName();
                qDebug() << "Description : " << info.description();
                qDebug() << "Manufacturer: " << info.manufacturer();
                qDebug() << "Serial Number: " << info.serialNumber();
                qDebug() << "System Location: " << info.systemLocation();
                ui.comboBox_PortName->addItem(info.portName());
                isOpenSearPort = true;
        }       
}

void Port:ortOpen()
{
        if (isOpenSearPort == true)
        {               
                if (ui.pushButton_OpenPort->text() == "打开串口")
                {
                        bool com = My_SerialPort->open(QIODevice::ReadWrite);//打开串口并选择读写模式  
                        if (com)
                        {
                                timer->start(100);
                                ui.statusBar->showMessage("串口打开成功", 3000);
                                ui.pushButton_OpenPort->setText("关闭串口");
                        }
                        else
                        {
                                qDebug() << "串口打开失败";
                                this->setStatusTip("串口打开失败");
                                ui.statusBar->showMessage("串口打开失败", 3000);
                        }
                }
                else
                {


                        timer->stop();
                        My_SerialPort->close();
                        ui.pushButton_OpenPort->setText("打开串口");
                        ui.statusBar->showMessage("serial port is closed", 3000);
                }
        }
        else
        {
                ui.ReceiveTextEdit->setText(tr("请点击搜索串口"));
        }
}

void Port::Set_SendDate()
{
        if (!ui.SendTextEdit->toPlainText().isEmpty())
        {
                isHexSend = ui.checkBox_Send->isChecked();
                QString sendstr = ui.SendTextEdit->toPlainText();
                QByteArray sdata;
                if (isHexSend)
                {
                        sdata.append(sendstr).toHex();

                }
                else
                {
                        sdata.append(sendstr);

                }
                My_SerialPort->write(sdata, sdata.length());
                ui.statusBar->showMessage("send success", 3000);
        }
}

void Port::Set_PortName()
{
        QString Port = ui.comboBox_PortName->currentText();
        foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
        {
                if (info.portName() == Port)
                {
                        My_SerialPort->setPortName(info.systemLocation());
                }
        }
        My_SerialPort->setFlowControl(QSerialPort::NoFlowControl);
}

void Port::Set_BaudRate()
{
        //设置波特率
        qint32 BaudRate = ui.comboBox_BaudRate->currentIndex();
        switch (BaudRate)
        {
        case 9600: My_SerialPort->setBaudRate(QSerialPort::Baud9600, QSerialPort::AllDirections); break;
        case 115200: My_SerialPort->setBaudRate(QSerialPort::Baud115200, QSerialPort::AllDirections); break;
        default: My_SerialPort->setBaudRate(QSerialPort::UnknownBaud, QSerialPort::AllDirections);break;
        }
}

void Port::Set_DateBits()
{
        //设置数据位  
        qint32 databits_index = ui.comboBox_DateBits->currentIndex();
        switch (databits_index) {
        case 5:
                My_SerialPort->setDataBits(QSerialPort:ata5);
                break;
        case 6:
                My_SerialPort->setDataBits(QSerialPort:ata6);
                break;
        case 7:
                My_SerialPort->setDataBits(QSerialPort:ata7);
                break;
        case 8:
                My_SerialPort->setDataBits(QSerialPort:ata8);
                break;
        default:
                My_SerialPort->setDataBits(QSerialPort::UnknownDataBits);
                break;
        }
}

void Port::Set_Parity()
{
        //设置奇偶校验
        qint32 parity = ui.comboBox_Parity->currentIndex();
        switch (parity)
        {
        case 0:
                My_SerialPort->setParity(QSerialPort::NoParity);
                break;
        case 1:
                My_SerialPort->setParity(QSerialPort::OddParity);
                break;
        case 2:
                My_SerialPort->setParity(QSerialPort::EvenParity);
                break;
        default:
                My_SerialPort->setParity(QSerialPort::UnknownParity);
                break;
        }
}

void Port::Set_StopBits()
{
        //设置停止位  
        qint32 stopbit_index = ui.comboBox_StopBits->currentIndex();
        switch (stopbit_index) {
        case 1:
                My_SerialPort->setStopBits(QSerialPort::OneStop);
                break;
        case 2:
                My_SerialPort->setStopBits(QSerialPort::TwoStop);
                break;
        default:
                My_SerialPort->setStopBits(QSerialPort::UnknownStopBits);
                break;
        }
}




附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

发表于 2018-5-17 08:53:40 | 显示全部楼层
button 为什么会有 readready 信号呀,难道是你的命名有问题,那也不对吧~
回复

使用道具 举报

发表于 2018-5-17 17:00:46 | 显示全部楼层
Ready没看到呀 ~~~~
发送正常吗 ~~~~~~~~
回复

使用道具 举报

 楼主| 发表于 2018-5-18 17:57:39 | 显示全部楼层
本帖最后由 tajiong 于 2018-5-18 17:58 编辑

不能,C:\Users\Administrator\Pictures\QQ图片\QQ图片20180518175324.pngC:\Users\Administrator\Pictures\QQ图片\QQ图片20180518175334.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

 楼主| 发表于 2018-5-18 18:00:00 | 显示全部楼层
怎样解决读取访问权限冲突????????????????????
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

tajiong

    主题

    帖子

    14

    积分

    Qter1级会员

    Rank: 1

    积分
    14

Qter1级会员

发私信

Qt开源社区——开源 共享 自由

微信扫一扫
查看精品教程!