从官网下载WCHBLEDLL,移植到C#工程,读取服务和特征值UUID列表不稳定

昨天研究WCHBLEDLL,移植到了C#工程。按照文档里的API调用顺序,可以读写特征值了。但是获取服务UUID和特征UUID的函数调用非常不稳定。WCHBLEGetAllServicesUUID返回的数组长度有时候是0,但是查看数组指针指向的内存,是有预期数据和MFC Demo里面的列表一致

现在通过每次延时3秒,循环去调用获取UUID的API,大概4-7次左右才有数组长度;我看MFC Demo的源码并没有这种循环机制,仅仅调用一次数据就出来了,有点不知所措了!


附从官网下载的MFC Demo地址:/downloads/WCHBleLib_MultiOS_ZIP.html

1692509862193115.png

1692509862120307.png




     请问打开设备怎么写的,我这里成功不了呢,不反回句柄    
         
         
         /// 
        /// 连接状态委托
        /// 
        /// 设备句柄
        /// 连接状态,0-断开、1-连接
        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
        public delegate  void FunDevConnChangeCallBack(IntPtr hDev, int ConnectStatus);

        /// 
        /// 打开设备
        /// 
        /// 设备路径,可通过扫描设备获取
        /// 上传设备状态的回调函数
        /// 
        [DllImport("WCHBLEDLL.dll", EntryPoint = "WCHBLEOpenDevice", SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = false, CallingConvention = CallingConvention.Winapi)]
        public static extern IntPtr WCHBLEOpenDevice(string DevID, FunDevConnChangeCallBack pFunDevConnChange)

前端调用

image.png


只有登录才能回复,可以选择微信账号登录