我一直在编写一个程序,允许linux机器连接到蓝牙设备,并能够发送和接收它的信息。 linux机器能够与该设备配对,该设备使用漫步者Bluemod芯片并设置了串行端口配置文件。我尝试了很多方法,包括更改adapter的类,更改链接模式,增加MTU。尝试使用SSPMODE,因为它使用蓝牙1.2我不能。
Bellow是我的代码的一部分,它是用C ++编写的,使用libBluetooth3-dev库。
bool SerialPort::sendString( const char *msg) {
//status is the status of the socket connection > 0 means fine
if (status>=0){
int sentBytes = send(sock,msg,sizeof(msg),0);
if(sentBytes<0){
cout<<"String not Sent" <<endl;
return false;
}
else{
return true;
}
else{
cout<< "SerialPort::sendString(): Port not Open" <<endl;
return false;
}
}
任何帮助将不胜感激,如果您对此问题有任何疑问,请发表评论,我会回答。
修改
好的,只是添加有关此问题的更多详细信息。当运行发送功能时,程序返回值-1,这意味着程序无法将字节发送到RFCOMM端口,因此无法将数据发送到蓝牙设备。
该程序运行并编译正常,我只是没有得到我期望的输出,它能够扫描蓝牙设备,连接到它们,从它们接收信息,但因为它无法发送信息到连接最终下降的设备。
编辑2
一旦连接中断,程序只返回值-1,它会挂起函数,直到连接丢失,然后返回值-1。