| USART | 
|  | 
| 
 
 
 
 | AndrF | Дата: Вт, 05.05.2015, 11:25  |                                                                                                                Сообщение # 1 |  
 | ![AndrF]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Продвинутый
 
  
 Сообщений: 
 
 
 145
 
 
 Замечания: ± На сайте с 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)
То передача идет на порядок быстрей...
 
 Вопрос - как обойтись без последних двух строк и просто сказать контроллеру что надо бы наконец передать?
 |  
 |  |  |  | 
| 
 
 
 
 | ADMIN | Дата: Ср, 06.05.2015, 10:42  |                                                                                                                Сообщение # 2 |  
 |   
 
 Администратор
 
 
  Группа:
  Администраторы
 
  Ранг: 
 
 Специалист
 
  
 Сообщений: 
 
 
 1082
 
 
 Замечания: ± На сайте с 20.08.2007
 
 
 Статус: 
 Offline
 
 | Так можно в конце массива mUartBuffer вставить эти два символа. Это символы окончания строки и типа Enter. Они хоть как нужны |  
 |  |  |  | 
| 
 
 
 
 | AndrF | Дата: Ср, 06.05.2015, 12:40  |                                                                                                                Сообщение # 3 |  
 | ![AndrF]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Продвинутый
 
  
 Сообщений: 
 
 
 145
 
 
 Замечания: ± На сайте с 03.02.2012
 
 
 Статус: 
 Offline
 
 | Цитата ADMIN (  ) Так можно в конце массива mUartBuffer вставить эти два символа. Это символы окончания строки и типа Enter. Они хоть как нужныЯ не строку передаю, а бинарный массив. Пока в конце и поставил эти два символа, но хотелось бы обойтись без них.
 
 Впрочем, на 100% я не уверен что проблема в контроллере - это надо хотя бы осциллографом смотреть. Может дело и в контроле VB6. Хотя бинарный режим у него включен...
 |  
 |  |  |  | 
| 
 
 
 
 | ADMIN | Дата: Ср, 06.05.2015, 13:00  |                                                                                                                Сообщение # 4 |  
 |   
 
 Администратор
 
 
  Группа:
  Администраторы
 
  Ранг: 
 
 Специалист
 
  
 Сообщений: 
 
 
 1082
 
 
 Замечания: ± На сайте с 20.08.2007
 
 
 Статус: 
 Offline
 
 | Так какая разница, бинарный, не бинарный? Число оно и в африке число. Или я чего -то не понимаю? |  
 |  |  |  | 
| 
 
 
 
 | AndrF | Дата: Ср, 06.05.2015, 13:54  |                                                                                                                Сообщение # 5 |  
 | ![AndrF]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Продвинутый
 
  
 Сообщений: 
 
 
 145
 
 
 Замечания: ± На сайте с 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 |  
 |   
 
 
 
 
  Группа:
  Модераторы
 
  Ранг: 
 
 Специалист
 
  
 Сообщений: 
 
 
 891
 
 
 Замечания: ± На сайте с 12.01.2009
 
 
 Статус: 
 Offline
 
 | Цитата AndrF (  ) Но! Смущает вообще скорость - запрос и прием 1128 байт происходит примерно за 0.26 секунды. IMHO медленно для 115200 бод. Или я не прав?Если бы просто передать 1128 байт, то немного медленно. А если с запросами и служебной инфой
 , то может быть.
 |  
 |  |  |  | 
| 
 
 
 
 | AndrF | Дата: Ср, 06.05.2015, 16:12  |                                                                                                                Сообщение # 7 |  
 | ![AndrF]()  
 
 
 
 
  Группа:
  Проверенные
 
  Ранг: 
 
 Продвинутый
 
  
 Сообщений: 
 
 
 145
 
 
 Замечания: ± На сайте с 03.02.2012
 
 
 Статус: 
 Offline
 
 | Цитата ivan_fd (  ) Если бы просто передать 1128 байт, то немного медленно. А если с запросами и служебной инфой , то может быть.Да мало там служебной инфы-то - 5 байт на пакет. Кроме того, при росте объема данных скорость растет практически линейно.
 
 Задал вопрос на их форуме - посмотрим что ответят...
 
 Как с этим обстоит дело в Протоне - за сколько удавалось передать килобайт данных - никто не замерял?
 
 P.S
 Оно, конечно, для того что делаю не дюже критично, но хотелось бы понять в чем дело.
 
 Сообщение отредактировал 
 
 AndrF - Ср, 06.05.2015, 16:14
 
  |  
 |  |  |  |