crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Тормоза при обмене по RS-485, задержка при отправке данных в порт
demon051
  опции профиля:
сообщение 10.11.2020, 15:30
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 25
Регистрация: 12.8.2014
Пользователь №: 4209

Спасибо сказали: 4 раз(а)




Репутация:   0  


Всем привет

Имеется прибор на процессоре imx6UL
Под него сборка дебиан от производителя.

В общем надо с этого прибора опрашивать другие по rs-485 на скорости 9600.

Порт открывается настраивается в неблокирующем режиме и т.д. и т.п.
Чтение / запись работают через select с заданным таймаутом.

В итоге получается как-то так, что реальная скорость отправки данных существенно ниже установленной 9600.

Команда int bytes_write = write(fd, frame_write, frame_write_size) выполняется моментально.
Но дальше получаем жуткий таймаут на получение данных.
Проверили осциллографом, что данные на опрашиваемый прибор приходят и он отвечает сразу же без задержек.

Стал разбираться.
Вставил после write команду tcdrain( fd )
И вот уже на ее выполнение (ожидание пока данные уйдут) отжирается в среднем 30 миллисекунд.
В посылке 7 байт.

Ясно, что функцией write сначала скидывается в буфер, а потом запихивается в физическое устройство.

Но не 30 же миллисекунд на отсылку 56 бит??


Вопрос: можно ли как-то оптимизировать в линуксе всё это дело.

Под виндами написал такой же код, там всё просто летает. Отправка данных на 9600 на той же линии занимает в пределах 5-7
миллисекуд и примерно через столько же приходит ответ.


Что в линуксе не так?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 17.11.2020, 21:36
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1599
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


попробуй добавить флаг ASYNC_LOW_LATENCY для твоего девайса.
а вообще, если хочешь, чтобы тебе дали совет - пости код, который у тебя не работает. а то гадать на кофейной гуще сложно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 3.12.2020, 13:06