99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

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
返回資訊列表
婷婷丁香色五月| 丁香五月婷婷久久久| 思思久日精品视频| 五月开心婷婷极品激情| 丁香六月婷婷综合欧美| 国产亚洲99久久精品熟女| 久热这里只有| 久久久8| 天天成人综合视频| 天天肏天天插| 婷婷欧美色| 99热很操老逼| 九九九九九九九九九九九九九国产精品| 色色色色五月| 97人人操人人爽| 久色婷婷200| 六月丁香深深爱| 婷婷五月激情欧美| 丁香六月婷婷综合啪啪| 狠狠干在线| 无码激情AAAAA片-区区| 婷婷五月成人有| www.9797国产| 人人操人人干AV| 2050人人操免费工开爱 | 五月天另类小说久久小说网| 亚洲精品久久久无码| 婷婷亚洲影院| 人妻av在线| 欧美视频五区| www,久久久| WWW,五月| 天天爽天天操| 另类视频综合| 丁香五月电影| 激情六月婷婷| www.婷婷| 极品人妻VIDEOSSS人妻| 日韩在线看AV| 久久99网| www.99热这里精品| 国产白丝在线一区| 99成人网一区| 婷婷深爱五月天在线| 丁香五月1页| 亚洲无码播放| 久久这里都是精品免费| 五月丁了香蕉综合| 颜射 精品性爱av| 丁香五月亚洲AV| 六月色播| 安息电影在线观看完整版| 激情综合网五月在线播放| 26uuu精品一区二区| 欧美日韩五月婷婷| 久久婷.com| 91婷婷丁香| 六月丁香啪啪啪| 九色 在线| 99色久| 欧美婷婷九月| site:hcxsz888.com| 色丁香久久| 久久色情| 亚洲另类婷婷五月综合| 五月丁香性| 2025天天日爽| 色色色综合网| 99热免费18| 天天久久九九| 久久99视频| 久久er视频6| 草美女在线观看视频在线播放| 丁香成人综合| 婷婷狠狠操| 天天肏高清在线| 激情综合网五月丁香| www.99久| 天天肏视奸| 视频久久9| 婷婷99中文字幕| 99精品国产在热久久| 婷婷五月天xxx| 天天色综合网吨吧| 99热国产| 超碰自拍天堂| 五月天另类小说亚洲| 狠狠五月天婷婷| 婷婷五月天亚洲精品| 久久婷婷五月免费视频| 五月丁香六月婷| 五月婷婷综合网| 香蕉久久五月| 婷婷丁香77777| 亚洲99视频| 天天色综网| 五月丁香六月婷| 欧美精品XXXXBBBB| 97黑人精品区| 99热这里只有精品13| 五月婷婷丁香俺日污视频| 亚洲AV中文在线| 日日夜夜狠狠| 久久网日本| 五月婷婷开心色伊人| 日本 @ va 免费| 亚洲天堂啪啪| 婷婷激情五月天激情小说| 青青草色在线视频观看| 五月婷婷六月婷| 婷婷射丁香| 成人无码精品1区2区3区免费看| 激情丁香五月综合| 色国产五月| 色五月婷婷九月| 丁香激情五月天| 成人片在线免费看| 成年人99热| 成人AV中文字幕| 无遮挡国产高潮视频免费观看| 欧美亚洲成人在线| 亚洲日韩欧美综合VA| 欧美激情综合| 99热欧美偷拍| 99热精品无码| 人人综合色| 青青热视频| 丁香六月激情国产| 九九艹女| 精品九九视频| 香蕉久久国产AV一区二区| 99久精品视频| 婷婷五月天综合网| 亚洲啪啪精品| 丁香美女主播视频在线观看| 99亚洲精品| 亚洲免费观看高清完整版AV线| 森林影视大全,最好看的2019年视频 | 五月天合网| 99热这里只有精品免费观看| 亚洲无码 图片区| 丁香婷婷久久| 色丁香久久| 激情综合婷婷久久| 美女天天爽| 香蕉久久国产AV一区二区| 久久久激情视频| 精品久久久人妻| 人妻丰满精品一区二区A片| 激情啪啪五月| 综合久久影院| 成人短视频在线| 国产密乳av一区二区三区四区| www.91五月| 99热6这里只有精品6| 五月亭亭六月天| 8区视频在线| 亚洲色色色| 秋霞网在线免费基地五月婷婷丁香| 色五月开心五月激情五月| 99在线视频播放| 免费成人中文字幕| 99热久草| 9久热| 成人在线综合| 婷婷精品视频| 色综合五月| 色婷婷亚洲| 停婷丁五月在线| 亚洲天堂制| 婷婷六月激情在线视频| 亚洲五月天色色| 亚洲欧洲中文日韩久久AV乱码| 丁香八月综合激情| 五月精品| 91se在线视频| 五月丁香综合激情| 视色综合| 自拍视频99| 另类五月激情| 1024婷婷综合久久五月天| 婷婷五月综合网| 五月色丁香| 人妻九九九九| 五月情四婷婷| 碰碰碰97免费精彩视频| 五月天激情久久| 亚洲另类婷婷综合| 可以免费观看的AV| 日日夜夜天天综合| 久草五月婷婷| 成人无码髙潮喷水A片| 丁香六月婷婷高清| 99精品偷拍视频| 激情五月天天狠狠久久| 欧美欧盟性爱网| 中文字幕欧美日韩VA免费视频| 操B五月天| 99re热| 欧美色男人网站| 伊人久久五月天| 亚洲第一影院高清无码网站| 亚洲成人AV在线观看| 在线日韩视频| 久婷狼色诱惑在线| 激情六月天婷婷| 天天肏夜夜肏| 色婷婷yy久| 五月天婷婷情色| 欧美色图天堂网| 狠狠干天天内射| 国产午夜精品AV一区二区麻豆| 九九精品在线网| 色五月婷婷自拍| 久久ww| 久草五月天电影网| 另类伊人婷婷| 免看黄大片AA | 欧州色色| 69堂午夜视频最新地址| 99婷婷五月天激情| 国产精产国品一二三在观看| 色香久久| 五月婷六月天| www99热| 亚洲成人在线在线| 色99网| 操嫩逼电影| 久久9RE热视频精品98| 五月天色综合| 97碰碰视频| 天天成人综合| 色婷婷9| 日本乱子人伦在线视频| 99ri国产| 婷婷伊人网| 思恩热国产视频右线观看| 97久久婷婷色| 91性高潮久久久久久久久| 91人人爽久久涩噜噜噜| 五月丁香在线婷婷蜜桃| 91久久婷婷| 亚洲中文AV| 99免费| www.狠狠艹| 天天日天天干天天爱| 天堂网色婷婷| 亚洲激情四谢| 国产AV一区二区三区最新精品| 色婷婷日本| 狠狠操天天日| 色婷婷内射| 日韩99视频| 亚洲AV无码电影| www.99在线| 日本五月天网站| 色五月开心五月激情五月| 99人人干人人| 五月丁香人妻| 丁香五月www| 97精品人人A片免费看| 久久久激情视频| 逼里香不卡| 天天色天天爱天天舔| 五月婷婷中文字幕| 亚州综合色| 成人国产欧美大片一区| 国产精品99久久久久久久女警 | 韩国中文字幕91| 九九精品热| 丁香六月婷| 99热这里只有的精品视| 婷婷综合伊人丁香| 天天粽合合合合| 另类视频在线| 色色综合无码| 天天操夜夜爽天天操| www.色婷婷.com| 狠狠色狠狠色综合日日91| 国产69久久久欧美黑人A片| 丁香色婷婷| 五月婷婷中文字幕AV| 丁香五月天激情小说| 久久五月六月| 内射激情在线| 丁香九月婷婷色| 日韩av干| www开心激情网| 五月色丁香综合| 久久久人妻人伦| 久9视频| 激情丁香六月| 人妻av在线| 婷婷色五月激情| 五月丁香福利| 丁香五月1页| 丝袜大香蕉| 99综合久久| 中美日韩成人在线| 激情宗合哪里能看| 天天做天天要天天爽| 五月激情综合婷婷| 九九热免费| 丁香午夜天| 婷婷久久五月天| 激情五月天视频| 九九热婷婷| 91色噜噜狠狠狠狠色综合| 五月丁香久| 五月丁香色色网| 大香蕉婷婷| 天天插天天插| 伊人激情综合| 99热这里只有精品1025| 婷久看人爽| 99热只有国产在线精品| 五月开心久久| 人人播| 这里只有精品视频| www.久久色.com| 99热综合色图| 深爱 五月天| 激情综合网,婷婷五月天| 人人操人人爱丁香五月| 91在线日| 婷婷伊人久久无码色五月| 狼人伊人干| 国产精品色婷婷99久久精品| 色六月丁香婷婷啪啪啪| 欧美色色色| 天天干天天干天天操| 久久婷.com| 99热自拍| www久久久久久| 9 1超碰九色| 亚洲mm色| 婷婷色播婷婷| 色欲AVV| 三级毛片7979| 97色伦另类图片小说视频| 六月丁香六月婷婷欧美| 精品色色| 激情图片99| 色五月成人婷婷| 久久机热这里只有精品| 五月丁香成人网| 伊人网色婷婷五月天| 五月婷婷六月综合| 欧美五月丁香在线观看| 日韩在线9| 97碰碰碰免费公开在线视频| 久99久视频免费观看| 色色综合色视频| 人草人人| av国产精品| 久久久久98| 天天摸夜夜爽天天做| 综合性爱网| 成人视频网| 9热在线观看| 蜜乳A√| 日日干天天射| 婷婷五月天首页激情| 丁香亭亭久久| 成人亚洲精品| 综合色婷婷| 91啪级电影| 久久9精品| 操逼电影免费看| 激情视频婷婷五月花| 五月婷婷婷婷| 一本到不卡高清DVD| 日韩色色色色色| 青草激情综合| 四虎99热在线观看网站| 婷婷伊人激情婷婷| 综合网天天| 激情五月丁香色色去久久| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 亭亭五月丁香综合欧美| 伊人玖玖网| 三日本无码| 婷色成人| 五月丁香综合| 久热这里只有精品在线观看| www.久久久久| 成年人夜夜喷水| 婷婷五月丁香手机在线视频| 久婷婷视平| www.精品99| 丁香六月啪| 大香蕉Av在线| 久久婷婷五月综合| 69综合在线| 久久人妻视步| 九月婷婷人人操人人舔人人爱| 热的国产,热的综合,热的有码 | 激情视频综合| 五月婷激情| 久久性都花花世界成人免费视频| 这里只有九九精品| W色综合| 婷婷丁香五月视频| AA片在线观看视频在线播放| 五月丁香在线国产| 91 影音先锋| 99这里只有免费的精品| 被强行糟蹋的女人A片| 26UUU| 激情婷婷六月天| 激情av| 久久99精品视频| w婷婷五月婷婷w| 日韩精品一区二区亚洲AV观看| 碰超在线九色| 99热丁香| 色色色激情| 色色婷婷丁香| 丁香婷最新动态| 五月天综合色| 色亚洲视频| 欧美大片免费播放器| 婷婷深爱五月天在线| 最近中文字幕2019视频1| 蜜臀A∨在线水帘洞| 99无码精品| 26uuu国产精品| 天天干天天日蜜臀av| 色操b| 91操女| 婷婷综合激情| 久久久激情| 亚洲综合五月天| 色欲日日躁| 五月婷九月| 色色色热| 97五月天婷婷午夜| 校园春色亚洲色| 亚洲热久久| 五月天丁香综合久久国产| 免费黄色视频网址| 九九视频热| 无码AV大香线蕉伊人| 久久色情综合免费网站| 欧美久久婷婷| 丁香六月天婷婷色| 香蕉婷婷色五月| 99热综合| 婷婷久久爱| 中文字幕,综合,91| 成人五月天综合网| 狠狠色婷婷综合开心影视| 人人爽天天爽| 五月天激情综合网站| 久久精品一区二区三区四区| 日日色综合| 超碰在线视屏| 91九色超碰| 丁香五月欧美色综合| WWW,五月天| 欧美怡红院黄站| 色 色 色综合com| 婷婷的久久网站| 欧洲MV日韩MV国产| 亚洲网视屏| 翔田千里无码| 激情综合区| 日本色色影片| 丁香五月天堂| 五月婷婷自拍| 五月丁香婷婷在线综合蜜桃| 色噜噜五月丁香婷婷| 五月天婷婷久久视频| 九九久久视频| 色色无码日韩| 天堂网啪啪| 五月天色五月| 97视频久久| 五月丁香色婷婷基地| 影视av久久久噜噜噜噜噜三级| 日日躁夜夜躁狠狠久久AV| www.9797国产| 色欲色香伊人| 很操日本7| 一级性感黄色内射视频| 99久久婷婷五月| 久热99| 播五月开心婷婷欧美综合| 丁香六月色情| 丁香五月天激情婷婷丁香六月| 久久天堂色| www.婷婷| 婷婷综合激情| 噜噜在线| 欧美草久久五月天91| 蜜乳9188| 99久久综合网| 天堂久久婷婷| 五月丁香最新| 日本波多野结衣视频| 五月天色不卡| 综合久| 狠狠综合网| 丁香美女主播视频在线观看| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 中文资源在线a| 这里只有精彩视| 人妻内射麻豆视频| 五月丁色AV| 色播综合| 在线成人网站| 色欲色天天香综合| 久久香蕉福利| 操九色| 伊人大蕉香| 久久大国产香蕉| 26uuu欧美| 久久怕怕视频| 婷婷激情综合| 丁香五月婷婷在线| 夜夜谢天天干| 亚洲免费看片| 综合激情婷婷| 天天爽天天干| 成人做爰A片免费看视频| 九九久久综合| 五月婷婷中文| 亚洲男女激情| 91操人| 丁香六月激情| 少妇高潮呻吟A片免费看软件| 99ri精品| 五月丁香久久| 国产精品第一国产精品| 日本一级淫| 九九99九九精品免费| 狠狠狠狠狠狠| 四季8848精品成人免费网站| 五月丁香婷婷欧美色图视频五月丁香777电影 | 九月丁香婷婷综合| 欧美操人| 久久精品在线| 五月婷婷花| 俺去啦综合网| 丁香五月婷婷在线| 玖玖爱资源站| 91日本在线观看| 啪啪啪大香蕉| 婷婷干| 日韩成人电影Av| 丁香五月婷婷天堂大香蕉| 大香蕉五月| 欧美在线操| 99热9| 五月丁香va| 五月丁香六月欧美| 人人草人人看| 亚洲成人五月天| 丁香五月影院| www99精品亚| 色玖玖玖| 看婷婷五月天网| 激情五月天之六月婷婷| 99性爱精品| 99热久| 日韩成人av在线| 久久丁香| 色yeye色综合| 美日韩成人| 激情五月无码| 久久金品黃色| 99无码精品| 激情五月丁香五月综合| 天天综合 99久久婷婷| 中文字幕在线观看视频www| 精品国产va久久久久久久| 五月天激情视频五月天| 婷婷性爱网| 国产精品久久久久久久久久| 密视AV综合在线| 97色婷| 婷婷激情欧美| 亚洲综合久| 六月丁香五月婷婷| 91天堂网综合| 久久这里在精品视频| 亚洲色模骚货| 99热亚洲| 中文字幕黄色电影网址| 婷婷六月爽| 99热色精品| 激情综合五月| 久一网站| 久久机热这里只有精品| 99热这里只有精品1| 色综合婷婷99| 天天舔天天插天天爱| 天天摸天天日天天舔| 色9999日韩国产| 内射 无码 伊人| 色婷婷久久| 五月天婷婷丁香社区| 国产在线中文字幕| 92久久久| 婷婷丁香高潮了| 五月婷婷深深爱| 色婷婷六月| 97碰在线视频| 日本婷色| 91精品91久久久久77777| 大香蕉九九| 色五月色五天免费视频| 男人操女人高潮91视频| 激情四射五月天| 橾逼网| 久草热8精品视频在线观看| 爆乳熟妇一区二区三区爆乳| 婷婷狠狠干| 国产真实乱了老女人视频| AV在线观看网站| 涩涩涩五月天| www99精品日韩| 韩国情人在线电视剧免费观看高清版全集 | av首页在线| 99久久99热| 另类A片| 开心五月婷婷综合在线精品素人| 草婷婷在线| 精品人妻一区二区| 九色视频91| 超碰人人干| 日韩操啪| 天天摸天天日天天舔| 香蕉AV福利精品导航| 综合色99| 9 1超碰九色| 九伊人网| 噜噜狠狠色综无码久久合欧美| 亚洲综合色成丁香五月色| 久月丁香爱婷婷综合| 99免费在线| 青青草原亚洲天堂| 九九色欲网| 久久香蕉丁香| 婷婷射丁香| 六月撸婷婷| 五月天激情小说| 色色色色区| 色爱五月天| 国产探花一片区| 色婷亚洲| 超级碰碰碰久久网站| 五月天婷婷成人资源站| 中文字幕无码AV| 少妇口诉沐足视频播放器网址| 五月天综合网| 狠狠操天天操天天操| 能看的av| 婷婷丁香五月激情中文字幕版| 91久久久久久| 五月丁香六月婷婷综合网| 97精品人人A片免费看| 电影《战争与艾拉》免费观看| AVDV久久| 午夜性爱影视一区77| 国产日韩精品SUV| 欧美性爱特黄一级aaaassss| 伊久大香蕉| 停停五月天激情网| 色婷婷综合电影| 极品另类| 99成人网一区| 中文字幕无码人妻少妇免费视频 | 婷婷字幕在线| 久久五月天综合| 99男人的天堂| 国产精品色| 婷婷黄色五月天在线视频| 热91久| 亚洲AV成人无码久久精品老人法拉利| 91久久国产综合久久| 国产成人高清| 五月开心婷婷中文字幕| 91九色最新视频| 婷婷激情社区| 亚洲综合视频网| www.激情| 婷婷无码视频| 五月天婷婷爱| 丁香六月综合激情| 79色色色色| 狼友超碰| 99精品视频在线观看| 人人人va亚洲视频在线| av在线播放网址| 婷婷在线精品| 狠狠激情五月天| 欧美精产国品一二三区| 中文字幕按摩做爰| 天天狠狠六月婷丁香影院| 美女黄频aⅴ视频| 狠狠综合| 婷婷五月天亚洲五码| 东京热免费视频| 丁香五月婷婷手机| 影音先锋一区二区三区| 一本色道久久88加勒比| 婷婷六月天| 激情涩涩网| 婷婷伊人綜合中文| 五月婷婷色五月| 久久精品视频9| 婷婷久久亚洲| 婷婷伊人综合| 天天色色天天| 天天综合在线网| 五六月婷婷| 98热精品| 成熟妇人A片免费看网站| 99re8这里只有精品99re8热视频| 婷婷丁香五月亚洲欧美| 九九久久污| 午夜一区| 成人精品人妻| 999影院成人在线影院| 亚洲色五月| 久久香视频| 五月激情小说| A片一曲| 色永久| 久久这里面只有精品视频| 五月丁香毛片| 天天干人人奸97| 色色色色五月| 欧洲色色| 五月丁香在线婷婷美女| 激情网站五月| 97热精品| 国产在线视频1234| www五月婷婷| 可以直接看的av| 日本九婷婷| 99re在线这里只有精品视频首页| 美女天天久久| 丁香五月首页| 玖玖婷婷精品| 98热精品| 久久婷五月影院| 粉嫩AV久久一区二区三区| 久久婷婷亚洲| 日本天堂爱爱| 亚洲国产精品VA在线看黑人| 五月丁香激情婷婷综合| 五月天婷婷在线观看精品男人| 在线看片av| www.yw色| 影音先锋91男人资源在线播放| AA片在线观看视频在线播放 | 怡红院精品视频久久久久久久久| 久久杏爱视频| 午夜色色色极品视频| 久久总和99| 丁香五月综合久久综合| 99热观看| 五月天久久小说| 狠狠色 综合色区| www.五月天| 色色99| 97人人操人人干| 婷婷五月天成人网| 色婷婷五月综合| 天天干天天干天天干天天干天| 婷婷五月天网址| 婷婷五月天av| 亚洲婷婷五月| 天天综合五月| 五月丁香久久综合| 成人电影一区| 99热国产这里只有精品| 精品色| 热九九精品| 91久操| 婷婷爱五月天| 超碰久热| 大香蕉220| 热日韩欧美| 五月婷婷综合在线视频| 久热精彩视频98| 久久爱综合| 成人丁香五月婷| 67194中文字幕| 婷婷五月综激情| 色综合婷婷| 丁香五月综合久久八| 日日日,com| 丁香五月婷婷成人综合| 综合五月天天天天天五月| 狠狠狠狠操| 日日爽日日爽| 99资源在线视频| 超碰久热| 五月综合激情网| 九九热狼人| 天天透天天干| 亚洲操逼片| 婷婷五月蜜桃成人桃色丁香| 极品人妻videosss人妻| 99综合色| 婷婷色网站| 99久久网站| 69超碰在线| 在线不卡的视频| 99男人的天堂| 蜘蛛女免费观看完整版高清电影 | 黄桃AV无码免费一区二区三区| 超碰日韩成人| 婷婷五月丁香人妻无码高清| 99熟女啪啪视频| 亚洲思思热久| 这里只有免费的精品| 色噜噜狠噜噜视频| 激情婷婷丁香| 青青草原亚洲久| XX久久| 久热这里有精品视频| 丁香五月激情视频| 九九99精品视频| 久久小视频| 人人操91色| 婷婷久久五月| 激情综合六月| 五月丁香婷婷久久| 51精品国自产在线| 激情文学第四色婷婷丁香五月| 99视频在线| 五月婷婷深爱六月| 97干欧美| 天天干天天日蜜臀av| www.97碰碰com| 97激情五月天| 99九九在线视频| 国产SUV精品一区二区6| 亚洲成人网站在线| 激情影院免费视频婷婷五月天| 人人播| 噼里啪啦在线观看免费完整版视频| 高清av在线国产| 国产精品久久久99视频| 婷婷色基地| 九九这里有精品| 综合久久伊人| 国产va在线视频| 无码动漫av| 五月激香蕉网| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 丁香六月色婷婷| 丁香婷婷久久五月天| 久久久人妻不卡| 五月丁香婷婷基地| 激情内射人妻1区2区3区| 91成人看片| 色性五月天| 97五月天| 大香蕉五月婷婷| 婷婷六月激情综合| 久久AAAA片一区二区| 玖玖爱资源站| 婷婷五月天伊人网| 中文字幕乱码亚洲精品一区| 婷婷久月| 久久婷婷五月综合| 五月婷无码| 插插插丁香五月婷婷| 婷婷色啪| 婷婷自拍| 五月天基地| 被强行糟蹋的女人A片| 成人五月丁香社区| 久久这里有精品| 久久综合66| 精品婷婷五月视| 色婷婷综合网站| 天天综合久久| www.日日夜夜.com| 99丁香五月| 丁香婷婷人妻综合网| 91婷婷| 亚洲人妻Av| 激情五月天综合| 婷婷成人av| 99精品久久久久久久婷婷久久| 五月天激情小说| 九九热欧美| 九九99精品视频| 日韩视频女神99| 丁香狠狠色婷婷久久无码视频| 亚洲婷婷性爱| 久久这里只有精品网| 国产激情久久久| 影音先锋按摩| 狠狠草在线观看| 亚洲综合视频在线| 五月丁香91| 日本九九视频| 婷婷五月天激情网| 97操碰在线视频| 色无码| 婷婷丁香成人五月天| 丁香六月综合| 欧美色97| 大香蕉五月婷婷| 婷婷97碰碰| 久热综合| 开心五月婷婷激情| 五月天亭亭俺也| 中文精品久久久久人妻不| 五月丁香色| 色婷婷婷av | 亚洲一色色色色色色色色| 色9999日韩国产| 久久狠色噜噜狠狠狠狠97| 亚州美女| 天天综合亚洲综合| 丁香av网| 丁香五月天激情综合| 五月丁香婷婷婷激情爱爱| 先锋资源91| 婷婷久久五月| 成人在线日韩| 天天狠狠色噜噜| 丁香色婷婷色手机免费在线| 久久婷婷五月天亚洲欧美| 超碰永久在线| 日日夜夜天天| 色婷久久| 欧亚成人A片一区二区| sewuyuejiqingwang| 久9综合| 月婷婷婷婷五月| 影视av久久久噜噜噜噜噜三级| 亚洲啪视频| 久久亚洲婷婷综合色五月| 亚洲天堂婷婷丁香| 看久久性爱99视频| 婷婷涩五月| 色综合久久888| 五月天婷婷久久综合| 婷婷五月欧美AA片免费| 99爽视频| 影音先锋女人av鲁色资源网小说免费| chaopengdaxiangjiao| 婷婷噜噜| 五月丁香婷婷基地| 屁股翘好撅高迎合跪趴| 激情五月天开心总和网| 中文精品在| 久草热8精品视频在线观看| 狠狠色综合五月| pom538精品视频| 亚洲婷婷五月天| 丁香婷婷成人在线播放| 色婷婷88| 亚洲熟妇AV乱码在线观看| 色五月丁香六月欧美综合| 色狠狠综合网| 国产真实乱了老女人视频| 亚洲婷婷免费| 在线观看五月婷婷网| 亚洲永远av在线播放| 色综合久久44| 另类小说五月天综合网| 丁香婷婷色色| 成人精品视频99在线观看免费| 99热精品在这里| 色VA| 免费AV在线网址| 日本色色色| 另类激情首页| 天天日天天摸天天| 91精品又长又大又粗又爽又猛| 色婷婷激情| 五月丁香色综合| 激情五月丁香在线观看直播| 超碰在线99热| 丁香五月天久久| 久久激情五月| 五月天综合激情网| 日日干日日色| 狠狠色97| 婷婷伊人综合| 五月婷婷六月天| 久久丁香五月| 综合热无码| 99精品热| 色欧美日| 精品无码久久久久久久久| 天天综合五月天| www.五月婷婷久久.com| 99精品国产热久久91色欲| 97人人操人人拍| 99这里有精品| 香蕉国产2013| 日本婷婷色日| 丁香五月AV综合激情| www.99热视频| 另类丁香综合| 色九九综合色| 成人日韩欧美| 爽极品色| 天天久| 深爱激情久久| 国庆精品久久| 丁香五月中文字幕| 色青五月天| 亚洲岛国电影| 丰满少妇猛烈A片免费看观看| 久热人妻| 久久婷婷五月天激情| 天天爽综合网| 性爱电影科技贸易有限公司| 国产日产成人亚洲欧美国产VA| 婷婷综合网性| 99小视频在线观看| 精品9久| 久久97久久99久久综合欧美| 激情五月天小说网| 婷婷伊人久久| 99狠狠操一| 五月婷婷69| 婷婷日日夜夜| 久久欧洲综合网| 狠狠干伊人| 高清无码 一区 二区 三区| 五月丁香啪啪网| 久久东京热婷婷五月| 天天干天天曰天天射| 丁香9月婷婷| 亚洲图片 丁香婷婷| 日本色色影片| 51精品国自产在线| 精品一二三区久久AAA片| 蜜臀AV在线观看| 欧美肉大捧一进一出免费视频| 激情五月天色色网| 日本三级日本三级99| 亚洲热视频| 亚洲综合五月天婷婷| 色综合色色| 欧美在线视频99| 久久五月天婷婷| 久久婷婷五月| 婷婷啪啪| 五月天色社区| 激情小说五月天| 91色久| 国产在线aaa片一区二区99| 天天干一干| 99精品视频在线观看| 91操人人操| tingtingseav| 99热精品超碰| 大香蕉免费9| 97黑人精品区| 9999三级片| 欧美操人| 天天摸天天舔天天爽| 激情二色月| 五月天婷婷视频30| 婷婷五月天高清无码| 五月激情站| 色哟哟www| 激情综合色| 五月综合激情网| 综合色五月亭亭| 亚洲视频码| 2020日日干| 婷婷综合网| 丁香久色| 亚洲第一色区| 激情婷婷六月天| www.91操| 深爱五月婷婷| 国产99久| 九九99热久久精品66中文字幕| 九九这里是免费的视频5| 激情图片亚洲| 色情免费视频播放| 五月丁香五月婷婷| 综合婷婷| 国产美女无遮挡裸体毛片A片| 人人操9| 操逼三区| 777久久精品| 99视频网| 色情五月综合婷婷| 精品亚洲国产成AV人片传媒| 人人操91色| 啪啪一区| 天天透天天摸天天舔| 日本九婷婷| 婷婷五月天视频| 丁香久久在线| 猫咪伊人久久| 色天天综合色| 五月开心久久| 99久久久久| WWW.五月com| 丁香婷婷啪啪| 伊人色欲五月天| 色一情一乱一乱一区91| 97在线观视频免费观看 | 五月天国产| 99热97| 色综合久久无码| 热中文字幕| 久热只有这里精品| 激情五月丁香五月| 91九色超碰| 久热人妻| 久热网站| 99久在线精品99re8| 激情婷婷99| 无码九九| 无码色| 日韩黄色影院| 色婷婷中文在线| av人人操| 久草热在线视频| 激情丁香五月| 日韩99色| 久久综合影院 | 色哟哟www| 亚洲中文乱字字幕线在永久| 大香蕉婷婷丁香视频在线| 精品九九九久| 99色这里| 色播播五月天| 婷婷最新地址| 99久久精彩视频。| 色色色热| 99婷五月| 久久亚洲A| 97干视频在线| 99久久婷婷精品视频| 无码四色色色| 99资源在线视频| 色五月激情图片| 人妻系列久久久久久久久久久| 国产婷婷五月天| 97色综合视频| tingtingzonghewang| 五月天激情国产综合婷婷| 色婷婷久久视屏| 婷婷五月天亚洲丁香| 嫩草AV久久伊人妇女超级A | 99热精品超碰| 狠狠五月天婷婷激情网。| 天天操夜夜操| 亚洲综合1024| 成人va在线播放| 亚洲中文字幕翔田千里| 五月婷无码| 天天操综合网| 91一起艹| 91日日日| 日韩大片艹艹| 五月天婷婷丁香社区| 精品无码久久久久久久久| 香蕉婷婷| 99A级片| www:99热视频| 五月丁香无码视频| 一级片操逼视频| 久久网站观看免费欧洲国产| 久操热线| 五月婷婷偷拍| 99热精品观看| 97色图片中文字幕视频在线观看| 激情亚洲网| 色婷婷四虎| 日日操日日爽| 五月天丁香婷婷视频网址| 午夜 外网 精品 在线| 丁香五月激情婷婷| 五月丁香六月色婷婷综合五月天| 中文字幕av在线| w婷婷五月婷婷w| 毛片新网地| 香蕉久久国产av一区二区| 六月色婷婷| 色婷婷国产精品综合在线观看| 色激情五月天| 超碰人人99| 亚洲免费av在线| www.色9| 亚洲综合色婷婷| 婷婷丁香五月麻豆| 六月丁香激情网| 激情五月天婷婷激情| 99视频内射三四| 色五月天天| 少妇被下春药玩弄A片| 欧美黑人巨大猛烈cuckold| 亚洲欧美在线观看| 五月天婷婷久久综合| 91色性感五月婷婷丁香| 99久久免费精品| 9 1 A v久久久| 玖玖婷婷五月| 久久性爱视频| 96丁香六月婷婷蜜桃综合久久| 丁香九月综合| 欧美内射AAAAAAXXXXX| 欧美性丁香色色五月天| 丁香五月婷婷欧美性爱| 看国产探花操逼三级片| 丁香花婷婷五月天| 97五月久久丁香婷婷| 操99| 日日夜夜狠狠| 伊人婷婷五月天av| 中文字幕+中文在线| 午夜成人综合| 永久无码色| 免看黄大片AA | 人草人人| 九九亚洲综合| 色播综合| 色爱终和网| 欧美性久| 色婷婷激情| 99精品无码网站| 婷婷五月天免费视频| 色五月欧美| 五月天婷婷色| 婷婷五月天天| 天天爱天天操| 五月开心婷婷极品激情| 综合天堂AV久久久久久久| 思思热在线播放| 99碰超| 精品少妇人妻AV无码专区偷人| 色99网| AV在线中文| av大片在线| 天天草天天爽| 六月婷婷深深爱| 91a片爽| 亚洲AV日韩无码| 久久视频婷婷视频| 亚洲激情| 日日干夜夜干| 99精品大片| 五月丁香成人网| 色九四色| 婷婷五月天黄色| 涩涩婷婷五月| 超碰97干| 久久人人做人人妻人人玩精品va| 日日爽夜夜爽| 五月丁香婷婷AV天堂| 丁香五月婷婷综合91| 久久精彩免费视频| 天天日天天草| 婷婷五月激情基地| 成人永久免费视频在线观看|