MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Qtの基礎 - I2C通信のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Qtの基礎 - I2C通信
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == I2C通信で受信 == 以下の例では、非同期処理を使用して、I2C通信を行っている。<br> 適切なI2Cデバイス名 (例: /dev/i2c-1) とスレーブアドレスを指定する必要があることに注意する。<br> <br> <syntaxhighlight lang="c++"> // I2CReader.h #include <QObject> #include <QI2CDevice> #include <QFuture> #include <QtConcurrent> #include <QDebug> class I2CReader : public QObject { Q_OBJECT private: QI2CDevice *m_device; public: explicit I2CReader(const QString &deviceName, QObject *parent = nullptr) : QObject(parent), m_device(new QI2CDevice(this)) { if (!m_device->open(deviceName)) { emit errorOccurred("デバイスのオープンに失敗: " + m_device->errorString()); } } ~I2CReader() { if (m_device->isOpen()) { m_device->close(); } } QFuture<QByteArray> readDataAsync(int address, int size) { return QtConcurrent::run([this, address, size]() { if (!m_device->isOpen()) { emit errorOccurred("デバイスが開かれていない"); return QByteArray(); } m_device->setSlaveAddress(address); QByteArray data(size, 0); if (m_device->read(data.data(), size) != size) { emit errorOccurred("データの読み込みに失敗: " + m_device->errorString()); return QByteArray(); } emit dataReceived(data); return data; }); } signals: void dataReceived(const QByteArray &data); void errorOccurred(const QString &error); }; // エラーハンドリングと使用例 class I2CReaderManager : public QObject { Q_OBJECT private: I2CReader *m_reader; public: explicit I2CReaderManager(QObject *parent = nullptr) : QObject(parent) { m_reader = new I2CReader("/dev/i2c-1", this); connect(m_reader, &I2CReader::errorOccurred, this, &I2CReaderManager::handleError); connect(m_reader, &I2CReader::dataReceived, this, &I2CReaderManager::handleData); } void readData(int address, int size) { QFuture<QByteArray> future = m_reader->readDataAsync(address, size); future.then([this](const QByteArray &data) { if (data.isEmpty()) { qDebug() << "受信に失敗"; } else { qDebug() << "受信に成功:" << data.toHex(); } }); } private slots: void handleError(const QString &error) { qDebug() << "エラーが発生: " << error; // エラーに応じて適切な処理を行う } void handleData(const QByteArray &data) { qDebug() << "データを受信しました:" << data.toHex(); // 受信したデータを処理する } }; </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:Qt]]
Qtの基礎 - I2C通信
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse