⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bt.cpp

📁 嵌入式LINUX的智能家居系统源码
💻 CPP
字号:
#include"bt.h"#include<unistd.h>#include<sys/socket.h>#include<bluetooth/bluetooth.h>#include<bluetooth/hci.h>#include<bluetooth/hci_lib.h>#include<bluetooth/rfcomm.h>#include<stdio.h>#include<pthread.h>#define dest "00:02:72:B0:07:C5"struct sockaddr_rc addr;int sock;bool stop_bt;void * bt_receiver(void * data){	BT * bt = (BT *)data;	int cmd;	while(!stop_bt)	{		read(sock,&cmd,sizeof(int));		bt->emit_sig(cmd);	}	}void BT::switcher(int cmd){	int cmd_t;	switch(cmd & 0xff)	{		case start_bt_connect :			if(!bt_on)						{							if(setup_connection())				{														bt_on = true;					cmd_t =bt_connected;					cmd_t |= ui;					cmd_t |= TO(PDA_CMD);					emit sig_cmd(bt_connected);				}				else				{					bt_on = false;					cmd_t =bt_start_error;					cmd_t |= ui;					cmd_t |= TO(PDA_CMD);					emit sig_cmd(bt_start_error);				}			}			else			{emit sig_cmd_ker(bt_connected);}			break;		case bt_disconnect:			bt_on = false;			stop_connection();			cmd_t =bt_disconnected;			cmd_t |= ui;			cmd_t |= TO(PDA_CMD);			emit sig_cmd(cmd_t);		default:			printf("error ker bt wrong cmd \n");		break;	}}void BT::emit_sig(int cmd){	emit sig_cmd(cmd);}void BT::start_BT_reader(){	stop_bt = false;	pthread_create(&th_bt_reader,NULL,bt_receiver,(void *)this);}BT::BT(){	bt_on = false;	stop_bt = true;}BT::~BT(){}void BT::write_BT(int cmd){	int status;	status=write(sock,&cmd,sizeof(int));    if(status<0)perror("send order error!");}int connect_bt(){	return connect(sock,(struct sockaddr *)&addr,sizeof(addr));}void BT::stop_connection(){	stop_bt = true;	close(sock);}bool BT::setup_connection(){	int status;  	//检查主机上的蓝牙地址	if(strlen(dest)!=17)printf("BD Address Invalid!!\n");  	sock=socket(PF_BLUETOOTH,SOCK_STREAM,BTPROTO_RFCOMM);//创建套接字	if(sock<0)	{	printf("create socket error!!\n");	return false;	}  	addr.rc_family=AF_BLUETOOTH;	addr.rc_channel=(uint8_t)1;	str2ba(dest,&addr.rc_bdaddr);//把形如XX:XX:XX:XX:XX:XX(XX标识48位蓝牙地址的16进制的一个字节)的字符串转化6字节的bdaddr_t结构  	status=connect_bt();//连接服务器端  	if(0==status)	{	  	printf("bluetooth connect success!!\n");	} 	 else 	 {  		printf("bluetooth connect failed!!\n");  		return false; 	 }	return true;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -