本文主要是介绍LINUX中的rfcomm命令工具的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LINUX中的rfcomm命令工具的使用
mknod /dev/rfcomm0 c 216 0 216是RFCOMM的设备号,可以参考..../bluez-utils-2.x/scripts/create_dev脚本 绑定 rfcomm.conf表示的是将rfcomm0绑定到某个MAC和channel上。这个功能用下面的命令也可以完成 rfcomm bind /dev/rfcomm0 [MAC] [channel] 解除绑定使用 rfcomm release /dev/rfcomm0 查看绑定使用 rfcomm show 所谓绑定,类似于设定/dev/rfcomm0对应某个确定的蓝牙设备和它的某个channel。可以把它想像为将一条串口电缆连接到某台计算机上的某个串口上。 连接 rfcomm conn /dev/rfcomm0 [MAC] 10 该命令建立一个与[MAC]的rfcomm连接。这时,可能被连接方会发送一下LINK_PIN_REQUEST,要求PIN码。 PIN码是由hcid/secury.c处理的,当hcid收到LINK_PIN_REQUEST,就调用下面的这个函数。见下面的代码: static void pin_code_request(int dev, bdaddr_t *sba, bdaddr_t *dba) { ...... pinlen = read_pin_code(sba, dba, pin); /*这里是从本机文件中读取PIN码*/ if (pairing == HCID_PAIRING_ONCE) { struct link_key *key = get_link_key(sba, dba); if (key) { ba2str(dba, da); syslog(LOG_WARNING, "PIN code request for already paired device %s", da); goto reject; } } else if (pairing == HCID_PAIRING_NONE) /*hcid.conf中security设置为none*/ goto reject; /*发送PIN_Code_Request_Negative_Reply*/ if (hcid.security == HCID_SEC_AUTO) { /*hcid.conf中security设置为auto*/ ...... hci_send_cmd(dev, OGF_LINK_CTL, OCF_PIN_CODE_REPLY, PIN_CODE_REPLY_CP_SIZE, &pr); } else { /* Let PIN helper handle that */ request_pin(dev, sba, ci);/*调用hcid.conf中pin_helper对应的PIN输入程序*/ } } } else { /* Let PIN helper handle that */ request_pin(dev, sba, ci);); /*调用hcid.conf中pin_helper对应的PIN输入程序*/ } } 可见,hcid的处理行为是在/etc/bluetooth/hcid.conf文件中确定的。在实际使用中发现hcid.conf中的pin_helper设定的bluepin不起作用。(注:bluepin是一个python脚本文件) read_pin_code()是从文件中读取PIN码,下面是这个函数的代码: #define STORAGEDIR "/var/lib/bluetooth" snprintf( filename, PATH_MAX, "%s/%s/pincodes", STORAGEDIR, addr); 可见PIN码的文件是在/var/lib/bluetooth/xx:xx:xx:xx:xx:xx/pincodes中。手工的建立这个文件,然后使用上面的命令 rfcomm conn /dev/rfcomm0 [MAC] 10 这可以成功连接上需要PIN码的蓝牙设备 | |
原文地址 http://hi.baidu.com/whyspai/blog/item/ca6b32dd0a392bd88c1029df.html |
|
这篇关于LINUX中的rfcomm命令工具的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!