蓝牙设备与PC socket通讯
来源:互联网 发布:可靠性工程师 知乎 编辑:程序博客网 时间:2024/05/01 06:41
1. 蓝牙适配器插入PC USB口(前提蓝牙适配器驱动要装好)
2. 开启蓝牙key或蓝牙手机等蓝牙设备。
2. 开启蓝牙key或蓝牙手机等蓝牙设备。
3. 运行一下程序
#include "stdafx.h"
#include <initguid.h>#include <winsock2.h>#include <ws2bth.h>#pragma comment(lib,"ws2_32.lib")#pragma comment(lib,"irprops.lib")int SDPGetPort( const char *addr , LPGUID guid ){int nRet = 0;int port = 0;HANDLE h ;WSAQUERYSET *qs ;DWORD flags = 0;DWORD qs_len ;bool done ;qs_len = sizeof(WSAQUERYSET ) ;qs = (WSAQUERYSET* ) malloc( qs_len ) ;ZeroMemory( qs , qs_len ) ;qs->dwSize = sizeof(WSAQUERYSET ) ;qs->lpServiceClassId = guid ;qs->dwNameSpace = NS_BTH ;qs->dwNumberOfCsAddrs = 0;qs->lpszContext = (LPSTR) addr ;flags = LUP_FLUSHCACHE | LUP_RETURN_ADDR;nRet = WSALookupServiceBegin ( qs , flags, &h );if( SOCKET_ERROR == nRet ) {nRet = WSAGetLastError();ExitProcess ( 2 ) ;}done = false ;while ( ! done ) {if( SOCKET_ERROR == WSALookupServiceNext (h , flags, &qs_len , qs) ) {int error = WSAGetLastError ( ) ;if( error == WSAEFAULT ) {free(qs ) ;qs = (WSAQUERYSET* ) malloc( qs_len ) ;} else if (error == WSA_E_NO_MORE ) {done = true ;} else {ExitProcess ( 2 ) ;}} else {SOCKADDR_BTH *sa =(SOCKADDR_BTH* )qs->lpcsaBuffer->RemoteAddr.lpSockaddr ;port = sa->port ;}}free(qs ) ;WSALookupServiceEnd( h ) ;return port ;}int _tmain(int argc , _TCHAR* argv[ ] ){int nRet = 0;SOCKET sock ;SOCKADDR_BTH sa = { 0 } ;int sa_len = sizeof(sa ) ;WORD wVersionRequested ;WSADATA wsaData ;wVersionRequested = MAKEWORD( 2, 0 );if( WSAStartup( wVersionRequested, &wsaData ) != 0 ) {ExitProcess ( 2 ) ;}if( SOCKET_ERROR == WSAStringToAddress ( _T("00:15:83:5c:60:fe")/*argv[1]*/ , AF_BTH ,NULL, (LPSOCKADDR) &sa, &sa_len ) ) {nRet = GetLastError();ExitProcess ( 2 ) ;}// query it for the right port// create the socketsock = socket (AF_BTH , SOCK_STREAM , BTHPROTO_RFCOMM ) ;if( SOCKET_ERROR == sock ) {ExitProcess ( 2 ) ;}// fill in the rest of the SOCKADDR_BTH structsa.port = SDPGetPort ("00:15:83:5c:60:fe", (LPGUID)&SerialPortServiceClass_UUID/*(LPGUID) &SAMPLE_UUID*/ ) ;if( sa.port == 0 ) {ExitProcess ( 2 ) ;}nRet = connect( sock, (LPSOCKADDR) &sa , sa_len );if( SOCKET_ERROR == nRet ) {nRet = GetLastError();ExitProcess ( 2 ) ;}send ( sock , "hello!" , 5, 0 );closesocket (sock ) ;return 0;}4. 注:
00:15:83:5c:60:fe 为 蓝牙设备的mac地址为六段。
connet运行时,出现连接设备的窗口,需要点击下一步,这里把mac地址固定,相当于省略了选的哪一步。
《Cambridge - Bluetooth Essentials for Programmers.pdf》 网上可以下载,可以参考。
0 0
- 蓝牙设备与PC socket通讯
- android 手机与蓝牙设备的通讯
- Android手机终端与PC实现socket通讯 Socket编程
- android app与蓝牙设备之间连接与通讯
- Android开发蓝牙与ble设备的通讯
- Android通过Socket(TCP/IP)与PC通讯
- Android通过Socket(TCP/IP)与PC通讯
- Android通过Socket(TCP/IP)与PC通讯
- Android通过Socket(TCP/IP)与PC通讯
- Android通过Socket(TCP/IP)与PC通讯
- Android通过Socket(TCP/IP)与PC通讯
- Android通过Socket(TCP/IP)与PC通讯
- Windows Phone 7 下 Socket(TCP) 与 PC 通讯
- Android通过Socket(TCP/IP)与PC通讯
- Android通过Socket(TCP/IP)与PC通讯
- Android通过Socket(TCP/IP)与PC通讯
- 利用socket直接与adb的pc service通讯
- android用socket与PC用C#的socket通讯使PC关机
- 不需要移植,在keil上打个勾就让stm32跑起操作系统
- soapUI4.5模拟客户端测试webservice接口,含性能测试
- 在vs中开发QT时使能控制台输出的方法
- 第十一周实践项目1 - 二叉树算法验证(2)二叉树构造算法的验证
- 基准测试工具之sysbench下载安装
- 蓝牙设备与PC socket通讯
- Android JNI
- 软件版本管理规范
- 第11周项目1-验证算法(2)二叉树构造算法的验证
- PG SQL update 嵌套select写法
- 探索Android软键盘的疑难杂症
- 第十一周项目一 验证算法(1)层次遍历算法的验证
- iOS searchBar底部黑线
- 工业设计师