Я писал программу, которая позволяет машине linux подключаться к устройству Bluetooth и иметь возможность отправлять и получать информацию о нем. Линукс-машина может подключиться к устройству, которое использует чип Bluemod и использует профиль последовательного порта. Я перепробовал много подходов, включая изменение класса адаптер, изменение режима соединения, увеличение MTU. Попытка использовать SSPMODE, однако, поскольку он использует Bluetooth 1.2, я не могу.
Ниже приведен раздел моего кода, написанный на 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 и, следовательно, невозможно отправить данные на устройство Bluetooth.
Программа работает и компилируется нормально, я просто не получаю ожидаемый результат, она может сканировать устройства Bluetooth, подключаться к ним, получать информацию от них, но, поскольку она не может отправить информацию на устройство, соединение в конечном итоге капли.
РЕДАКТИРОВАТЬ 2
Программа возвращает значение -1 только после разрыва соединения, зависает на функции до тех пор, пока соединение не будет потеряно, а затем возвращает значение -1.
Задача ещё не решена.