QT--QSocketNotifier类介绍

本文介绍如何使用QSocketNotifier监听串口数据。通过构造QSocketNotifier实例并将其activated信号连接到槽函数,实现事件驱动的数据接收。文章还提供了一个简单的示例程序。

QSocketNotifier 用来监听系统文件操作,将操作转换为Qt事件进入系统的消息循环队列。并调用预先设置的事件接受函数,处理事件。

一共存在3类事件:read,write,exception.

   
QSocketNotifier::Read0There is data to be read.
QSocketNotifier::Write1Data can be written.
QSocketNotifier::Exception2An exception has occurred. We recommend against using this.

每个QSocketNotifie对象只能监听一个事件,如果要同时监听两个以上事件必须创建两个以上的监听对象。

QSocketNotifier::QSocketNotifier ( int socketType typeQObject * parent = 0 );

 

下面将说明如何使用 QSocketNotifier 来监听串口数据:
在使用 open 方法打开串口并设置好属性后,可以使用 Qt 的类 QSocketNotifier 来监听串口是否有数
据可读,它是事件驱动的, 配合 Qt 的 signal/slot 机制,当有数据可读时,QSocketNotifier 就会发射
ativated 信号,你只需要创建一个 slot 连接到该信号即可,代码如下所示:
m_fd = openSerialPort();
if (m_fd < 0)

{
      QMessageBox::warning(this, tr("Error"), tr("Fail to open serial port!"));
     return ;
}
m_notifier = new QSocketNotifier(m_fd, QSocketNotifier::Read, this);
connect (m_notifier, SIGNAL(activated(int)), this, SLOT(remoteDataIncoming()));


在上述代码中,我们首先使用上面封装的 openSerialPort 函数打开串口并配置串口属性,接着我们
用 m_fd 和 QSocketNotifier::Read 作为参数构造了一个 QSocketNotifier 的实例,
QSocketNotifier::Read 参数表示我们需要关心串口的可读状态,最后将 QSocketNotifier 实例的
activated 信号连接到 remoteDataIncoming slot,当有数据可读时,remoteDataIncoming slot 会被调
用。
下面是 remoteDataIncoming slot 的代码,它的代码比较简单,只是调用 read 函数读取串口数据,
然后将数据显示到界面上:
void TMainForm::remoteDataIncoming()
{
char c;
if (read(m_fd, &c, sizeof c) != 1) {
QMessageBox::warning(this, tr("Error"), tr("Receive error!"));
return;
}
m_receiveEdit->insert(QString(QChar(c)));
}
原文地址 http://hi.baidu.com/my%ABh%D4%C2/blog/item/1ce393367f1616ef3a87ce16.html

背景描述药物数据集药物、疾病、价格、通用名称图像等的详细数据集。数据说明数据集摘要此数据集包含有关各种疾病、处方药、价格、制造商以及从在线药房网站抓取的其他相关详细信息的信息。它提供了对不同药物的结构化见解,包括它们的可用性、处方要求、制造商、活性成分和潜在的副作用。该数据集还包含药物的介绍和详细说明,包括用法、作用机制、警告、副作用和相互作用。数据集详细信息数据字段数据集由以下字段组成:disease_name (字符串):药物所治疗的疾病的名称。disease_url (字符串):链接到疾病页面以获取更多信息。med_name (string):药物的名称。med_url (字符串):指向药品商品页面的链接。final_price (字符串) :药物的最终销售价格。商品价格(字符串):MRP 和任何折扣百分比(如果适用)。prescription_required (字符串):指示是否需要处方(例如,“需要 Rx”)。drug_variant(字符串):变体型,例如,每个试纸条的片剂数量。drug_manufacturer (string):制造商的名称。drug_manufacturer_origin (字符串) :制造商的原产国。drug_content (字符串):药物的介绍和详细说明,包括用法、作用机制、警告、副作用和相互作用。generic_name (字符串):活性成分的通用名称。img_urls (字符串列表):药物图像的 URL。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值