【发布时间】:2015-07-22 10:36:55
【问题描述】:
我正在尝试使用 USB / rs 232 电缆从串行设备写入\读取。 我很确定我的代码将“#002s”(这是一个控制代码)写入串行设备,因为
a) 串口打开
b) 串口是可写的
c) 代码成功导航“wait For Bytes Written (-1)”
d) 当使用串口嗅探器时,数据被成功写入。
我遇到的问题是我没有收到任何数据,也没有从其他设备发出数据。使用 qt 终端时,写入相同的“#002s”会产生正确的响应。
有什么想法吗?
非常感谢。
#include "test_serial.h"
#include "ui_test_serial.h"
#include <QtSerialPort/QtSerialPort>
#include <QDebug>
QSerialPort *serial;
Test_Serial::Test_Serial(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Test_Serial)
{
ui->setupUi(this);
serial = new QSerialPort(this);
connect(serial,SIGNAL(readyRead()),this,SLOT(serialReceived()));
serial->setPortName("COM1");
serial->setBaudRate(QSerialPort::Baud9600);
serial->setDataBits(QSerialPort::Data8);
serial->setParity(QSerialPort::NoParity);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
serial->open(QIODevice::ReadWrite);
if (serial->isOpen() && serial->isWritable())
{
QByteArray input;
input = "#";
serial->write(input);
serial->waitForBytesWritten(-1);
input = "0";
serial->write(input);
serial->waitForBytesWritten(-1);
input = "0";
serial->write(input);
serial->waitForBytesWritten(-1);
input = "2";
serial->write(input);
serial->waitForBytesWritten(-1);
input = "s";
serial->write(input);
serial->waitForBytesWritten(-1);
input = "\r";
serial->write(input);
serial->waitForBytesWritten(-1);
serial->flush();
serial->waitForReadyRead(100);
QByteArray output = serial->readAll();
ui->label_2->setText(output);
}}
Test_Serial::~Test_Serial()
{
delete ui;
serial->close();
}
void Test_Serial::serialReceived()
{
QByteArray output;
output = serial->readAll();
ui->label->setText("output");
}
【问题讨论】:
-
techneaz 感谢您的回复。现在一切正常,结果证明是时间问题。
标签: c++ qt serial-port writing