- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Qt 串行通讯
Hanford
2016 年 11 月 09 日
目 录
目 录
TOC \o 1-2 \h \z \u 第 1 章 Qt 串行通讯 1
配置.pro 文件 1
查询串口信息 1
配置、打开串口 3
setRequestToSend 在 Windows 上的 BUG 5
读取串口数据 6
发送串口数据 7
同步读取 7
本文示例代码 8
Qt 示例代码 10
I
第 1 章 Qt 串行通讯
PAGE
PAGE 10
第 1 章 Qt 串行通讯
最近要在 Android 手机上开发串行通讯程序,为此学习了一下 Qt 的串行通讯。本文中,Qt 的版本为 5.7.0。
配置.pro 文件
使用 Qt 5.7.0 创建“Qt Widgets Application”类型的项目,然后修改.pro
文件,如下图所示:
图 1.1
给变量 QT 增加 serialport,说明程序里将使用串行通讯相关的类。
查询串口信息
本节将通过代码查找系统里的串口,然后填入下图所示的下拉列表框中。
图 1.2
#include QSerialPortInfo#include mapstd::mapint,QStringQString sPort;
#include QSerialPortInfo
#include map
std::mapint,QString
QString sPort;
mapPort;
int nPort;
foreach (const QSerialPortInfo info,QSerialPortInfo::availablePorts())
{//foreach 遍历 QSerialPortInfo::availablePorts() 的返回值
sPort = info.portName(); //串口名称,如:COM5
nPort = GetIntInStr(sPort); //根据串口名称获取串口号,如:5
if(nPort = 0)
{
mapPort[nPort]
}
=
sPort;
//根据串口号排序,加入 map
}
/***************************************************************\从字符串里提取整数s [in] 字符串返回:提取出来的整数,-1 表示错误\***************************************************************/ int GetIntInStr(const QStrings){bool bOK = false; //是否发现了数字
/***************************************************************\
从字符串里提取整数
s [in] 字符串
返回:提取出来的整数,-1 表示错误
\***************************************************************/ int GetIntInStr(const QStrings)
{
bool bOK = false; //是否发现了数字
int
n
=
0;
int
nLenS
=
s.length(); //字符串长度
ushort
c
=
0;
for(int i = 0;i nLenS;++i){c = s[i].unicode();if(c = 0 c = 9){
for(int i = 0;i nLenS;++i)
{
c = s[i].unicode();
if(c = 0 c = 9)
{
bOK = true;
n = n * 10 + (c - 0);
}
}
if(!bOK)
{
n = -1;//没有数字,返回 -1
}
return n;
}
的代码如下:
ui-cboPort-clear();
ui-cboPort-clear();
for(std::mapint,QString::iterator it = mapPort.begin(); it != mapPort.end();++it)
{
ui-cboPort-addItem(it-second);
}
配置、打开串口
配置、打开串口的代码如下:
#include QSerialPort
#include QSerialPort
m_port = new QSerialPort(); m_port-setPortName(COM1); m_port-setBaudRate(9600);
m_port
您可能关注的文档
最近下载
- 《我们班四岁了(第一课时)》课件.pptx VIP
- 银屑病关节炎早期识别与诊治专家共识解读.docx VIP
- 人教版四年级上册数学期中试卷及答案.docx VIP
- 系统健壮性分析课件.pptx VIP
- Power Up教材配套测试PU2期末测试卷答案.pdf VIP
- 农村公路病害识别图、日常巡查保养记录表、群众性养护日常保养常见问题与处治方式汇总.pdf VIP
- 2019医用输液泵和医用注射泵安全管理.docx VIP
- 儿童医院“十五五”发展规划方案(2026-2030年).docx
- 护理不良事件-课件.pptx VIP
- 危险化学品建设项目变更情形及审查要求、适用简易程序的建设项目种类.docx VIP
原创力文档


文档评论(0)