Qt5 串口编程之QSerialPort::pinoutSignals()

第一次接触Qt5中的串口编程,其中遇到了不少麻烦,其中一个就是QSerialPort::pinoutSignals ()。对于本就是Qt菜鸟的我来说,在阅读了很久官方文档后仍旧没明白该函数的用法,努力询问“度娘”也没有得到想要的回复,后经自己“坚持不懈,努力奋斗”终于得到预想结果。特在此留迹,希望能够给需要的伙伴们一点帮助。

QSerialPort::PinoutSignals PinoutSignals()

Qt 官网对此函数的解释如下:

Returns the state of the line signals in a bitmap format.
From this result, it is possible to allocate the state of the desired signal by applying a mask “AND”, where the mask is the desired enumeration value from QSerialPort::PinoutSignals.
Note: This method performs a system call, thus ensuring that the line signal states are returned properly. This is necessary when the underlying operating systems cannot provide proper notifications about the changes.
Note: The serial port has to be open before trying to get the pinout signals; otherwise returns NoSignal and sets the NotOpenError error code.

简单的翻译前两句就是:
该函数以位图的格式返回引脚信号状态。具体的返回值请查看 QSerialPort::PinoutSignals 的枚举值。

这其中让我疑问不解的就是这个以位图格式的返回值。“位图”在我的知识库中只出现在图像处理中(哈哈~,原谅我知识面太窄),所以不明白这具体返回的是什么,在网上百度很久也没有网友对此的详细应用,最后只能作罢,靠自己不懈地尝试,终于揭开了它的面纱。下面以我自己写的一个简单实例说明下。

 	QSerialPort::PinoutSignals m_signals = m_serialPort->pinoutSignals(); 
	if(m_signals == (QSerialPort::DataTerminalReadySignal | QSerialPort::ClearToSendSignal)){
	    QMessageBox::information(NULL, QStringLiteral("状态:"), QStringLiteral("松开"));
	}else if(m_signals == (QSerialPort::DataTerminalReadySignal | QSerialPort::DataSetReadySignal)){
	    QMessageBox::information(NULL, QStringLiteral("状态:"), QStringLiteral("按下"));
	}

在上面的代码中,我使用 m_signals 变量作为 pinoutSignals() 函数的返回值,其格式如下:(QSerialPort::DataTerminalReadySignal | QSerialPort::ClearToSendSignal) ,其中的 QSerialPort::DataTerminalReadySignalQSerialPort::ClearToSendSignal 就是 QSerialPort::PinoutSignals 中的两个枚举值。知道了函数返回值,就可以进行后面 if()...else()...的判断进而执行对应指令了。(好开心~)


I’m George’s tips:
当我们想知道一个函数的返回值时,可以将该函数单独拉出来,将断点打到该位置,开启 IDE 中的调试模式,就可以获取此函数的返回值了。(仅限于单线程程序哦,多线程不建议用调试工具)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值