Я пытаюсь подключить свою цель к мобильному устройству через профиль SPP blue-tooth.
Как только соединение Bluetooth установлено, делается запрос на создание канала rfcomm для связи.
output of
ls -all /dev/rfcomm0
crw-rw-rw- 1 root dialout 216, 0 Jan 1 00:02 /dev/rfcomm0
После создания устройства rfcomm в моем коде я открываю файл и записываю в него данные.
fd = open('/dev/rfcomm0', O_RDWR | O_NOCTTY | O_SYNC);
write(write(fd, &sendBuffer[0], sendBuffer.size())
пиши успешно.
еще раз, если я пытаюсь прочитать данные через rfcomm, код не продолжается.
read(fd, recvbuf, recvbuflen)
Поскольку чтение не работало, я попытался закрыть дескриптор файла и снова открыть его.
На этот раз он не может открыть / dev / rfcomm0. Возвращает -1.
Пожалуйста, направляй туда, где мне не хватает.
Также я новичок в этом, так что если есть какие-либо документы по Bluetooth SPP с использованием C ++.
Нашел решение, мобильное приложение, к которому я пытался подключиться, использует другой UUID для связи. Если я запускаю соединение, используя UUID, определенный приложением, я могу правильно читать и записывать данные.
Но все же у меня есть один запрос, спецификация Bluetooth определяет UUID для своих профилей.
For SPP it is 0x0003.
В моем случае навигационное устройство взаимодействует с приложением Android с помощью профиля SPP, но использует UUID, отличный от 0x0003.
Так значит ли это, что приложение для Android может выбрать любой случайный уникальный UUID, кроме того, что указано в спецификации для связи через SPP?
Других решений пока нет …