/*+++++++++++Startup WSA+++++++++++++++++*/
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD( 2, 2 );
WSAStartup( wVersionRequested, &wsaData );
/*+++++++++++++Search for my device++++++++++++++++*/
INT iResult = 0;
LPWSAQUERYSET pwsaResults;
DWORD dwSize = 0;
WSAQUERYSET wsaq;
HANDLE hLookup = 0;
memset (&wsaq, 0, sizeof(wsaq));
wsaq.dwSize = sizeof(wsaq);
wsaq.dwNameSpace = NS_BTH;
wsaq.lpcsaBuffer = NULL;
WSALookupServiceBegin(&wsaq, LUP_CONTAINERS, &hLookup);
union {
CHAR buf[5000];
SOCKADDR_BTH __unused;
};
pwsaResults = (LPWSAQUERYSET) buf;
dwSize = sizeof(buf);
memset(pwsaResults,0,sizeof(WSAQUERYSET)<wbr></wbr>);
pwsaResults->dwSize = sizeof(WSAQUERYSET);
pwsaResults->dwNameSpace = NS_BTH;
pwsaResults->lpBlob = NULL;
WSALookupServiceNext (hLookup, LUP_RETURN_NAME | LUP_RETURN_ADDR, &dwSize, pwsaResults);
// Real device name is found ... pwsaResults->lpszServiceInstanceName;
/*+++++++++Now trying to register the virtual COM Port+++++++++++++++*/
PORTEMUPortParams pp;
memset (&pp, 0, sizeof(pp));
pp.channel = 0;
pp.flocal = false;
pp.device = reinterpret_cast<_SOCKADDR_BTH*>(pwsaRes<wbr></wbr>ults->lpcs<wbr></wbr>aBuffer->L<wbr></wbr>ocalAddr.l<wbr></wbr>pSockaddr)<wbr></wbr>->btAddr;
//the detected BT_ADDR
memcpy(&pp.uuidService, &CLSID_NULL, sizeof(GUID));
pp.uiportflags = RFCOMM_PORT_FLAGS_REMOTE_DCB;
int port = 4; //or anything else like 1..4,5 or 6..9 | Limit is 9 i think
HANDLE bth = RegisterDevice (L"COM", port, L"btd.dll", (DWORD)&pp));
/*++++++++the result+++++++++++++++++++*/
//bth == 0
//GetLastError () == ERROR_DEVICE_IN_USE :(
分享到:
相关推荐
蓝牙串口协议代码是用于设备间通过蓝牙技术进行数据传输的一种编程实现,主要涉及蓝牙搜索、连接和通信协议。在物联网和嵌入式系统中,蓝牙串口协议被广泛应用于移动设备与硬件设备间的交互,如智能轮椅、健康监测...
蓝牙模块串口通讯是无线通信领域中的一个重要环节,它使得设备之间可以通过串行接口进行数据交换,无需物理连接线。这种技术广泛应用于物联网(IoT)设备、智能硬件、穿戴设备以及移动应用等场景。本篇文章将深入探讨...
基于Service的蓝牙串口通讯方案可以提供后台运行的能力,使得应用程序即使在主界面关闭后仍能维持与蓝牙设备的连接。下面将详细阐述Android蓝牙通信的基本概念、Service的使用以及如何实现蓝牙串口通信。 首先,...
蓝牙通讯技术是一种短距离无线通信标准,它允许电子设备之间进行双向通信,无需物理连接。在血氧仪与PC的数据传输过程中,蓝牙起着关键作用。血氧仪内置蓝牙模块,该模块负责将采集到的血氧数据编码并发射出去。而PC...
通过阅读和学习这段代码,你可以了解如何在C#中使用蓝牙通信,包括查找设备、建立连接、发送和接收数据,以及处理可能遇到的各种情况。这个程序可以作为一个基础模板,为你的PDA蓝牙通信项目提供起点。 总的来说,...
设备扫描过程需要注意处理异步操作,因为设备搜索可能需要一段时间。 2. **连接与断开设备:** 找到目标设备后,我们可以使用`BluetoothDevice`类建立连接。`ConnectGatt()`方法用于连接BLE设备,并指定回调函数...
综上所述,这篇毕业论文全面探讨了基于Android的手机蓝牙通讯技术,从理论背景到实际应用,再到问题解决,都给出了详尽的分析和实践。它不仅对于理解Android蓝牙编程有指导意义,也为开发类似应用的工程师提供了参考...
蓝牙通讯技术,特别是低功耗蓝牙(BLE,Bluetooth Low Energy),是现代无线通信领域中的重要组成部分,广泛应用于物联网设备、可穿戴技术、智能家居等领域。本文将深入探讨蓝牙BLE的开启、关闭、扫描、连接和通信...
本文将详细解析“Android应用源码蓝牙聊天通讯有注释项目源码.zip”这一资源,主要涉及Android平台上的蓝牙通信技术及其源码实现。在Android系统中,蓝牙通信是通过BluetoothAdapter、BluetoothDevice、...
2. 需要有一个实验箱作为主机端的一个中转,可以认为是服务端的实验箱,它把蓝牙通讯获取的信息通过直连网线传送给主机系统。 3. 要考虑蓝牙协议的特性,注意一对多蓝牙设备连接的问题,不是想象那么简单的,要注意...
在51单片机系统中,蓝牙模块作为一个独立的硬件组件,通过串行接口(如UART)与单片机进行数据交换。这使得51单片机能够接收来自蓝牙模块的数据,并发送命令到模块,进而与手机或其他蓝牙设备通信。 为了实现51...
这段代码会输出蓝牙设备的ClassOfDevice、HardwareStatus、HciRevision等属性,帮助我们了解当前蓝牙设备的状态和配置。 接下来,我们想要进行蓝牙文件传输。在确保蓝牙设备(例如手机)已经与PC配对的前提下,我们...
这个过程可能需要一段时间,并且可能会抛出异常,需要进行异常处理。 6. **文件传输**: 连接建立后,我们可以使用`BluetoothSocket`的输入/输出流来传输数据。对于APK文件,我们可以使用`FileInputStream`和`...
在这个"stm32测试平台"项目中,开发者构建了一个集成OLED显示和蓝牙通信功能的测试框架,以方便在项目开发阶段进行功能验证和调试。 1. STM32测试框架: STM32测试框架通常包括固件库、驱动程序、中间件和应用程序...
而蓝牙模块则是一种无线通信模块,它使得电子设备之间能够通过蓝牙技术交换数据。将51单片机与蓝牙模块结合,可以实现设备间的无线串口通信,极大地扩展了51单片机的应用范围。 串口通信是51单片机与外部设备交互的...
本篇文档将深入探讨如何使用JNI来实现Android应用与C语言编写的串口通讯代码交互,从而控制蓝牙硬件模块。 首先,JNI是Java平台的一部分,允许Java代码调用本地已编译的语言,如C或C++。在Android环境中,JNI是应用...
然后调用connect()方法尝试建立连接,这个过程可能需要等待一段时间。 4. **数据传输**:连接成功后,就可以通过BluetoothSocket的inputStream和outputStream进行读写操作了。通常,会创建两个线程分别负责读取和...
这可以通过`BluetoothAdapter.enable()`方法实现,但注意此操作需要运行在后台服务中,因为它可能需要一段时间来完成。 3. **扫描蓝牙设备**:调用`BluetoothAdapter.startDiscovery()`来搜索附近的蓝牙设备。系统...
在STM32上实现蓝牙功能通常需要一个兼容的蓝牙模组,例如Nordic Semiconductor的nRF52系列,或者STM32自身的集成蓝牙选项。开发时,可能使用Bluetooth Stack,如BlueNRG-MS栈,通过串行接口与STM32进行通讯。STM32...
例如,Android系统对蓝牙扫描有时间限制,可能需要在扫描一段时间后停止,稍后再继续扫描。此外,BLE操作通常需要用户权限,需要在AndroidManifest.xml中声明`BLUETOOTH`和`BLUETOOTH_ADMIN`权限。 为了优化用户...