当前位置: 代码迷 >> Windows Mobile >> 求mobile6.1 操作蓝牙的源代码C#的解决方法
  详细解决方案

求mobile6.1 操作蓝牙的源代码C#的解决方法

热度:84   发布时间:2016-04-25 07:49:07.0
求mobile6.1 操作蓝牙的源代码C#的
只要实现蓝牙打开关闭 搜索其他蓝牙设备,连接、配对的功能就可以了。
要能和不同mobile的操作系统的蓝牙设备连接

网上找了好久,没有源代码,都只有介绍方法的。
都是用btdrt.dll 里的方法实现的。
可是这要涉及到托管代码和非托管代码的调用的问题,
这方面的代码我看都看不懂 更别提写了。相当郁闷!
类似如下得代码:(看了久头疼)
C# code
    [DllImport(WINSOCK_DLL)]        public static extern int WSALookupServiceBegin(byte[] querySet, int flags, ref int lookupHandle);        [DllImport(WINSOCK_DLL)]        public static extern int WSALookupServiceNext(int lookupHandle, int flags, ref int bufferLen, byte[] results);        [DllImport(WINSOCK_DLL)]        public static extern int WSALookupServiceEnd(int lookupHndle);byte[] buffer1 = new byte[0x400];BitConverter.GetBytes(60).CopyTo(buffer1, 0);GCHandle handle1 = GCHandle.Alloc(blob1.ToByteArray(), GCHandleType.Pinned);IntPtr ptr1 = handle1.AddrOfPinnedObject();BitConverter.GetBytes((int) (ptr1.ToInt32() + 4)).CopyTo(buffer1, 0x38);


我想请问下要掌握哪方面的知识,才能看得懂这样的代码啊?
提前表示感谢!

------解决方案--------------------
这段代码是典型的c#与WIN32底层通信的代码。 [DllImport(WINSOCK_DLL)]
这个是声明一个有C的DLL中的函数。
byte[] buffer1 = new byte[0x400];

BitConverter.GetBytes(60).CopyTo(buffer1, 0);这是把buffer1初始化
GCHandle handle1 = GCHandle.Alloc(blob1.ToByteArray(), GCHandleType.Pinned);//生命一个句柄。

IntPtr ptr1 = handle1.AddrOfPinnedObject();//得到句柄指针。

BitConverter.GetBytes((int) (ptr1.ToInt32() + 4)).CopyTo(buffer1, 0x38);//ptr1右移4位后考到buffer1



  相关解决方案