国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Qt開發(fā)上位機軟件建立經(jīng)典藍牙通訊

這篇具有很好參考價值的文章主要介紹了Qt開發(fā)上位機軟件建立經(jīng)典藍牙通訊。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Qt開發(fā)上位機軟件建立經(jīng)典藍牙通訊

之前做了一個具有經(jīng)典藍牙通訊功能的Windows上位機軟件,在網(wǎng)上學習了相關(guān)博客以及參考了官方經(jīng)典藍牙例程之后,總結(jié)出了使用Qt建立經(jīng)典藍牙通訊的步驟,附帶相關(guān)源碼,作為分享

開發(fā)環(huán)境

我使用的Qt版本是5.15,使用的CMake構(gòu)建項目。

整體開發(fā)使用的IDEQt Creator,采用的方式是基于widgetsui設計界面、C++寫邏輯的方式。

編譯使用的是Desktop Qt 5.15.2 MINGW 64-bit

CMake配置

經(jīng)典藍牙通訊需要用到Qt的藍牙模塊,需要添加Bluetooth模塊:

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Widgets Bluetooth) #尋找Bluetooth模塊
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets Bluetooth) #尋找Bluetooth模塊

add_executable之后設置target_link_libraries

target_link_libraries(bluetooth_serial_host_computer PRIVATE
    Qt${QT_VERSION_MAJOR}::Core
    Qt${QT_VERSION_MAJOR}::Widgets
    Qt${QT_VERSION_MAJOR}::Bluetooth #添加藍牙
    )

包含頭文件

#include <QtBluetooth/QBluetoothLocalDevice>            //本地設備
#include <QtBluetooth/QBluetoothDeviceDiscoveryAgent>   //設備發(fā)現(xiàn)
#include <QtBluetooth/QBluetoothSocket>                 //藍牙套接字
#include <QtBluetooth/QBluetoothUuid>                   //藍牙uuid
#include <QtBluetooth/QBluetoothServiceDiscoveryAgent>  //服務發(fā)現(xiàn)
#include <QtBluetooth/QBluetoothServiceInfo>            //服務信息

建立經(jīng)典藍牙通訊

建立經(jīng)典藍牙通訊的基本步驟如下:

Qt開發(fā)上位機軟件建立經(jīng)典藍牙通訊

首先是在構(gòu)造函數(shù)中的初始化操作:

//創(chuàng)建設備發(fā)現(xiàn)對象
m_deviceDiscoveryAgent = new QBluetoothDeviceDiscoveryAgent(this);
m_btLocalDevice = new QBluetoothLocalDevice(); //創(chuàng)建本地設備對象
m_btSocket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommProtocol); //藍牙套接字
QBluetoothAddress adapterAddress = m_btLocalDevice->address(); //使用默認藍牙適配器
m_serviceDiscoveryAgent = new QBluetoothServiceDiscoveryAgent(adapterAddress); //創(chuàng)建服務發(fā)現(xiàn)對象
//連接信號與槽(deviceDiscoveryAgent是代碼中自己聲明的對象,ui中沒有,無法自動生成槽函數(shù);需要自己寫槽函數(shù),自己連接)
/*-------------------- 初始化設備列表與服務列表 -----------------*/
//設置設備列表
QListWidgetItem* item = new QListWidgetItem();
//創(chuàng)建自定義窗口,放入到listwidget中
BluetoothDeviceCell* btDevCell = new BluetoothDeviceCell();
//設置item的高
item->setSizeHint(QSize(ui->deviceListWidget->width(), btDevCell->height()));
//設置label顯示
//第一個加進去的item在最上面,相當于標題
btDevCell->m_btName->setText("名稱");
btDevCell->m_btAddr->setText("地址");
btDevCell->m_btRssi->setText("信號強度");

//將item加入到listwidget中
ui->deviceListWidget->addItem(item);
//設置item的窗口為自定義的窗口
ui->deviceListWidget->setItemWidget(item, btDevCell);

//設置服務列表的標題
QListWidgetItem* items = new QListWidgetItem();
//創(chuàng)建自定義窗口,放入到listwidget中
BluetoothDeviceCell* btDevCells = new BluetoothDeviceCell();
//設定item的尺寸
items->setSizeHint(QSize(ui->serviceListWidget->width(), btDevCells->height()));
//設置label的顯示
//第一個加進去的item在最上面,相當于標題
btDevCells->m_btName->setText("名稱");
btDevCells->m_btAddr->setText("服務Uuid");
btDevCells->m_btRssi->setText("空");
//將item加入到listwidget中
ui->serviceListWidget->addItem(items);
//設置item的窗口為自定義的窗口
ui->serviceListWidget->setItemWidget(items, btDevCells);
/*------------- m_deviceDiscoveryAgent設備搜索對象的信號槽 -------------*/
connect(m_deviceDiscoveryAgent, &QBluetoothDeviceDiscoveryAgent::deviceDiscovered, this, &BluetoothConnect::deviceDiscoveredSlot);//發(fā)現(xiàn)設備
connect(m_deviceDiscoveryAgent, &QBluetoothDeviceDiscoveryAgent::finished, this, &BluetoothConnect::deviceSearchFinishedSlot);//搜索完畢
void (QBluetoothDeviceDiscoveryAgent:: *deviceSearchErrorOccurred)(QBluetoothDeviceDiscoveryAgent::Error) = &QBluetoothDeviceDiscoveryAgent::error;//有重載
connect(m_deviceDiscoveryAgent, deviceSearchErrorOccurred, this, &BluetoothConnect::deviceSearchErrorOccurredSlot);//設備搜索發(fā)生錯誤

/*------------- m_btSocket藍牙套接字的信號槽 ----------------*/
void (QBluetoothSocket:: *socketErrorOccurred)(QBluetoothSocket::SocketError) = &QBluetoothSocket::error;
connect(m_btSocket, socketErrorOccurred, this, &BluetoothConnect::socketErrorOccurredSlot); //錯誤處理槽函數(shù)
connect(m_btSocket, &QBluetoothSocket::connected, this, &BluetoothConnect::socketConnectedSlot);//連接成功

/*------------- m_serviceDiscoveryAgent服務發(fā)現(xiàn)對象的信號槽 ---------------*/
connect(m_serviceDiscoveryAgent, &QBluetoothServiceDiscoveryAgent::serviceDiscovered, this, &BluetoothConnect::serviceDiscoveredSlot); //發(fā)現(xiàn)一個服務
connect(m_serviceDiscoveryAgent, &QBluetoothServiceDiscoveryAgent::finished, this, &BluetoothConnect::serviceSearchFinishedSlot); //服務搜索完畢

deviceListWidget和serviceListWidget是我在ui中設置的兩個列表組件,用來存放設備和服務信息。

Qt開發(fā)上位機軟件建立經(jīng)典藍牙通訊

搜索設備

利用QBluetoothDeviceDiscoveryAgentstart方法即可開啟設備搜索:

void BluetoothConnect::on_searchButton_clicked() //點擊Search按鈕后開始搜索設備
{
    //如果已經(jīng)搜索過1次,那么設備列表可能會大于1,需要先清空設備列表
    //但是標題也會被清除,所以重新添加標題
    if(ui->deviceListWidget->count() > 1)
    {
        ui->deviceListWidget->clear();

        //設置設備列表
        QListWidgetItem* item = new QListWidgetItem();
        //創(chuàng)建自定義窗口,放入到listwidget中
        BluetoothDeviceCell* btDevCell = new BluetoothDeviceCell();
        //設置item的高
        item->setSizeHint(QSize(ui->deviceListWidget->width(), btDevCell->height()));
        //設置label顯示
        btDevCell->m_btName->setText("名稱");
        btDevCell->m_btAddr->setText("地址");
        btDevCell->m_btRssi->setText("信號強度");

        //將item加入到listwidget中
        ui->deviceListWidget->addItem(item);
        //設置item的窗口為自定義的窗口
        ui->deviceListWidget->setItemWidget(item, btDevCell);
    }
    m_deviceDiscoveryAgent->start(QBluetoothDeviceDiscoveryAgent::ClassicMethod); //開啟經(jīng)典藍牙設備搜索

    ui->searchButton->setEnabled(false);//搜索過程中,search按鈕不可點擊
    ui->statusLabel->setText("Searching for devices......");
}

QBluetoothDeviceDiscoveryAgent::ClassicMethod是以經(jīng)典方式進行搜索,可以發(fā)現(xiàn)經(jīng)典藍牙和低功耗藍牙設備。

發(fā)現(xiàn)一個設備的槽函數(shù):

void BluetoothConnect::deviceDiscoveredSlot(QBluetoothDeviceInfo btDevInfo) //發(fā)現(xiàn)設備后將設備添加到listwidget中
{
        QListWidgetItem* item = new QListWidgetItem(); //聲明一個item
        BluetoothDeviceCell* btDevCell = new BluetoothDeviceCell(); //聲明一個藍牙設備單元

        item->setSizeHint(QSize(ui->deviceListWidget->width(), btDevCell->height())); //設定item的尺寸
        //搜索到的設備信息存到設備單元中
        btDevCell->m_btName->setText(btDevInfo.name());
        btDevCell->m_btAddr->setText(btDevInfo.address().toString());
        btDevCell->m_btRssi->setText(QString::number(btDevInfo.rssi()));

        //將設備單元添加到deviceListWidget中
        ui->deviceListWidget->addItem(item);
        ui->deviceListWidget->setItemWidget(item,btDevCell);
        //設備信息list新增一個設備信息
        m_devInfos.append(btDevInfo);

}

設備搜索完成的槽函數(shù):

void BluetoothConnect::deviceSearchFinishedSlot() //設備搜索完成
{
    ui->statusLabel->setText("Double Click a device to searhc for services");
    QMessageBox::about(this, "提示", "設備搜索完成");
//    qDebug() << "搜索已完成";
    ui->searchButton->setEnabled(true); //一次搜索完之后才可以重新點擊search鍵
}

設備搜索出現(xiàn)錯誤的槽函數(shù):

void BluetoothConnect::deviceSearchErrorOccurredSlot(QBluetoothDeviceDiscoveryAgent::Error error) //搜索藍牙設備出現(xiàn)錯誤
{
    qDebug() << error;
    //警告對話框
    QMessageBox::warning(this, "警告!", "搜索藍牙設備發(fā)生錯誤,請檢查藍牙是否開啟");
}

搜索選定設備的服務

激活設備列表的設備,搜索這個選定設備的服務:

void BluetoothConnect::on_deviceListWidget_itemActivated(QListWidgetItem *item) //點擊設備列表中的item
{


    /***
     * 點擊設備后,搜索設備的服務。點擊服務后,根據(jù)服務和設備進行連接。并將socket的準備接收與主窗口BluetoothDebugger的revDataTextEdit的顯示連接
    */
    //在開始service搜索之前先重置服務列表
    //如果已經(jīng)搜索過1次,那么服務列表可能會大于1,需要先清空服務列表
    //但是標題也會被清除,所以重新添加標題
    if(ui->serviceListWidget->count() > 1)
    {
        ui->serviceListWidget->clear();

        //設置服務列表的標題
        QListWidgetItem* items = new QListWidgetItem();
        //創(chuàng)建自定義窗口,放入到listwidget中
        BluetoothDeviceCell* btDevCells = new BluetoothDeviceCell();
        //設定item的尺寸
        items->setSizeHint(QSize(ui->serviceListWidget->width(), btDevCells->height()));
        //設置label的顯示
        //第一個加進去的item在最上面,相當于標題
        btDevCells->m_btName->setText("名稱");
        btDevCells->m_btAddr->setText("服務Uuid");
        btDevCells->m_btRssi->setText("空");
        //將item加入到listwidget中
        ui->serviceListWidget->addItem(items);
        //設置item的窗口為自定義的窗口
        ui->serviceListWidget->setItemWidget(items, btDevCells);
    }

    QWidget* widget = ui->deviceListWidget->itemWidget(item); //將點擊的item信息取出來
    BluetoothDeviceCell* btDevCell = (BluetoothDeviceCell*) widget; //強制類型轉(zhuǎn)換為DeviceCell設備單元
    qDebug() << btDevCell->m_btAddr->text(); //輸出設備地址
    m_btAddress = QBluetoothAddress(btDevCell->m_btAddr->text());//記錄下來選中的設備的地址.后邊點擊service進行連接時,使用該地址
    m_serviceDiscoveryAgent->setRemoteAddress(QBluetoothAddress(btDevCell->m_btAddr->text())); //要搜索的服務是當前激活的這個設備的服務
    m_serviceDiscoveryAgent->start(); //開始搜索

    ui->statusLabel->setText("Searching for services......");

    //!!!!不同設備所允許的服務不同,需要尋找設備支持的服務有什么


}

發(fā)現(xiàn)一個服務的槽函數(shù),將服務信息添加到listWidget以及自己的list中:

void BluetoothConnect::serviceDiscoveredSlot(const QBluetoothServiceInfo& serviceInfo) //發(fā)現(xiàn)服務
{
    //serviceInfo中沒有設備地址
    if(serviceInfo.serviceName().isEmpty())
        return;
    //!!!用serviceClassUuids才能得到有效的Uuid
    QList<QBluetoothUuid> btUuids = serviceInfo.serviceClassUuids();
    //每個list中只有1個元素
    qDebug() << btUuids[0];
    QBluetoothUuid btUuid = btUuids[0];

    QListWidgetItem* item = new QListWidgetItem();
    BluetoothDeviceCell* btDevCell = new BluetoothDeviceCell();

    item->setSizeHint(QSize(ui->serviceListWidget->width(), btDevCell->height()));

    btDevCell->m_btName->setText(serviceInfo.serviceName());
    btDevCell->m_btAddr->setText(btUuid.toString());
    btDevCell->m_btRssi->setText("");

    ui->serviceListWidget->addItem(item);
    ui->serviceListWidget->setItemWidget(item, btDevCell);

    m_btUuids.append(btUuid);

}

服務搜索完成的槽函數(shù):

void BluetoothConnect::serviceSearchFinishedSlot() //服務搜索完成
{
    ui->statusLabel->setText("Double Click a service to connect to bluetooth");
    QMessageBox::about(this, "Hint", "Service Search Finished!");
}

連接到選定設備的選定服務,建立通訊

激活服務列表的服務的槽函數(shù):

void BluetoothConnect::on_serviceListWidget_itemActivated(QListWidgetItem *item) //激活服務列表的項目
{
    QWidget* widget = ui->serviceListWidget->itemWidget(item); //將點擊的item信息取出來
    BluetoothDeviceCell* btDevCell = (BluetoothDeviceCell*) widget; //強制類型轉(zhuǎn)換為DeviceCell設備單元
    qDebug() << m_btAddress << btDevCell->m_btAddr->text();
    m_btSocket->connectToService(m_btAddress,QBluetoothUuid(btDevCell->m_btAddr->text()),QIODevice::ReadWrite); //根據(jù)設備地址與Uuid連接
    ui->statusLabel->setText("Bluetooth connecting......");
}

使用socket套接字連接成功后,經(jīng)典藍牙通訊即建立:

void BluetoothConnect::socketConnectedSlot() //socket連接成功
{
    ui->statusLabel->setText("");
    QMessageBox::about(this, "Information", "Socket Connected Successfully!");
    //隱去Bluetooth Connect窗口
    this->close();

}

socket發(fā)生錯誤的槽函數(shù):

void BluetoothConnect::socketErrorOccurredSlot(QBluetoothSocket::SocketError error) //socket發(fā)生錯誤
{
    switch(error)
    {
        case QBluetoothSocket::NoSocketError:
            break;
        case QBluetoothSocket::UnknownSocketError:
            qDebug() << "Error: Unknown Socket Error!";
            break;
        case QBluetoothSocket::RemoteHostClosedError:
            qDebug() << "Error: Remote Host Closed Error!";
            break;
        case QBluetoothSocket::HostNotFoundError:
            qDebug() << "Error: Host Not Found Error!";
            break;
        case QBluetoothSocket::ServiceNotFoundError:
            qDebug() << "Error: Service Not Found Error!";
            break;
        case QBluetoothSocket::NetworkError:
            qDebug() << "Error: Network Error!";
            break;
        case QBluetoothSocket::UnsupportedProtocolError:
            qDebug() << "Error: Unsupported Protocol Error!";
            break;
        case QBluetoothSocket::OperationError:
            qDebug() << "Error: Operation Error!";
            break;
    }
}

接收數(shù)據(jù)使用socket,將readyReadsignal與槽函數(shù)連接:

void BluetoothDebugger::socketReadyReadSlot() //socket準備好讀取
{
    char data[100];
    qint64 len = m_btConnect->m_btSocket->read((char*)data,100);

    QByteArray byteArray((char*)data, len);
    if(m_isClose == false) //窗口顯示打開
    {
        ui->revDataTextBrowser->append("接收:");
        ui->revDataTextBrowser->append(byteArray);//添加到窗口
    }

}

發(fā)送數(shù)據(jù)也是使用socket套接字:

void BluetoothDebugger::on_sendButton_clicked() //點擊發(fā)送按鈕
{
    //被發(fā)送的數(shù)據(jù)
    QByteArray dataSent = ui->sendDataLineEdit->text().toUtf8();
    if(m_isClose == false) //窗口顯示打開,藍牙發(fā)送使能;窗口顯示關(guān)閉,藍牙發(fā)送失能
    {
        //將發(fā)送的數(shù)據(jù)也打印到窗口上
        ui->revDataTextBrowser->append("發(fā)送:");
        ui->revDataTextBrowser->append(dataSent);
        //通過socket發(fā)送數(shù)據(jù)
        m_btConnect->m_btSocket->write(dataSent);
    }
}

以上即為使用Qt建立經(jīng)典藍牙通訊的基本步驟。文章來源地址http://www.zghlxwxcb.cn/news/detail-416290.html

到了這里,關(guān)于Qt開發(fā)上位機軟件建立經(jīng)典藍牙通訊的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • QT上位機開發(fā)(乘法計算小軟件)

    QT上位機開發(fā)(乘法計算小軟件)

    【 聲明:版權(quán)所有,歡迎轉(zhuǎn)載,請勿用于商業(yè)用途。 聯(lián)系信箱:feixiaoxing @163.com】 ? ? ? ? 前面一篇文章,我們學習了怎么創(chuàng)建qt的第一個工程,怎么用designer給qt修改界面。雖然我們到目前為止,還沒有編寫一行代碼,但是好像也做出了第一個qt軟件,即使這個軟件好像沒有

    2024年02月04日
    瀏覽(22)
  • QT上位機開發(fā)(內(nèi)嵌虛擬機的軟件開發(fā))

    【 聲明:版權(quán)所有,歡迎轉(zhuǎn)載,請勿用于商業(yè)用途。 聯(lián)系信箱:feixiaoxing @163.com】 ? ? ? ? 不知道大家有沒有玩過plc設備。plc設備從本質(zhì)上來說,就是一個單片機設備,只不過它的電源、輸入、輸出做了很多的加強措施。但是從功能說,plc又不是一個簡單的io設置,好像只需

    2024年02月02日
    瀏覽(28)
  • 藍牙聊天App設計1:Android Studio制作藍牙聊天通訊軟件(UI界面設計)

    藍牙聊天App設計1:Android Studio制作藍牙聊天通訊軟件(UI界面設計)

    前言:藍牙聊天App設計全部有三篇文章(一、UI界面設計,二、藍牙搜索配對連接實現(xiàn),三、藍牙連接聊天),這篇文章是一、UI界面設計 課程1:Android Studio小白安裝教程,以及第一個Android項目案例“Hello World”的調(diào)試運行 課程2:藍牙聊天App設計1:Android Studio制作藍牙聊天通

    2024年02月02日
    瀏覽(36)
  • 藍牙聊天App設計3:Android Studio制作藍牙聊天通訊軟件(完結(jié),藍牙連接聊天,結(jié)合生活情景進行藍牙通信的通俗講解,以及代碼功能實現(xiàn),內(nèi)容詳細,講解通俗易懂)

    藍牙聊天App設計3:Android Studio制作藍牙聊天通訊軟件(完結(jié),藍牙連接聊天,結(jié)合生活情景進行藍牙通信的通俗講解,以及代碼功能實現(xiàn),內(nèi)容詳細,講解通俗易懂)

    前言:藍牙聊天App設計全部有三篇文章(一、UI界面設計,二、藍牙搜索配對連接實現(xiàn),三、藍牙連接聊天),這篇文章是:三、藍牙連接聊天。 課程1:Android Studio小白安裝教程,以及第一個Android項目案例“Hello World”的調(diào)試運行 課程2:藍牙聊天App設計1:Android Studio制作藍

    2024年02月12日
    瀏覽(25)
  • C#上位機與三菱PLC的通信09---開發(fā)自己的通訊庫(A-3E版)

    C#上位機與三菱PLC的通信09---開發(fā)自己的通訊庫(A-3E版)

    ? ?具體細節(jié)請看: C#上位機與三菱PLC的通信05--MC協(xié)議之QnA-3E報文解析 C#上位機與三菱PLC的通信06--MC協(xié)議之QnA-3E報文測試 ?前面開發(fā)了自己的A-1E協(xié)議的通訊庫,實現(xiàn)了數(shù)據(jù)的讀寫,對于封裝的通訊庫,其實是一個dll文件,請看上節(jié)的dll文件,有了這個文件,就可以在項目中直

    2024年02月22日
    瀏覽(29)
  • QT上位機開發(fā)(MFC vs QT)

    QT上位機開發(fā)(MFC vs QT)

    【 聲明:版權(quán)所有,歡迎轉(zhuǎn)載,請勿用于商業(yè)用途。 聯(lián)系信箱:feixiaoxing @163.com】 ? ? ? ? 在qt之前,上位機開發(fā)的主要方法就是mfc。后來出現(xiàn)了c#語言之后,上位機的開發(fā)就有一部分人轉(zhuǎn)成了c#。這些開發(fā)都是在windows平臺完成的,而linux上面的界面,則都是通過各種小眾庫

    2024年01月19日
    瀏覽(22)
  • QT上位機開發(fā)(MySql訪問)

    QT上位機開發(fā)(MySql訪問)

    【 聲明:版權(quán)所有,歡迎轉(zhuǎn)載,請勿用于商業(yè)用途。 聯(lián)系信箱:feixiaoxing @163.com】 ? ? ? ? 網(wǎng)上介紹的關(guān)于QT和mysql部分的內(nèi)容,都是利用Qt自帶的mysql庫來實現(xiàn)數(shù)據(jù)讀寫的。但是事實上來說,即使不用qt帶的庫,不用odbc,直接使用mysql安裝包自帶的lib庫和dll庫,也是可以實現(xiàn)

    2024年01月21日
    瀏覽(15)
  • QT上位機開發(fā)(鍵盤繪圖控制)

    【 聲明:版權(quán)所有,歡迎轉(zhuǎn)載,請勿用于商業(yè)用途。 聯(lián)系信箱:feixiaoxing @163.com】 ? ? ? ? 繪圖是qt很基礎的一個功能。通常,我們進行qt繪圖的時候,一般會先創(chuàng)建一個qt view,這個相當于視圖。接著創(chuàng)建一個場景scene,場景和視圖是一對多的關(guān)系,比如相同的場景可以正著

    2024年01月25日
    瀏覽(18)
  • QT上位機開發(fā)(Web API聯(lián)調(diào))

    【 聲明:版權(quán)所有,歡迎轉(zhuǎn)載,請勿用于商業(yè)用途。 聯(lián)系信箱:feixiaoxing @163.com】 ? ? ? ? 在工廠里面,一條流水線,或者說一條生產(chǎn)線,常常是由很多家供應商的產(chǎn)品組合在一起,共同完成商品的生產(chǎn)和制造的。這里面有不同供應商的軟件,也有集成商的軟件,甚至有生

    2024年01月22日
    瀏覽(19)
  • 手機,藍牙開發(fā)板,TTL/USB模塊,電腦四者之間的通訊

    手機,藍牙開發(fā)板,TTL/USB模塊,電腦四者之間的通訊

    通過手機藍牙連接WeMosD1R32開發(fā)板,開發(fā)板又通過TTL轉(zhuǎn)USB與電腦連接.手機通過藍牙控制開發(fā)板上的LED燈的開,關(guān),閃等動作,在電腦上打開串口監(jiān)視工具觀察其狀態(tài).也可以通過電腦上的串口監(jiān)視工具來控制開發(fā)板上LED燈的動作,而在手機藍牙監(jiān)測工具中顯示燈的狀態(tài). 手機,TTL轉(zhuǎn)USB轉(zhuǎn)

    2024年02月03日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包