门户
书籍
教程
论坛
问答
下载
签到
个人空间
帐号
自动登录
找回密码
密码
登录
立即注册
账号
自动登录
找回密码
密码
登录
立即注册
请绘制轨迹完成人机验证
由vaptcha提供技术支持
登录
注册
搜索
搜索
搜索
热搜
qml
quick
串口
输入中文
数据库
arm
百度地图
qt聊天
QT安装
安装
多窗口
中文乱码
聊天
局域网
鼠标
QT
图片
乱码
rs485通讯
多线程
android
多文档编辑器
本版
用户
本版
用户
【HUX】问题互助平台
博客
动态
好友
帖子
收藏
道具
勋章
任务
淘帖
动态
日志
相册
分享
记录
留言板
群组
门户
导读
排行榜
设置
我的收藏
退出
Qt开源社区
›
精华区(请在“有问必答”发帖)
›
有问必答
›
串口传输
›
QT4串口通信
发布主题
返回列表
QT4串口通信
0
回复
6779
查看
[复制链接]
D_killer
当前离线
积分
9
D_killer
累计签到:3 天
连续签到:1 天
来源:
2017-4-2 20:02:05
显示全部楼层
|
阅读模式
1
Qter豆
环境:linux
qt版本:4.6.2
问题:串口通信实现发送字符并接受字符,现在程序能运行起来,但是发送字符的时候,当次运行发送字符无法接受,在下次运行程序是才接受得到,如图一。
以下是代码:
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTimer>
#include "posix_qextserialport.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
Posix_QextSerialPort *myCom;
QTimer *readTimer;
private slots:
void on_pushButton_clicked(); //”发送数据”按钮槽函数
void readMyCom(); //读取串口
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
myCom = new Posix_QextSerialPort("/dev/ttySAC3",QextSerialBase:
olling);
//myCom = new Posix_QextSerialPort("/dev/ttys0",QextSerialBase:
olling);
myCom ->open(QIODevice::ReadWrite);
//以读写方式打开串口
myCom->setBaudRate(BAUD9600);
//波特率设置,我们设置为9600
myCom->setDataBits(DATA_8);
//数据位设置,我们设置为8位数据位
myCom->setParity(PAR_NONE);
//奇偶校验设置,我们设置为无校验
myCom->setStopBits(STOP_1);
//停止位设置,我们设置为1位停止位
myCom->setFlowControl(FLOW_OFF);
myCom->setTimeout(10);
readTimer = new QTimer(this);
readTimer->start(1000);
connect(readTimer,SIGNAL(timeout()),this,SLOT(readMyCom()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent:
anguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::readMyCom()
{
static int i =0;
qDebug()<<"read:"<<myCom->bytesAvailable()<<"bytes";
//qDebug()<<i++;
QByteArray temp = myCom->readAll();
//读取串口缓冲区的所有数据给临时变量temp
ui->textBrowser->insertPlainText(temp);
//将串口的数据显示在窗口的文本浏览器中
}
void MainWindow:
n_pushButton_clicked()
{
myCom->write(ui->lineEdit->text().toAscii()); //以ASCII码形式将数据写入串口
}
望大神帮忙解决,实现发送字符后立即收到相应的字符。
我来回答
附件:
您需要
登录
才可以下载或查看,没有帐号?
立即注册
相关帖子
qchart绘制波形
Qcom串口调试助手高速通信界面卡顿
请教父窗口发带参信号给子窗口怎么弄?
如何用qtopia2.2.0实现串口通信
串口通信问题?
Qt后台程序与WEB前台通信的技术手段
回复
使用道具
举报
返回列表
发表新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满)
我知道了