4093|8

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

蓝牙SPP的问题 [复制链接]

以下是放在CE上用作服务器端的代码:
   
   SOCKET s = socket (AF_BT, SOCK_STREAM, BTHPROTO_RFCOMM);  

    SOCKADDR_BTH sa;   
    memset (&sa, 0, sizeof(sa));   
   
    sa.addressFamily = AF_BT;   
    sa.port = 0;
    sa.btAddr = 0x0017E832C318; //CE上蓝牙的地址
       
    if (bind (s, (SOCKADDR *)&sa, sizeof(sa)))   
    {   
        wprintf (L"Bind failed, error = %d\n", WSAGetLastError ());   
        goto exit;   
    }

    iLen = sizeof(sa);
       
    if (SOCKET_ERROR == getsockname(s, (SOCKADDR*)&sa, &iLen))   
    {   
        wprintf (L"getsockname failed, error = %d\n", WSAGetLastError ());   
        goto exit;   
    }
   
    // 注册SPP服务
    if(BTSetSPPService((unsigned char)sa.port) == FALSE )   
    {   
            RETAILMSG(1,(L"BTAGSVC: Error adding SDP record. error code = %d \n",GetLastError()));   
            goto exit;   
    }   
  
    if (listen (s, 2))   
    {   
        wprintf (L"Listen failed, error = %d\n", WSAGetLastError ());   
    }   

    while(1)   
    {         
         sa2.addressFamily = AF_BT;   
   
         if(s == INVALID_SOCKET)   
        {
            wprintf (L" socket S is invalid socket \n");   
        }
   
        wprintf (L"wait for connect......! \n");   
         SPPDATABUF.sockClient = accept (s,(sockaddr *)&sa2, &size);  //  一直都接收不到客户端的连接
                      .................
    }


accept会一直被阻塞,接收不到连接。
从PC用蓝牙软件能发现CE上的蓝牙SPP服务,但双击连接时却会报“蓝牙服务不可用”的错误。

最新回复

学习中  详情 回复 发表于 2015-5-28 13:37
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
蓝牙 还没弄过,

MARK,顶起,
我也学习下。
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
即将要做这个事情。呵呵。
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

4
 
一般都是直接控制蓝牙模块,还没有如此玩过蓝牙,顶一个
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 domworldjohn 的回复:
一般都是直接控制蓝牙模块,还没有如此玩过蓝牙,顶一个


这样也是好的。呵呵。
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

6
 
从PC用蓝牙软件能发现CE上的蓝牙SPP服务,但双击连接时却会报“蓝牙服务不可用”的错误。

我个情况这我以前也碰到过,时间久了~好像是要确定你的CE上的蓝牙这项服务支持、开启吗?

我当时是用USB接口的蓝牙,在CE6.0平台上,参考MS的帮助的

不过我是用CE自带的应用程序,当然你也可以自己写

 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

7
 
我看的SSP server寫法跟樓主幾乎差不多
只差在沒有註冊  BTSetSPPService跟chennel
樓主的 client是怎摸實現的呢?
阻塞在accept是不是client根本沒過來(channel不相同?)

 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
SPP应该串口服务吧,
注册串口服务端的话用这个就行:
PORTEMUPortParams pp;
memset (&pp, 0, sizeof(pp));
pp.flocal = TRUE;
pp.channel = RFCOMM_CHANNEL_MULTIPLE ;
RegisterDevice (L"COM", 7, L"btd.dll", (DWORD)&pp);
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

9
 
学习中
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表