wch_ble_dll 連接成功回調(diào)函數(shù)不生效,無法獲取特征值 ,請(qǐng)大佬們幫看看

各位大佬好

????按照官方文檔的示例??

????????

????WCHBLEInit??

????WCHBLEEnumDevice?

????WCHBLEOpenDevice? ?

? ? 上邊這三個(gè)函數(shù)都通了,? 然后?WCHBLEOpenDevice 這個(gè)方法的回調(diào)函數(shù)沒有觸發(fā),當(dāng)然這個(gè)不影響流程不用也行


????WCHBLEGetAllServicesUUID

? ? 然后這個(gè)返回的uuid 是前邊四位, 比如說我在瀏覽器上使用的uuid 全稱叫做?0000abf0-0000-1000-8000-00805f9b34fb

? ? 這個(gè)函數(shù)返回的是 f0 ab? 一個(gè) ushort類型的兩個(gè)字節(jié) ,

? ? 我想問一下? ,這個(gè)返回值是全部的嗎?還是說他們被截?cái)嗔恕?/span>


????WCHBLEGetMtu

????這個(gè)mtu也沒什么問題

????

????WCHBLEGetCharacteristicByUUID?

????這個(gè)是我比較苦惱的一個(gè)方法,我看文檔上邊他的入?yún)⑹?

? ? [?WCHBLEHANDLE, 'ushort',?ref.refType('ushort'),?ref.refType('ushort') ]

? ? 除了第二個(gè)參數(shù)? 比?WCHBLEGetAllServicesUUID 多了一個(gè)?ushort 以外? 基本都是一樣的。

? ? 但是執(zhí)行完?WCHBLEGetCharacteristicByUUID? 這個(gè)方法, 內(nèi)存里邊什么都沒有 ,返回值是0,也不報(bào)錯(cuò)。

? ? 第一個(gè)參數(shù)因?yàn)榍斑吅枚喾椒ㄓ昧怂晕覜]有考慮他有問題

? ? 第三個(gè)和第四個(gè)參數(shù),我改了很多格式或者直接傳入buffer

? ? 我比較懷疑的是第二個(gè)參數(shù) ,我嘗試了用

????const ServiceUUID = ref.alloc(ref.types.ushort)

? ? ? ? ? ? ServiceUUID[0] = 0xf0

? ? ? ? ? ? ServiceUUID[1] = 0xab

????或者

????

????const?ServiceUUID?=?ref.alloc(ref.types.ushort)

? ? ? ? ? ??ServiceUUID[0] =?0xab

? ? ? ? ? ??ServiceUUID[1] =?0xf0


????或者 直接使用?WCHBLEGetAllServicesUUID 第二個(gè)參數(shù)的返回值??pUUIDArry

? ??image.png


? ? 甚至是字符串


? ? 下邊是我的定義和調(diào)用? 有大佬能幫忙看看嗎?救救孩子


? ? ? ? const voidRef = ref.refType('void')


? ? ? ? // 訂閱回調(diào)

? ? ? ? const ParamInf = ref.refType('void')

? ? ? ? // 藍(lán)牙對(duì)象

? ? ? ? const WCHBLEHANDLE = ref.refType('void')

? ? ? ? // 連接回調(diào)函數(shù)類型

? ? ? ? const pFunDevConnChangeCallBack ?= ffi.Function('void',[voidRef,'uchar'])

? ? ? ? // 訂閱回調(diào)

? ? ? ? const pFunReadCallBack = ffi.Function('void',[ParamInf,ref.refType('char'),'ulong'] )

? ? ? ? const dll = ffi.Library('./LIB//x64/WCHBLEDLL.dll', {

? ? ? ? ? ? 'WCHBLEOpenDevice': [ WCHBLEHANDLE, ['char*',pFunDevConnChangeCallBack ] ],

? ? ? ? ? ? 'WCHBLEGetCharacteristicByUUID': [ 'uchar',

????????????????[WCHBLEHANDLE,'ushort',ref.refType('ushort'),ref.refType('ushort') ????????]

?????????????]

???????? });

????????????


????????

? ? ? ? // 連接藍(lán)牙回調(diào)函數(shù)

? ? ? ? const pFunDevConnChange = ffi.Callback('void',[voidRef,'uchar'],function (hDev,ConnectStatus){

? ? ? ? ? ? console.log('xxx')

? ? ? ? ? ? console.log(hDev)

? ? ? ? ? ? console.log(ConnectStatus)

? ? ? ? })

? ? ? ? global.__bleCallback = pFunDevConnChange

? ? ? ? const activeBleBufferRef = bleMap.get('EVA_ZERO_PA01')

? ? ? ? // 連接

? ? ? ? const WCHBLEHANDLEResult = ?await dll.WCHBLEOpenDevice(activeBleBufferRef,pFunDevConnChange)

? ? ? ? global.WCHBLEHANDLEResult = WCHBLEHANDLEResult

? ? ? ? console.log('連接成功')

????????????

? ? ? ?// 獲取主服務(wù)下得特征值服務(wù)

? ? ? ? // 函數(shù)返回值為 0 成功;

? ? ? ? // 返回值為 1 設(shè)備句柄無效;

? ? ? ? // 返回值為其他表示獲取失敗。

? ? ? ? const pCharacteristicUUIDArry = Buffer.alloc(200)

? ? ? ? const pCharacteristicUUIDArryLen = ref.alloc(ref.types.ushort,404)

? ?

? ? ? ? const WCHBLEGetCharacteristicByUUIDResult = ?await dll.WCHBLEGetCharacteristicByUUID(

? ? ? ? ? ? WCHBLEHANDLEResult,

? ? ? ? ? ? activeService,// 這個(gè)是上圖 f0 ab 那段內(nèi)存

? ? ? ? ? ? pCharacteristicUUIDArry,

? ? ? ? ? ? pCharacteristicUUIDArryLen

? ? ? ? )

? ? ? ? if(WCHBLEGetCharacteristicByUUIDResult){

? ? ? ? ? ? console.log('獲取特征值服務(wù)失敗',WCHBLEGetCharacteristicByUUIDResult)

? ? ? ? ? ? return

? ? ? ? }



熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

我郵箱個(gè)人信息保護(hù),已隱藏 謝謝大佬們


或者誰能提供下? ?dll 的源碼嗎? 官網(wǎng)沒有找到, 謝謝


您好,請(qǐng)查收郵件獲取聯(lián)系方式。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频