Linux下基于QT串口编程测试二

本文介绍了一种基于QT的串口编程方法,在Fedora12环境下利用开源类qextserialbase实现PC与MINI6410目标板之间的串口通信。通过详细代码示例展示了如何配置串口参数并实现数据读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux下基于QT串口编程测试二


本文博客链接:http://blog.youkuaiyun.com/jdh99,作者:jdh,转载请注明.


环境:

主机:Fedora12

开发软件:QT

目标板:MINI6410


实现功能:

目标板接收PC串口传过来的信息并在终端输出,输出是每次读8个字节,然后输出.


说明:

这一次采用的是开源类qextserialbase提供的串口功能,感谢原作者。以下是他的网站:

http://www.yafeilinux.com/


源代码:

widget.h:

#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include "posix_qextserialport.h" #include <QTimer> #include <QDebug> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private: Ui::Widget *ui; Posix_QextSerialPort *myCom; QTimer *readTimer; private slots: void slot_read_com(); }; #endif // WIDGET_H
widget.c:

#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); myCom = new Posix_QextSerialPort("/dev/ttySAC1",QextSerialBase::Polling); //定义串口对象,指定串口名和查询模式,这里使用Polling myCom ->open(QIODevice::ReadWrite); //以读写方式打开串口 myCom->setBaudRate(BAUD115200); //波特率设置,我们设置为115200 myCom->setDataBits(DATA_8); //数据位设置,我们设置为8位数据位 myCom->setParity(PAR_NONE); //奇偶校验设置,我们设置为无校验 myCom->setStopBits(STOP_1); //停止位设置,我们设置为1位停止位 myCom->setFlowControl(FLOW_OFF); //数据流控制设置,我们设置为无数据流控制 myCom->setTimeout(10); //延时设置,我们设置为延时10ms readTimer = new QTimer(this); readTimer->start(100); //设置延时为100ms connect(readTimer,SIGNAL(timeout()),this,SLOT(slot_read_com())); //信号和槽函数关联,延时一段时间,进行读串口操作 } void Widget::slot_read_com() { char str[10]; while (myCom->bytesAvailable() > 0) { qDebug() << "receive" << myCom->bytesAvailable(); //QByteArray temp = myCom->readAll(); QByteArray temp; int len = myCom->readData(str,8); temp.append(str,len); qDebug() << "receiver len = " << len << "nei rong:" << temp; } } Widget::~Widget() { delete ui; }
注意:本文中读串口采用的是readData()函数,这个函数在qextserialbase中是受保护的虚类,要使用需要把它从posix_qextserialport.h的protected区域移到public区域.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值