49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,450
1

Что делает read()

24.08.2019, 23:47. Показов 4851. Ответов 7
Метки нет (Все метки)

Вот в этой теме велось обсуждение -> Создание масивов
и как в конце мне объяснили read( hci_dev, buffer, sizeof(buffer)); для hci_dev записывает в буфер переданный dev событие,что это за событие и что оно в себе имеет?
C++
1
2
hci_dev = hci_get_route(NULL);
hci_dev = hci_open_dev(current_hci_state.device_id)
hci_dev открыто для le сканирования
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2019, 23:47
Ответы с готовыми решениями:

Что делает read и как им пользоваться?
Растолкуйте пожалуйста ,что делает read и как им пользоватся ?Перерыл куча сайтов так ничего и не...

Не могу понять что делает LockMode.READ в Hibernate
Много разной информации по поводу этой блокировки но обычно обходятся одним предложением. Версии...

Что делает Read(byte[] buffer, int offset, int count) метод класса Stream
Что делает Read(byte buffer, int offset, int count) метод класса Stream. Приведите пример...

Что делает строка кода "char a = (char)reader.Read"
Я в си шарб нуб)) Хотя, в принципе, пока вроде ничего непонятного, кроме этого: void...

7
Почетный модератор
11285 / 4253 / 434
Регистрация: 12.06.2008
Сообщений: 12,268
25.08.2019, 21:55 2
Лучший ответ Сообщение было отмечено ReYalp как решение

Решение

Функция read() вычитывает из файлового дескриптора данные и помещает их в указанную память. Например
C
1
ssize_t res = read(fd, buf, len);
Прочитает из файлового дескриптора fd не более len байт и поместит эти данные в buf. После этого вернёт количество реально прочитанных байт (либо -1 в случае ошибки).
В вашем случае файловый дескриптор указывает не на файл, а на сокет. Я не знаю, какие именно данные из него читаются... скорее всего, там вычитываются текущие события. Похоже, что первый байт - это номер события. В зависимости от его значения, остальные байты расцениваются как структуры для определённых событий. Например, в https://github.com/pauloborges... ol.c#L2466 они вычитывают событие, на строке 2482 проверяют, что первый байт (subevent) равен 2 (EVT_LE_ADVERTISING_REPORT) (другие события не обрабатывают), и расценивают данные как структуру le_advertising_info (только почему то начиная не с 1 байта, а со второго). А дальше парсят адрес, имя и выводят в консоль.
1
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,450
25.08.2019, 22:16  [ТС] 3
Humanoid, а как к примеру считать то что отправляет устройство? Что для этого нужно сделать? Или в этом собитии хранятся ещё и данные от устройства?
0
297 / 159 / 44
Регистрация: 18.10.2017
Сообщений: 1,518
25.08.2019, 22:38 4
Я подозреваю, что надо в каталоге /sys найти структуру данных, с которой связан этот hci_dev
и оттуда считывать то, что конкретно нужно.
0
Почетный модератор
11285 / 4253 / 434
Регистрация: 12.06.2008
Сообщений: 12,268
26.08.2019, 02:04 5
Цитата Сообщение от ReYalp Посмотреть сообщение
а как к примеру считать то что отправляет устройство?
Для этого нужно разобраться, как вообще Bluetooth передаёт данные. Я сейчас запустил Wireshark и подключил свои bluetooth-наушники. Видно, что в самом пакете (и в отправляемом и в принимаемом) первый байт означает тип пакета. В заголовочном файле https://github.com/r10r/bluez/... hci.h#L113 они перечислены HCI_*_PKT. Среди них есть 0x4 (HCI_EVENT_PKT). Но там же есть HCI_ACLDATA_PKT и HCI_SCODATA_PKT... я не знаю, чем они отличаются, но очевидно, что именно они передают данные.
В ссылке в моём предыдущем сообщении перед вызовом read() вызывается setsockopt(), который настраивает какие-то фильтры. И в фильтре как раз указывается HCI_EVENT_PKT. Подозреваю, что если настроить фильтр на HCI_ACLDATA_PKT, то read() будет читать ACL-данные (разумеется, если устройство будет эти данные передавать).

А вообще, надо вначале почитать стандарт и понять, как вообще устроены пакеты. А то я сам с bluetooth не работал и могу вас ввести в заблуждение.
1
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,450
26.08.2019, 10:19  [ТС] 6
Humanoid, спасибо)
0
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,450
28.08.2019, 23:49  [ТС] 7
Humanoid, а что делают HCI_LE_Set_Advertising_Parameters и HCI_LE_Set_Advertising_Data? для чего они нужны?
0
Почетный модератор
11285 / 4253 / 434
Регистрация: 12.06.2008
Сообщений: 12,268
29.08.2019, 10:05 8
Я не знаю. С Bluetooth не работал.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2019, 10:05
Помогаю со студенческими работами здесь

Не могу понять на что способен sort, и что делает его компаратор
Недавно мой знакомый рассказывал что-то про sort,говорил что с помощью него можно сортировать как...

что такое super.onCreate(savedInstanceState);? что оно делает?
подскажите, начинающему программисту под android, что делает строка...

Что в программе делает так, что процессор грузится на 100%?
Я не очень разбираюсь в С++, поэтому прошу вашей подсказки по поводу нагрузки на процессор. Вот...

Дать понять пользователю, что программа что-то делает, а не зависла
Написал программу для поиска текста в файлах, но т.к. файлов много программа "зависает" на время...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru