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

ESP32 Arduino學(xué)習(xí)篇 (三) 藍(lán)牙

這篇具有很好參考價(jià)值的文章主要介紹了ESP32 Arduino學(xué)習(xí)篇 (三) 藍(lán)牙。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

簡(jiǎn)介:

1.1藍(lán)牙分類

經(jīng)典藍(lán)牙我們一般說的是BT,低功耗藍(lán)牙我們一般說成BLE。當(dāng)設(shè)備支持藍(lán)牙4.0時(shí),還得進(jìn)一步確認(rèn)設(shè)備是支持BT單模、BLE單模還是BT和BLE都支持的雙模。

  • 低功耗藍(lán)牙 (BLE): 支持藍(lán)牙協(xié)議4.0或更高的模塊。主打低功耗,多用于物聯(lián)網(wǎng)類型。

  • 經(jīng)典藍(lán)牙( BT): 指支持藍(lán)牙協(xié)議在4.0以下的模塊。主打短距離數(shù)據(jù)高速傳輸,多用于藍(lán)牙耳機(jī)等。

  • 經(jīng)典藍(lán)牙可再細(xì)分為:傳統(tǒng)藍(lán)牙和高速藍(lán)牙。

  • 傳統(tǒng)藍(lán)牙: 2004年推出,藍(lán)牙2.0/2.1協(xié)議。

  • 高速藍(lán)牙: 2009年推出,藍(lán)牙3.0協(xié)議,速率提高到約24Mbps,是傳統(tǒng)藍(lán)牙模塊的八倍。

  • 雙模藍(lán)牙: 即兼容BLE和BT,如手機(jī),使用分時(shí)機(jī)制來達(dá)到同時(shí)與低功耗藍(lán)牙和經(jīng)典藍(lán)牙設(shè)備通信。

1.2藍(lán)牙技術(shù)

藍(lán)牙協(xié)議包括兩種技術(shù):Basic Rate(BR)Low Energy(LE)。

Basic Rate又包括可選的EDR(Enhanced Data Rate) 技術(shù),以及 交替使用的(Alternate)的MAC(Media Access Control)層和PHY層擴(kuò)展(簡(jiǎn)稱AMP)。、

在藍(lán)牙4.0及后面規(guī)格中,SIG定義了四種藍(lán)牙技術(shù):BR,EDR,AMP和LE ,由于LE是2010年才提出的,比較新,所以人們把之前的BR/EDR/AMP技術(shù)稱之為經(jīng)典藍(lán)牙。

  • 經(jīng)典藍(lán)牙( BT):

  • BR(Basic Rate): 藍(lán)牙基礎(chǔ)速率技術(shù)。

  • EDR(Enhanced Data Rate) : 藍(lán)牙增強(qiáng)速率技術(shù)。

  • AMP (Alternate MAC/PHYs): 藍(lán)牙核心系統(tǒng)的次要控制器,可切換的媒體訪問控制器(Media Access Controller)和物理層(Physical Layer)。

  • 低功耗藍(lán)牙 (BLE):

  • LE(Low Energy): 藍(lán)牙低功耗技術(shù)。

注意:
EDR 是在 BR 技術(shù)基礎(chǔ)上升級(jí),所以兩者可以同時(shí)使用。但是AMP 技術(shù)是使用的802.11(WIFI)規(guī)范,所以和原有的技術(shù)差異過大,所以BR/EDR和AMP只能二選一進(jìn)行使用。
LE技術(shù)相比BR技術(shù),差異非常大,可以說就是兩種不同的技術(shù)。經(jīng)典藍(lán)牙和低功耗藍(lán)牙兩者物理層調(diào)制解調(diào)方式是不一樣的,所以低功耗藍(lán)牙設(shè)備和經(jīng)典藍(lán)牙設(shè)備兩者之間是不能相互通信的。
esp32 藍(lán)牙,ESP32,單片機(jī),Powered by 金山文檔

而我們的esp32自帶藍(lán)牙模塊可以讓我們進(jìn)行藍(lán)牙連接并進(jìn)行數(shù)據(jù)交換

相關(guān)API:

一、經(jīng)典藍(lán)牙BT使用方法

經(jīng)典藍(lán)牙API

  • BluetoothSerial SerialBT :創(chuàng)建一個(gè)藍(lán)牙串口,命名為SerialBT

  • SerialBT.begin() :開啟藍(lán)牙

  • SerialBT.available() :返回藍(lán)牙串口緩沖區(qū)中當(dāng)前剩余的字符個(gè)數(shù)。

  • SerialBT.print() :藍(lán)牙串口發(fā)送的是字符,

  • SerialBT.write() :藍(lán)牙串口發(fā)送的字節(jié).

  • Serial.read() :返回藍(lán)牙串口接收的字符

程序示例代碼:

//This example code is in the Public Domain (or CC0 licensed, at your option.)
//By Evandro Copercini - 2018
//
//This example creates a bridge between Serial and Classical Bluetooth (SPP)
//and also demonstrate that SerialBT have the same functionalities of a normal Serial

#include "BluetoothSerial.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

BluetoothSerial SerialBT;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32test"); //Bluetooth device name
  Serial.println("The device started, now you can pair it with bluetooth!");
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read());//將串口收到的數(shù)據(jù),再通過藍(lán)牙串口轉(zhuǎn)發(fā)出去
    Serial.println("由SerialBT打印");
  }
  if (SerialBT.available()) {//將藍(lán)牙串口收到的數(shù)據(jù),再通過串口把信息發(fā)回給電腦
    Serial.write(SerialBT.read());
     Serial.println("由Serial打印");
  }
  delay(20);
}

二、低功耗藍(lán)牙BLE使用方法

簡(jiǎn)介:

BLE GATT協(xié)議

GATT全稱Generic Attribute Profile, GATT 代表通用屬性,它定義了暴露給連接的BLE設(shè)備的分層數(shù)據(jù)結(jié)構(gòu)。這意味著,GATT 定義了兩個(gè)BLE設(shè)備,發(fā)送和接收標(biāo)準(zhǔn)通訊的方式。了解此層次結(jié)構(gòu)很重要,因?yàn)檫@樣可以,更輕松地了解如何使用BLE和編寫應(yīng)用程序。

下圖為BLE的基本結(jié)構(gòu),需要記清楚

esp32 藍(lán)牙,ESP32,單片機(jī),Powered by 金山文檔

UUID:ble的服務(wù)和characteristic是通過UUID來進(jìn)行識(shí)別的。創(chuàng)建uuid可以使用這么一個(gè)網(wǎng)站:

Online UUID Generator Tool

notify:如果這個(gè)主機(jī)的一個(gè)特征值characteristic發(fā)生改變,就可以通過notify來告訴我們

創(chuàng)建 BLE 服務(wù)器代碼流程:

  • 1,創(chuàng)建一個(gè)BLE服務(wù)器。在這種情況下,ESP32充當(dāng)BLE服務(wù)器。

  • 2,創(chuàng)建BLE服務(wù)。

  • 3,在服務(wù)上創(chuàng)建BLE特性。

  • 4,在特征上創(chuàng)建一個(gè)BLE描述符。

  • 5,啟動(dòng)服務(wù)。

  • 6,開始廣播,以便其他設(shè)備可以找到它。

低功耗藍(lán)牙API:

創(chuàng)建一個(gè)BLE設(shè)備
    BLEDevice::init(ble_name);
創(chuàng)建一個(gè)BLE服務(wù)
    pServer = BLEDevice::createServer();
    pServer->setCallbacks(new MyServerCallbacks()); //設(shè)置回調(diào)
    BLEService *pService = pServer->createService(SERVICE_UUID);
創(chuàng)建一個(gè)BLE特征
pTxCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_TX, BLECharacteristic::PROPERTY_NOTIFY);
pTxCharacteristic->addDescriptor(new BLE2902());
BLECharacteristic *pRxCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_RX, BLECharacteristic::PROPERTY_WRITE);
pRxCharacteristic->setCallbacks(new MyCallbacks()); //設(shè)置回調(diào)

這里創(chuàng)建了一個(gè)特征值,類型是通知。

在后面使用createCharacteristic(CHARACTERISTIC_UUID_RX, BLECharacteristic::PROPERTY_WRITE)將rx收集到的信息寫入,通過MyCallbacks再打印出來

為了實(shí)現(xiàn)"串口",我們?cè)谶@個(gè)服務(wù)下添加了兩個(gè)特征值, 一個(gè)是TX. 一個(gè)是RX.另外還需注意三個(gè)uuid因該是相對(duì)應(yīng)的值。

開始服務(wù)和廣播
    pService->start();                  // 開始服務(wù)
    pServer->getAdvertising()->start(); // 開始廣播
    Serial.println(" 等待一個(gè)客戶端連接,且發(fā)送通知... ");

代碼示例

/*
    Video: https://www.youtube.com/watch?v=oCMOYS71NIU
    Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleNotify.cpp
    Ported to Arduino ESP32 by Evandro Copercini

   Create a BLE server that, once we receive a connection, will send periodic notifications.
   創(chuàng)建一個(gè)BLE服務(wù)器,一旦我們收到連接,將會(huì)周期性發(fā)送通知

   T使用步驟:
   1. 創(chuàng)建一個(gè) BLE Server
   2. 創(chuàng)建一個(gè) BLE Service
   3. 創(chuàng)建一個(gè) BLE Characteristic
   4. 創(chuàng)建一個(gè) BLE Descriptor
   5. 開始服務(wù)
   6. 開始廣播


*/
#include <Arduino.h>
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
#include "common.h"

uint8_t txValue = 0;                         //后面需要發(fā)送的值
BLEServer *pServer = NULL;                   //BLEServer指針 pServer
BLECharacteristic *pTxCharacteristic = NULL; //BLECharacteristic指針 pTxCharacteristic
bool deviceConnected = false;                //本次連接狀態(tài)
bool oldDeviceConnected = false;             //上次連接狀態(tài)d
// See the following for generating UUIDs: https://www.uuidgenerator.net/
#define SERVICE_UUID "12a59900-17cc-11ec-9621-0242ac130002" // UART service UUID
#define CHARACTERISTIC_UUID_RX "12a59e0a-17cc-11ec-9621-0242ac130002"
#define CHARACTERISTIC_UUID_TX "12a5a148-17cc-11ec-9621-0242ac130002"

class MyServerCallbacks : public BLEServerCallbacks
{
    void onConnect(BLEServer *pServer)
    {
        deviceConnected = true;
    };

    void onDisconnect(BLEServer *pServer)
    {
        deviceConnected = false;
    }
};

class MyCallbacks : public BLECharacteristicCallbacks
{
    void onWrite(BLECharacteristic *pCharacteristic)
    {
        std::string rxValue = pCharacteristic->getValue(); //接收信息

        if (rxValue.length() > 0)
        { //向串口輸出收到的值
            Serial.print("RX: ");
            for (int i = 0; i < rxValue.length(); i++)
                Serial.print(rxValue[i]);
            Serial.println();
        }
    }
};

void setup()
{
    Serial.begin(115200);

    // 創(chuàng)建一個(gè) BLE 設(shè)備
    BLEDevice::init("BAKUMAN");//在這里面是ble的名稱

    // 創(chuàng)建一個(gè) BLE 服務(wù)
    pServer = BLEDevice::createServer();
    pServer->setCallbacks(new MyServerCallbacks()); //設(shè)置回調(diào)
    BLEService *pService = pServer->createService(SERVICE_UUID);

    // 創(chuàng)建一個(gè) BLE 特征
    pTxCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_TX, BLECharacteristic::PROPERTY_NOTIFY);
    pTxCharacteristic->addDescriptor(new BLE2902());
    BLECharacteristic *pRxCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_RX, BLECharacteristic::PROPERTY_WRITE);
    pRxCharacteristic->setCallbacks(new MyCallbacks()); //設(shè)置回調(diào)

    pService->start();                  // 開始服務(wù)
    pServer->getAdvertising()->start(); // 開始廣播
    Serial.println(" 等待一個(gè)客戶端連接,且發(fā)送通知... ");
}

void loop()
{
    // deviceConnected 已連接
    if (deviceConnected)
    {
        pTxCharacteristic->setValue(&txValue, 1); // 設(shè)置要發(fā)送的值為1
        pTxCharacteristic->notify();              // 廣播
        txValue++;                                // 指針數(shù)值自加1
        delay(2000);                              // 如果有太多包要發(fā)送,藍(lán)牙會(huì)堵塞
    }

    // disconnecting  斷開連接
    if (!deviceConnected && oldDeviceConnected)
    {
        delay(500);                  // 留時(shí)間給藍(lán)牙緩沖
        pServer->startAdvertising(); // 重新廣播
        Serial.println(" 開始廣播 ");
        oldDeviceConnected = deviceConnected;
    }

    // connecting  正在連接
    if (deviceConnected && !oldDeviceConnected)
    {
        // do stuff here on connecting
        oldDeviceConnected = deviceConnected;
    }
}

在loop函數(shù)中我們的藍(lán)牙連接會(huì)對(duì)應(yīng)三種狀態(tài):

這里講解一下當(dāng)設(shè)備連接時(shí)的情況:

if (deviceConnected){
        pTxCharacteristic->setValue(&txValue, 1); // 設(shè)置要發(fā)送的值為1
        pTxCharacteristic->notify();              // 廣播
        txValue++;                                // 指針數(shù)值自加1
        delay(2000);                              // 如果有太多包要發(fā)送,藍(lán)牙會(huì)堵塞
    }

這里面測(cè)試的是不停發(fā)送數(shù)據(jù),每發(fā)一次數(shù)值加一。 此時(shí):

class MyServerCallbacks : public BLEServerCallbacks
{
    void onConnect(BLEServer *pServer)
    {
        deviceConnected = true;
    };

    void onDisconnect(BLEServer *pServer)
    {
        deviceConnected = false;
    }
};

通過這個(gè)回調(diào)可以說清楚這個(gè)藍(lán)牙到底有沒有連接,如果連接了通過

pServer->setCallbacks(new MyServerCallbacks());

這個(gè)MyServerCallbacks回調(diào)就可以返回連接狀態(tài)。 文章來源地址http://www.zghlxwxcb.cn/news/detail-778018.html

到了這里,關(guān)于ESP32 Arduino學(xué)習(xí)篇 (三) 藍(lán)牙的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 單片機(jī)開發(fā)---ESP32-S3模塊上手

    單片機(jī)開發(fā)---ESP32-S3模塊上手

    想起來之前做的半成品單片機(jī)游戲機(jī),又想繼續(xù)做一個(gè),不過之前那個(gè)單片機(jī)驅(qū)動(dòng)屏幕速率太低,已經(jīng)無法改進(jìn)了。所以這次斥巨資購(gòu)買了一款頂配的ESP32S開發(fā)板,做個(gè)簡(jiǎn)單的游戲機(jī),沒問題。 完整介紹鏈接 這花花綠綠的介紹,看著讓人甚是喜歡呢。 參考樂鑫官網(wǎng)的方式,

    2024年01月23日
    瀏覽(17)
  • 單片機(jī)項(xiàng)目分享 單片機(jī)(stm32)遠(yuǎn)程智能寵物喂養(yǎng)系統(tǒng) - 物聯(lián)網(wǎng) esp8266

    單片機(jī)項(xiàng)目分享 單片機(jī)(stm32)遠(yuǎn)程智能寵物喂養(yǎng)系統(tǒng) - 物聯(lián)網(wǎng) esp8266

    ?? 這兩年開始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長(zhǎng)自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長(zhǎng)分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天

    2024年02月19日
    瀏覽(30)
  • 單片機(jī)開發(fā)---ESP32S3移植NES模擬器(二)

    單片機(jī)開發(fā)---ESP32S3移植NES模擬器(二)

    《單片機(jī)開發(fā)—ESP32-S3模塊上手》 《單片機(jī)開發(fā)—ESP32S3移植lvgl+觸摸屏》 《單片機(jī)開發(fā)—ESP32S3移植NES模擬器(一)》 暖場(chǎng)視頻,小時(shí)候稱這個(gè)為—超級(jí)曲線射門?。。。。。。。。。?ESP32上天使之翼游戲 看門狗 源碼中有兩處看門狗的喂狗操作,前期都被注釋掉了。 因?yàn)殚_

    2023年04月09日
    瀏覽(138)
  • 單片機(jī)開發(fā)---ESP32S3移植NES模擬器(一)

    單片機(jī)開發(fā)---ESP32S3移植NES模擬器(一)

    《單片機(jī)開發(fā)—ESP32-S3模塊上手》 《單片機(jī)開發(fā)—ESP32S3移植lvgl+觸摸屏》 依舊是參考韋東山老師的作品來移植的 《ESP32|爺青回!ESP32(單片機(jī)) NES模擬器_NES游戲機(jī)掌機(jī)教程(開源+詳細(xì)講解實(shí)現(xiàn)代碼!)》 韋老師已經(jīng)將代碼開源,喜歡的朋友當(dāng)然是可以去支持一波。 另外還有g(shù)i

    2023年04月16日
    瀏覽(45)
  • STM32+esp8266實(shí)現(xiàn)單片機(jī)與服務(wù)器的WiFi通信

    STM32+esp8266實(shí)現(xiàn)單片機(jī)與服務(wù)器的WiFi通信

    ? ? ? ? ?源碼已上傳至gitee: stm32: 一些stm32模塊使用經(jīng)驗(yàn)記錄 - Gitee.com https://gitee.com/lrf1125962926/stm32/tree/esp8266wifi%E9%80%9A%E4%BF%A1/ ????????本實(shí)驗(yàn)采用STM32F1系列+esp8266 01s模塊,采用HAL庫(kù)開發(fā)。主控芯片哪個(gè)系列和型號(hào)都可以,只要有兩個(gè)串口(UART或者USART,以下統(tǒng)稱串口)

    2024年02月07日
    瀏覽(97)
  • 嵌入式項(xiàng)目分享 單片機(jī)(stm32)遠(yuǎn)程智能寵物喂養(yǎng)系統(tǒng) - 物聯(lián)網(wǎng) esp8266

    嵌入式項(xiàng)目分享 單片機(jī)(stm32)遠(yuǎn)程智能寵物喂養(yǎng)系統(tǒng) - 物聯(lián)網(wǎng) esp8266

    ?? 這兩年開始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長(zhǎng)自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長(zhǎng)分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天

    2024年02月21日
    瀏覽(787)
  • ESP32單片機(jī)使用DHT11溫濕度傳感器的實(shí)踐與代碼解析

    摘要:本文將介紹如何使用ESP32單片機(jī)與溫濕度傳感器進(jìn)行連接和數(shù)據(jù)讀取。通過實(shí)例代碼的解析,幫助讀者了解實(shí)現(xiàn)溫濕度檢測(cè)的原理和方法。 一、引言 ESP32是一款功能強(qiáng)大的微控制器,廣泛應(yīng)用于物聯(lián)網(wǎng)、智能家居等領(lǐng)域。在許多應(yīng)用場(chǎng)景中,溫濕度傳感器是不可或缺的

    2024年02月21日
    瀏覽(43)
  • 單片機(jī)設(shè)計(jì)_語音識(shí)別分類智能垃圾桶(STM32 ESP8266 LD3320)

    單片機(jī)設(shè)計(jì)_語音識(shí)別分類智能垃圾桶(STM32 ESP8266 LD3320)

    想要更多項(xiàng)目私wo!!! ????????離線語音識(shí)別識(shí)別垃圾種類并且垃圾桶自動(dòng)翻蓋: 說出喚醒詞“垃圾桶”后,再說一句垃圾名稱,語音識(shí)別模塊端識(shí)別到相應(yīng),便會(huì)將結(jié)果通過串口發(fā)送到STM32端,STM32端接著會(huì)發(fā)送打開相應(yīng)垃圾桶蓋的指令,6s后,垃圾桶蓋自動(dòng)關(guān)閉。

    2024年02月06日
    瀏覽(26)
  • K_A23_001 基于STM32等單片機(jī)AT指令驅(qū)動(dòng)ESP-01/ESP-01S實(shí)現(xiàn)手機(jī)遙控點(diǎn)燈

    K_A23_001 基于STM32等單片機(jī)AT指令驅(qū)動(dòng)ESP-01/ESP-01S實(shí)現(xiàn)手機(jī)遙控點(diǎn)燈

    其他資料目錄 直戳跳轉(zhuǎn) 單片機(jī)型號(hào) 測(cè)試條件 模塊名稱 代碼功能 STC89C52RC 晶振11.0592M ESP-01/ESP-01S模塊 STC89C52RC驅(qū)動(dòng)ESP-01/ESP-01S模塊 實(shí)現(xiàn)手機(jī)遙控點(diǎn)燈 STM32F103C8T6(標(biāo)準(zhǔn)庫(kù)) 晶振8M/系統(tǒng)時(shí)鐘72M ESP-01/ESP-01S模塊 STM32F103C8T6驅(qū)動(dòng)ESP-01/ESP-01S模塊 實(shí)現(xiàn)手機(jī)遙控點(diǎn)燈 ESP-01/ESP-01S模塊 引腳

    2024年01月21日
    瀏覽(31)
  • 物聯(lián)網(wǎng)項(xiàng)目分享 基于ESP32的在線墨水屏桌面擺件 -物聯(lián)網(wǎng) 單片機(jī) 嵌入式

    物聯(lián)網(wǎng)項(xiàng)目分享 基于ESP32的在線墨水屏桌面擺件 -物聯(lián)網(wǎng) 單片機(jī) 嵌入式

    hr style=\\\" border:solid; width:100px; height:1px;\\\" color=#000000 size=1\\\" ?? 這兩年開始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長(zhǎng)自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。 為了大家能夠順利以及最

    2024年02月21日
    瀏覽(96)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包