Qt串口通信接收的485数据都为0

qq_39416432 2017-07-20 05:29:28
这是代码部分(用的是QT5.9版本),测试了可以进行串口通信,但是通过单片机发送RS485数据时,发送的数据为01 4A 00 E8 00 BB 01 4A,接收后就变成000000000000000000000000000000000000000了,请给位大神帮忙解决一下!
#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
connect(ui->openButton,SIGNAL(clicked(bool)),this,SLOT(on_openButton_clicked()));
connect(ui->closeButton,SIGNAL(clicked(bool)),this,SLOT(on_closeButton_clicked()));
connect(ui->sendButton,SIGNAL(clicked(bool)),this,SLOT(on_sendButton_clicked()));
connect(&mserialport,SIGNAL(readyRead()),this,SLOT(readMserial()));
}

Dialog::~Dialog()
{
delete ui;
}

void Dialog::on_openButton_clicked()
{
mserialport.setPortName(ui->portName->currentText());//设置串口名称
mserialport.open(QIODevice::ReadWrite);//串口打开方式
//设置波特率
if(ui->baudRate->currentText()==tr("9600"))
mserialport.setBaudRate(QSerialPort::Baud9600);
else if(ui->baudRate->currentText()==tr("115200"));
mserialport.setBaudRate(QSerialPort::Baud115200);
//设置数据位
if(ui->dataBit->currentText()==tr("7"))
mserialport.setDataBits(QSerialPort::Data7);
else if(ui->dataBit->currentText()==tr("8"))
mserialport.setDataBits(QSerialPort::Data8);
//设置校验位
if(ui->parity->currentText()==tr("none"))
mserialport.setParity(QSerialPort::NoParity);
else if(ui->parity->currentText()==tr("odd"))
mserialport.setParity(QSerialPort::OddParity);
else if(ui->parity->currentText()==tr("even"))
mserialport.setParity(QSerialPort::EvenParity);
//设置停止位
if(ui->stopBit->currentText()==tr("1"))
mserialport.setStopBits(QSerialPort::OneStop);
else if(ui->stopBit->currentText()==tr("2"))
mserialport.setStopBits(QSerialPort::TwoStop);
//设置数据流
mserialport.setFlowControl(QSerialPort::NoFlowControl);

ui->openButton->setEnabled(false);
ui->closeButton->setEnabled(true);
ui->sendButton->setEnabled(true);
ui->baudRate->setEnabled(false);
ui->dataBit->setEnabled(false);
ui->parity->setEnabled(false);
ui->stopBit->setEnabled(false);
ui->portName->setEnabled(false);
if(true==mserialport.isOpen())
{
qDebug()<<"SUCCESS OPEN";
}
}

void Dialog::on_closeButton_clicked()
{
mserialport.close();
ui->closeButton->setEnabled(false);
ui->openButton->setEnabled(true);
ui->sendButton->setEnabled(false);
ui->baudRate->setEnabled(true);
ui->dataBit->setEnabled(true);
ui->parity->setEnabled(true);
ui->stopBit->setEnabled(true);
ui->portName->setEnabled(true);
}

void Dialog::on_sendButton_clicked()
{
mserialport.write(ui->sendLine->text().toLatin1());
}


void Dialog::readMserial()
{
QByteArray temp=mserialport.readAll();
ui->receiveText->insertPlainText(temp.toHex());
}

...全文
955 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

16,240

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧