📄 bt.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 + -