Gorrwen_97
2017-12-25 13:20
采纳率: 100%
浏览 1.7k
已采纳

嵌入式开发系统下,蓝牙传输数据的函数是什么?

int main(int argc, char*argv[])

{

int fd;

int nwrite;

tcs_dt_init(argc,argv);
while(1)
{

   memset(buf,0,1024);

   printf("input:\n");

   fgets(buf,1024,stdin);

   buf[strlen(buf)]='\n';

   nwrite = write(s,buf,strlen(buf));

   printf("%d bytes written\n",nwrite);

}
    刚刚接触嵌入式系统,学习蓝牙传输的时候遇到这样一段程序,目的是两台设备蓝牙连接传输数据。想请教各位前辈用于两台设备间传输或者发送数组的函数是哪一个啊?主函数就这么短而且实验后确实成功了,能通过蓝牙传输任何我输入的数据,难道是在头文件里吗?
    附相关函数与头文件:

#ifdef HAVE_CONFIG_H*

#include

#endif

#define DEBUG

#include

#include

#include

#include
#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

/* File control definitions */

#include

/* Error number definitions */

#include
/* POSIX terminal control definitions */

#include
/* Mluti-programming definitions*/

#include "bluetooth/bluetooth.h"

#include "bluetooth/hci.h"

#include "bluetooth/hci_lib.h"

#include "bluetooth/l2cap.h"

#include "bluetooth/sdp.h"

#include "bluetooth/sdp_lib.h"

#ifdef DEBUG
void debug(char * str)

{

printf(str);

}

#else
#define debug(str)

#endif

#define MAX_LEN 32

/*****************GLOBAL VARIABLE***********************************/

struct sockaddr_l2 addr = {0};

//for l2cap socket
int s;

int status;

char *dest;

int bytes_read;

unsigned char buf[1024];

void baswap(bdaddr_t *dst, const bdaddr_t *src)

{

    register unsigned char *d = (unsigned char *) dst;

    register const unsigned char *s = (const unsigned char *) src;

    register int i;

    for (i = 0; i < 6; i++)

            d[i] = s[5-i];

}

int str2ba(const char *str, bdaddr_t *ba)

{

    uint8_t b[6];

    const char *ptr = str;

    int i;

    for (i = 0; i < 6; i++)

    {

            b[i] = (uint8_t) strtol(ptr, NULL, 16);

            if (i != 5 && !(ptr = strchr(ptr, ':')))

                    ptr = ":00:00:00:00:00";

            ptr++;

}

    baswap(ba, (bdaddr_t *) b);

    return 0;

}

void tcs_dt_init(int argc,char*argv[])

{

char c;

int nwrite;

if(argc == 2)

{

dest = argv[1];

}

else

{

printf("usage::clinet addr\n");

exit(1);

}

  //unsigned char* addr;

  debug("\n||==========  get tcs_dt initialized =============||\n");


 debug("(1) dt opening l2cap socket...\n");

 //allocate socket
 printf("s = %d\n",s);

 s = socket(PF_BLUETOOTH,SOCK_SEQPACKET,BTPROTO_L2CAP);

 printf("s = %d\n",s);

if(s < 0)

{

 printf("create socket in dt failed...\n");

 exit(1);

}

else

{

debug(" dt open socket success!\n");

}

//bind socket to port 0x1001 of the first available bluetooth adaptor
addr.l2_family = AF_BLUETOOTH;
addr.l2_psm = htobs(0x1001);
str2ba(dest,&addr.l2_bdaddr);

debug("(2) connecting to gateway...\n");

printf("status = %d \n",status);

status = connect(s,(struct sockaddr*)&addr, sizeof(addr));

printf("status = %d \n",status);

if(status < 0)

 {

   printf("connect to gateway failed...\n");

   exit(1);

 }

else

 {

   debug("connect success!\n");

 }

c= 0x41;

//debug("||==========initialize tcs_dt end ================||\n\n");

sleep(1);

}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • hxy1596 2017-12-27 05:47
    已采纳

    蓝牙发送数据是有单独的发送函数的,但是蓝牙接收数据一般都在蓝牙的回调函数里。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • echo_single 2017-12-25 13:21
    • > ****__**
    
    
    
    
    评论
    解决 无用
    打赏 举报
  • qq_41363751 2017-12-25 13:22

    嵌入式蓝牙协议的数据传输实现 彭述清, 施心陵, 苗爱敏, 王恩永, 牛振阳 (云南大学 信息学院,云南 昆明 650091) 【摘 要】文中首先介绍了蓝牙协议栈中的主机控制器接口(HCI),服务发现协议(SDP)及逻辑链路控制与适配协议(L2CAP),并通过一个具体的嵌入式蓝牙数据传输系统,实现了这些协议。文章给出了该系统的硬件框图、软件的总体设计模块(主机控制器接口模块﹑服务发现模块和数据传输模块)、以及软件设计流程,最终实现了两个蓝牙模块之间的无线数据传输。 【关键词】蓝牙协议;短距离通信;数据传输;嵌入式系统 【中图分类号】TN914.3 【文献标识码】A 【文章编号】1002-0802(2009)09-0032-03 A Realization of Data Transmission Based on Embedded Bluetooth Protocol PENG Shu-qing, SHI Xin-ling, MIAO Ai-min, WANG En-yong, NIU Zhen-yang (School of Information Science and Engineering, Yunnan University, Kunming Yunnan 650091, China) 【Abstract】HCI, SDP and L2CAP in Bluetooth protocol stack are described first, which are implemented by a specific embedded Bluetooth system for data transmission. This paper also gives the hardware frame chart, software module (the module of HCI, the module of service discovered, module of data transmission) and software flow chart of the system. Finally, the wireless data transmission between the two Bluetooth modules is achieved. 【Key words】Bluetooth protocol; short-distance communication; data transmission; embedded system 0 引言 蓝牙技术的发展为短距离无线通信提供了良好的解决方案,拥有广阔的应用前景 [1-2] 。而现有大量的数字电子设备 之间的短距离通信仍然采用有线连接的方式,使用多有不便。本文在详细研究蓝牙协议栈的基础上,构建了一个嵌入式蓝牙传输系统,给出了硬件框图和软件实现。硬件部分中,主机采用支持再开发的Java智能手机,主机控制器采用CSR公司的BlueCore2蓝牙芯片;软件部分采用J2ME(Java2 Micro Edition)语言编程,实现蓝牙协议体系中的主机控制器接口(HCI)、服务发现协议(SDP)及逻辑链路控制与适配协议(L2CAP),最终实现了两个蓝牙模块之间的数据传输。本文的关键点与难点是协议的具体实现方法。本文基于HCI的开发模式可以使蓝牙模块透明化为普通的可编程外围器件,几乎可以使各种应用都直接内嵌这类蓝牙模块。 1 蓝牙协议介绍 蓝牙的应用开发可以从不同的协议层入手,可以通过采用蓝牙协议体系结构中的一个或多个协议来实现。本文将主要采用协议栈中的主机控制器接口(HCI),服务发现协议(SDP)及逻辑链路控制与适配协议(L2CAP)。 1.1 主机控制器接口(HCI) 主机控制器接口主要实现主机和蓝牙模块之间的软件接口,它存在于主机—传输层—主机控制器(即蓝牙模块)三部分,并在每一层为HCI系统提供不同的功能。 HCI定义了主机控制蓝牙模块的各个指令。其中:HCI链路命令提供主机控制与其他蓝牙设备链路层连接的能力,一般这些命令导致链路管理器与远端设备交换链路管理器协议命令;主控制器和基带命令、信息命令及状态命令用于主 机访问主机控制器上的不同的寄存器等等[3]
    。 收稿日期:2008-10-30。 基金项目:国家自然科学基金项目(编号:60861001)。 作者简介:彭述清(1984-),男,硕士研究生,主要研究方向为信号与信息处理;施心陵(1956-),男,教授,博士生导师,主要研究方向为 信号与信息处理;苗爱敏(1983-),女,硕士研究生,主要研究方向为检测技术;王恩永(1984-),男,硕士研究生,主要研究方向为通信与信息系统;牛振阳(1982-)
    ,男,硕士研究生,主要研究方向为生物信息处理。

    评论
    解决 无用
    打赏 举报
  • devmiao 2017-12-25 15:54
    评论
    解决 无用
    打赏 举报
  • 蓝牙实际上还是串口。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题