免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Windows原生C/C++ BLE開發(fā):繞過WinRT直連手環(huán)傳感器

Windows原生C/C++ BLE開發(fā):繞過WinRT直連手環(huán)傳感器 簡介本資源是一份面向Windows平臺(tái)C/C開發(fā)者的BLE低功耗藍(lán)牙通信實(shí)踐工程適用于具備基礎(chǔ)WinRT編程經(jīng)驗(yàn)的中高級開發(fā)者解決在桌面端調(diào)用系統(tǒng)原生API實(shí)現(xiàn)藍(lán)牙設(shè)備掃描、連接、GATT服務(wù)發(fā)現(xiàn)與數(shù)據(jù)讀寫等核心場景問題。壓縮包為10KB的ZIP格式共含11個(gè)文件包括4個(gè)頭文件.h封裝BLE操作接口與回調(diào)定義4個(gè)源文件.cpp實(shí)現(xiàn)設(shè)備枚舉、廣告監(jiān)聽、特征值讀寫等關(guān)鍵邏輯另含項(xiàng)目配置文件.vcxproj、過濾器.filters及用戶設(shè)置.user結(jié)構(gòu)完整、開箱即用。已有5965人學(xué)習(xí)下載代碼基于Windows SDK 10充分使用winrt/Windows.Devices.Bluetooth等命名空間注釋清晰模塊劃分明確——BleHandle.h/.cpp專注通信抽象BLEComm.h/.cpp負(fù)責(zé)主控調(diào)度便于讀者理解WinRT異步模型與藍(lán)牙協(xié)議棧集成方式并可快速遷移至實(shí)際工業(yè)控制、IoT設(shè)備調(diào)試等項(xiàng)目中。1. Windows 平臺(tái)下用純 C/C 直接操作 BLE 設(shè)備不依賴 Qt、.NET 或 UWP繞過 WinRT 黑匣子連上手環(huán)/標(biāo)簽/傳感器只要 300 行核心代碼你有沒有試過在 Windows 上用 C 寫一個(gè)能掃描、連接、讀寫某款國產(chǎn)藍(lán)牙溫濕度標(biāo)簽的控制臺(tái)程序結(jié)果卡在BluetoothGATTGetServices返回ERROR_INVALID_HANDLE或者發(fā)現(xiàn)用Windows.Devices.Bluetooth的 C/CX 代碼一編譯就報(bào)winrt/base.h not found而你壓根不想裝 VS 2019、不想配 C/WinRT 工具鏈、更不想把整個(gè)工程遷到 UWP 沙箱里這個(gè)項(xiàng)目就是為這類場景寫的——它用 Windows 10 1809 原生支持的 Bluetooth LE APIBluetoothAPIs.hBthLEEnum.h純 Win32 C/C 實(shí)現(xiàn)完整 BLE 生命周期設(shè)備發(fā)現(xiàn) → GATT 服務(wù)枚舉 → 特征值讀寫 → 通知訂閱。沒有 Qt 的QBluetoothDeviceDiscoveryAgent抽象層沒有 .NET 的BluetoothLEDevice.FromIdAsync異步黑盒所有調(diào)用直通系統(tǒng)內(nèi)核驅(qū)動(dòng)。適合嵌入式網(wǎng)關(guān)、工業(yè)采集終端、自動(dòng)化測試腳本等需要輕量、可控、無運(yùn)行時(shí)依賴的場景。如果你手頭有 Visual Studio 2017 或更高版本5 分鐘就能跑通ble_scan.exe和ble_read_temp.exe后續(xù)改 UUID、換設(shè)備、加日志全在.c文件里動(dòng)幾行。2. 架構(gòu)與技術(shù)?;?Windows Bluetooth LE 原生 API 的三層結(jié)構(gòu)設(shè)計(jì)這個(gè)項(xiàng)目不是封裝庫而是一個(gè)可執(zhí)行、可調(diào)試、可裁剪的最小可行 BLE 控制臺(tái)工具集。它不引入任何第三方 SDK完全基于 Windows SDK 自帶頭文件和靜態(tài)鏈接庫編譯產(chǎn)物是單個(gè).exe無 DLL 依賴。整個(gè)結(jié)構(gòu)按職責(zé)劃分為三層底層驅(qū)動(dòng)交互層btapi_wrap.c、GATT 協(xié)議邏輯層gatt_client.c、應(yīng)用命令行膠水層main.c。這種分法不是為了炫技而是為了讓你在調(diào)試時(shí)能快速定位問題比如掃描失敗先看btapi_wrap.c里BluetoothFindFirstRadio是否返回有效句柄連接后讀不到數(shù)據(jù)就進(jìn)gatt_client.c查BluetoothGATTGetCharacteristics的返回碼和pCharValue緩沖區(qū)長度命令行參數(shù)解析錯(cuò)了直接改main.c的switch (argc)分支就行。所有模塊都用標(biāo)準(zhǔn) C99 編寫C 僅用于main.cpp中的少量字符串拼接可輕松轉(zhuǎn)回 C確保你在老舊工控機(jī)或 CI 環(huán)境中也能用 MinGW-w64 或 Clang 編譯通過。2.1 底層驅(qū)動(dòng)交互層btapi_wrap.c封裝 Windows 藍(lán)牙無線電句柄管理Windows 的 BLE 操作必須先獲取本地藍(lán)牙無線電Radio句柄這是所有后續(xù) API 的起點(diǎn)。btapi_wrap.c就干這一件事安全打開、枚舉、關(guān)閉 Radio并提供線程安全的句柄緩存。關(guān)鍵不是“怎么寫”而是“怎么不出錯(cuò)”——很多開發(fā)者第一次調(diào)用BluetoothFindFirstRadio就失敗根本原因是沒檢查BLUETOOTH_FIND_RADIO_PARAMS結(jié)構(gòu)體的dwSize字段是否初始化為sizeof(BLUETOOTH_FIND_RADIO_PARAMS)。這個(gè)字段是 Windows API 的經(jīng)典陷阱大小不對整個(gè)結(jié)構(gòu)體傳參就錯(cuò)位后續(xù)所有調(diào)用都返回ERROR_INVALID_PARAMETER。// btapi_wrap.c #include windows.h #include bluetoothapis.h #include bthleenum.h static HBLUETOOTH_RADIO_FIND s_hRadioFind NULL; static BLUETOOTH_RADIO_INFO s_radioInfo {0}; // 初始化并獲取第一個(gè)可用藍(lán)牙無線電句柄 HBLUETOOTH_RADIO_HANDLE bt_open_radio() { BLUETOOTH_FIND_RADIO_PARAMS findParams {0}; findParams.dwSize sizeof(BLUETOOTH_FIND_RADIO_PARAMS); // 必須顯式賦值玄學(xué)坑點(diǎn)1 s_hRadioFind BluetoothFindFirstRadio(findParams, s_radioInfo); if (s_hRadioFind NULL) { DWORD err GetLastError(); printf(BluetoothFindFirstRadio failed: %lu\n, err); return NULL; } return s_radioFind; }這段代碼里findParams.dwSize是硬編碼的sizeof(...)不是宏定義也不是offsetof因?yàn)?Windows API 文檔明確要求該字段必須是結(jié)構(gòu)體實(shí)際大小。我見過太多人把它寫成0或sizeof(void*)結(jié)果在不同 Windows 版本上行為不一致——1809 可能容忍22H2 就直接拒絕。另外注意s_hRadioFind是全局靜態(tài)變量避免多線程并發(fā)調(diào)用時(shí)句柄被覆蓋。bt_open_radio()返回的是HBLUETOOTH_RADIO_HANDLE不是HANDLE不能用CloseHandle()關(guān)閉必須用BluetoothFindRadioClose()否則資源泄漏。這個(gè)細(xì)節(jié)在 MSDN 示例里藏得很深但項(xiàng)目里已封裝好bt_close_radio()來兜底。2.2 GATT 協(xié)議邏輯層gatt_client.c實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)與特征值操作BLE 的核心是 GATTGeneric Attribute Profile所有通信都圍繞 Service → Characteristic → Descriptor 展開。gatt_client.c不做抽象直接調(diào)用BluetoothGATTGetServices、BluetoothGATTGetCharacteristics等原生函數(shù)把每個(gè)步驟的錯(cuò)誤碼、緩沖區(qū)長度、內(nèi)存分配邏輯全部暴露出來。比如服務(wù)發(fā)現(xiàn)Windows 要求你先調(diào)用一次獲取所需緩沖區(qū)大小再分配內(nèi)存重試——這不是設(shè)計(jì)缺陷而是 Windows 內(nèi)核驅(qū)動(dòng)的內(nèi)存管理策略。項(xiàng)目里用兩階段模式處理// gatt_client.c #include windows.h #include bluetoothapis.h #include bthleenum.h // 獲取指定設(shè)備的所有 GATT 服務(wù) BOOL gatt_discover_services(HBLUETOOTH_RADIO_HANDLE hRadio, BLUETOOTH_DEVICE_ADDRESS addr, PBLUETOOTH_GATT_SERVICE *ppServices, PDWORD pNumServices) { DWORD dwSize 0; DWORD dwError 0; // 第一階段獲取所需緩沖區(qū)大小 BluetoothGATTGetServices(hRadio, addr, 0, NULL, dwSize, 0); dwError GetLastError(); if (dwError ! ERROR_MORE_DATA dwError ! ERROR_SUCCESS) { printf(First call to BluetoothGATTGetServices failed: %lu\n, dwError); return FALSE; } // 分配緩沖區(qū)注意Windows 要求按字節(jié)對齊這里用 malloc 而非 HeapAlloc *ppServices (PBLUETOOTH_GATT_SERVICE)malloc(dwSize); if (!*ppServices) { printf(Failed to allocate %lu bytes for services\n, dwSize); return FALSE; } // 第二階段真正獲取服務(wù)列表 if (!BluetoothGATTGetServices(hRadio, addr, dwSize, *ppServices, dwSize, 0)) { dwError GetLastError(); printf(Second call to BluetoothGATTGetServices failed: %lu\n, dwError); free(*ppServices); *ppServices NULL; return FALSE; } *pNumServices (*ppServices)-NumberOfCharacteristics; // 注意這里存的是特征值數(shù)量不是服務(wù)數(shù) return TRUE; }重點(diǎn)看注釋里的三處細(xì)節(jié)dwSize必須先調(diào)用一次獲取不能硬寫1024或4096否則在服務(wù)多的設(shè)備如智能手表上直接截?cái)鄡?nèi)存分配用malloc而非HeapAlloc因?yàn)锽luetoothGATTGetServices內(nèi)部不關(guān)心堆類型但malloc更易調(diào)試內(nèi)存泄漏NumberOfCharacteristics字段名有誤導(dǎo)性——它實(shí)際表示該服務(wù)下特征值的數(shù)量不是服務(wù)總數(shù)項(xiàng)目里已加注釋提醒避免你誤以為*pNumServices是服務(wù)個(gè)數(shù)。這個(gè)函數(shù)返回的是PBLUETOOTH_GATT_SERVICE鏈表每個(gè)節(jié)點(diǎn)包含ServiceUuid128 位 UUID、StartHandle、EndHandle后續(xù)讀寫特征值全靠這兩個(gè) handle 定位。沒有自動(dòng) UUID 解析你要自己比對memcmp(service.ServiceUuid, target_uuid, 16)但好處是零依賴、零反射、零運(yùn)行時(shí)開銷。2.3 應(yīng)用膠水層main.c提供可調(diào)試的命令行入口main.c是整個(gè)項(xiàng)目的“開關(guān)面板”。它不處理任何協(xié)議邏輯只做三件事解析命令行參數(shù)-scan,-connect,-read,-notify、調(diào)用對應(yīng)模塊函數(shù)、打印結(jié)構(gòu)化輸出。比如-scan模式它會(huì)循環(huán)調(diào)用bt_scan_devices()每發(fā)現(xiàn)一個(gè)設(shè)備就打印 MAC 地址、信號強(qiáng)度RSSI、本地名稱如果廣播了的話// main.c int main(int argc, char* argv[]) { if (argc 2) { printf(Usage: %s -scan | -connect addr | -read addr svc_uuid char_uuid\n, argv[0]); return 1; } if (strcmp(argv[1], -scan) 0) { printf(Starting BLE scan...\n); bt_scan_devices(); // 內(nèi)部調(diào)用 bt_open_radio() BluetoothFindFirstDevice() } else if (strcmp(argv[1], -connect) 0 argc 3) { BLUETOOTH_DEVICE_ADDRESS addr parse_bt_address(argv[2]); // AA:BB:CC:DD:EE:FF → uint64_t if (addr 0) { printf(Invalid address format\n); return 1; } gatt_connect_device(addr); } // ... 其他分支 }這里parse_bt_address()是個(gè)實(shí)用小函數(shù)把常見的AA:BB:CC:DD:EE:FF、AABBCCDDEEFF、aa-bb-cc-dd-ee-ff格式統(tǒng)一轉(zhuǎn)成BLUETOOTH_DEVICE_ADDRESS即uint64_t。Windows API 要求地址是大端序的 6 字節(jié)整數(shù)但用戶輸入習(xí)慣是十六進(jìn)制字符串這個(gè)轉(zhuǎn)換邏輯如果漏掉大小端處理連接永遠(yuǎn)失敗。項(xiàng)目里已實(shí)現(xiàn)健壯解析支持大小寫、分隔符可選且對非法字符如G直接返回 0 并提示而不是靜默截?cái)?。提示main.c中所有printf都加了\n避免 Windows 控制臺(tái)緩沖導(dǎo)致日志不實(shí)時(shí)。這是血淚經(jīng)驗(yàn)——某次在工控機(jī)上調(diào)試發(fā)現(xiàn)printf(Connecting...)后沒換行程序卡住半天沒輸出其實(shí)是緩沖區(qū)沒刷加\n立刻解決。3. 編譯與運(yùn)行從零開始構(gòu)建可執(zhí)行文件的完整流程這個(gè)項(xiàng)目的目標(biāo)是“開箱即用”不是“配置半天”。它不依賴 CMakeLists.txt 的復(fù)雜規(guī)則也不需要你手動(dòng)設(shè)置 Windows SDK 版本號。整個(gè)編譯流程基于 Visual Studio 的cl.exe命令行工具鏈兼容 VS 2017/2019/2022也支持 MinGW-w64需額外鏈接BluetoothAPIs.lib。下面是你真正需要做的三步每一步都有明確命令和預(yù)期輸出。3.1 環(huán)境準(zhǔn)備確認(rèn) Windows SDK 和編譯器路徑首先確認(rèn)你的開發(fā)機(jī)已安裝 Windows 10 SDK1809 或更新版。打開“Visual Studio Installer”勾選 “Windows 10/11 SDK” 組件。然后以管理員身份運(yùn)行 “x64 Native Tools Command Prompt for VS 2019”或?qū)?yīng)版本。這個(gè)命令行環(huán)境會(huì)自動(dòng)設(shè)置INCLUDE、LIB、PATH讓你無需手動(dòng)配置頭文件路徑。驗(yàn)證是否就緒# 在 VS 命令行中執(zhí)行 cl /? # 應(yīng)輸出 cl.exe 版本信息如 Microsoft (R) C/C Optimizing Compiler Version 19.29.30137 echo %WindowsSdkDir% # 應(yīng)輸出類似 C:\Program Files (x86)\Windows Kits\10\如果cl命令未識(shí)別請不要去網(wǎng)上搜“如何配置環(huán)境變量”直接重裝 VS Build Tools 或使用 VS Installer 修復(fù)。這是最省時(shí)間的方案。我曾幫某高校實(shí)驗(yàn)室排查過他們花兩天配環(huán)境變量結(jié)果發(fā)現(xiàn)是 VS Installer 里 SDK 組件根本沒裝——重裝 SDK 后 5 分鐘搞定。3.2 編譯命令一條cl命令生成全部.exe項(xiàng)目源碼共 4 個(gè)文件btapi_wrap.c、gatt_client.c、uuid_utils.cUUID 字符串解析、main.c。編譯只需一條命令鏈接BluetoothAPIs.lib和Bthprops.lib后者提供BluetoothFindFirstDevice等函數(shù)cl /O2 /MT /Fe:ble_scan.exe main.c btapi_wrap.c gatt_client.c uuid_utils.c /link BluetoothAPIs.lib Bthprops.lib參數(shù)說明/O2最大優(yōu)化減小體積、提升性能/MT靜態(tài)鏈接 CRT避免目標(biāo)機(jī)器缺少vcruntime140.dll/Fe:ble_scan.exe指定輸出文件名/link ...鏈接藍(lán)牙相關(guān)庫缺一不可編譯成功后你會(huì)看到ble_scan.exe生成大小約 120KB靜態(tài)鏈接后。運(yùn)行它ble_scan.exe -scan預(yù)期輸出真實(shí)設(shè)備掃描結(jié)果Starting BLE scan... Found device: AA:BB:CC:DD:EE:FF, RSSI: -62, Name: TempSensor-01 Found device: 11:22:33:44:55:66, RSSI: -78, Name: HeartRate-Band Scan completed. Found 2 devices.如果沒輸出設(shè)備請先確認(rèn)你的 Windows 藍(lán)牙已開啟且處于可被發(fā)現(xiàn)狀態(tài)掃描設(shè)備如手環(huán)確實(shí)在廣播有些設(shè)備默認(rèn)關(guān)閉廣播需長按按鈕觸發(fā)你不是在虛擬機(jī)里運(yùn)行——Hyper-V 或 VMware 的藍(lán)牙直通支持極差必須在物理機(jī)上測試。3.3 運(yùn)行時(shí)依賴與權(quán)限為什么你的程序總在BluetoothFindFirstRadio失敗這是新手最高頻的翻車點(diǎn)。BluetoothFindFirstRadio失敗90% 的原因是權(quán)限不足。Windows 藍(lán)牙 API 要求調(diào)用進(jìn)程擁有SE_LOAD_DRIVER_PRIVILEGE加載驅(qū)動(dòng)權(quán)限而普通用戶賬戶默認(rèn)沒有。解決方案只有兩個(gè)方案 A推薦以管理員身份運(yùn)行命令行再執(zhí)行.exe方案 B在程序 manifest 文件中聲明requireAdministrator雙擊運(yùn)行時(shí)自動(dòng)提權(quán)項(xiàng)目已附帶app.manifest文件內(nèi)容如下?xml version1.0 encodingUTF-8 standaloneyes? assembly xmlnsurn:schemas-microsoft-com:asm.v1 manifestVersion1.0 trustInfo xmlnsurn:schemas-microsoft-com:asm.v3 security requestedPrivileges requestedExecutionLevel levelrequireAdministrator uiAccessfalse/ /requestedPrivileges /security /trustInfo /assembly編譯時(shí)用/MANIFESTINPUT:app.manifest參數(shù)嵌入即可。如果你跳過這步ble_scan.exe在非管理員命令行下必然失敗錯(cuò)誤碼是ERROR_ACCESS_DENIED5。這不是代碼 bug是 Windows 安全機(jī)制必須正視。注意某些企業(yè)域環(huán)境禁用了管理員提權(quán)此時(shí)只能聯(lián)系 IT 部門申請臨時(shí)權(quán)限。不要嘗試用CreateProcessAsUser或服務(wù)方式繞過——既違反安全策略又增加復(fù)雜度得不償失。4. 常見問題排查5 個(gè)真實(shí)踩坑記錄與速查解決方案開發(fā) Windows BLE 應(yīng)用不是寫 Hello World很多問題現(xiàn)象詭異、原因隱蔽。以下是我在多個(gè)工業(yè)客戶現(xiàn)場實(shí)測總結(jié)的 5 個(gè)高頻問題每個(gè)都按「現(xiàn)象 → 原因 → 解決」給出可立即執(zhí)行的方案不講原理只給答案。4.1 現(xiàn)象BluetoothFindFirstRadio返回NULLGetLastError()是5ERROR_ACCESS_DENIED原因進(jìn)程未以管理員權(quán)限運(yùn)行Windows 拒絕授予藍(lán)牙無線電訪問權(quán)。解決右鍵點(diǎn)擊命令行圖標(biāo) → “以管理員身份運(yùn)行”再執(zhí)行ble_scan.exe -scan。若需雙擊運(yùn)行確保已將app.manifest嵌入可執(zhí)行文件編譯時(shí)加/MANIFESTINPUT:app.manifest。4.2 現(xiàn)象BluetoothFindFirstDevice掃描不到設(shè)備GetLastError()是122ERROR_INSUFFICIENT_BUFFER原因BLUETOOTH_DEVICE_SEARCH_PARAMS結(jié)構(gòu)體的dwSize字段未初始化為sizeof(BLUETOOTH_DEVICE_SEARCH_PARAMS)。解決打開btapi_wrap.c找到BluetoothFindFirstDevice調(diào)用前的searchParams變量確認(rèn)其dwSize賦值語句存在且正確。刪除所有 {0}初始化改為顯式searchParams.dwSize sizeof(searchParams);。4.3 現(xiàn)象連接設(shè)備后BluetoothGATTGetServices返回0個(gè)服務(wù)GetLastError()是1168ERROR_NOT_FOUND原因目標(biāo)設(shè)備是經(jīng)典藍(lán)牙BR/EDR設(shè)備不是 BLE 設(shè)備。Windows 的BluetoothGATT*系列 API 僅支持 BLE對傳統(tǒng)藍(lán)牙無效。解決用手機(jī) App如 nRF Connect確認(rèn)該設(shè)備是否廣播 BLE 廣告包。若廣告數(shù)據(jù)中不含0x0201Flags或0x030316-bit Service UUIDs等 BLE 特征則不是 BLE 設(shè)備此項(xiàng)目不適用。4.4 現(xiàn)象BluetoothGATTReadCharacteristicValue讀取特征值成功但返回?cái)?shù)據(jù)全是0x00原因特征值 handle 錯(cuò)誤。BluetoothGATTGetCharacteristics返回的pChar-CharacteristicHandle是屬性句柄Attribute Handle而讀取時(shí)需用pChar-ValueHandle值句柄。兩者常被混淆。解決在gatt_client.c的讀取函數(shù)中確認(rèn)使用的是pChar-ValueHandle而非pChar-CharacteristicHandle。項(xiàng)目源碼中已用注釋標(biāo)出“// 注意讀取用 ValueHandle不是 CharacteristicHandle”。4.5 現(xiàn)象啟用通知BluetoothGATTRegisterForValueNotifications后回調(diào)函數(shù)從未觸發(fā)原因未向通知配置描述符Client Characteristic Configuration Descriptor, CCCD寫入0x0001啟用通知。Windows 不自動(dòng)寫 CCCD必須手動(dòng)調(diào)用BluetoothGATTWriteCharacteristicValue。解決在注冊通知前先獲取該特征值的 CCCD handle通常為ValueHandle 1然后構(gòu)造 2 字節(jié)數(shù)據(jù)0x01, 0x00寫入。項(xiàng)目gatt_client.c中g(shù)att_enable_notify()函數(shù)已實(shí)現(xiàn)此邏輯檢查是否被注釋掉。5. 二次開發(fā)實(shí)戰(zhàn)如何快速適配你的 BLE 設(shè)備以某款溫濕度傳感器為例現(xiàn)在你已經(jīng)能跑通掃描和連接下一步是讓程序讀出真實(shí)數(shù)據(jù)。假設(shè)你手上有某款國產(chǎn) BLE 溫濕度傳感器它的 GATT 結(jié)構(gòu)如下Service UUID0000181a-0000-1000-8000-00805f9b34fbEnvironmental SensingTemperature Characteristic UUID00002a6e-0000-1000-8000-00805f9b34fbData format2 字節(jié)有符號整數(shù)℃需除以 100 得到實(shí)際值改造步驟分三步改 UUID、加解析、驗(yàn)數(shù)據(jù)。全程修改不超過 20 行代碼無需重新編譯整個(gè)項(xiàng)目。5.1 修改目標(biāo) UUID替換main.c中的硬編碼字符串打開main.c找到-read命令的處理分支。原代碼可能用占位 UUID你需要替換成傳感器的真實(shí) UUID// main.c 中 -read 分支 else if (strcmp(argv[1], -read) 0 argc 5) { BLUETOOTH_DEVICE_ADDRESS addr parse_bt_address(argv[2]); // 替換這兩行 ↓↓↓ GUID svc_uuid {0xfb34fb9b5f800080, 0x00100000, 0x0010, {0x80,0,0,0,0,0,0,0x1a}}; // 181a GUID char_uuid {0xfb34fb9b5f800080, 0x00100000, 0x0010, {0x80,0,0,0,0,0,0,0x6e}}; // 2a6e // ↑↑↑ 替換結(jié)束 gatt_read_characteristic(addr, svc_uuid, char_uuid); }注意Windows 的GUID結(jié)構(gòu)體是DWORD Data1; WORD Data2; WORD Data3; BYTE Data4[8];所以0000181a-...要拆成Data10x0000181aData20x0000Data30x1000Data4{0x80,0x00,0x00,0x80,0x5f,0x9b,0x34,0xfb}。項(xiàng)目已提供uuid_from_string()輔助函數(shù)在uuid_utils.c但手動(dòng)賦值更快且避免字符串解析開銷。5.2 添加數(shù)據(jù)解析邏輯在gatt_client.c的讀取回調(diào)中處理原始字節(jié)BluetoothGATTReadCharacteristicValue返回的是PBLUETOOTH_GATT_VALUE其pValue字段指向原始字節(jié)數(shù)組。你需要根據(jù)傳感器文檔把字節(jié)轉(zhuǎn)成有意義的數(shù)值。在gatt_read_characteristic()函數(shù)末尾添加// gatt_client.c void gatt_read_characteristic(BLUETOOTH_DEVICE_ADDRESS addr, GUID* pSvcUuid, GUID* pCharUuid) { // ... 前面是服務(wù)發(fā)現(xiàn)、特征值查找邏輯 ... PBLUETOOTH_GATT_VALUE pValue NULL; DWORD dwValueSize 0; if (BluetoothGATTReadCharacteristicValue(hRadio, addr, pChar-ValueHandle, pValue, dwValueSize, 0)) { if (dwValueSize 2) { int16_t raw_temp *(int16_t*)pValue-pValue; // 直接 reinterpret_cast float temp_c (float)raw_temp / 100.0f; printf(Temperature: %.2f °C\n, temp_c); } else { printf(Unexpected value size: %lu bytes\n, dwValueSize); } free(pValue); // 必須釋放Windows 不負(fù)責(zé) } }這里int16_t強(qiáng)制轉(zhuǎn)換是安全的因?yàn)?BLE 特征值傳輸是小端序而 x86/x64 也是小端無需字節(jié)序轉(zhuǎn)換。如果傳感器文檔寫明是大端則用ntohs(*(uint16_t*)pValue-pValue)。5.3 驗(yàn)證與調(diào)試用nRF Connect對照原始數(shù)據(jù)不要相信自己的解析邏輯一定要用專業(yè)工具交叉驗(yàn)證。下載手機(jī) App “nRF Connect”連接同一臺(tái)傳感器找到2a6e特征值點(diǎn)擊 “Read” 查看原始 hex 數(shù)據(jù)如0x2c, 0x01。轉(zhuǎn)成小端整數(shù)0x012c 300除以 100 得3.00°C。然后運(yùn)行你的ble_read.exe對比輸出是否一致。如果不一致檢查pValue-pValue是否為空指針BluetoothGATTReadCharacteristicValue失敗時(shí)不會(huì)分配內(nèi)存dwValueSize是否真等于 2有些傳感器返回 4 字節(jié)浮點(diǎn)數(shù)除法是否用了整數(shù)除法/ 100而非/ 100.0f導(dǎo)致截?cái)?。從那以后我每次適配新設(shè)備都強(qiáng)制走一遍 nRF Connect 對照流程——哪怕文檔寫得再清楚硬件固件版本差異也會(huì)導(dǎo)致數(shù)據(jù)格式突變。這一步花 2 分鐘能省下 2 小時(shí)抓包分析時(shí)間。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
伊人久久艹| 亚洲1区| 999热这里只有精品| www色五月| 色婷天天| www.狠狠色.com| 天久综合91综合首页| 五月丁香激情综合欧美| 婷婷丁香五月天影院| 色色亚洲视频| 5月婷婷六月丁香| 九九热精品在线| 9l视频自拍九色9l视频在线观看| 亚洲综合五月天婷婷| 五月婷婷综合在线视频| 91九色精品熟女内射| 超碰超碰在线| 色五月噜噜| 婷婷九月丁香| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 久久99网站| 日本色综合| 六月激情综合| 日本二级毛片二级毛片| 精品人妻伦九区久久AAA片| 婷婷丁香六月综合激情站| 免费视频WWW在线观看网站| 欧美性丁香色色五月天综合爱爱| 婷婷五月天视频亚洲| 丁香婷婷五月综合| 在线中文AV| 亚洲狠狠干| 香蕉婷婷五月| 男女啪啪做爰高潮无遮挡| 99性爱视频网站| 久一网站| 婷婷久久婷婷| 色播激情| 亚洲视频综合网| 久久99精品视频| 亚洲天码视频www蛋播视频| 亚洲六月色| www夜夜操comwww| 玖玖综合玖玖| 伊人婷婷大香蕉| 91色久| 日操熟女| 亚洲妇女熟BBW| 深爱五月激情五月| 99精品在这里| 欧美婷婷色五月| 5月色婷婷| 九色在线观看91av| 在线看av| 91操屁股| 欧美性久| 日韩性视频| 丁香五月色情av| 婷婷久久五月| 丁香五月av| 日日操人人操| 久久精品A片777777| 五月丁香色综合| 丁香婷婷免费| 婷婷激情人妻| 亚洲成人一区| 99色婷婷视频| 婷婷丁香97| 日本偷拍九九九| 婷婷丁香熟妇综合网| 中文成人在线| 婷婷丁香成人网址| 天天肏天天插| 激情五月天色爱| 五月天婷婷六月激情网| 天天日天天舔天天摸| 男人的天堂av俄罗斯热| 日韩AV在线免费| 国产亚洲成AV人片在线观黄桃| 日本黄色精品| 操日视频| 九九热这里只有精品7| 五月天婷婷Av| 丁香五月天激情四射网络不好| 一本色道久久综合狠狠躁小说| 久久月天堂| 欧美日韩中文国产一区发布| 97色干在线观看| 99精品热| 色五月成人在线| 婷婷操超碰| 99精品亚洲| 天天操天天日天天爽| 日韩三级片一区二区| 亲子乱AV一区二区三区下载| 深爱 五月天| 另类少妇人与禽zOZZ0性伦| 亚洲va欧洲va国产va不卡| 婷婷丁香六月天| 五月婷婷AV| 国产激情综合五月久久| 色婷婷精品视频在线播放| 狠狠爱五月婷婷综合六月| 婷婷操无码| 丁香五月玖玖| 最新av在线观看| 日韩欧美一道四区中文字幕| 婷婷综合欧美| 怡红院一二三| 中文字幕成人| 99热第一页| 97人人操| 另类小说五月天综合网| 99狠狠操一| 一起草av| 噜噜久| 五月激情综合美女久久| 色色色色网站| 五月天婷婷久草丁香| 成人网页在线观看| 久操福利| 欧洲色| 免费看欧美成人A片无码| 亚洲精品视频在线| 九九激情视频| 电影爱拉战争免费观看| 五月激情婷婷丁香| 少妇被躁爽到高潮无码文| 亚洲中文AV网站| 97色97干| 丁香五月五月婷婷五月天激情四射| 久久婷婷五月综合色和| 另类图片色五月| 激情婷婷五月女| 热思思九九| 丁香久久激情俄| 六月婷婷激情图片| 亚洲丁香婷婷丁香五月天激情| 91制片厂久久久国产电影| 国产VA亚洲VA96| 婷婷丁香色五月| www.99热视频| 五月天国产| 一本狠婷婷综合| 久热99| 国产99久久久国产精品免费看| 99这里有精品视频视频| 日本99热| 婷婷亚洲综合| 丁香六月婷婷综合缴| 五月丁香婷婷综合网| 狠狠狠狠狠狠| 欧美激情 日韩无码 婷婷 五月天| 婷婷五月综合免费在线| 草美女在线观看视频在线播放 | 无码人妻一区| 亚洲成av人影院| 五月丁香综合影院| 99无码黄色视频| 91狠狠综合久久久| 免费AV播放| 丁香五月婷婷AV在线| 亚洲激情AV| 久久婷婷色色| 91美女被操| 9 1大香蕉| 亚洲色五月天在线| 丁香花大香蕉婷婷综合| 99视频久久| 久久 中文 日本| 狠狠色五月天| 久久婷狠狠色| 香蕉综合在线| 婷婷六月天激情| 天堂美国久久| 人人操人人爱丁香五月| 在线A色| 99九九精品| 国产激情AV| 五月丁香花视频| 亚洲视频在线网| 人人看人人草人人摸| 极品少妇高潮啪啪AV无码| 1024成人在线观看| 97在线综合| 五月色丁香| 五月婷婷导航| 狠狠艹狠狠艹| 碰超亚洲| 影音先锋偷偷色男人站| 亚洲情综合五月天| 99热这里只有99| 97操碰视频| 色久一| 久久久久视剧HD| 色偷偷狠狠| 欧美99热| 日韩欧美一级大黄网站| 国产综合81p| 五月天丁香婷婷社区| 大香蕉啪啪啪啪啪啪| 79精品视频| 人妻操日日| 天天综合永久| 六月丁香停| 亚洲乱码在线观看| 久久综合热17c| 国外亚洲成AV人片在线观看| 九九久久这里只有精品XB| 日日噜狠狠色综合久久| 丁香密臀AV激情网| 婷婷综合中文字幕| 久久天天| 曰曰久久| www久久久| 日本不卡一区二区三区| 天天操加勒比| 色色亚洲五月天| 五月色综合网欧美网| 九九九干精品| 日本熟妇乱妇熟色A片蜜桃| 五月四色色| 五月天婷婷影院影院观看| 中文字幕黄色片| 五月婷婷香蕉| 少妇性BBB搡BBB爽爽爽视頻| 久久婷婷综合五月天| 一级操逼内射在线视频| 婷婷激情五月综合基地| 色色色99韩| 日韩在线观看亚洲| 丁香五月成人自拍| 97人人干视频| 色色色色丁香| 国产精品18久久久| 男女啪啪做爰高潮无遮挡| 99热大香蕉| 性色视频| 丁香五月天啪啪a日本| 亚洲色婷婷激情| 色婷另类| 四月婷婷五月丁香| 色噜噜狠狠一区二区三区| 少妇口诉沐足视频播放器网址| AAAA网站| 丁香五月婷在线| 久久XX| 日本色色影院| 久久久久久久久久久久久久久久久精典| 99久久er| 久久66精品| www.伊人天堂偷偷婷婷| 思思w99| 亚洲看av的网站| 婷婷丁香五月综合| 这里只有精彩视频| 情欲禁地| 婷婷五月丁香激情| 97超碰99热99| 97丁香五月| 91亚洲天堂| 天堂在线观看视频| www.99免费视频| 99操不停| 日本在线观看91| 婷婷视频在线碰| 日韩黄色中文字幕| 性爱111111| 日本操B视频| 熟妇内谢69XXXXXA片| 激情六月下句是什么| 亚洲网在线观看| 黄桃AV无码免费一区二区三区| 五月激情基地| 999九九九久久久99HD| 婷婷中文字暮| 久久资源网五月婷| 欧美婷婷五月激情| 亭亭五月天成人| 蜜桃五月天| 婷婷五月天中文字幕| 五月婷婷丁香狠狠撸久久| 五月花婷婷丁香| 99爱无码| 久久大香蕉| 综合色99| 色九月综合网| 五月天伊人久久| 这里只有精品视频一区| 综合一本道| 久久99网| 天天干天天做| 色啪久| 婷婷综合另类| 婷婷丁香人妻天久久| 99热这里只有精品1| A片一曲| 婷婷色在线| 丁香五月激情五月| 99热高清在线| 国产成人VA| 亚洲欧州色情在线观看| 天天爽天天干| 超碰国产AV| 成人丁香五月| 天天日夜夜拍| 亚洲日韩一页精品发布| 草榴视频网| 久久只有精| 操逼福利视频| 久久久婷婷婷| 午夜九九九九九九| 久久伊人日日夜夜| 激情五月天色网站| 99ri国产精品| 激情综合网站| 色爽九九| AV国产有码| 美女五月狠狠| 色啪久 | 五月丁香网视频| 五月婷婷在线网站| 色婷婷狠狠| 久超免费视频| 国产精品涩涩涩视频网站| 热中文字幕| 日韩成人精品一区久久久久| 色情五月综合婷婷| 色婷婷久久7777| 天搞天天天天天| 99亚洲色| 亚洲亚洲人成综合网络| 婷婷色情网| 人与禽A片啪啪| 九九精品热播| 六月色播| 激情五月婷婷色综合| 国产亚洲在线观看| www.91九色| 色婷插| 婷婷五月天成人五月天| 久久视频婷婷视频| 久青操| 亚洲精品小视频| 亚洲性爱电影| 亚洲va欧美va天堂v国产综合| 欧美五月丁香在线| 综合伊人久久| 久久日九九| 亚洲乱码成人| 激情五月综合网| 五月激情射| 五月婷婷网站| 99re视频在线精品| 国产五月天欧美色| 99色免费| 丁香 婷婷五月| 日本色久| 亚洲九区| 激情久久久| 久久婷婷激情四射五月天| 五月丁香六月婷婷不卡免费无码 | 色婷婷亚洲婷婷| 日本色啪| 亚洲99热| 大香蕉婷婷五月天| 五月天堂婷婷| 久久精品在线| 999精品乱码77777| 五月婷婷三级| 91九色国产在线| 思思热视频在线观看| h在线看免费版在线看| 激情六月丁香| 激情五月天视频| 精品久色| 亚洲五月六月婷婷| 狠狠干无码| 99精品综合在线| 99re视频精品| 97电影99热| 久久99久久99精品免观看粉嫩| 亚洲综合五月天婷婷| 人五月天婷婷喷水| 99综合免费视频| 丁香六月AV| 无码AV大香线蕉伊人| 久久久99精品| 激情伊人网| 色婷婷六月| 五月婷婷激情性爱| 婷婷五月天影院| 天天日人人爽| 亚洲精品网址| 青青草成人网| 色色色色av777| 激情婷婷五月综合| 91丨九色丨高潮丰满日本| 婷婷六月色开| 99燥99日| 色婷婷综合网站| 伊人大香五月天| 中文字幕 中文字幕明步| 狠狠色综合五月| 九九中文字幕九| 99无码超碰| 好好日激情五月天| 色婷婷a| www.婷婷| 韩国97天堂| 婷婷的99视频网站| 亚洲五月情| 九九这里是免费的视频5| 色99网站| 五月丁香网站| 五月天婷婷伊人| 亚洲色图81p| 丁香色婷婷| 激情五月婷婷五月丁香五月开心五月 | 能看的av片| 丁香花婷婷五月天| 婷婷五月花| aaa日韩| 午夜亚洲国产精品av一区二区| 99精吕视频在线观看了| 大香蕉啪啪啪| 久久婷婷五月综合色天| 日日操天天操| 狠狠操综合| 新精品99| 影音先锋 91工厂| 色婷婷色综合激情91| 91丨九色丨大屁股| 亚洲av免费在线| 亚洲网站观看视频| 色婷婷99| 91九色精品| 激情综合六月| 五月婷婷久久综合| 激情深爱五月婷婷| 操日视频| 99国产欧美视频| 青青青在线视频国产| 综合网啪| 99热这里只| 日批在线看| 99热只有精品综合| 欧美性爱五月天| 99久精品| 婷婷色偷拍| 五月婷婷av在线| 成人做爰A片免费看网站找不到了| 成人无码精品1区2区3区免费看| 99九九热播在线免费视频| 激情五月丁香五月| 96精品久久久久久久久| WWW.桔色成人.COM| 成人在线日韩欧美| 无码动漫av| 亚洲天天| 另类国产区| 伦乱人妻| 99久久色| 啪啪操操| 超碰在线人人| 丁香六月婷婷激情综合| 婷婷五月天最新综合你懂的 | 激情五月瑟瑟| 99热久久日本| 99re热在线视频观看| 久久丁香九| 五月天婷婷激情六月久久| 八戒青柠影视剧在线观看| 91精品婷婷国产综合久久| 久色资源| 欧美久久婷婷| 日日撸夜夜操| 99精品视频在线观看| 激情内射人妻1区2区3区| 中文字幕日产A片在线看| 激情小说五月天| 丁香五月婷婷基地| 成人无码精品1区2区3区免费看| 丁香五月激情性色郤| 激情婷婷五月黑人| 99热这里只有精品官网| 狠狠色五月天| 色色性爱视频| 国产AV熟妇人震精品一品二区| 大香蕉久久久| 九色PORNY自拍成人精彩视频| 久久A极片| 激情涩播| 久久激情五月天| 久9久9久9久9久9久9| 丁香色五月 97干| 涩综合在线| 操逼在线视频| 亚洲五月天另类小说图片| 91九色国产熟女| 亚洲无码另类| 国产精品成人AV在线观看春天| 五月丁香六月花| 婷婷中文字暮| 欧美一级色| 日本天天操| 九九综合九| 97婷婷五月丁香| 性综合网| 婷婷五月天A V| 婷婷不卡基地| 99操碰| 免费色色色| 五月亚洲| 日本久久天堂| 国产亚洲99久久精品熟女| 九色无码| 五月天a婷婷伊人| 婷婷六月丁香五月| 六月婷婷五月丁香| 九九色院| 婷婷黄色五月天在线视频| 婷婷丁香五月亚洲综合网在线视频观看| 久久婷婷五月综合色丁香| 大香蕉久久| 97五月天婷婷| 精品久久人妻| 午夜日韩久久久网站| 激情婷婷内射| 久操大| 婷婷丁香激情五月天色色色| 五月婷网| 亚洲va欧美va天堂v国产综合| 日日干综合| 人人干人人看| 五月天激情Av| 97人人射| 日本久久精品18| 五月婷婷激情69| 久久激情视频| 丁香九月激情久久| 丁香五月天的网址。| 国产成人99久久亚洲综合精品| 亚洲精品激情| 欧洲色区| 激情五月天在线观看色婷婷| www.日韩国产| 国内久久亭亭| 成 人 色 色| 色婷婷亚洲婷婷| 九九精品综合| 五月天久久综合| 永久天堂日本| 五月天另类小说久久小说网| 精品一二三区久久AAA片| 91ncom.色| 色婷婷偷拍| 五月婷婷亚洲综合在线| 丁香六月婷婷综合在线| 九九九九精品精| 天天人人综合| 可以免费观看的AV| 天天性视频| 在线中文亚洲| 看片视频在线免费日产在线看| 99热亚洲精品| 五月丁香综合网| 丁香五月激情澎湃一区| 国产精产国品一二三在观看| 婷婷国产日本欧美| 中文字幕日产A片在线看| 91超级碰| 久久久久人妻| 亚洲色情免费网| 色色99| 久久99热这里只有| 能看的AV| 丁香五月天五码婷婷| 国产欧美日韩综合精品一区二区| 婷婷日韩| 99色免费观看全部| 色婷婷综合在线| 婷婷综合六月| 久久九九经典| 婷婷99丁香| 泰州成人视频| 激情综合色图| 亚洲综合五月| 婷婷五月天国产手机在线视频观看| 天天做天天爱天天玩夜夜爽| 9999热免费视频视频| 五月天综合婷婷| 99热官网精品在线| 草一草avb| 久久丝丝热| 色综合久久久久| 色色色.com| 9热成人在线视频| 亚洲成人在线播放| 亚洲久久视频| 中文字幕成人日韩| 激情六月天婷婷| 天天曰夜夜爽| 色色五月婷婷网| 99热6这里只有精品| 午夜丁香六月婷| 国产67194| 丁香五月成人论坛| 婷婷五月乱交换| 人人操AV| 26UUU精品一区二区Com| 99热在线看片| 五月天婷婷涩涩| 亚洲啪啪啪啪| 天天操夜夜夜拍拍拍| 国产精品24r| 激情人妻综合| 丁香五月狠狠综合欧美| 五月天婷婷亚洲| 午夜丁香综合婷婷| www色色com| 欧美综合在线五月天色婷婷| 国产性爱一级| 国产精产国品一二三在观看| 日本天堂爱爱| 婷婷四色五月| 91精品久久久久久综合五月天| 只有久久精品免费| 性生活视频98791| 日韩人妻AV在线| 婷婷月综合| 日韩AV色色色| 青青草原中文字幕| 狠干综合| 人人艹艹艹| 色色丁香婷婷| 久久人妻伦理| 婷婷五月丁香激情色情| 99久久精品色老| av人人操| 婷婷基地成人五月天| av在线不卡播放| 激情丁香五月婷婷| 五月婷激情影院| 五月婷婷综合色啪首页| www.丁香五月| 五月婷婷婷| 黄色视频网站在线播放| 亚洲色频| 99热1| 99热中文字幕久久| 思思色综合网站| 久久99精品久久久久久噜噜| 婷婷六月偷拍| 色色色香蕉五月婷| 99精品在线| 成人网站免费在线播放| av人人干| 999热这里只有美国精品| 大香网伊人久久综合| 五月天婷久精视频| 性99网站| 丁香五月婷在线| WWW色五月天| 色综合丁香| 玖玖爱导航| 久久男人网婷婷| 51精品国自产在线| 大地9中文在线观看免费高清 | 五月色网| 99噜噜| 久久图色4| 在线免费观看激情视频| 九九九九九九热| 成熟妇人A片免费看网站| 激情五月天色色| 涩综合婷婷| 午夜五月天| 久久久中文| 新97人人上人人| 色综合九九色综合88| 2017人人操| 九九视屏| 在线视频你懂得| 亚洲成人网站在线观看| 成人丁香五月| 亚洲综合色网| 久久精品A片777777| 女人高潮内射99精品| 亚洲中文字幕在线观看| 美国少妇性做爰| 久久九九Com| 久久精品日| 欧美激情中文字幕| 开心激情婷婷| 2020久久婷婷五月| 另类丁香五月天区图| 成人欧美一区二区三区在线观看| 无人区码一码二码三码医生系列| 9九色首页| 婷婷射丁香| 思思热精品在线| 北京熟妇搡BBBB搡BBBB| 99色人| 97婷婷丁香五月天激情图片| 亚洲视频二区| 66久久视频在线| 噜噜噜噜在线| 色综合色| 久久九九国产精品怡红院| 国产真人做爰视频免费| 欧美色必爱| 久热伊人9| 99超级碰免费视频| 久久人人人人妻| 99精品免费| 国产精品美女| 色婷狠狠| 99er精品| 婷婷五月六月| 91超级碰| 欧美婷婷精品激| 婷婷六月激情小说网| 99精品爱| 色五月综合激情| 婷婷99视频在线| 操逼巨乳91| 九九综合久久| 九九亚洲小视频| 九九热视| 超碰人人色| 日韩天堂久久| 久久6这里只有精品| 久久人妻久久| 少妇高潮呻吟A片免费看软件 | 91色涩| 人与禽A片啪啪| www91久久| 天天摸天天舔天天爽| 天天插天天射| 婷婷色色综合| 国产色丁香| 激情亭亭五月| 日日夜夜九九| 色婷婷五月天激情在线播放| www.色五月.com| Www.se.久久| 亚洲第一色色色色| 在线中文av| 久久99免费视频| 五月社区婷婷激情| 饮料下药迷倒漂亮女同事强干| 欧美一级色| 久久蜜臀婷婷| 九九热视频免费的| 一级黄色操B| 婷婷俺去也| av第一二区| 国产色五月婷婷| 在线99热| 91碰碰碰| 激情五月天视频| 9 1在线视频| 五月丁香激情六月| 国产成人精品123区免费视频 | 97色综合| 99.色| 99精品国产乱码久久久人妻| 91丨九色丨大屁股| 色婷婷综合影院| 亚洲婷婷综合视频| 日本va欧美va欧美va| 嫩草AV久久伊人妇女超级A| 久久久久9| 97干网站| av色婷婷| 色狠狠综合| 1024手机在线观看看片_日韩精品| 日本三级日本三级三级人妇四虎| 天天色综合色色色色色。| 亚洲激情综合网| 久综合| 操操国产| 九九热AV| 久久婷婷影院| 五月婷婷伦理| 无码免费人妻A片AAA毛片西瓜| 婷婷黄色五月| 天天干,夜夜爽| 99啪99| 激情99热| 激情综合网五月在线播放| 五月香婷婷| 婷婷伊人綜合中文字幕| 91九色 熟| 色亭亭九月| 怕怕av| AV九九| 久婷婷久草| 激情5月婷婷| 五月色天情| 99热九九在线| 99热都是精品| 婷婷九月激情| 玖久久网站| www激情| 在线网黄| 99∨VTV| 五月丁香黄色| 人人插9| 五月天另类视频| 五月香蕉婷婷| 日韩美一级毛卡片| 97视频久久| 无码一区二区三区四区五区| 99色爱| 色五月婷婷小说亚洲中文字幕组| 日本五月婷婷| 97色色色色色色色色色色色色色| 激情六月丁香| 中文久久久人妻| 激情5月婷婷| 五月婷婷成人| 91精品综合久久久久久五月丁香| 丁香久久综合| 久er7久热| 九九热99在线视频| 99热这里精品| 色丁香五月婷婷在线| 五月天激情四射网站| 99热精品在线观看| 五月丁香欧美综合| 99色激| 久久综合最新网址| 色婷婷综合网| 激情五月色综合| 婷婷亚洲色| se色婷婷视频| 丁香花五月天激情| 国产探花AV在线| 亚洲五月激情| 黄色录像网点| 日本色色网| 国产成人+亚洲+欧洲| 色婷婷香蕉| 日本网站久久| 综合网色| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 欧美久久久久久久久中文字幕| 亚洲一区二区无码蜜乳av| 97人操人免费视频| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 超碰日日操| 操丝袜视频影院导航| 久久色天堂| 久久99激情五月天| 狠狠穞A片一區二區三區| 久热亚洲| 日日日天天干| 婷婷激情五月天色| 婷婷色在线| 大香蕉九九操| 丁香五月天AV在线 | 婷婷五月天天| 五月天激情国产综合婷婷婷| 丁香五月天综合| 日本成人噜噜噜噜噜| 婷婷久久网| 97超级碰碰碰| 久久电影五月天丁香电影| 99热9| 五月婷在线| 99热这里只有精| 狠狠色噜噜| 99视频在线观看视频| 亚洲欧美成人在线| 丁香五月天婷婷91| 日本天堂网站99| 成人国产欧美大片一区| 中文字幕在线日亚洲9| 最新色色五月天| 99免费在线视频| 99乱视频| 婷婷色狠狠| 激情综合网激情五月丁香| 欧美色骚婷婷五月天| 久久久这里都是精品| 色婷精品91| 噜噜操操| 五月天婷婷香蕉狠狠超碰综合| 97啪啪| 日本啪啪天堂| 久久亚洲无码| 久久五月天视频| 久久性刺激| 婷婷激情社区| 9色在线视频| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 91久久久久| 天天 青草 丝袜制服 在线| 99久热这里只有精品视频删减版| 丁香五月天视频| 开心激情综合| 亚洲va成人va成人va在线观看| 26UUU精品一区二区Com| 开心久久爱五月天| 五月综合777| 天天综合天天玩夜夜玩天天玩夜夜玩 | 亚洲国产精品SUV| 国产精品涩涩涩视频网站| 91狠狠综合久久| 99热精品在线观看| 丰满少妇猛烈A片免费看观看 | 狠婷婷五月| 五月开心深爱激情网| 丁香五月综合在线观看| 第四色五月天| 超级碰碰91| 色色色色色色色色网站| 99视频只有精品| 国产小精品| 91操女| 香蕉久久国产av一区二区| 婷婷五月天影院| 深爱五月综合网| 26UUU精品一区二区c〇m| 婷婷五月天电影在线| 五月天com| 久久xxxx| 国产做爰视频免费播放| 99综合99| 天天搡日日搡aaaaⅩ| 婷婷激情丁香五月天综合| 亚洲九九九九| 亚洲五月停停| 六月激情综合| 免费视频1区| 色娸娸综合网| 久色视频首页| 色 色 色综合com| 成人视频一区| 成人国产欧美大片一区| 日韩伊人大香蕉| 婷婷五月四狠狠| 天天天天天天噜| 五月婷婷久久综合| 丁香六月av| 九九亚洲视频| 第五色婷婷| av一区免费看| 国产亚洲99| 婷婷婷婷色| 天天日天天色| 丁香九月综合在线| site:xmssd.com| 天天天综合网| 丁香五月天啪啪| 天天操综合网| 狠狠操天天干| 婷婷五月中文字幕| 涩涩涩婷婷| 欧美五月婷婷| av在线婷婷| 亚洲久热| 五月丁香六月综合激情| 性一交一乱一交A片久| 日韩av网站在线观看| 婷婷五月开心中文字幕色| 激情綜合網址| 天天综合区| 色五月婷婷五月丁香五月激情五月视频 | 激情色播| 七月激情六月婷婷综合在线播放| 丁香五月婷婷偷拍| 男女久久婷婷五月天| 色99在线视频| 噜噜狠狠色综合久| 天天日夜夜操五月| 五月天大香蕉| 婷婷五月欧美| 五月天亚洲最大成人| 成人亚洲精品| www,色综合| www.五月天社区| 国产FREESEXVIDEOS性中国| 久久婷五月婷| 欧美va在线观看| 97婷婷五月丁香| 人妻videos人妻高清| 9久热| 久久新| 久久这里只有精品99| 99久久婷婷国产综合精品| 天天日夜夜B久久| 国产激情久久久| 91人人操人人爱| 久操97| 超碰色人妾| 国产一二三四五六七八视频| 六月成人网| 99热99热在线观看| 97色干| 天天狠天天狠| 夜夜爽天天干| 国产日比| 九九伊人网| 日韩性视频| 91久久1118| 91大神操美女| 五月激情婷婷综合| 六月婷婷九月丁香| 天天天天干| 成人短视频在线免费观看| 色在线视频网2025| 激情婷婷99| 色 色 色综合com| 91AV视频| 99久久久久久www| 丁香五婷婷| 97碰久久| 91热久久| 超碰99热| 五月丁香六月婷婷亚洲激情综合| 可以看的AV网站| 丁香六月色| A久久| 97精品自拍| 五月婷婷激情久久| 九热在线这里有精品6| 五月激情影院| 婷婷色日本| 色综合女人99| 五月激情婷婷播播开心| 丁香六月激情四射| 天天干天天色综合| 亚洲avjiujiur91| 不卡的AV网站| 六月丁香社区| 久久五月激情综合| 精品久久人妻| 精品视频这里只有精品| 国产精品扒开腿做爽爽爽A片唱戏| 草草影院爱爱| 九九黄色网| xxxx五月| 久9综合| WWW,五月| 亚洲成人色五月婷婷综合| 五月综合激情啪啪啪啪啪| 99A片| 国产超碰在线| 丁香五月天天久久综合小说| 欧美黄色韩日网| 婷婷五月天激情网| 黄网在线免费观| 99精品视频在线观看| 婷婷月五天在线在线看| 激情婷婷狠狠干综合| 五月天婷婷社区| 伊人91| 毛片九九九九九九九九18| 超碰不卡在线| 久久婷婷五月综合激情国产| 91久草五月天婷婷| 91精品久久久久久77777| 九九性视频| 日本99热| 亚洲成人AV一区在线观看| 啪啪激情网| 五月天色导航| AV在线中文| 淫五月停停| 香蕉婷婷色五月| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 激情五月天色色网| 久久婷婷亚洲| 日韩久久色| 中文字幕乱码亚洲精品一区| 天天插天天插| 西瓜美女a片| 丁香婷婷五月天激情四射| 免费无码毛片一区二区A片| 激情五月婷婷五月丁香五月开心五月| 大香蕉伊然在亚洲90| 婷婷丁香在线| 婷婷五月天狠狠搞干| 好看的国产精品| 欧美三级A做爰在线观看| 丁香五月婷婷深爱综合激情 | 在线不卡视频| 九九色视频| 狠狠色大香蕉| 九月丁香八月婷婷加勒比| 99ri精品| 狠狠999| 丁香婷婷啪啪| 亚洲蜜乳AV| 最近免费中文字幕大全高清大全1| 婷婷在线精品| 综合99在线| 国产婷婷色综合AV蜜臀AV| 精品乱码久久久久| 色婷婷五月天激情综合| 激情久久五月天| 五月丁香久久综合91| 日日天天干| 丁香六月婷婷久久高清| 久久精品国产AV一区二区三区 | 亚洲免费看片| 日本97久久久精品| 成人无码精品1区2区3区免费看| 97超碰综合| 91亚洲免费片| 日本V在线观看不卡视频网站| 中文aV网| WWW色综合| 永久的网站AAAA| 丰满少妇猛烈A片免费看观看| 激情文学五月丁香六月婷婷| 五月天婷婷导航| 国产淫熟妇| 丁香五月影院| 色五月婷婷久久| 色综合激情| 99丁香五月| 色婷婷成人做爰A片免费看网站| 亚洲色综久久五月| 精品综合久久久久久五月天| 欧美性久| 538任你爽视频不一样的| 色开心五月丁香| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 激情深爱五月天| 人人草人| 婷婷色丁香六月| 激情网第四色| 五月丁香狠狠爱婷婷综合| 天天摸天天舔天天爽| 久久六月天| 色色婷婷五月| 就要去操亚洲成人精品五月天丁香婷婷| 中文字幕丰满孑伦无码专区| 九色视频91疯狂| 久99久在线| 婷婷午夜天| 成人 在线 日韩| 九九色图| 国产 亚洲 在线| 丁香五月激情婷婷| 综合性爱网| 色噜噜狠狠色综合成人99| 日韩久热| 久久五月婷综合网| 玖玖激情网| 久久婷婷五月综合激情国产| 亚洲在线操| 色综合综合色| 久久色五月天| 开心五激情网| 四月婷婷丁香| 97婷婷五月天| 激情五月婷婷五月| www.91婷婷| 婷婷五月天激情基地| 免费播放片大片| 国产97在线日韩亚洲女人被黑人巨大| 天天色色婷婷| 五月播播| 99热99这里只有精品| 玖玖资源站视频| 蜜臀99精品| 久久永久视频| 97色在线观看视频| 成人在线99| 国产精品91抖高| 日韩无码系列| 五月天堂在线| 久久激情五月网| 婷婷狠狠干| 人妻视频在线| 婷婷五月激情丁香| 色色色色色色色色网站| 婷婷亚洲丁香五月| 日本婷婷综合精品| 丁香婷婷色情社区成人小说| 日韩精品一品二区三区的使用体验| 亚洲va日| 99色视| 色综合网综合| 激情五月天婷婷| 色域五月婷婷丁香| 狠狠色婷婷7| 色色色色色色综合| 久久色9| 婷婷五月色情天| 欧美情色电影一区二区| 91久久久久久久久久| 亚洲丁香婷婷五月天综合色| 69五月天视频| 丁香激情五月| 国产精品久久久久久久久久免费| 色色色色色色网| 免费视频WWW在线观看网站| 婷婷久久18| 五月婷久久| 秋霞免费三级片| 婷婷五月丁香六月天亚洲综合| 激情五月丁香在线观看直播| 婷婷丁香五月综合| 色五月五月婷婷| 欧美精品久| 婷婷婷色五月| www.五月天婷婷| 九九热超碰| 婷婷丁香成人五月天| 成人婷婷深爱综合网| 色五月婷婷av| 熟妇内谢69XXXXXA片| 在线观看免费狠狠色丁香香综合 | 九九热精品| 国产欧美精品AAAAAA片| 情色五月天网站| 中文乱子伦视频| 中文幕无线码中文字蜜桃| 五月丁香久久婷| 成人狠狠成人狠狠成人狠狠成人狠狠| 久久久久久五月天| 久久人人看| 色五月婷婷成人| 蜜臀AV在线成人| 色婷婷国产精品综合在线观看| 五月天狠狠| 丁香五月综合| 国产免费一区二区三区三州老师F1F1.CC| 99五月婷| 久久这里只有国产视频| 日韩啪啪视频| 激情丁香五月天图片| 色婷婷深爱五月| 婷婷五月天色播| 秋霞少妇毛片| 亚洲第一视频 久久| 亚洲妇女熟BBW| 这里只有视频精品| 婷婷五月天色综合| 丁香婷婷综合激情五月色| 久久无码激情视频| 亚洲激情综合| 国产免费AV在线| 99re热视频这里只精品| www...com黄在线观看| 五月天影院婷婷在线观看| 性一交一乱一交A片久| 五月综合丁香婷婷| 五月丁香影院| 91婷婷色| 丁香五月影视| 久久停停超碰| 婷婷六月激情| 黄色毛片精品| 99热色精品| 五月丁香六月激情视频| 99九九免费精品| 狼人久草| 天天色天天| 中文字幕不卡网站|