Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: DAlexV, ivan_fd  
USART
AndrF Дата: Вт, 05.05.2015, 11:25  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 145
Репутация: 3   ±
Замечания:   ±
На сайте с 03.02.2012

Статус: Offline

Используется USART.bas. Скорость 115200.

Контроллер через FT232RL подключен к компу.

Данные (бинарные) передаются в цикле:

Код
For i = 0 To mUartBuffer(2) - 1
      USART.WriteByte(mUartBuffer(i))
    Next


Но передача идет медленно - создается такое впечатление что они где-то застревают в буфере контроллера. Если после цикла приведенного выше вставить:

Код
USART.WriteByte(13)
    USART.WriteByte(10)

То передача идет на порядок быстрей...

Вопрос - как обойтись без последних двух строк и просто сказать контроллеру что надо бы наконец передать?
ЯНДЕКС Дата: 05.05.2015
ADMIN Дата: Ср, 06.05.2015, 10:42  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Online

Так можно в конце массива mUartBuffer вставить эти два символа. Это символы окончания строки и типа Enter. Они хоть как нужны
AndrF Дата: Ср, 06.05.2015, 12:40  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 145
Репутация: 3   ±
Замечания:   ±
На сайте с 03.02.2012

Статус: Offline

Цитата ADMIN ()
Так можно в конце массива mUartBuffer вставить эти два символа. Это символы окончания строки и типа Enter. Они хоть как нужны

Я не строку передаю, а бинарный массив. Пока в конце и поставил эти два символа, но хотелось бы обойтись без них.

Впрочем, на 100% я не уверен что проблема в контроллере - это надо хотя бы осциллографом смотреть. Может дело и в контроле VB6. Хотя бинарный режим у него включен...
ADMIN Дата: Ср, 06.05.2015, 13:00  |                                                                                                                Сообщение # 4
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Online

Так какая разница, бинарный, не бинарный? Число оно и в африке число. Или я чего -то не понимаю?
AndrF Дата: Ср, 06.05.2015, 13:54  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 145
Репутация: 3   ±
Замечания:   ±
На сайте с 03.02.2012

Статус: Offline

Цитата ADMIN ()
Так какая разница, бинарный, не бинарный? Число оно и в африке число. Или я чего -то не понимаю?

Ну текстовый массив состоит все же из байтов содержащих коды символов. Для него завершение CrLf логично. А бинарный может содержать что угодно - завершение CrLF для него вроде смысла не имеет...

Сейчас убрал CrLf из конца массива - скорость как вчера не упала... Так что было вчера даже сказать не могу - с тех пор много поменял...

Но! Смущает вообще скорость - запрос и прием 1128 байт происходит примерно за 0.26 секунды. IMHO медленно для 115200 бод. Или я не прав? Данные принимаются все (у контроллера их забираю блоками до 128 байт плюс несколько служебных типа контрольной суммы и длины блока). Ошибок не наблюдаю...

Если к этому времени добавить еще время чтения этих байт из 24C128 по шине 1 Mhz, то выходит примерно 0,3 секунды.

Сообщение отредактировал AndrF - Ср, 06.05.2015, 14:09
ivan_fd Дата: Ср, 06.05.2015, 15:58  |                                                                                                                Сообщение # 6
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Цитата AndrF ()
Но! Смущает вообще скорость - запрос и прием 1128 байт происходит примерно за 0.26 секунды. IMHO медленно для 115200 бод. Или я не прав?

Если бы просто передать 1128 байт, то немного медленно. А если с запросами и служебной инфой
, то может быть.
AndrF Дата: Ср, 06.05.2015, 16:12  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 145
Репутация: 3   ±
Замечания:   ±
На сайте с 03.02.2012

Статус: Offline

Цитата ivan_fd ()
Если бы просто передать 1128 байт, то немного медленно. А если с запросами и служебной инфой , то может быть.

Да мало там служебной инфы-то - 5 байт на пакет. Кроме того, при росте объема данных скорость растет практически линейно.

Задал вопрос на их форуме - посмотрим что ответят...

Как с этим обстоит дело в Протоне - за сколько удавалось передать килобайт данных - никто не замерял?

P.S
Оно, конечно, для того что делаю не дюже критично, но хотелось бы понять в чем дело.

Сообщение отредактировал AndrF - Ср, 06.05.2015, 16:14
  • Страница 1 из 1
  • 1
Поиск: