求助想实现在pc上运行一个qt程序用一个按钮点击实现将textedit中的数据写入到串口缓冲区中

q70088546 2013-06-13 09:59:41
#ifndef WIDGET_H
#define WIDGET_H
#include "posix_qextserialport.h"
#include<QWidget>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
Q_OBJECT

public:
explicit Widget(QWidget *parent = 0);
~Widget();

private:
Ui::Widget *ui;
Posix_QextSerialPort *myCom;


private slots:
// void on_ReceivePushButton_clicked();
void on_SendPushButton_clicked();
};

#endif // WIDGET_H



#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//定义一个结构体,用来存放串口各个参数
struct PortSettings myComSetting = {BAUD115200,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,50};
//定义串口对象,并传递参数,在构造函数里对其进行初始化
myCom = new Posix_QextSerialPort("com1",myComSetting,QextSerialBase::EventDriven);
//以可读写方式打开串口
myCom->open(QIODevice::ReadWrite);
//信号和槽函数关联,写数据到串口缓冲区
connect(myCom,SIGNAL(readyWrite()),this,SLOT(on_SendPushButton_clicked()));
connect(ui->SendPushButton, SIGNAL(clicked()), this, SLOT(Widget()));
// connect(ui->ReceivePushButton, SIGNAL(clicked()), this, SLOT(Widget()));
}

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


void Widget::on_SendPushButton_clicked()
{
myCom->write(ui->SendtextEdit->toPlainText().toAscii());
}

我想用一个按钮按一下 就可以把textedit中的数据发送到串口缓冲区中去



我现在想问 我用了网上的第三方串口类,我想编写一个小的程序就一个textedit和一个按钮,点击按钮能将textedit中的数据发送到串口缓冲区中,这上面的是我自己加上去的代码,这样写行吗??下面这个是我写的读串口程序代码,也有一个按钮和一个textedit,点击按钮能够读取串口缓冲区的数据显示在textedit中,这样写行吗???
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
ui->setupUi(this);
//定义一个结构体,用来存放串口各个参数
struct PortSettings myComSetting = {BAUD115200,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,50};
//定义串口对象,并传递参数,在构造函数里对其进行初始化
myCom = new Posix_QextSerialPort("com1",myComSetting,QextSerialBase::EventDriven);
//以可读写方式打开串口
myCom->open(QIODevice::ReadWrite);
//信号和槽函数关联,当串口缓冲区有数据时,进行读串口操作
connect(myCom,SIGNAL(readyRead()),this,SLOT(on_pushButton_clicked()));
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(Widget()));
}

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

void Widget::on_pushButton_clicked()
{
//读取串口缓冲区的所有数据给临时变量temp
QByteArray temp = myCom->readAll();
//将串口的数据显示在窗口的文本浏览器中
ui->textEdit->setPlainText(temp);

QFile file_1("output.txt");
if (!file_1.open(QIODevice::WriteOnly | QIODevice::Text))
return;
QTextStream out(&file_1);
out <<ui->ReceivetextEdit->toPlainText()<<"\n";
file_1.close();

}


我就是想编写2个qt程序实现pc机与开发板通过串口通信 pc机上的程序通过串口发数据 开发板上的qt程序能够接收到
...全文
311 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
耿明媚 2014-04-04
  • 打赏
  • 举报
回复
必须要以ASCII码形式写入吗?
超开心~ 2013-06-14
  • 打赏
  • 举报
回复
引用 5 楼 q70088546 的回复:
[quote=引用 2 楼 chengchaooppo 的回复:] 你这样实现通信是没有问题的,不过如果要设置参数的话不能通过定义结构体在实例化串口对象时进行设置。 串口要必须打开后才能进行参数设置。
myCom->open(QIODevice::ReadWrite);这样打开串口行吗[/quote] 是这样打开的。设置参数应该在打开串口之后才会有效。
q70088546 2013-06-14
  • 打赏
  • 举报
回复
引用 2 楼 chengchaooppo 的回复:
你这样实现通信是没有问题的,不过如果要设置参数的话不能通过定义结构体在实例化串口对象时进行设置。 串口要必须打开后才能进行参数设置。
myCom->open(QIODevice::ReadWrite);这样打开串口行吗
q70088546 2013-06-14
  • 打赏
  • 举报
回复
引用 2 楼 chengchaooppo 的回复:
你这样实现通信是没有问题的,不过如果要设置参数的话不能通过定义结构体在实例化串口对象时进行设置。 串口要必须打开后才能进行参数设置。
但是我在Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) 这里面好像是写了打开串口的
q70088546 2013-06-14
  • 打赏
  • 举报
回复
引用 1 楼 q245879 的回复:
看你代码应该没问题。
啊。。。
超开心~ 2013-06-14
  • 打赏
  • 举报
回复
你这样实现通信是没有问题的,不过如果要设置参数的话不能通过定义结构体在实例化串口对象时进行设置。 串口要必须打开后才能进行参数设置。
_Gx 2013-06-14
  • 打赏
  • 举报
回复
看你代码应该没问题。

16,201

社区成员

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

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