扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:I-soft 来源:CSDN 2007年11月18日
关键字:
我们找到ws2bth.h头文件,可以看到AF_BTH代表十进制数32,而BTHPROTO_RFCOMM代表十六进制数0x0003,恰好和ProtocolType.Ggp代表的数值是一致的。所以,我们在实例化Socket时是这么写的:
以下是引用片段: new Socket((AddressFamily) 0x20, SocketType.Stream, ProtocolType.Ggp); |
Socket实例化出来了,其他的当然就都好说了,这里不再赘述。
六. 蓝牙的安全设置
蓝牙比红外多了安全方面的设置,所以就需要多一些代码来处理这些。具体也就不多说了,其实也就是一些非托管代码的包装调用,这些API在Btdrt.dll中:
获取配对码请求:
以下是引用片段: [DllImport("Btdrt.dll", SetLastError=true)] public static extern int BthGetPINRequest(byte[] pba); |
设置配对码:
以下是引用片段: [DllImport("btdrt.dll", SetLastError=true)] public static extern int BthSetPIN(byte[] pba, int cPinLength, byte[] ppin); |
比较麻烦点的是配对,总共有三步操作:
首先是创建ACL连接:
以下是引用片段: [DllImport("Btdrt.dll", SetLastError=true)] public static extern int BthCreateACLConnection(byte[] pbt, ref ushort phandle); |
然后是配对码验证:
以下是引用片段: [DllImport("Btdrt.dll", SetLastError=true)] public static extern int BthAuthenticate(byte[] pbt); |
然后一定要关闭连接:
以下是引用片段: [DllImport("Btdrt.dll", SetLastError=true)] public static extern int BthCloseConnection(ushort handle); |
七. 设置蓝牙无线电状态
我们知道,蓝牙无线电有打开、关闭、可发现三种状态,那么我们如何实现编程
我想这个一定大家都知道了,因为网上有很多关于这个的文章:
先写一个枚举:
以下是引用片段: public enum RadioMode { Connectable = 1, Discoverable = 2, PowerOff = 0 } |
然后写一个函数调用非托管代码即可:
以下是引用片段: [DllImport("BthUtil.dll", SetLastError=true)] public static extern int BthSetMode(RadioMode dwMode); |
获取无线电状态的话就用下面的函数:
以下是引用片段: [DllImport("BthUtil.dll", SetLastError=true)] public static extern int BthGetMode(ref RadioMode dwMode); |
八. 已知的问题
可能是因为蓝牙控制
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者