linux设置蓝牙可连接网络,Linux下蓝牙参数设置程序

由于项目需要蓝牙功能,前些日子,我负责开发蓝牙模块,这个子项目主要涉及到获取蓝牙模块参数、设置蓝牙参数、多线程收发数据等

由于项目需要蓝牙功能,前些日子,我负责开发蓝牙模块,这个子项目主要涉及到获取蓝牙模块参数、设置蓝牙参数、多线程收发数据等功能,,下面已经可以在Linux下正常使用的蓝牙参数设置获取主要代码。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

typedef unsigned char  U8;

typedef unsigned short U16;

typedef unsigned int   U32;

typedef unsigned int   UINT;

struct termios  newtio, oldtio;

int fd;

UINT downloadAddress, downloadFileSize;

static void Jump_Loop(U32 addr, U32 len);

static void Set_UARTMODE(U32 addr, U32 len);

static void Set_Bind(U32 addr, U32 len);

static void Set_Role(U32 addr, U32 len);

static void Set_Class(U32 addr, U32 len);

static void Set_Name(U32 addr, U32 len);

static void Set_PassWord(U32 addr, U32 len);

static void Set_Auth(U32 addr, U32 len);

static void Set_Baud(U32 addr, U32 len);

static void Serial_Tran(int fd, char ver[]);

Get_Parameter();

Set_Parameter();

int set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop)

{

if(tcgetattr(fd, &oldtio) != 0)

{

perror("SetupSerial 1");

return -1;

}

bzero(&newtio, sizeof(newtio));

newtio.c_cflag |= CLOCAL | CREAD;

newtio.c_cflag &= ~CSIZE;

switch(nBits)

{

case 7:

newtio.c_cflag |= CS7;

break;

case 8:

newtio.c_cflag |= CS8;

break;

}

switch(nEvent)

{

case 'O':

newtio.c_cflag |= PARENB;

newtio.c_cflag |= PARODD;

newtio.c_iflag |= (INPCK | ISTRIP);

break;

case 'E':

newtio.c_cflag |= PARENB;

newtio.c_cflag &= ~PARODD;

newtio.c_iflag |= (INPCK | ISTRIP);

break;

case 'N':

newtio.c_cflag &= ~PARENB;

break;

}

switch(nSpeed)

{

case 2400:

cfsetispeed(&newtio, B2400);

cfsetospeed(&newtio, B2400);

break;

case 4800:

cfsetispeed(&newtio, B4800);

cfsetospeed(&newtio, B4800);

break;

case 9600:

cfsetispeed(&newtio, B9600);

cfsetospeed(&newtio, B9600);

break;

case 115200:

cfsetispeed(&newtio, B115200);

cfsetospeed(&newtio, B115200);

break;

case 460800:

cfsetispeed(&newtio, B460800);

cfsetospeed(&newtio, B460800);

break;

default:

cfsetispeed(&newtio, B9600);

cfsetospeed(&newtio, B9600);

break;

}

if(nStop == 1)

newtio.c_cflag &= ~CSTOPB;

else if(nStop == 2)

newtio.c_cflag |= CSTOPB;

newtio.c_cc[VTIME] = 0;

newtio.c_cc[VMIN] = 1;

newtio.c_lflag &=~(ICANON|ECHO|ECHOE|ISIG);

newtio.c_oflag &=~OPOST;

tcflush(fd,TCIFLUSH);

if((tcsetattr(fd, TCSANOW,&newtio)) != 0)

{

perror("\rcom set error");

return -1;

}

printf("\rset done!\n");

return 0;

}

int open_port(int fd, int comport)

{

if(comport == 1) //串口1

{

fd = open("/dev/ttyS0", O_RDWR|O_NOCTTY|O_NONBLOCK);

if(fd < 0)

{

perror("\rCan't Open Serial Port");

return(-1);

}

}

else if(comport == 2) //串口2

{

fd = open("/dev/ttyS1", O_RDWR|O_NOCTTY|O_NDELAY);

if(fd < 0)

{

perror("\rCan't Open Serial Port");

return(-1);

}

}

else if(comport == 3)//串口3

{

fd = open("/dev/ttyS2", O_RDWR|O_NOCTTY|O_NONBLOCK);

if(fd < 0)

{

perror("\rCan't Open Serial Port");

return(-1);

}

}

if(fcntl(fd, F_SETFL, 0) < 0)

{

printf("\rfcntl failed!\n");

}

else

{

printf("\rfcntl = %d\n", fcntl(fd, F_SETFL, 0));

}

if(isatty(STDIN_FILENO) == 0)

printf("\rstandard input is not a terminal device\n");

else

printf("isatty success!\n");

printf("\rfd-open=%d\n",fd);

return fd;

}

static int Get_Parameter(int fd)

{

printf("Get Bluetooth Parameter\n");

//printf("Get parameter : \n");

// printf("Device Name : \n");

Serial_Tran(fd, "AT+NAME?\r\n");          //询查设备名称

//printf("BAUD : \n");

Serial_Tran(fd, "AT+BAUD?\r\n");          //查询波特率

//printf("Device Bind  : \n");

Serial_Tran(fd, "AT+BIND?\r\n");         // 查询设备绑定

//printf("Device Class : \n");

Serial_Tran(fd, "AT+CLASS?\r\n") ;        //查询类别

//printf("Device Authority : \n");

Serial_Tran(fd, "AT+SNIFF?\r\n");        //查询是否需要鉴权

//printf("Device PassWord : \n");

Serial_Tran(fd, "AT+PASSWORD?\r\n");       //查询鉴权密码

//printf("Device Role : \n");

Serial_Tran(fd, "AT+ROLE?\r\n");         // 查询设备角色

//printf("Device Sniff State: \n");

Serial_Tran(fd, "AT+SNIFF?\r\n");        //查询节能状态

//printf("Device ScanTime : \n");

Serial_Tran(fd, "AT+SCANTIME?\r\n");      //查寻扫描与连接参数

//printf("Program Version : \n");

Serial_Tran(fd, "AT+VERSION?\r\n");      //查询程序版本号

//printf("Device LED : ");

Serial_Tran(fd, "AT+LED?\r\n");        // 查询指示灯

//printf("Remote Device Address : ");

Serial_Tran(fd, "AT+RADDR?\r\n");        //查询远端设备地址

//printf("Local Device Address : ");

Serial_Tran(fd, "AT+LADDR?\r\n");         //查询本地设备地址

//printf("Device UartMode : \n");

Serial_Tran(fd, "AT+UARTMODE?\r\n");      //查询串口通信模式

//printf("Device LowPower : \n");

Serial_Tran(fd, "AT+LOWPOWER?\r\n");     //查询设备低功?

return 0;

}

static int Set_Parameter(int fd)

{

int i, sel, num;

printf("\rIf you want to set vironment?please input 1\n");

printf("\rENTER : ");

//if(!GetIntNumber(&label))

scanf("%d",&num);

if (num== 1)

{

while(1)

{

printf("\rSelect :\n");

for(i=0; Functions[i].FuncAddr; i++)

{

printf("\r%2d : %s\n", i, Functions[i].str);

}

printf("\rEnter your selection: ");

scanf("%d",&sel);

if(sel==8)

{

break;

}

if(sel>=0&&sel

{

(*Functions[sel].FuncAddr)(downloadAddress, downloadFileSize);

}

}

}

else

{

return 0;

}

}

logo.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值